1#
2# SSLeay/fips/Makefile
3#
4
5DIR=		fips
6TOP=		..
7CC=		cc
8INCLUDE=	-I. -I$(TOP) -I../include
9INCLUDES=	-I.. -I../.. -I../../include
10CFLAG=		-g
11INSTALL_PREFIX=
12OPENSSLDIR=     /usr/local/ssl
13INSTALLTOP=	/usr/local/ssl
14MAKEDEPPROG=	makedepend
15MAKEDEPEND=	$(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
16MAKEFILE=       Makefile
17RM=             rm -f
18AR=		ar r
19
20PEX_LIBS=
21EX_LIBS=
22
23CFLAGS= $(INCLUDE) $(CFLAG)
24
25
26LIBS=
27
28FDIRS=sha1 rand des aes dsa rsa dh
29
30GENERAL=Makefile README fips-lib.com install.com
31
32LIB= $(TOP)/libcrypto.a
33SHARED_LIB= libcrypto$(SHLIB_EXT)
34LIBSRC=fips.c fips_err_wrapper.c
35LIBOBJ=fips.o fips_err_wrapper.o
36
37SRC= $(LIBSRC)
38
39EXHEADER=fips.h
40HEADER=$(EXHEADER) fips_err.h
41EXE=openssl_fips_fingerprint
42
43ALL=    $(GENERAL) $(SRC) $(HEADER)
44
45top:
46	@(cd ..; $(MAKE) DIRS=$(DIR) all)
47
48all:
49	@if egrep 'define OPENSSL_FIPS' $(TOP)/include/openssl/opensslconf.h > /dev/null; then \
50		$(MAKE) -e subdirs check lib shared; \
51	fi
52
53check:
54	TOP=`pwd`/$(TOP) ./fips_check_sha1 fingerprint.sha1 $(SRC) $(HEADER)
55
56subdirs:
57	@for i in $(FDIRS) ;\
58	do \
59	(cd $$i && echo "making all in fips/$$i..." && \
60	$(MAKE) CC='$(CC)' INCLUDES='${INCLUDES}' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' FIPS_DES_ENC='${FIPS_DES_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' FIPS_SHA1_ASM_OBJ='${FIPS_SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' AR='${AR}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' all ) || exit 1; \
61	done;
62
63sub_target:
64	@for i in $(FDIRS) ;\
65	do \
66	(cd $$i && echo "making $(TARGET) in fips/$$i..." && \
67	$(MAKE) CC='$(CC)' INCLUDES='${INCLUDES}' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' FIPS_DES_ENC='${FIPS_DES_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' FIPS_SHA1_ASM_OBJ='${FIPS_SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' AR='${AR}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' $(TARGET) ) || exit 1; \
68	done;
69
70files:
71	$(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
72	@for i in $(FDIRS) ;\
73	do \
74	(cd $$i && echo "making 'files' in fips/$$i..." && \
75	$(MAKE) PERL='${PERL}' files ); \
76	done;
77
78links:
79	@$(PERL) $(TOP)/util/mklink.pl ../include/openssl $(EXHEADER)
80	@for i in $(FDIRS); do \
81	(cd $$i && echo "making links in fips/$$i..." && \
82	$(MAKE) CC='$(CC)' INCLUDES='${INCLUDES}' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' FIPS_DES_ENC='${FIPS_DES_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' FIPS_SHA1_ASM_OBJ='${FIPS_SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' AR='${AR}' PERL='${PERL}' links ); \
83	done;
84
85lib:	$(LIBOBJ)
86	$(AR) $(LIB) $(LIBOBJ)
87	$(RANLIB) $(LIB) || echo Never mind.
88	@touch lib
89
90shared:
91	if [ -n "$(SHARED_LIBS)" ]; then \
92		(cd ..; $(MAKE) $(SHARED_LIB)); \
93	fi
94
95libs:
96	@for i in $(FDIRS) ;\
97	do \
98	(cd $$i && echo "making libs in fips/$$i..." && \
99	$(MAKE) CC='$(CC)' CFLAG='${CFLAG}' INSTALL_PREFIX='${INSTALL_PREFIX}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' AR='${AR}' lib ); \
100	done;
101
102tests:
103	@for i in $(FDIRS) ;\
104	do \
105	(cd $$i && echo "making tests in fips/$$i..." && \
106	$(MAKE) CC='$(CC)' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' AR='${AR}' tests ); \
107	done;
108
109top_fips_test_suite:
110	(cd $(TOP); $(MAKE) DIRS=fips FDIRS=. TARGET=fips_test_suite sub_target)
111
112fips_test_suite: fips_test_suite.o $(TOP)/libcrypto.a
113	$(CC) $(CFLAGS) -o fips_test_suite fips_test_suite.o $(PEX_LIBS) $(TOP)/libcrypto.a $(EX_LIBS)
114	TOP=$(TOP) $(TOP)/fips/openssl_fips_fingerprint $(TOP)/libcrypto.a fips_test_suite || { rm fips_test_suite; false; }
115
116fips_test: top top_fips_test_suite
117	cd testvectors && perl -p -i -e 's/COUNT=/COUNT = /' des[23]/req/*.req
118	@for i in dsa sha1 aes des ; \
119	do \
120		(cd $$i && echo "making fips_test in fips/$$i..." && $(MAKE) fips_test) \
121	done;
122
123install:
124	@headerlist="$(EXHEADER)"; for i in $$headerlist ;\
125	do \
126		(cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
127		chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
128	done;
129	@for i in $(FDIRS) ;\
130	do \
131		(cd $$i && echo "making install in fips/$$i..." && \
132		$(MAKE) CC='$(CC)' CFLAG='${CFLAG}' INSTALL_PREFIX='${INSTALL_PREFIX}'  INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' install ); \
133	done;
134	@for i in $(EXE) ; \
135	do \
136		echo "installing $$i"; \
137		cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
138		chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
139		mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i; \
140	done
141
142lint:
143	@for i in $(FDIRS) ;\
144	do \
145	(cd $$i && echo "making lint in fips/$$i..." && \
146	$(MAKE) CC='$(CC)' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' lint ); \
147	done;
148
149depend:
150	if [ ! -f buildinf.h ]; then touch buildinf.h; fi # fake buildinf.h if it does not exist
151	$(MAKEDEPEND) -- $(CFLAG) $(INCLUDE) $(DEPFLAG) -- $(SRC)
152	if [ ! -s buildinf.h ]; then rm buildinf.h; fi
153	@for i in $(FDIRS) ;\
154	do \
155	(cd $$i && echo "making depend in fips/$$i..." && \
156	$(MAKE) MAKEFILE='${MAKEFILE}' INCLUDES='${INCLUDES}' CFLAG='${CFLAG}' DEPFLAG='${DEPFLAG}' MAKEDEPPROG='${MAKEDEPPROG}' KRB5_INCLUDES='${KRB5_INCLUDES}' PERL='${PERL}' depend ); \
157	done;
158
159clean:
160	rm -f buildinf.h *.o */*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
161	@for i in $(FDIRS) ;\
162	do \
163	(cd $$i && echo "making clean in fips/$$i..." && \
164	$(MAKE) CC='$(CC)' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' clean ); \
165	done;
166
167dclean:
168	$(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
169	mv -f Makefile.new $(MAKEFILE)
170	@for i in $(FDIRS) ;\
171	do \
172	(cd $$i && echo "making dclean in fips/$$i..." && \
173	$(MAKE) PERL='${PERL}' CC='$(CC)' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' dclean ); \
174	done;
175
176# DO NOT DELETE THIS LINE -- make depend depends on it.
177
178fips.o: ../include/openssl/aes.h ../include/openssl/asn1.h
179fips.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
180fips.o: ../include/openssl/bn.h ../include/openssl/cast.h
181fips.o: ../include/openssl/crypto.h ../include/openssl/des.h
182fips.o: ../include/openssl/des_old.h ../include/openssl/dh.h
183fips.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
184fips.o: ../include/openssl/err.h ../include/openssl/evp.h
185fips.o: ../include/openssl/fips.h ../include/openssl/fips_rand.h
186fips.o: ../include/openssl/hmac.h ../include/openssl/idea.h
187fips.o: ../include/openssl/lhash.h ../include/openssl/md2.h
188fips.o: ../include/openssl/md4.h ../include/openssl/md5.h
189fips.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h
190fips.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
191fips.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
192fips.o: ../include/openssl/rand.h ../include/openssl/rc2.h
193fips.o: ../include/openssl/rc4.h ../include/openssl/rc5.h
194fips.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
195fips.o: ../include/openssl/safestack.h ../include/openssl/sha.h
196fips.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
197fips.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h fips.c
198fips.o: fips_locl.h
199fips_err_wrapper.o: ../include/openssl/opensslconf.h fips_err_wrapper.c
200