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 (c) 2012 by Delphix. All rights reserved.
  14 # Copyright 2015 Nexenta Systems, Inc.  All rights reserved.
  15 # Copyright 2019 Joyent, Inc.
  16 #
  17 
  18 include $(SRC)/cmd/Makefile.cmd
  19 include $(SRC)/test/Makefile.com
  20 include $(SRC)/cmd/Makefile.ctf
  21 
  22 PROGS_32 = $(CRYPTO:%=$(BASEPROG)_32_%)
  23 PROGS_64 = $(CRYPTO:%=$(BASEPROG)_64_%)
  24 PROGS = $(PROGS_32) $(PROGS_64)
  25 
  26 COMMON_OBJS_32 = $(COMMON_OBJS:%.o=%.32.o)
  27 COMMON_OBJS_64 = $(COMMON_OBJS:%.o=%.64.o)
  28 
  29 # Some tests may only be relevant for PKCS#11 or KCF.  One can use
  30 # a statement like 'CRYPTO_kcf = $(POUND_SIGN)' in a test's Makefile to
  31 # disable creation of tests for a given framework.  For an example, see
  32 # modes/aes/cbc_pad/Makefile
  33 $(CRYPTO_pkcs)PROGS_pkcs = $(BASEPROG:%=%_32_pkcs) $(BASEPROG:%=%_64_pkcs)
  34 $(CRYPTO_kcf)PROGS_kcf = $(BASEPROG:%=%_32_kcf) $(BASEPROG:%=%_64_kcf)
  35 
  36 # $(TESTROOT) must be set by whatever includes this file
  37 $(CRYPTO_pkcs)TESTDIR_pkcs = $(TESTROOT)/pkcs
  38 $(CRYPTO_kcf)TESTDIR_kcf = $(TESTROOT)/kcf
  39 
  40 COMMONDIR = $(SRC)/test/crypto-tests/tests/common
  41 $(PROGS_32) := OBJS += $(BASEPROG:%=%.32.o) $(COMMON_OBJS_32)
  42 $(PROGS_64) := OBJS += $(BASEPROG:%=%.64.o) $(COMMON_OBJS_64)
  43 $(PROGS_32) := OBJS += $(COMMONDIR)/testfuncs.32.o
  44 $(PROGS_64) := OBJS += $(COMMONDIR)/testfuncs.64.o
  45 $(CRYPTO_pkcs)$(BASEPROG)_32_pkcs := OBJS += $(COMMONDIR)/cryptotest_pkcs.32.o
  46 $(CRYPTO_pkcs)$(BASEPROG)_64_pkcs := OBJS += $(COMMONDIR)/cryptotest_pkcs.64.o
  47 $(CRYPTO_kcf)$(BASEPROG)_32_kcf := OBJS += $(COMMONDIR)/cryptotest_kcf.32.o
  48 $(CRYPTO_kcf)$(BASEPROG)_64_kcf := OBJS += $(COMMONDIR)/cryptotest_kcf.64.o
  49 
  50 $(CRYPTO_pkcs)$(PROGS_pkcs)     := LDLIBS += -lpkcs11 -lcryptoutil
  51 
  52 CSTD = $(CSTD_GNU99)
  53 
  54 $(CRYPTO_pkcs)CMDS_pkcs = $(PROGS_pkcs:%_pkcs=$(TESTDIR_pkcs)/%)
  55 $(CRYPTO_kcf)CMDS_kcf = $(PROGS_kcf:%_kcf=$(TESTDIR_kcf)/%)
  56 CMDS = $(CMDS_pkcs) $(CMDS_kcf)
  57 
  58 $(CMDS) := FILEMODE = 0555
  59 
  60 CPPFLAGS += -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
  61 CPPFLAGS += -I$(COMMONDIR) -I$(SRC)/common/crypto/
  62 
  63 all: $(PROGS)
  64 
  65 %_32_pkcs: %.32.o $(COMMON_OBJS_32)
  66         $(LINK.c) $(OBJS) -o $@ $(LDLIBS)
  67         $(POST_PROCESS)
  68 
  69 %_64_pkcs: %.64.o $(COMMON_OBJS_64)
  70         $(LINK64.c) $(OBJS) -o $@ $(LDLIBS)
  71         $(POST_PROCESS)
  72 
  73 %_32_kcf: %.32.o $(COMMON_OBJS_32)
  74         $(LINK.c) $(OBJS) -o $@ $(LDLIBS)
  75         $(POST_PROCESS)
  76 
  77 %_64_kcf: %.64.o $(COMMON_OBJS_64)
  78         $(LINK64.c) $(OBJS) -o $@ $(LDLIBS)
  79         $(POST_PROCESS)
  80 
  81 %.32.o: %.c
  82         $(COMPILE.c) -o $@ $<
  83         $(POST_PROCESS_O)
  84 
  85 %.64.o: %.c
  86         $(COMPILE64.c) -o $@ $<
  87         $(POST_PROCESS_O)
  88 
  89 install: all $(CMDS)
  90 
  91 clobber: clean
  92         -$(RM) $(PROGS)
  93 
  94 clean:
  95         -$(RM) *.o $(COMMON_OBJS_32) $(COMMON_OBJS_64)
  96 
  97 $(CMDS): $(TESTDIR_pkcs) $(TESTDIR_kcf) $(PROGS)
  98 
  99 $(TESTDIR_pkcs) $(TESTDIR_kcf):
 100         $(INS.dir)
 101 
 102 $(TESTDIR_pkcs)/%_32: %_32_pkcs
 103         $(INS.rename)
 104 
 105 $(TESTDIR_pkcs)/%_64: %_64_pkcs
 106         $(INS.rename)
 107 
 108 $(TESTDIR_kcf)/%_32: %_32_kcf
 109         $(INS.rename)
 110 
 111 $(TESTDIR_kcf)/%_64: %_64_kcf
 112         $(INS.rename)