1faeaba88SJason King#
2faeaba88SJason King# This file and its contents are supplied under the terms of the
3faeaba88SJason King# Common Development and Distribution License ("CDDL"), version 1.0.
4faeaba88SJason King# You may only use this file in accordance with the terms of version
5faeaba88SJason King# 1.0 of the CDDL.
6faeaba88SJason King#
7faeaba88SJason King# A full copy of the text of the CDDL should have accompanied this
8faeaba88SJason King# source.  A copy of the CDDL is also available via the Internet at
9faeaba88SJason King# http://www.illumos.org/license/CDDL.
10faeaba88SJason King#
11faeaba88SJason King
12faeaba88SJason King#
13faeaba88SJason King# Copyright (c) 2012 by Delphix. All rights reserved.
14faeaba88SJason King# Copyright 2015 Nexenta Systems, Inc.  All rights reserved.
15faeaba88SJason King# Copyright 2019 Joyent, Inc.
16080adf91SPatrick Mooney# Copyright 2020 Oxide Computer Company
17faeaba88SJason King#
18faeaba88SJason King
19faeaba88SJason Kinginclude $(SRC)/cmd/Makefile.cmd
20faeaba88SJason Kinginclude $(SRC)/test/Makefile.com
21faeaba88SJason Kinginclude $(SRC)/cmd/Makefile.ctf
22faeaba88SJason King
23faeaba88SJason KingPROGS_32 = $(CRYPTO:%=$(BASEPROG)_32_%)
24faeaba88SJason KingPROGS_64 = $(CRYPTO:%=$(BASEPROG)_64_%)
25faeaba88SJason KingPROGS = $(PROGS_32) $(PROGS_64)
26faeaba88SJason King
27faeaba88SJason KingCOMMON_OBJS_32 = $(COMMON_OBJS:%.o=%.32.o)
28faeaba88SJason KingCOMMON_OBJS_64 = $(COMMON_OBJS:%.o=%.64.o)
29faeaba88SJason King
30faeaba88SJason King# Some tests may only be relevant for PKCS#11 or KCF.  One can use
31faeaba88SJason King# a statement like 'CRYPTO_kcf = $(POUND_SIGN)' in a test's Makefile to
32faeaba88SJason King# disable creation of tests for a given framework.  For an example, see
33faeaba88SJason King# modes/aes/cbc_pad/Makefile
34faeaba88SJason King$(CRYPTO_pkcs)PROGS_pkcs = $(BASEPROG:%=%_32_pkcs) $(BASEPROG:%=%_64_pkcs)
35faeaba88SJason King$(CRYPTO_kcf)PROGS_kcf = $(BASEPROG:%=%_32_kcf) $(BASEPROG:%=%_64_kcf)
36faeaba88SJason King
37faeaba88SJason King# $(TESTROOT) must be set by whatever includes this file
38faeaba88SJason King$(CRYPTO_pkcs)TESTDIR_pkcs = $(TESTROOT)/pkcs
39faeaba88SJason King$(CRYPTO_kcf)TESTDIR_kcf = $(TESTROOT)/kcf
40faeaba88SJason King
41faeaba88SJason KingCOMMONDIR = $(SRC)/test/crypto-tests/tests/common
42faeaba88SJason King$(PROGS_32) := OBJS += $(BASEPROG:%=%.32.o) $(COMMON_OBJS_32)
43faeaba88SJason King$(PROGS_64) := OBJS += $(BASEPROG:%=%.64.o) $(COMMON_OBJS_64)
44faeaba88SJason King$(PROGS_32) := OBJS += $(COMMONDIR)/testfuncs.32.o
45faeaba88SJason King$(PROGS_64) := OBJS += $(COMMONDIR)/testfuncs.64.o
46*d7e2bdfaSRobert Mustacchi$(PROGS_64) := LDLIBS.cmd = $(LDLIBS64)
47faeaba88SJason King$(CRYPTO_pkcs)$(BASEPROG)_32_pkcs := OBJS += $(COMMONDIR)/cryptotest_pkcs.32.o
48faeaba88SJason King$(CRYPTO_pkcs)$(BASEPROG)_64_pkcs := OBJS += $(COMMONDIR)/cryptotest_pkcs.64.o
49faeaba88SJason King$(CRYPTO_kcf)$(BASEPROG)_32_kcf	:= OBJS += $(COMMONDIR)/cryptotest_kcf.32.o
50faeaba88SJason King$(CRYPTO_kcf)$(BASEPROG)_64_kcf	:= OBJS += $(COMMONDIR)/cryptotest_kcf.64.o
51faeaba88SJason King
52faeaba88SJason King$(CRYPTO_pkcs)$(PROGS_pkcs)	:= LDLIBS += -lpkcs11 -lcryptoutil
53faeaba88SJason King
54faeaba88SJason KingCSTD = $(CSTD_GNU99)
55faeaba88SJason King
56faeaba88SJason King$(CRYPTO_pkcs)CMDS_pkcs = $(PROGS_pkcs:%_pkcs=$(TESTDIR_pkcs)/%)
57faeaba88SJason King$(CRYPTO_kcf)CMDS_kcf = $(PROGS_kcf:%_kcf=$(TESTDIR_kcf)/%)
58faeaba88SJason KingCMDS = $(CMDS_pkcs) $(CMDS_kcf)
59faeaba88SJason King
60faeaba88SJason King$(CMDS) := FILEMODE = 0555
61faeaba88SJason King
62faeaba88SJason KingCPPFLAGS += -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
63faeaba88SJason KingCPPFLAGS += -I$(COMMONDIR) -I$(SRC)/common/crypto/
64faeaba88SJason King
65faeaba88SJason Kingall: $(PROGS)
66faeaba88SJason King
67faeaba88SJason King%_32_pkcs: %.32.o $(COMMON_OBJS_32)
68faeaba88SJason King	$(LINK.c) $(OBJS) -o $@ $(LDLIBS)
69faeaba88SJason King	$(POST_PROCESS)
70faeaba88SJason King
71faeaba88SJason King%_64_pkcs: %.64.o $(COMMON_OBJS_64)
72faeaba88SJason King	$(LINK64.c) $(OBJS) -o $@ $(LDLIBS)
73faeaba88SJason King	$(POST_PROCESS)
74faeaba88SJason King
75faeaba88SJason King%_32_kcf: %.32.o $(COMMON_OBJS_32)
76faeaba88SJason King	$(LINK.c) $(OBJS) -o $@ $(LDLIBS)
77faeaba88SJason King	$(POST_PROCESS)
78faeaba88SJason King
79faeaba88SJason King%_64_kcf: %.64.o $(COMMON_OBJS_64)
80faeaba88SJason King	$(LINK64.c) $(OBJS) -o $@ $(LDLIBS)
81faeaba88SJason King	$(POST_PROCESS)
82faeaba88SJason King
83faeaba88SJason King%.32.o: %.c
84faeaba88SJason King	$(COMPILE.c) -o $@ $<
85faeaba88SJason King	$(POST_PROCESS_O)
86faeaba88SJason King
87faeaba88SJason King%.64.o: %.c
88faeaba88SJason King	$(COMPILE64.c) -o $@ $<
89faeaba88SJason King	$(POST_PROCESS_O)
90faeaba88SJason King
91faeaba88SJason Kinginstall: all $(CMDS)
92faeaba88SJason King
93faeaba88SJason Kingclobber: clean
94faeaba88SJason King	-$(RM) $(PROGS)
95faeaba88SJason King
96faeaba88SJason Kingclean:
97080adf91SPatrick Mooney	-$(RM) *.o $(COMMON_OBJS_32) $(COMMON_OBJS_64) $(PROGS)
98faeaba88SJason King
99faeaba88SJason King$(CMDS): $(TESTDIR_pkcs) $(TESTDIR_kcf) $(PROGS)
100faeaba88SJason King
101faeaba88SJason King$(TESTDIR_pkcs) $(TESTDIR_kcf):
102faeaba88SJason King	$(INS.dir)
103faeaba88SJason King
104faeaba88SJason King$(TESTDIR_pkcs)/%_32: %_32_pkcs
105faeaba88SJason King	$(INS.rename)
106faeaba88SJason King
107faeaba88SJason King$(TESTDIR_pkcs)/%_64: %_64_pkcs
108faeaba88SJason King	$(INS.rename)
109faeaba88SJason King
110faeaba88SJason King$(TESTDIR_kcf)/%_32: %_32_kcf
111faeaba88SJason King	$(INS.rename)
112faeaba88SJason King
113faeaba88SJason King$(TESTDIR_kcf)/%_64: %_64_kcf
114faeaba88SJason King	$(INS.rename)
115