1 #
2 # This file and its contents are supplied under the terms of the
3 # Common Development and Distribution License ("CDDL"), version 1.0.
4 # You may only use this file in accordance with the terms of version
5 # 1.0 of the CDDL.
6 #
7 # A full copy of the text of the CDDL should have accompanied this
8 # source. A copy of the CDDL is also available via the Internet at
9 # http://www.illumos.org/license/CDDL.
10 #
11
12 #
13 # Copyright 2018, Joyent, Inc.
14 #
15
16 include $(SRC)/cmd/Makefile.cmd
17 include $(SRC)/test/Makefile.com
18 include $(SRC)/cmd/Makefile.ctf
19
20 ALGS = sha1 sha256 sha384 sha512
21 CRYPTO = pkcs kcf
22
23 PROGS_pkcs = $(ALGS:%=%_pkcs)
24 PROGS_kcf = $(ALGS:%=%_kcf)
25 PROGS = $(PROGS_pkcs) $(PROGS_kcf)
26
27 ROOTOPTPKG = $(ROOT)/opt/crypto-tests
28 TESTROOT = $(ROOTOPTPKG)/tests/digest
29 TESTDIR_pkcs = $(TESTROOT)/pkcs
30 TESTDIR_kcf = $(TESTROOT)/kcf
31
32 COMMONDIR = ../common
33
34 $(CRYPTO:%=sha1_%) := OBJS = sha1.o
35 $(CRYPTO:%=sha256_%) := OBJS = sha256.o
36 $(CRYPTO:%=sha384_%) := OBJS = sha384.o
37 $(CRYPTO:%=sha512_%) := OBJS = sha512.o
38
39 OBJS_COMMON = $(COMMONDIR)/testfuncs.o
40 $(PROGS_pkcs) := OBJS_COMMON += $(COMMONDIR)/cryptotest_pkcs.o
41 $(PROGS_kcf) := OBJS_COMMON += $(COMMONDIR)/cryptotest_kcf.o
42 $(PROGS) := OBJS += main.o
43
44 CSTD = $(CSTD_GNU99)
45
46 CPPFLAGS += -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
47 CPPFLAGS += -I$(COMMONDIR) -I$(SRC)/common/crypto
48
49 LINTFLAGS += -xerroff=E_NAME_USED_NOT_DEF2
50 LINTFLAGS += -xerroff=E_NAME_DEF_NOT_USED2
51
52 $(PROGS_pkcs) := LDLIBS += -lpkcs11 -lcryptoutil
53
54 CMDS_pkcs = $(ALGS:%=$(TESTDIR_pkcs)/%)
55 CMDS_kcf = $(ALGS:%=$(TESTDIR_kcf)/%)
56 CMDS = $(CMDS_pkcs) $(CMDS_kcf)
57
58 $(CMDS) := FILEMODE = 0555
59
60 all: $(PROGS)
61
62 $(COMMONDIR)/%.o:
63 $(PROGS): main.o
64
65 %_pkcs: %.o
66 $(LINK.c) -o $@ $(OBJS) $(OBJS_COMMON) $(LDLIBS)
67 $(POST_PROCESS)
68
69 %_kcf: %.o
70 $(LINK.c) -o $@ $(OBJS) $(OBJS_COMMON) $(LDLIBS)
71 $(POST_PROCESS)
72
73 %.o: %.c
74 $(COMPILE.c) -o $@ $<
75 $(POST_PROCESS_O)
76
77 install: all $(CMDS)
78
79 lint: $(CRYPTO:%=lint_%)
80 lint_pkcs: $(ALGS:%=lint_pkcs_%)
81 lint_kcf: $(ALGS_kcf:%=lint_kcf_%)
82
83 lint_pkcs_%:
84 $(LINT.c) main.c $(@:lint_pkcs_%=%.c) $(OBJS_COMMON:%.o=%.c) $(LDLIBS)
85
86 lint_pcf_%:
87 $(LINT.c) main.c $(@:lint_kcf_%=%.c) $(OBJS_COMMON:%.o=%.c) $(LDLIBS)
88
89 clobber: clean
90 -$(RM) $(PROGS)
91
92 clean:
93 -$(RM) $(ALGS:%=%.o) main.o
94
95 $(CMDS): $(TESTDIR_pkcs) $(TESTDIR_kcf) $(PROGS)
96
97 $(TESTDIR_pkcs) $(TESTDIR_kcf):
98 $(INS.dir)
99 @echo Cmds: $(CMDS)
100
101 $(TESTROOT)/pkcs/%: %_pkcs
102 $(INS.rename)
103
104 $(TESTROOT)/kcf/%: %_kcf
105 $(INS.rename)