1386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari# Makefile for libcryptomodule.a
2386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari#
3386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari# David A. McGrew
4386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari# Cisco Systems, Inc.
5386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
6386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagarisrcdir = .
7386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagaritop_srcdir = ..
8386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagaritop_builddir = ../
9386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
10386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
11386ce4d9144fc190797f4e43a31aeaf76ca2e373Param ReddappagariCC	= gcc
12386ce4d9144fc190797f4e43a31aeaf76ca2e373Param ReddappagariINCDIR	= -Iinclude -I$(srcdir)/include
13386ce4d9144fc190797f4e43a31aeaf76ca2e373Param ReddappagariDEFS	= -DHAVE_CONFIG_H
14386ce4d9144fc190797f4e43a31aeaf76ca2e373Param ReddappagariCPPFLAGS= 
15386ce4d9144fc190797f4e43a31aeaf76ca2e373Param ReddappagariCFLAGS	= -Wall -O4 -fexpensive-optimizations -funroll-loops
16386ce4d9144fc190797f4e43a31aeaf76ca2e373Param ReddappagariLIBS	= 
17386ce4d9144fc190797f4e43a31aeaf76ca2e373Param ReddappagariLDFLAGS	=  -L.
18386ce4d9144fc190797f4e43a31aeaf76ca2e373Param ReddappagariCOMPILE = $(CC) $(DEFS) $(INCDIR) $(CPPFLAGS) $(CFLAGS)
19386ce4d9144fc190797f4e43a31aeaf76ca2e373Param ReddappagariCRYPTOLIB = -lcryptomodule
20386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
21386ce4d9144fc190797f4e43a31aeaf76ca2e373Param ReddappagariRANLIB	= ranlib
22386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
23386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari# EXE defines the suffix on executables - it's .exe for cygwin, and
24386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari# null on linux, bsd, and OS X and other OSes.  we define this so that
25386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari# `make clean` will work on the cygwin platform
26386ce4d9144fc190797f4e43a31aeaf76ca2e373Param ReddappagariEXE = 
27386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari# Random source.
28386ce4d9144fc190797f4e43a31aeaf76ca2e373Param ReddappagariRNG_OBJS = rand_source.o
29386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
30386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagariifdef ARCH
31386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari  DEFS += -D$(ARCH)=1
32386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagariendif
33386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
34386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagariifdef sysname
35386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari  DEFS += -D$(sysname)=1
36386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagariendif
37386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
38386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari.PHONY: dummy all runtest clean superclean
39386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
40386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagaridummy : all runtest 
41386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
42386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari# test applications 
43386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
44386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagaritestapp = test/cipher_driver$(EXE) test/datatypes_driver$(EXE) \
45386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari	  test/stat_driver$(EXE) test/sha1_driver$(EXE) \
46386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari	  test/kernel_driver$(EXE) test/aes_calc$(EXE) test/rand_gen$(EXE) \
47386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari	  test/env$(EXE)
48386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
49386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari# data values used to test the aes_calc application
50386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
51386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagarik=000102030405060708090a0b0c0d0e0f
52386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagarip=00112233445566778899aabbccddeeff
53386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagaric=69c4e0d86a7b0430d8cdb78070b4c55a
54386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
55386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagariruntest: libcryptomodule.a $(testapp)
56386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari	test/env$(EXE) # print out information on the build environment
57386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari	@echo "running libcryptomodule test applications..."
58386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari	test `test/aes_calc $k $p` = $c
59386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari	test/cipher_driver$(EXE) -v >/dev/null
60386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari	test/datatypes_driver$(EXE) -v >/dev/null
61386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari	test/stat_driver$(EXE) >/dev/null
62386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari	test/sha1_driver$(EXE) -v >/dev/null
63386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari	test/kernel_driver$(EXE) -v >/dev/null
64386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari	test/rand_gen$(EXE) -n 256 >/dev/null
65386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari	@echo "libcryptomodule test applications passed."
66386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
67386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari# libcryptomodule.a (the crypto engine) 
68386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
69386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagariciphers = cipher/cipher.o cipher/null_cipher.o      \
70386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari          cipher/aes.o cipher/aes_icm.o             \
71386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari          cipher/aes_cbc.o
72386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
73386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagarihashes  = hash/null_auth.o hash/sha1.o \
74386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari          hash/hmac.o hash/auth.o
75386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
76386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagarimath    = math/datatypes.o math/stat.o
77386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
78386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagarirng     = rng/$(RNG_OBJS) rng/rand_source.o rng/prng.o rng/ctr_prng.o
79386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
80386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagarierr     = kernel/err.o
81386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
82386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagarikernel  = kernel/crypto_kernel.o  kernel/alloc.o   \
83386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari          kernel/key.o $(rng) $(err)
84386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
85386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagarixfm     = ae_xfm/xfm.o
86386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
87386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagaricryptobj =  $(ciphers) $(hashes) $(math) $(stat) $(kernel) $(xfm)
88386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
89386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari# the rule for making object files and test apps
90386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
91386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari%.o: %.c
92386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari	$(COMPILE) -c $< -o $@
93386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
94386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari%$(EXE): %.c libcryptomodule.a 
95386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari	$(COMPILE) $(LDFLAGS) $< -o $@ $(CRYPTOLIB) $(LIBS)
96386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
97386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagariifndef AR
98386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari  AR=ar
99386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagariendif
100386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
101386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari# and the crypto module library itself
102386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
103386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagarilibcryptomodule.a: $(cryptobj) 
104386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari	$(AR) cr libcryptomodule.a $(cryptobj) 
105386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari	$(RANLIB) libcryptomodule.a
106386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
107386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagariall: libcryptomodule.a $(testapp)
108386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
109386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari# housekeeping functions
110386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
111386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagariclean:
112386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari	rm -f libcryptomodule.a
113386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari	rm -f $(testapp) *.o */*.o 
114386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari	for a in * .* */*; do if [ -f "$$a~" ] ; then rm $$a~; fi; done;
115386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari	rm -f `find . -name "*.[ch]~*~"`
116386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari	rm -rf latex
117386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
118386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagarisuperclean: clean
119386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari	rm -f *core TAGS ktrace.out
120386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
121386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
122386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari# the target 'package' builds a compressed tar archive of the source code
123386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
124386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagaridistname = crypto-$(shell cat VERSION)
125386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
126386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagaripackage: superclean
127386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari	cd ..; tar cvzf $(distname).tgz crypto/
128386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
129386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari
130386ce4d9144fc190797f4e43a31aeaf76ca2e373Param Reddappagari# EOF
131