1### Generated automatically from Makefile.org by Configure.
2
3##
4## Makefile for OpenSSL
5##
6
7#
8# Set our CommEngine directory (by splitting the pwd into two words
9# at /userspace and taking the first word only).
10# Then include the common defines under CommEngine.
11#
12#Foxconn Perry added start, 2011/01/06, for https remote management
13include ../config.in
14include ../config.mk
15
16
17BUILD_DIR = $(TARGETDIR)/usr/sbin
18MANDIR = $(TARGETDIR)/usr/man
19#Foxconn Perry added end, 2011/01/06, for https remote management
20
21CURR_DIR := $(shell pwd)
22#BUILD_DIR:=$(subst /userspace, /userspace,$(CURR_DIR))
23#BUILD_DIR:=$(word 1, $(BUILD_DIR))
24#TARGETS_DIR = $(BUILD_DIR)/targets
25
26#include $(BUILD_DIR)/make.common
27
28VERSION=0.9.7f
29MAJOR=0
30MINOR=9.7
31SHLIB_VERSION_NUMBER=0.9.7
32SHLIB_VERSION_HISTORY=
33SHLIB_MAJOR=0
34SHLIB_MINOR=9.7
35SHLIB_EXT=.so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
36#PLATFORM=linux-mips
37
38#Foxconn Perry modified start, 2011/01/11, for https remote management
39#ifeq ($(strip $(BUILD_HTTPD_SSL)),)
40#OPTIONS=no-krb5 no-hw shared no-threads no-zlib no-bf no-cast no_md2 no-md4 no-mdc2 no-ripemd no-rc2 no-krb5 no_dsa no_ec no_speed no_engine no_ocsp
41#else
42#OPTIONS=no-krb5 no-hw shared no-threads no-zlib no-bf no-cast no_md2 no-md4 no-mdc2 no-ripemd no-rc2 no-krb5 no_dsa no_ec no_speed
43#endif
44#Foxconn Perry modified end, 2011/01/11, for https remote management
45
46CONFIGURE_ARGS=no-krb5 no-hw shared linux-mips
47SHLIB_TARGET=linux-shared
48
49# HERE indicates where this Makefile lives.  This can be used to indicate
50# where sub-Makefiles are expected to be.  Currently has very limited usage,
51# and should probably not be bothered with at all.
52HERE=.
53
54# INSTALL_PREFIX is for package builders so that they can configure
55# for, say, /usr/ and yet have everything installed to /tmp/somedir/usr/.
56# Normally it is left empty.
57INSTALL_PREFIX=$(CURR_DIR)/tmp
58INSTALLTOP=/usr/local/ssl
59
60# Do not edit this manually. Use Configure --openssldir=DIR do change this!
61OPENSSLDIR=/usr/local/ssl
62
63# NO_IDEA - Define to build without the IDEA algorithm
64# NO_RC4  - Define to build without the RC4 algorithm
65# NO_RC2  - Define to build without the RC2 algorithm
66# THREADS - Define when building with threads, you will probably also need any
67#           system defines as well, i.e. _REENTERANT for Solaris 2.[34]
68# TERMIO  - Define the termio terminal subsystem, needed if sgtty is missing.
69# TERMIOS - Define the termios terminal subsystem, Silicon Graphics.
70# LONGCRYPT - Define to use HPUX 10.x's long password modification to crypt(3).
71# DEVRANDOM - Give this the value of the 'random device' if your OS supports
72#           one.  32 bytes will be read from this when the random
73#           number generator is initalised.
74# SSL_FORBID_ENULL - define if you want the server to be not able to use the
75#           NULL encryption ciphers.
76#
77# LOCK_DEBUG - turns on lots of lock debug output :-)
78# REF_CHECK - turn on some xyz_free() assertions.
79# REF_PRINT - prints some stuff on structure free.
80# CRYPTO_MDEBUG - turns on my 'memory leak' detecting stuff
81# MFUNC - Make all Malloc/Free/Realloc calls call
82#       CRYPTO_malloc/CRYPTO_free/CRYPTO_realloc which can be setup to
83#       call application defined callbacks via CRYPTO_set_mem_functions()
84# MD5_ASM needs to be defined to use the x86 assembler for MD5
85# SHA1_ASM needs to be defined to use the x86 assembler for SHA1
86# RMD160_ASM needs to be defined to use the x86 assembler for RIPEMD160
87# Do not define B_ENDIAN or L_ENDIAN if 'unsigned long' == 8.  It must
88# equal 4.
89# PKCS1_CHECK - pkcs1 tests.
90
91#CC= cc
92#CFLAG= -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall -Wuninitialized -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
93CFLAG= -fPIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_NO_KRB5 -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer  -Wall -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
94DEPFLAG= 
95PEX_LIBS= 
96
97ifeq ($(strip $(DESKTOP_LINUX)),y)
98EX_LIBS= -ldl
99else
100EX_LIBS= -ldl -L$(TOOLCHAIN_TOP)/usr/mips-linux-uclibc/lib -lgcc_s
101endif
102
103
104EXE_EXT= 
105ARFLAGS= 
106AR=ar $(ARFLAGS) r
107#RANLIB= /usr/bin/ranlib
108PERL= /usr/bin/perl
109TAR= tar
110TARFLAGS= --no-recursion
111#MAKEDEPPROG=makedepend
112MAKEDEPPROG=gcc
113
114# We let the C compiler driver to take care of .s files. This is done in
115# order to be excused from maintaining a separate set of architecture
116# dependent assembler flags. E.g. if you throw -mcpu=ultrasparc at SPARC
117# gcc, then the driver will automatically translate it to -xarch=v8plus
118# and pass it down to assembler.
119AS=$(CC) -c
120ASFLAG=$(CFLAG)
121
122# Set BN_ASM to bn_asm.o if you want to use the C version
123BN_ASM= bn_asm.o
124#BN_ASM= bn_asm.o
125#BN_ASM= asm/bn86-elf.o	# elf, linux-elf
126#BN_ASM= asm/bn86-sol.o # solaris
127#BN_ASM= asm/bn86-out.o # a.out, FreeBSD
128#BN_ASM= asm/bn86bsdi.o # bsdi
129#BN_ASM= asm/alpha.o    # DEC Alpha
130#BN_ASM= asm/pa-risc2.o # HP-UX PA-RISC
131#BN_ASM= asm/r3000.o    # SGI MIPS cpu
132#BN_ASM= asm/sparc.o    # Sun solaris/SunOS
133#BN_ASM= asm/bn-win32.o # Windows 95/NT
134#BN_ASM= asm/x86w16.o   # 16 bit code for Windows 3.1/DOS
135#BN_ASM= asm/x86w32.o   # 32 bit code for Windows 3.1
136
137# For x86 assembler: Set PROCESSOR to 386 if you want to support
138# the 80386.
139PROCESSOR= 
140
141# Set DES_ENC to des_enc.o if you want to use the C version
142#There are 4 x86 assember options.
143FIPS_DES_ENC= 
144DES_ENC= des_enc.o fcrypt_b.o
145#DES_ENC= des_enc.o fcrypt_b.o          # C
146#DES_ENC= asm/dx86-elf.o asm/yx86-elf.o # elf
147#DES_ENC= asm/dx86-sol.o asm/yx86-sol.o # solaris
148#DES_ENC= asm/dx86-out.o asm/yx86-out.o # a.out, FreeBSD
149#DES_ENC= asm/dx86bsdi.o asm/yx86bsdi.o # bsdi
150
151# Set BF_ENC to bf_enc.o if you want to use the C version
152#There are 4 x86 assember options.
153BF_ENC= bf_enc.o
154#BF_ENC= bf_enc.o
155#BF_ENC= asm/bx86-elf.o # elf
156#BF_ENC= asm/bx86-sol.o # solaris
157#BF_ENC= asm/bx86-out.o # a.out, FreeBSD
158#BF_ENC= asm/bx86bsdi.o # bsdi
159
160# Set CAST_ENC to c_enc.o if you want to use the C version
161#There are 4 x86 assember options.
162CAST_ENC= c_enc.o
163#CAST_ENC= c_enc.o
164#CAST_ENC= asm/cx86-elf.o # elf
165#CAST_ENC= asm/cx86-sol.o # solaris
166#CAST_ENC= asm/cx86-out.o # a.out, FreeBSD
167#CAST_ENC= asm/cx86bsdi.o # bsdi
168
169# Set RC4_ENC to rc4_enc.o if you want to use the C version
170#There are 4 x86 assember options.
171RC4_ENC= rc4_enc.o
172#RC4_ENC= rc4_enc.o
173#RC4_ENC= asm/rx86-elf.o # elf
174#RC4_ENC= asm/rx86-sol.o # solaris
175#RC4_ENC= asm/rx86-out.o # a.out, FreeBSD
176#RC4_ENC= asm/rx86bsdi.o # bsdi
177
178# Set RC5_ENC to rc5_enc.o if you want to use the C version
179#There are 4 x86 assember options.
180RC5_ENC= rc5_enc.o
181#RC5_ENC= rc5_enc.o
182#RC5_ENC= asm/r586-elf.o # elf
183#RC5_ENC= asm/r586-sol.o # solaris
184#RC5_ENC= asm/r586-out.o # a.out, FreeBSD
185#RC5_ENC= asm/r586bsdi.o # bsdi
186
187# Also need MD5_ASM defined
188MD5_ASM_OBJ= 
189#MD5_ASM_OBJ= asm/mx86-elf.o        # elf
190#MD5_ASM_OBJ= asm/mx86-sol.o        # solaris
191#MD5_ASM_OBJ= asm/mx86-out.o        # a.out, FreeBSD
192#MD5_ASM_OBJ= asm/mx86bsdi.o        # bsdi
193
194# Also need SHA1_ASM defined
195SHA1_ASM_OBJ= 
196FIPS_SHA1_ASM_OBJ= 
197#SHA1_ASM_OBJ= asm/sx86-elf.o       # elf
198#SHA1_ASM_OBJ= asm/sx86-sol.o       # solaris
199#SHA1_ASM_OBJ= asm/sx86-out.o       # a.out, FreeBSD
200#SHA1_ASM_OBJ= asm/sx86bsdi.o       # bsdi
201
202# Also need RMD160_ASM defined
203RMD160_ASM_OBJ= 
204#RMD160_ASM_OBJ= asm/rm86-elf.o       # elf
205#RMD160_ASM_OBJ= asm/rm86-sol.o       # solaris
206#RMD160_ASM_OBJ= asm/rm86-out.o       # a.out, FreeBSD
207#RMD160_ASM_OBJ= asm/rm86bsdi.o       # bsdi
208
209# KRB5 stuff
210KRB5_INCLUDES=
211LIBKRB5=
212
213# When we're prepared to use shared libraries in the programs we link here
214# we might set SHLIB_MARK to '$(SHARED_LIBS)'.
215SHLIB_MARK=
216
217DIRS=   crypto fips ssl $(SHLIB_MARK) sigs tools
218SHLIBDIRS= crypto ssl
219
220# dirs in crypto to build
221SDIRS=  objects \
222	md2 md4 md5 sha mdc2 hmac ripemd \
223	des rc2 rc4 rc5 idea bf cast \
224	bn ec rsa dsa dh dso engine aes \
225	buffer bio stack lhash rand err \
226	evp asn1 pem x509 x509v3 conf txt_db pkcs7 pkcs12 comp ocsp ui krb5
227
228FDIRS=	sha1 rand des aes dsa rsa dh
229
230# tests to perform.  "alltests" is a special word indicating that all tests
231# should be performed.
232TESTS = alltests
233
234MAKEFILE= Makefile
235
236MANDIR=$(OPENSSLDIR)/man
237MAN1=1
238MAN3=3
239MANSUFFIX=
240SHELL=/bin/sh
241
242TOP=    .
243ONEDIRS=out tmp
244EDIRS=  times doc bugs util include certs ms shlib mt demos perl sf dep VMS
245WDIRS=  windows
246LIBS=   libcrypto.a libssl.a
247SIGS=	libcrypto.a.sha1
248SHARED_CRYPTO=libcrypto$(SHLIB_EXT)
249SHARED_SSL=libssl$(SHLIB_EXT)
250SHARED_LIBS= $(SHARED_CRYPTO) $(SHARED_SSL)
251SHARED_LIBS_LINK_EXTS=.so.$(SHLIB_MAJOR) .so
252SHARED_LDFLAGS=
253
254GENERAL=        Makefile
255BASENAME=       openssl
256NAME=           $(BASENAME)-$(VERSION)
257TARFILE=        $(NAME).tar
258WTARFILE=       $(NAME)-win.tar
259EXHEADER=       e_os2.h
260HEADER=         e_os.h
261
262# When we're prepared to use shared libraries in the programs we link here
263# we might remove 'clean-shared' from the targets to perform at this stage
264
265all: Makefile sub_all openssl.pc install_sw install_libs
266
267dynamic: all install
268
269sigs:	$(SIGS)
270libcrypto.a.sha1: libcrypto.a
271	@if egrep 'define OPENSSL_FIPS' $(TOP)/include/openssl/opensslconf.h > /dev/null; then \
272		$(RANLIB) libcrypto.a; \
273		fips/sha1/fips_standalone_sha1 libcrypto.a > libcrypto.a.sha1; \
274	fi
275
276sub_all:
277	@for i in $(DIRS); \
278	do \
279	if [ -d "$$i" ]; then \
280		(cd $$i && echo "making all in $$i..." && \
281		$(MAKE) CC='${CC}' PLATFORM='${PLATFORM}' CFLAG='${CFLAG}' AS='${AS}' ASFLAG='${ASFLAG}' SDIRS='$(SDIRS)' FDIRS='$(FDIRS)' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' FIPS_DES_ENC='${FIPS_DES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_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}' AR='${AR}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' KRB5_INCLUDES='${KRB5_INCLUDES}' LIBKRB5='${LIBKRB5}' EXE_EXT='${EXE_EXT}' SHARED_LIBS='${SHARED_LIBS}' SHLIB_EXT='${SHLIB_EXT}' SHLIB_TARGET='${SHLIB_TARGET}' all ) || exit 1; \
282	else \
283		$(MAKE) $$i; \
284	fi; \
285	done;
286
287sub_target:
288	@for i in $(DIRS); \
289	do \
290	if [ -d "$$i" ]; then \
291		(cd $$i && echo "making $(TARGET) in $$i..." && \
292		$(MAKE) CC='${CC}' PLATFORM='${PLATFORM}' CFLAG='${CFLAG}' AS='${AS}' ASFLAG='${ASFLAG}' SDIRS='$(SDIRS)' FDIRS='$(FDIRS)' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' FIPS_DES_ENC='${FIPS_DES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_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}' AR='${AR}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' KRB5_INCLUDES='${KRB5_INCLUDES}' LIBKRB5='${LIBKRB5}' EXE_EXT='${EXE_EXT}' SHARED_LIBS='${SHARED_LIBS}' SHLIB_EXT='${SHLIB_EXT}' SHLIB_TARGET='${SHLIB_TARGET}' TARGET='$(TARGET)' sub_target ) || exit 1; \
293	else \
294		$(MAKE) $$i; \
295	fi; \
296	done;
297
298libcrypto$(SHLIB_EXT): libcrypto.a
299	@if [ "$(SHLIB_TARGET)" != "" ]; then \
300		$(MAKE) SHLIBDIRS=crypto build-shared; \
301	else \
302		echo "There's no support for shared libraries on this platform" >&2; \
303	fi
304
305libssl$(SHLIB_EXT): libcrypto$(SHLIB_EXT) libssl.a
306	@if [ "$(SHLIB_TARGET)" != "" ]; then \
307		$(MAKE) SHLIBDIRS=ssl SHLIBDEPS='-lcrypto' build-shared; \
308	else \
309		echo "There's no support for shared libraries on this platform" >&2; \
310	fi
311
312clean-shared:
313	@for i in $(SHLIBDIRS); do \
314		if [ -n "$(SHARED_LIBS_LINK_EXTS)" ]; then \
315			tmp="$(SHARED_LIBS_LINK_EXTS)"; \
316			for j in $${tmp:-x}; do \
317				( set -x; rm -f lib$$i$$j ); \
318			done; \
319		fi; \
320		( set -x; rm -f lib$$i$(SHLIB_EXT) ); \
321		if [ "$(PLATFORM)" = "Cygwin" ]; then \
322			( set -x; rm -f cyg$$i-$(SHLIB_VERSION_NUMBER)$(SHLIB_EXT) lib$$i$(SHLIB_EXT).a ); \
323		fi; \
324	done
325
326link-shared:
327	@if [ -n "$(SHARED_LIBS_LINK_EXTS)" ]; then \
328		tmp="$(SHARED_LIBS_LINK_EXTS)"; \
329		for i in $(SHLIBDIRS); do \
330			prev=lib$$i$(SHLIB_EXT); \
331			for j in $${tmp:-x}; do \
332				( set -x; \
333				rm -f lib$$i$$j; ln -s $$prev lib$$i$$j ); \
334				prev=lib$$i$$j; \
335			done; \
336		done; \
337	fi
338
339build-shared: clean-shared do_$(SHLIB_TARGET) link-shared
340
341do_bsd-gcc-shared: do_gnu-shared
342do_linux-shared: do_gnu-shared
343do_gnu-shared:
344	libs='-L. -L${LIBDIR} ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
345	if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
346		libs="$(LIBKRB5) $$libs"; \
347	fi; \
348	( set -x; ${LD} ${SHARED_LDFLAGS} \
349		-shared -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
350		-soname=lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
351		-Bsymbolic \
352		--whole-archive lib$$i.a \
353		--no-whole-archive $$libs ${EX_LIBS} -lc ) || exit 1; \
354	libs="-l$$i $$libs"; \
355	done
356
357DETECT_GNU_LD=(${CC} -Wl,-V /dev/null 2>&1 | grep '^GNU ld' )>/dev/null
358
359# For Darwin AKA Mac OS/X (dyld)
360do_darwin-shared: 
361	libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
362	if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
363		libs="$(LIBKRB5) $$libs"; \
364	fi; \
365	( set -x; ${CC} --verbose -dynamiclib -o lib$$i${SHLIB_EXT} \
366		lib$$i.a $$libs -all_load -current_version ${SHLIB_MAJOR}.${SHLIB_MINOR} \
367		-compatibility_version ${SHLIB_MAJOR}.`echo ${SHLIB_MINOR} | cut -d. -f1` \
368		-install_name ${INSTALLTOP}/lib/lib$$i${SHLIB_EXT} ) || exit 1; \
369	libs="-l`basename $$i${SHLIB_EXT} .dylib` $$libs"; \
370	echo "" ; \
371	done
372
373do_cygwin-shared:
374	libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
375	if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
376		libs="$(LIBKRB5) $$libs"; \
377	fi; \
378	shlib=cyg$${i}-$(SHLIB_VERSION_NUMBER).dll; \
379	[ "$(PLATFORM)" = "mingw" ] && shlib=$${i}eay32.dll; \
380	[ -f apps/$$shlib ] && rm apps/$$shlib; \
381	[ -f test/$$shlib ] && rm test/$$shlib; \
382	base=;  [ $$i = "crypto" ] && base=-Wl,--image-base,0xFE00000; \
383	( set -x; ${CC} ${SHARED_LDFLAGS} \
384		-shared $$base -o $$shlib \
385		-Wl,-Bsymbolic \
386		-Wl,--whole-archive lib$$i.a \
387		-Wl,--out-implib,lib$$i.dll.a \
388		-Wl,--no-whole-archive $$libs ${EX_LIBS} ) || exit 1; \
389	cp -p $$shlib apps/; cp -p $$shlib test/; \
390	libs="-l$$i $$libs"; \
391	done
392
393# This assumes that GNU utilities are *not* used
394do_alpha-osf1-shared:
395	if ${DETECT_GNU_LD}; then \
396		$(MAKE) do_gnu-shared; \
397	else \
398		libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
399		if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
400			libs="$(LIBKRB5) $$libs"; \
401		fi; \
402		( set -x; ${CC} ${SHARED_LDFLAGS} \
403			-shared -o lib$$i.so \
404			-set_version "${SHLIB_VERSION_HISTORY}${SHLIB_VERSION_NUMBER}" \
405			-all lib$$i.a -none $$libs ${EX_LIBS} -lc ) || exit 1; \
406		libs="-l$$i $$libs"; \
407		done; \
408	fi
409
410# This assumes that GNU utilities are *not* used
411# The difference between alpha-osf1-shared and tru64-shared is the `-msym'
412# option passed to the linker.
413do_tru64-shared:
414	if ${DETECT_GNU_LD}; then \
415		$(MAKE) do_gnu-shared; \
416	else \
417		libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
418		if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
419			libs="$(LIBKRB5) $$libs"; \
420		fi; \
421		( set -x; ${CC} ${SHARED_LDFLAGS} \
422			-shared -msym -o lib$$i.so \
423			-set_version "${SHLIB_VERSION_HISTORY}${SHLIB_VERSION_NUMBER}" \
424			-all lib$$i.a -none $$libs ${EX_LIBS} -lc ) || exit 1; \
425		libs="-l$$i $$libs"; \
426		done; \
427	fi
428
429# This assumes that GNU utilities are *not* used
430# The difference between tru64-shared and tru64-shared-rpath is the
431# -rpath ${INSTALLTOP}/lib passed to the linker.
432do_tru64-shared-rpath:
433	if ${DETECT_GNU_LD}; then \
434		$(MAKE) do_gnu-shared; \
435	else \
436		libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
437		if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
438			libs="$(LIBKRB5) $$libs"; \
439		fi; \
440		( set -x; ${CC} ${SHARED_LDFLAGS} \
441			-shared -msym -o lib$$i.so \
442			-rpath  ${INSTALLTOP}/lib \
443			-set_version "${SHLIB_VERSION_HISTORY}${SHLIB_VERSION_NUMBER}" \
444			-all lib$$i.a -none $$libs ${EX_LIBS} -lc ) || exit 1; \
445		libs="-l$$i $$libs"; \
446		done; \
447	fi
448
449
450# This assumes that GNU utilities are *not* used
451do_solaris-shared:
452	if ${DETECT_GNU_LD}; then \
453		$(MAKE) do_gnu-shared; \
454	else \
455		libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
456		if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
457			libs="$(LIBKRB5) $$libs"; \
458		fi; \
459		( PATH=/usr/ccs/bin:$$PATH ; export PATH; \
460		  MINUSZ='-z '; \
461		  (${CC} -v 2>&1 | grep gcc) > /dev/null && MINUSZ='-Wl,-z,'; \
462		  set -x; ${CC} ${SHARED_LDFLAGS} -G -dy -z text \
463			-o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
464			-h lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
465			-Wl,-Bsymbolic \
466			$${MINUSZ}allextract lib$$i.a $${MINUSZ}defaultextract \
467			$$libs ${EX_LIBS} -lc ) || exit 1; \
468		libs="-l$$i $$libs"; \
469		done; \
470	fi
471
472# OpenServer 5 native compilers used
473do_svr3-shared:
474	if ${DETECT_GNU_LD}; then \
475		$(MAKE) do_gnu-shared; \
476	else \
477		libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
478		if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
479			libs="$(LIBKRB5) $$libs"; \
480		fi; \
481		( PATH=/usr/ccs/bin:$$PATH ; export PATH; \
482		  find . -name "*.o" -print > allobjs ; \
483		  OBJS= ; export OBJS ; \
484		  for obj in `ar t lib$$i.a` ; do \
485		    OBJS="$${OBJS} `grep /$$obj allobjs`" ; \
486		  done ; \
487		  set -x; ${CC} ${SHARED_LDFLAGS} \
488			-G -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
489			-h lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
490			$${OBJS} $$libs ${EX_LIBS} ) || exit 1; \
491		libs="-l$$i $$libs"; \
492		done; \
493	fi
494
495# UnixWare 7 and OpenUNIX 8 native compilers used
496do_svr5-shared:
497	if ${DETECT_GNU_LD}; then \
498		$(MAKE) do_gnu-shared; \
499	else \
500		libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
501		if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
502			libs="$(LIBKRB5) $$libs"; \
503		fi; \
504		( PATH=/usr/ccs/bin:$$PATH ; export PATH; \
505		  SHARE_FLAG='-G'; \
506		  (${CC} -v 2>&1 | grep gcc) > /dev/null && SHARE_FLAG='-shared'; \
507		  find . -name "*.o" -print > allobjs ; \
508		  OBJS= ; export OBJS ; \
509		  for obj in `ar t lib$$i.a` ; do \
510		    OBJS="$${OBJS} `grep /$$obj allobjs`" ; \
511		  done ; \
512		  set -x; LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH \
513			${CC} ${SHARED_LDFLAGS} \
514			$${SHARE_FLAG} -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
515			-h lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
516			$${OBJS} $$libs ${EX_LIBS} ) || exit 1; \
517		libs="-l$$i $$libs"; \
518		done; \
519	fi
520
521# This assumes that GNU utilities are *not* used
522do_irix-shared:
523	if ${DETECT_GNU_LD}; then \
524		$(MAKE) do_gnu-shared; \
525	else \
526		libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
527		if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
528			libs="$(LIBKRB5) $$libs"; \
529		fi; \
530		( WHOLELIB="-all lib$$i.a -none"; \
531		  (${CC} -v 2>&1 | grep gcc) > /dev/null && WHOLELIB="-Wl,-all,lib$$i.a,-none"; \
532		  set -x; ${CC} ${SHARED_LDFLAGS} \
533			-shared -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
534			-Wl,-soname,lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
535			$${WHOLELIB} $$libs ${EX_LIBS} -lc) || exit 1; \
536		libs="-l$$i $$libs"; \
537		done; \
538	fi
539
540# This assumes that GNU utilities are *not* used
541# HP-UX includes the full pathname of libs we depend on, so we would get
542# ./libcrypto (with ./ as path information) compiled into libssl, hence
543# we omit the SHLIBDEPS. Applications must be linked with -lssl -lcrypto
544# anyway.
545# The object modules are loaded from lib$i.a using the undocumented -Fl
546# option.
547#
548# WARNING: Until DSO is fixed to support a search path, we support SHLIB_PATH
549#          by temporarily specifying "+s"!
550#
551do_hpux-shared:
552	for i in ${SHLIBDIRS}; do \
553	if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
554		libs="$(LIBKRB5) $$libs"; \
555	fi; \
556	if expr $(PLATFORM) : '.*ia64' > /dev/null; then \
557		shlib=lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR}; \
558	else \
559		shlib=lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR}; \
560	fi; \
561	[ -f $$shlib ] && rm -f $$shlib; \
562	( set -x; /usr/ccs/bin/ld ${SHARED_LDFLAGS} \
563		+vnocompatwarnings \
564		-b -z +s \
565		-o $$shlib +h $$shlib \
566		-Fl lib$$i.a -ldld -lc ) || exit 1; \
567	chmod a=rx $$shlib; \
568	done
569
570# This assumes that GNU utilities are *not* used
571# HP-UX includes the full pathname of libs we depend on, so we would get
572# ./libcrypto (with ./ as path information) compiled into libssl, hence
573# we omit the SHLIBDEPS. Applications must be linked with -lssl -lcrypto
574# anyway.
575#
576# HP-UX in 64bit mode has "+s" enabled by default; it will search for
577# shared libraries along LD_LIBRARY_PATH _and_ SHLIB_PATH.
578#
579do_hpux64-shared:
580	for i in ${SHLIBDIRS}; do \
581	if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
582		libs="$(LIBKRB5) $$libs"; \
583	fi; \
584	if expr $(PLATFORM) : '.*ia64' > /dev/null; then \
585		shlib=lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR}; \
586	else \
587		shlib=lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR}; \
588	fi; \
589	[ -f $$shlib ] && rm -f $$shlib; \
590	( set -x; /usr/ccs/bin/ld ${SHARED_LDFLAGS} \
591		-b -z \
592		-o $$shlib +h $$shlib \
593		+forceload lib$$i.a -ldl -lc ) || exit 1; \
594	chmod a=rx $$shlib; \
595	done
596
597# The following method is said to work on all platforms.  Tests will
598# determine if that's how it's gong to be used.
599# This assumes that for all but GNU systems, GNU utilities are *not* used.
600# ALLSYMSFLAGS would be:
601#  GNU systems: --whole-archive
602#  Tru64 Unix:  -all
603#  Solaris:     -z allextract
604#  Irix:        -all
605#  HP/UX-32bit: -Fl
606#  HP/UX-64bit: +forceload
607#  AIX:		-bnogc
608# SHAREDFLAGS would be:
609#  GNU systems: -shared -Wl,-soname=lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
610#  Tru64 Unix:  -shared \
611#		-set_version "${SHLIB_VERSION_HISTORY}${SHLIB_VERSION_NUMBER}"
612#  Solaris:     -G -h lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
613#  Irix:        -shared -Wl,-soname,lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
614#  HP/UX-32bit: +vnocompatwarnings -b -z +s \
615#		+h lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR}
616#  HP/UX-64bit: -b -z +h lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR}
617#  AIX:		-G -bE:lib$$i.exp -bM:SRE
618# SHAREDCMD would be:
619#  GNU systems: $(CC)
620#  Tru64 Unix:  $(CC)
621#  Solaris:     $(CC)
622#  Irix:        $(CC)
623#  HP/UX-32bit: /usr/ccs/bin/ld
624#  HP/UX-64bit: /usr/ccs/bin/ld
625#  AIX:		$(CC)
626ALLSYMSFLAG=-bnogc
627SHAREDFLAGS=${SHARED_LDFLAGS} -G -bE:lib$$i.exp -bM:SRE
628SHAREDCMD=$(CC)
629do_aix-shared:
630	libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
631	if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
632		libs="$(LIBKRB5) $$libs"; \
633	fi; \
634	( set -x; \
635	  OBJECT_MODE=`expr x${SHARED_LDFLAGS} : 'x\-[a-z]\([0-9]*\)'`; \
636	  OBJECT_MODE=$${OBJECT_MODE:-32}; export OBJECT_MODE; \
637	  ld -r -o lib$$i.o $(ALLSYMSFLAG) lib$$i.a && \
638	  ( nm -Pg lib$$i.o | grep ' [BD] ' | cut -f1 -d' ' > lib$$i.exp; \
639	    $(SHAREDCMD) $(SHAREDFLAGS) \
640		-o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} lib$$i.o \
641		$$libs ${EX_LIBS} ) ) \
642	|| exit 1; \
643	libs="-l$$i $$libs"; \
644	done
645
646do_reliantunix-shared:
647	libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
648	if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
649		libs="$(LIBKRB5) $$libs"; \
650	fi; \
651	tmpdir=/tmp/openssl.$$$$ ; rm -rf $$tmpdir ; \
652	( set -x; \
653	  ( Opwd=`pwd` ; mkdir $$tmpdir || exit 1; \
654	    cd $$tmpdir || exit 1 ; ar x $$Opwd/lib$$i.a ; \
655	    ${CC} -G -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} *.o \
656	  ) || exit 1; \
657	  cp $$tmpdir/lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} . ; \
658	) || exit 1; \
659	rm -rf $$tmpdir ; \
660	libs="-l$$i $$libs"; \
661	done
662
663openssl.pc: Makefile
664	@ ( echo 'prefix=$(INSTALLTOP)'; \
665	    echo 'exec_prefix=$${prefix}'; \
666	    echo 'libdir=$${exec_prefix}/lib'; \
667	    echo 'includedir=$${prefix}/include'; \
668	    echo ''; \
669	    echo 'Name: OpenSSL'; \
670	    echo 'Description: Secure Sockets Layer and cryptography libraries and tools'; \
671	    echo 'Version: '$(VERSION); \
672	    echo 'Requires: '; \
673	    echo 'Libs: -L$${libdir} -lssl -lcrypto $(LIBKRB5) $(EX_LIBS)'; \
674	    echo 'Cflags: -I$${includedir} $(KRB5_INCLUDES)' ) > openssl.pc
675
676#Makefile: Makefile.org
677#	@echo "Makefile is older than Makefile.org."
678#	@echo "Reconfigure the source tree (via './config' or 'perl Configure'), please."
679#	@false
680Makefile: 
681
682libclean:
683	rm -f *.map *.so *.so.* engines/*.so *.a */lib */*/lib
684	rm -f $(TARGETDIR)/lib/public/libssl.so*
685	rm -f $(TARGETDIR)/lib/public/libcrypto.so*
686	rm -f $(TARGETDIR)/bin/openssl
687
688clean:	libclean
689	if [ ! -f Makefile.org ]; then \
690		echo Untarring original source...; \
691		(tar xkfj $(OPENSOURCE_DIR)/openssl.tar.bz2 -C $(OPENSOURCE_DIR) 2> /dev/null || true); \
692	fi
693	rm -f shlib/*.o *.o core a.out fluff rehash.time testlog make.log cctest cctest.c
694	@for i in $(DIRS) ;\
695	do \
696	if [ -d "$$i" ]; then \
697		(cd $$i && echo "making clean in $$i..." && \
698		$(MAKE) EXE_EXT='${EXE_EXT}' SDIRS='${SDIRS}' clean ) || exit 1; \
699		rm -f $(LIBS); \
700	fi; \
701	done;
702	rm -f openssl.pc
703	rm -f speed.* .pure
704	rm -f $(TARFILE)
705	@for i in $(ONEDIRS) ;\
706	do \
707	rm -fr $$i/*; \
708	done
709
710#
711# mwang: distclean will delete all the files that we have not modified for brcm.
712# We will get all those files from the tarball anyways.
713#
714distclean: clean
715	rm -rf bugs certs CHANGES* config demos doc e_os* FAQ
716	rm -rf include INSTALL* install.com LICENSE MacOS Makefile.org makevms.com
717	rm -rf ms NEWS openssl.* os2 perl PROBLEMS README* shlib test times
718	rm -rf tools util VMS
719	-find apps -type f -a ! -name progs.h -exec rm -f {} \;
720	rm -f apps/md4.c
721	rm -rf apps/demoCA apps/set
722	-find crypto -type f -a ! \( -name opensslconf.h -o -name err_all.c \) -exec rm -f {} \;
723	-find crypto -depth -type d -a ! \( -name crypto -o -name err \) -exec rmdir {} \;
724	-find fips -type f -a ! -name fips_aesavs.c -exec rm -f {} \;
725	rm -rf fips/rand fips/des fips/rsa fips/dh fips/sha1 fips/dsa
726	-find ssl -type f -a ! -name s23_meth.c -exec rm -f {} \;
727
728
729makefile.one: files
730	$(PERL) util/mk1mf.pl >makefile.one; \
731	sh util/do_ms.sh
732
733files:
734	$(PERL) $(TOP)/util/files.pl Makefile > $(TOP)/MINFO
735	@for i in $(DIRS) ;\
736	do \
737	if [ -d "$$i" ]; then \
738		(cd $$i && echo "making 'files' in $$i..." && \
739		$(MAKE) SDIRS='${SDIRS}' PERL='${PERL}' files ) || exit 1; \
740	fi; \
741	done;
742
743links:
744	@$(PERL) $(TOP)/util/mkdir-p.pl include/openssl
745	@$(PERL) $(TOP)/util/mklink.pl include/openssl $(EXHEADER)
746	@for i in $(DIRS); do \
747	if [ -d "$$i" ]; then \
748		(cd $$i && echo "making links in $$i..." && \
749		$(MAKE) CC='${CC}' PLATFORM='${PLATFORM}' CFLAG='${CFLAG}' SDIRS='$(SDIRS)' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' FIPS_DES_ENC='${FIPS_DES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_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}' AR='${AR}' PERL='${PERL}' KRB5_INCLUDES='${KRB5_INCLUDES}' LIBKRB5='${LIBKRB5}' links ) || exit 1; \
750	fi; \
751	done;
752
753gentests:
754	@(cd test && echo "generating dummy tests (if needed)..." && \
755	$(MAKE) CC='${CC}' PLATFORM='${PLATFORM}' CFLAG='${CFLAG}' SDIRS='$(SDIRS)' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' FIPS_DES_ENC='${FIPS_DES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_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}' AR='${AR}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' TESTS='${TESTS}' KRB5_INCLUDES='${KRB5_INCLUDES}' LIBKRB5='${LIBKRB5}' EXE_EXT='${EXE_EXT}' SHARED_LIBS='${SHARED_LIBS}' SHLIB_EXT='${SHLIB_EXT}' SHLIB_TARGET='${SHLIB_TARGET}' TESTS='${TESTS}' OPENSSL_DEBUG_MEMORY=on generate );
756
757dclean:
758	rm -f *.bak
759	@for i in $(DIRS) ;\
760	do \
761	if [ -d "$$i" ]; then \
762		(cd $$i && echo "making dclean in $$i..." && \
763		$(MAKE) SDIRS='${SDIRS}' PERL='${PERL}' dclean ) || exit 1; \
764	fi; \
765	done;
766
767rehash: rehash.time
768rehash.time: certs
769	@(OPENSSL="`pwd`/util/opensslwrap.sh"; \
770	  OPENSSL_DEBUG_MEMORY=on; \
771	  export OPENSSL OPENSSL_DEBUG_MEMORY; \
772	  $(PERL) tools/c_rehash certs)
773	touch rehash.time
774
775test:   tests
776
777tests: rehash
778	@(cd test && echo "testing..." && \
779	$(MAKE) CC='${CC}' PLATFORM='${PLATFORM}' CFLAG='${CFLAG}' SDIRS='$(SDIRS)' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' FIPS_DES_ENC='${FIPS_DES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_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}' AR='${AR}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' TESTS='${TESTS}' KRB5_INCLUDES='${KRB5_INCLUDES}' LIBKRB5='${LIBKRB5}' EXE_EXT='${EXE_EXT}' SHARED_LIBS='${SHARED_LIBS}' SHLIB_EXT='${SHLIB_EXT}' SHLIB_TARGET='${SHLIB_TARGET}' TESTS='${TESTS}' OPENSSL_DEBUG_MEMORY=on tests );
780	util/shlib_wrap.sh apps/openssl version -a
781
782report:
783	@$(PERL) util/selftest.pl
784
785depend:
786	@for i in $(DIRS) ;\
787	do \
788	if [ -d "$$i" ]; then \
789		(cd $$i && echo "making dependencies $$i..." && \
790		$(MAKE) SDIRS='${SDIRS}' CFLAG='${CFLAG}' DEPFLAG='${DEPFLAG}' MAKEDEPPROG='${MAKEDEPPROG}' KRB5_INCLUDES='${KRB5_INCLUDES}' PERL='${PERL}' depend ) || exit 1; \
791	fi; \
792	done;
793
794lint:
795	@for i in $(DIRS) ;\
796	do \
797	if [ -d "$$i" ]; then \
798		(cd $$i && echo "making lint $$i..." && \
799		$(MAKE) SDIRS='${SDIRS}' lint ) || exit 1; \
800	fi; \
801	done;
802
803tags:
804	rm -f TAGS
805	find . -name '[^.]*.[ch]' | xargs etags -a
806
807errors:
808	$(PERL) util/mkerr.pl -recurse -write
809	(cd crypto/engine; $(MAKE) PERL=$(PERL) errors)
810
811stacks:
812	$(PERL) util/mkstack.pl -write
813
814util/libeay.num::
815	$(PERL) util/mkdef.pl crypto update
816
817util/ssleay.num::
818	$(PERL) util/mkdef.pl ssl update
819
820crypto/objects/obj_dat.h: crypto/objects/obj_dat.pl crypto/objects/obj_mac.h
821	$(PERL) crypto/objects/obj_dat.pl crypto/objects/obj_mac.h crypto/objects/obj_dat.h
822crypto/objects/obj_mac.h: crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num
823	$(PERL) crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num crypto/objects/obj_mac.h
824
825apps/openssl-vms.cnf: apps/openssl.cnf
826	$(PERL) VMS/VMSify-conf.pl < apps/openssl.cnf > apps/openssl-vms.cnf
827
828TABLE: Configure
829	(echo 'Output of `Configure TABLE'"':"; \
830	$(PERL) Configure TABLE) > TABLE
831
832update: depend errors stacks util/libeay.num util/ssleay.num crypto/objects/obj_dat.h apps/openssl-vms.cnf TABLE
833
834# Build distribution tar-file. As the list of files returned by "find" is
835# pretty long, on several platforms a "too many arguments" error or similar
836# would occur. Therefore the list of files is temporarily stored into a file
837# and read directly, requiring GNU-Tar. Call "make TAR=gtar dist" if the normal
838# tar does not support the --files-from option.
839tar:
840	find . -type d -print | xargs chmod 755
841	find . -type f -print | xargs chmod a+r
842	find . -type f -perm -0100 -print | xargs chmod a+x
843	find * \! -path CVS/\* \! -path \*/CVS/\* \! -name CVS \! -name .cvsignore \! -name STATUS \! -name TABLE | sort > ../$(TARFILE).list; \
844	$(TAR) $(TARFLAGS) --files-from ../$(TARFILE).list -cvf - | \
845	tardy --user_number=0  --user_name=openssl \
846	      --group_number=0 --group_name=openssl \
847	      --prefix=openssl-$(VERSION) - |\
848	gzip --best >../$(TARFILE).gz; \
849	rm -f ../$(TARFILE).list; \
850	ls -l ../$(TARFILE).gz
851
852tar-snap:
853	@$(TAR) $(TARFLAGS) -cvf - \
854		`find * \! -path CVS/\* \! -path \*/CVS/\* \! -name CVS \! -name .cvsignore \! -name STATUS \! -name TABLE \! -name '*.o' \! -name '*.a' \! -name '*.so' \! -name '*.so.*'  \! -name 'openssl' \! -name '*test' \! -name '.#*' \! -name '*~' | sort` |\
855	tardy --user_number=0  --user_name=openssl \
856	      --group_number=0 --group_name=openssl \
857	      --prefix=openssl-$(VERSION) - > ../$(TARFILE);\
858	ls -l ../$(TARFILE)
859
860dist:   
861	$(PERL) Configure dist
862	@$(MAKE) dist_pem_h
863	@$(MAKE) SDIRS='${SDIRS}' clean
864	@$(MAKE) TAR='${TAR}' TARFLAGS='${TARFLAGS}' tar
865
866dist_pem_h:
867	(cd crypto/pem; $(MAKE) CC='${CC}' SDIRS='${SDIRS}' CFLAG='${CFLAG}' pem.h; $(MAKE) clean)
868
869#install: all install_docs install_sw
870
871install: install_libs install_sw
872
873install_app:
874	mkdir -p $(TARGETDIR)/bin
875	install -m 755 apps/openssl $(TARGETDIR)/bin
876
877install_libs:
878	mkdir -p $(TARGETDIR)/lib
879	install -m 755 libssl.so.0.9.7 $(TARGETDIR)/lib
880	(cd $(CURR_DIR)/tmp$(INSTALLTOP)/lib; rm -f libssl.so; ln -s libssl.so.0.9.7 libssl.so)
881	(cd $(TARGETDIR)/lib; rm -f libssl.so; ln -s libssl.so.0.9.7 libssl.so)
882	install -m 755 libcrypto.so.0.9.7 $(TARGETDIR)/lib
883	(cd $(CURR_DIR)/tmp$(INSTALLTOP)/lib; rm -f libcrypto.so; ln -s libcrypto.so.0.9.7 libcrypto.so)
884	(cd $(TARGETDIR)/lib; rm -f libcrypto.so; ln -s libcrypto.so.0.9.7 libcrypto.so)
885
886install_sw:
887	@$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin \
888		$(INSTALL_PREFIX)$(INSTALLTOP)/lib \
889		$(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig \
890		$(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl \
891		$(INSTALL_PREFIX)$(OPENSSLDIR)/misc \
892		$(INSTALL_PREFIX)$(OPENSSLDIR)/certs \
893		$(INSTALL_PREFIX)$(OPENSSLDIR)/private
894	@headerlist="$(EXHEADER)"; for i in $$headerlist ;\
895	do \
896	(cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
897	chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
898	done;
899	@for i in $(DIRS) ;\
900	do \
901	if [ -d "$$i" ]; then \
902		(cd $$i; echo "installing $$i..."; \
903		$(MAKE) CC='${CC}' CFLAG='${CFLAG}' INSTALL_PREFIX='${INSTALL_PREFIX}' INSTALLTOP='${INSTALLTOP}' OPENSSLDIR='${OPENSSLDIR}' EX_LIBS='${EX_LIBS}' SDIRS='${SDIRS}' RANLIB='${RANLIB}' EXE_EXT='${EXE_EXT}' install ); \
904	fi; \
905	done
906	@for i in $(LIBS) ;\
907	do \
908		if [ -f "$$i" ]; then \
909		(       echo installing $$i; \
910			cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
911			if egrep 'define OPENSSL_FIPS' $(TOP)/include/openssl/opensslconf.h > /dev/null; then \
912				: ; \
913			else \
914				$(RANLIB) $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
915			fi; \
916			chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
917			mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i ); \
918		fi; \
919	done;
920	@if [ -n "$(SHARED_LIBS)" ]; then \
921		tmp="$(SHARED_LIBS)"; \
922		for i in $${tmp:-x}; \
923		do \
924			if [ -f "$$i" -o -f "$$i.a" ]; then \
925			(       echo installing $$i; \
926				if [ "$(PLATFORM)" != "Cygwin" ]; then \
927					cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
928					chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
929					mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i; \
930				else \
931					c=`echo $$i | sed 's/^lib\(.*\)\.dll/cyg\1-$(SHLIB_VERSION_NUMBER).dll/'`; \
932					cp $$c $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
933					chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
934					mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c; \
935					cp $$i.a $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.a.new; \
936					chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.a.new; \
937					mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.a.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.a; \
938				fi ); \
939			fi; \
940		done; \
941		(	here="`pwd`"; \
942			cd $(INSTALL_PREFIX)$(INSTALLTOP)/lib; \
943			set $(MAKE); \
944			$$1 -f $$here/Makefile link-shared ); \
945		if [ "$(INSTALLTOP)" != "/usr" ]; then \
946			echo 'OpenSSL shared libraries have been installed in:'; \
947			echo '  $(INSTALLTOP)'; \
948			echo ''; \
949			sed -e '1,/^$$/d' doc/openssl-shared.txt; \
950		fi; \
951	fi
952	@for i in $(SIGS) ;\
953	do \
954		if [ -f "$$i" ]; then \
955		(       echo installing $$i; \
956			cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
957			chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
958			mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i ); \
959		fi; \
960	done;
961	cp openssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig
962	chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig/openssl.pc
963
964install_docs:
965	@$(PERL) $(TOP)/util/mkdir-p.pl \
966		$(INSTALL_PREFIX)$(MANDIR)/man1 \
967		$(INSTALL_PREFIX)$(MANDIR)/man3 \
968		$(INSTALL_PREFIX)$(MANDIR)/man5 \
969		$(INSTALL_PREFIX)$(MANDIR)/man7
970	@pod2man="`cd util; ./pod2mantest $(PERL)`"; \
971	here="`pwd`"; \
972	filecase=; \
973	if [ "$(PLATFORM)" = "DJGPP" -o "$(PLATFORM)" = "Cygwin" -o "$(PLATFORM)" = "mingw" ]; then \
974		filecase=-i; \
975	fi; \
976	for i in doc/apps/*.pod; do \
977		fn=`basename $$i .pod`; \
978		if [ "$$fn" = "config" ]; then sec=5; else sec=1; fi; \
979		echo "installing man$$sec/$$fn.$${sec}$(MANSUFFIX)"; \
980		(cd `$(PERL) util/dirname.pl $$i`; \
981		sh -c "$$pod2man \
982			--section=$$sec --center=OpenSSL \
983			--release=$(VERSION) `basename $$i`") \
984			>  $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$${sec}$(MANSUFFIX); \
985		$(PERL) util/extract-names.pl < $$i | \
986			grep -v $$filecase "^$$fn\$$" | \
987			grep -v "[	]" | \
988			(cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \
989			 while read n; do \
990				$$here/util/point.sh $$fn.$${sec}$(MANSUFFIX) "$$n".$${sec}$(MANSUFFIX); \
991			 done); \
992	done; \
993	for i in doc/crypto/*.pod doc/ssl/*.pod; do \
994		fn=`basename $$i .pod`; \
995		if [ "$$fn" = "des_modes" ]; then sec=7; else sec=3; fi; \
996		echo "installing man$$sec/$$fn.$${sec}$(MANSUFFIX)"; \
997		(cd `$(PERL) util/dirname.pl $$i`; \
998		sh -c "$$pod2man \
999			--section=$$sec --center=OpenSSL \
1000			--release=$(VERSION) `basename $$i`") \
1001			>  $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$${sec}$(MANSUFFIX); \
1002		$(PERL) util/extract-names.pl < $$i | \
1003			grep -v $$filecase "^$$fn\$$" | \
1004			grep -v "[	]" | \
1005			(cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \
1006			 while read n; do \
1007				$$here/util/point.sh $$fn.$${sec}$(MANSUFFIX) "$$n".$${sec}$(MANSUFFIX); \
1008			 done); \
1009	done
1010
1011# DO NOT DELETE THIS LINE -- make depend depends on it.
1012