Makefile.org 19.9 KB
Newer Older
1 2 3 4
##
## Makefile for OpenSSL
##

U
Ulf Möller 已提交
5 6 7
VERSION=
MAJOR=
MINOR=
8 9 10 11
SHLIB_VERSION_NUMBER=
SHLIB_VERSION_HISTORY=
SHLIB_MAJOR=
SHLIB_MINOR=
12
SHLIB_EXT=
13
PLATFORM=dist
14
OPTIONS=
15
CONFIGURE_ARGS=
16 17
SHLIB_TARGET=

18 19 20 21
# INSTALL_PREFIX is for package builders so that they can configure
# for, say, /usr/ and yet have everything installed to /tmp/somedir/usr/.
# Normally it is left empty.
INSTALL_PREFIX=
22 23 24 25
INSTALLTOP=/usr/local/ssl

# Do not edit this manually. Use Configure --openssldir=DIR do change this!
OPENSSLDIR=/usr/local/ssl
26

27 28 29 30
# NO_IDEA - Define to build without the IDEA algorithm
# NO_RC4  - Define to build without the RC4 algorithm
# NO_RC2  - Define to build without the RC2 algorithm
# THREADS - Define when building with threads, you will probably also need any
31
#           system defines as well, i.e. _REENTERANT for Solaris 2.[34]
32 33 34 35
# TERMIO  - Define the termio terminal subsystem, needed if sgtty is missing.
# TERMIOS - Define the termios terminal subsystem, Silicon Graphics.
# LONGCRYPT - Define to use HPUX 10.x's long password modification to crypt(3).
# DEVRANDOM - Give this the value of the 'random device' if your OS supports
36 37
#           one.  32 bytes will be read from this when the random
#           number generator is initalised.
38
# SSL_FORBID_ENULL - define if you want the server to be not able to use the
39
#           NULL encryption ciphers.
40 41 42
#
# LOCK_DEBUG - turns on lots of lock debug output :-)
# REF_CHECK - turn on some xyz_free() assertions.
43
# REF_PRINT - prints some stuff on structure free.
44 45
# CRYPTO_MDEBUG - turns on my 'memory leak' detecting stuff
# MFUNC - Make all Malloc/Free/Realloc calls call
46 47 48 49 50
#       CRYPTO_malloc/CRYPTO_free/CRYPTO_realloc which can be setup to
#       call application defined callbacks via CRYPTO_set_mem_functions()
# MD5_ASM needs to be defined to use the x86 assembler for MD5
# SHA1_ASM needs to be defined to use the x86 assembler for SHA1
# RMD160_ASM needs to be defined to use the x86 assembler for RIPEMD160
51 52 53
# Do not define B_ENDIAN or L_ENDIAN if 'unsigned long' == 8.  It must
# equal 4.
# PKCS1_CHECK - pkcs1 tests.
54

B
Ben Laurie 已提交
55
CC= gcc
56
#CFLAG= -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall -Wuninitialized -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
B
Ben Laurie 已提交
57
CFLAG= -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
58
DEPFLAG= 
59
PEX_LIBS= 
60
EX_LIBS= 
61
EXE_EXT= 
62
AR=ar r
63 64
RANLIB= ranlib
PERL= perl
65
TAR= tar
R
Richard Levitte 已提交
66
TARFLAGS= --no-recursion
67
MAKEDEPPROG=makedepend
68

69 70 71 72 73 74 75 76 77 78 79 80 81 82
# Set BN_ASM to bn_asm.o if you want to use the C version
BN_ASM= bn_asm.o
#BN_ASM= bn_asm.o
#BN_ASM= asm/bn86-elf.o	# elf, linux-elf
#BN_ASM= asm/bn86-sol.o # solaris
#BN_ASM= asm/bn86-out.o # a.out, FreeBSD
#BN_ASM= asm/bn86bsdi.o # bsdi
#BN_ASM= asm/alpha.o    # DEC Alpha
#BN_ASM= asm/pa-risc2.o # HP-UX PA-RISC
#BN_ASM= asm/r3000.o    # SGI MIPS cpu
#BN_ASM= asm/sparc.o    # Sun solaris/SunOS
#BN_ASM= asm/bn-win32.o # Windows 95/NT
#BN_ASM= asm/x86w16.o   # 16 bit code for Windows 3.1/DOS
#BN_ASM= asm/x86w32.o   # 32 bit code for Windows 3.1
83

U
Ulf Möller 已提交
84 85 86 87
# For x86 assembler: Set PROCESSOR to 386 if you want to support
# the 80386.
PROCESSOR=

88 89
# Set DES_ENC to des_enc.o if you want to use the C version
#There are 4 x86 assember options.
B
Ben Laurie 已提交
90
DES_ENC= asm/dx86-out.o asm/yx86-out.o
91 92 93 94 95
#DES_ENC= des_enc.o fcrypt_b.o          # C
#DES_ENC= asm/dx86-elf.o asm/yx86-elf.o # elf
#DES_ENC= asm/dx86-sol.o asm/yx86-sol.o # solaris
#DES_ENC= asm/dx86-out.o asm/yx86-out.o # a.out, FreeBSD
#DES_ENC= asm/dx86bsdi.o asm/yx86bsdi.o # bsdi
96 97 98

# Set BF_ENC to bf_enc.o if you want to use the C version
#There are 4 x86 assember options.
B
Ben Laurie 已提交
99
BF_ENC= asm/bx86-out.o
100
#BF_ENC= bf_enc.o
101
#BF_ENC= asm/bx86-elf.o # elf
102 103 104
#BF_ENC= asm/bx86-sol.o # solaris
#BF_ENC= asm/bx86-out.o # a.out, FreeBSD
#BF_ENC= asm/bx86bsdi.o # bsdi
105

106 107
# Set CAST_ENC to c_enc.o if you want to use the C version
#There are 4 x86 assember options.
B
Ben Laurie 已提交
108
CAST_ENC= asm/cx86-out.o
109 110 111 112 113 114 115 116
#CAST_ENC= c_enc.o
#CAST_ENC= asm/cx86-elf.o # elf
#CAST_ENC= asm/cx86-sol.o # solaris
#CAST_ENC= asm/cx86-out.o # a.out, FreeBSD
#CAST_ENC= asm/cx86bsdi.o # bsdi

# Set RC4_ENC to rc4_enc.o if you want to use the C version
#There are 4 x86 assember options.
B
Ben Laurie 已提交
117
RC4_ENC= asm/rx86-out.o
118 119 120 121 122 123 124 125
#RC4_ENC= rc4_enc.o
#RC4_ENC= asm/rx86-elf.o # elf
#RC4_ENC= asm/rx86-sol.o # solaris
#RC4_ENC= asm/rx86-out.o # a.out, FreeBSD
#RC4_ENC= asm/rx86bsdi.o # bsdi

# Set RC5_ENC to rc5_enc.o if you want to use the C version
#There are 4 x86 assember options.
B
Ben Laurie 已提交
126
RC5_ENC= asm/r586-out.o
127 128 129 130 131 132 133
#RC5_ENC= rc5_enc.o
#RC5_ENC= asm/r586-elf.o # elf
#RC5_ENC= asm/r586-sol.o # solaris
#RC5_ENC= asm/r586-out.o # a.out, FreeBSD
#RC5_ENC= asm/r586bsdi.o # bsdi

# Also need MD5_ASM defined
B
Ben Laurie 已提交
134
MD5_ASM_OBJ= asm/mx86-out.o
135 136 137 138 139 140
#MD5_ASM_OBJ= asm/mx86-elf.o        # elf
#MD5_ASM_OBJ= asm/mx86-sol.o        # solaris
#MD5_ASM_OBJ= asm/mx86-out.o        # a.out, FreeBSD
#MD5_ASM_OBJ= asm/mx86bsdi.o        # bsdi

# Also need SHA1_ASM defined
B
Ben Laurie 已提交
141
SHA1_ASM_OBJ= asm/sx86-out.o
142 143 144 145 146 147
#SHA1_ASM_OBJ= asm/sx86-elf.o       # elf
#SHA1_ASM_OBJ= asm/sx86-sol.o       # solaris
#SHA1_ASM_OBJ= asm/sx86-out.o       # a.out, FreeBSD
#SHA1_ASM_OBJ= asm/sx86bsdi.o       # bsdi

# Also need RMD160_ASM defined
B
Ben Laurie 已提交
148
RMD160_ASM_OBJ= asm/rm86-out.o
149 150 151 152 153
#RMD160_ASM_OBJ= asm/rm86-elf.o       # elf
#RMD160_ASM_OBJ= asm/rm86-sol.o       # solaris
#RMD160_ASM_OBJ= asm/rm86-out.o       # a.out, FreeBSD
#RMD160_ASM_OBJ= asm/rm86bsdi.o       # bsdi

154 155 156 157
# KRB5 stuff
KRB5_INCLUDES=
LIBKRB5=

158
# When we're prepared to use shared libraries in the programs we link here
159 160
# we might set SHLIB_MARK to '$(SHARED_LIBS)'.
SHLIB_MARK=
161

162
DIRS=   crypto ssl $(SHLIB_MARK) apps test tools
U
Ulf Möller 已提交
163 164
SHLIBDIRS= crypto ssl

165 166
# dirs in crypto to build
SDIRS=  \
167
	md2 md4 md5 sha mdc2 hmac ripemd \
168
	des rc2 rc4 rc5 idea bf cast \
169
	bn ec rsa dsa dh dso engine rijndael \
170
	buffer bio stack lhash rand err objects \
171
	evp asn1 pem x509 x509v3 conf txt_db pkcs7 pkcs12 comp ocsp
172

173 174 175 176
# tests to perform.  "alltests" is a special word indicating that all tests
# should be performed.
TESTS = alltests

177
MAKEFILE= Makefile.ssl
178
MAKE=     make -f Makefile.ssl
179

180
MANDIR=$(OPENSSLDIR)/man
181 182 183 184
MAN1=1
MAN3=3
SHELL=/bin/sh

185
TOP=    .
186
ONEDIRS=out tmp
U
Ulf Möller 已提交
187
EDIRS=  times doc bugs util include certs ms shlib mt demos perl sf dep VMS
188
WDIRS=  windows
189
LIBS=   libcrypto.a libssl.a
190 191 192 193
SHARED_CRYPTO=libcrypto$(SHLIB_EXT)
SHARED_SSL=libssl$(SHLIB_EXT)
SHARED_LIBS=
SHARED_LIBS_LINK_EXTS=
194 195

GENERAL=        Makefile
R
Ralf S. Engelschall 已提交
196
BASENAME=       openssl
197 198 199
NAME=           $(BASENAME)-$(VERSION)
TARFILE=        $(NAME).tar
WTARFILE=       $(NAME)-win.tar
200
EXHEADER=       e_os2.h
201
HEADER=         e_os.h
202

203 204 205 206
# When we're prepared to use shared libraries in the programs we link here
# we might remove 'clean-shared' from the targets to perform at this stage

all: clean-shared Makefile.ssl sub_all
207 208

sub_all:
209
	@for i in $(DIRS); \
210
	do \
211
	if [ -d "$$i" ]; then \
212
		(cd $$i && echo "making all in $$i..." && \
213
		$(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}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' SHA1_ASM_OBJ='${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}' all ) || exit 1; \
214 215
	else \
		$(MAKE) $$i; \
216 217
	fi; \
	done; \
218
	if echo "$(DIRS)" | \
219
	    egrep '(^| )(crypto|ssl)( |$$)' > /dev/null 2>&1 && \
220
	   [ -n "$(SHARED_LIBS)" ]; then \
221 222 223
		$(MAKE) $(SHARED_LIBS); \
	fi

224
libcrypto$(SHLIB_EXT): libcrypto.a
225
	@if [ "$(SHLIB_TARGET)" != "" ]; then \
226
		$(MAKE) SHLIBDIRS=crypto build-shared; \
227 228 229
	else \
		echo "There's no support for shared libraries on this platform" >&2; \
	fi
230
libssl$(SHLIB_EXT): libcrypto$(SHLIB_EXT) libssl.a
231
	@if [ "$(SHLIB_TARGET)" != "" ]; then \
232
		$(MAKE) SHLIBDIRS=ssl SHLIBDEPS='-lcrypto' build-shared; \
233 234 235
	else \
		echo "There's no support for shared libraries on this platform" >&2; \
	fi
236 237

clean-shared:
238 239 240 241 242 243 244 245
	@for i in $(SHLIBDIRS); do \
		if [ -n "$(SHARED_LIBS_LINK_EXTS)" ]; then \
			tmp="$(SHARED_LIBS_LINK_EXTS)"; \
			for j in $${tmp:-x}; do \
				( set -x; rm -f lib$$i$$j ); \
			done; \
		fi; \
		( set -x; rm -f lib$$i$(SHLIB_EXT) ); \
246
	done
247

248 249 250 251 252 253
link-shared:
	@for i in $(SHLIBDIRS); do \
		prev=lib$$i$(SHLIB_EXT); \
		if [ -n "$(SHARED_LIBS_LINK_EXTS)" ]; then \
			tmp="$(SHARED_LIBS_LINK_EXTS)"; \
			for j in $${tmp:-x}; do \
254
				( set -x; ln -f -s $$prev lib$$i$$j ); \
255 256 257 258 259 260 261
				prev=lib$$i$$j; \
			done; \
		fi; \
	done

build-shared: clean-shared do_$(SHLIB_TARGET) link-shared

262
do_bsd-gcc-shared: do_gnu-shared
263 264
do_linux-shared: do_gnu-shared
do_gnu-shared:
265
	libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
266
	( set -x; ${CC}  -shared -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
267
		-Wl,-soname=lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
U
Ulf Möller 已提交
268
		-Wl,--whole-archive lib$$i.a \
269
		-Wl,--no-whole-archive $$libs ${EX_LIBS} -lc ) || exit 1; \
270
	libs="$$libs -l$$i"; \
271
	done
272 273

# This assumes that GNU utilities are *not* used
274
do_tru64-shared:
275
	libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
276
	( set -x; ${CC}  -shared -o lib$$i.so \
277
		-set_version "${SHLIB_VERSION_HISTORY}${SHLIB_VERSION_NUMBER}" \
278
		-all lib$$i.a -none $$libs ${EX_LIBS} -lc ) || exit 1; \
279
	libs="$$libs -l$$i"; \
280
	done
U
Ulf Möller 已提交
281

282
# This assumes that GNU utilities are *not* used
283
do_solaris-shared:
284
	libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
285 286
	( PATH=/usr/ccs/bin:$$PATH ; export PATH; \
	  set -x; ${CC}  -G -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
287
		-h lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
288
		-z allextract lib$$i.a $$libs ${EX_LIBS} -lc ) || exit 1; \
289
	libs="$$libs -l$$i"; \
290
	done
291

292 293
# This assumes that GNU utilities are *not* used
do_irix-shared:
294
	libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
295
	( set -x; ${CC} -shared -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
296
		-Wl,-soname,lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
297
		-all lib$$i.a $$libs ${EX_LIBS} -lc) || exit 1; \
298
	libs="$$libs -l$$i"; \
299 300
	done

301
# This assumes that GNU utilities are *not* used
302 303 304 305 306 307 308 309 310 311
# HP-UX includes the full pathname of libs we depend on, so we would get
# ./libcrypto (with ./ as path information) compiled into libssl, hence
# we omit the SHLIBDEPS. Applications must be linked with -lssl -lcrypto
# anyway.
# The object modules are loaded from lib$i.a using the undocumented -Fl
# option.
#
# WARNING: Until DSO is fixed to support a search path, we support SHLIB_PATH
#          by temporarily specifying "+s"!
#
312
do_hpux-shared:
313
	for i in ${SHLIBDIRS}; do \
314
	( set -x; /usr/ccs/bin/ld +vnocompatwarnings \
315 316
		-b -z +s \
		-o lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR} \
317
		+h lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR} \
318
		-Fl lib$$i.a -ldld -lc ) || exit 1; \
319 320 321
	done

# This assumes that GNU utilities are *not* used
322 323 324 325 326 327 328 329
# HP-UX includes the full pathname of libs we depend on, so we would get
# ./libcrypto (with ./ as path information) compiled into libssl, hence
# we omit the SHLIBDEPS. Applications must be linked with -lssl -lcrypto
# anyway.
#
# HP-UX in 64bit mode has "+s" enabled by default; it will search for
# shared libraries along LD_LIBRARY_PATH _and_ SHLIB_PATH.
#
330
do_hpux64-shared:
331 332 333
	for i in ${SHLIBDIRS}; do \
	( set -x; /usr/ccs/bin/ld -b -z \
		-o lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR} \
334
		+h lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR} \
335
		+forceload lib$$i.a -ldl -lc ) || exit 1; \
336 337
	done

338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380
# The following method is said to work on all platforms.  Tests will
# determine if that's how it's gong to be used.
# This assumes that for all but GNU systems, GNU utilities are *not* used.
# ALLSYMSFLAGS would be:
#  GNU systems: --whole-archive
#  Tru64 Unix:  -all
#  Solaris:     -z allextract
#  Irix:        -all
#  HP/UX-32bit: -Fl
#  HP/UX-64bit: +forceload
#  AIX:		-bnogc
# SHAREDFLAGS would be:
#  GNU systems: -shared -Wl,-soname=lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
#  Tru64 Unix:  -shared \
#		-set_version "${SHLIB_VERSION_HISTORY}${SHLIB_VERSION_NUMBER}"
#  Solaris:     -G -h lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
#  Irix:        -shared -Wl,-soname,lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
#  HP/UX-32bit: +vnocompatwarnings -b -z +s \
#		+h lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR}
#  HP/UX-64bit: -b -z +h lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR}
#  AIX:		-bE:lib$$i.exp -bM:SRE
# SHAREDCMD would be:
#  GNU systems: $(CC)
#  Tru64 Unix:  $(CC)
#  Solaris:     $(CC)
#  Irix:        $(CC)
#  HP/UX-32bit: /usr/ccs/bin/ld
#  HP/UX-64bit: /usr/ccs/bin/ld
#  AIX:		$(CC)
ALLSYMSFLAG=-bnogc
SHAREDFLAGS=-bE:lib$$i.exp -bM:SRE
SHAREDCMD=$(CC)
do_aix-shared:
	libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
	( set -x; \
	  ld -r -o $$i.o $(ALLSYMSFLAG) lib$$i.a && \
	  ( nm -Pg lib$$i.o | grep ' [BD] ' | cut -f1 -d' ' > lib$$i.exp; \
	    $(SHAREDCMD) $(SHAREDFLAG) -o lib$$i.so lib$$i.o \
		$$libs ${EX_LIBS} ) ) \
	|| exit 1; \
	libs="$$libs -l$$i"; \
	done

381
Makefile.ssl: Makefile.org
382
	@echo "Makefile.ssl is older than Makefile.org."
383
	@echo "Reconfigure the source tree (via './config' or 'perl Configure'), please."
384 385
	@false

386
libclean:
387
	rm -f *.a */lib */*/lib
388

389
clean:
390
	rm -f shlib/*.o *.o core a.out fluff *.map rehash.time testlog make.log cctest cctest.c
391 392
	@for i in $(DIRS) ;\
	do \
393
	if [ -d "$$i" ]; then \
394 395 396 397
		(cd $$i && echo "making clean in $$i..." && \
		$(MAKE) SDIRS='${SDIRS}' clean ) || exit 1; \
		rm -f $(LIBS); \
	fi; \
398
	done;
399 400
	rm -f *.a *.o speed.* *.map *.so .pure core
	rm -f $(TARFILE)
401 402
	@for i in $(ONEDIRS) ;\
	do \
403
	rm -fr $$i/*; \
404 405 406
	done

makefile.one: files
407
	$(PERL) util/mk1mf.pl >makefile.one; \
408 409
	sh util/do_ms.sh

U
Ulf Möller 已提交
410
files:
411
	$(PERL) $(TOP)/util/files.pl Makefile.ssl > $(TOP)/MINFO
412 413
	@for i in $(DIRS) ;\
	do \
414
	if [ -d "$$i" ]; then \
415 416 417
		(cd $$i && echo "making 'files' in $$i..." && \
		$(MAKE) SDIRS='${SDIRS}' PERL='${PERL}' files ) || exit 1; \
	fi; \
418 419 420
	done;

links:
421
	@$(TOP)/util/point.sh Makefile.ssl Makefile
422
	@$(PERL) $(TOP)/util/mkdir-p.pl include/openssl
423
	@$(PERL) $(TOP)/util/mklink.pl include/openssl $(EXHEADER)
424
	@for i in $(DIRS); do \
425
	if [ -d "$$i" ]; then \
426
		(cd $$i && echo "making links in $$i..." && \
427
		$(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}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' SHA1_ASM_OBJ='${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; \
428
	fi; \
429 430 431
	done;

dclean:
432
	rm -f *.bak
433 434
	@for i in $(DIRS) ;\
	do \
435
	if [ -d "$$i" ]; then \
436 437 438
		(cd $$i && echo "making dclean in $$i..." && \
		$(MAKE) SDIRS='${SDIRS}' PERL='${PERL}' dclean ) || exit 1; \
	fi; \
439 440
	done;

441 442
rehash: rehash.time
rehash.time: certs
443
	@(OPENSSL="`pwd`/apps/openssl"; OPENSSL_DEBUG_MEMORY=on; export OPENSSL OPENSSL_DEBUG_MEMORY; $(PERL) tools/c_rehash certs)
B
Bodo Möller 已提交
444
	touch rehash.time
445

446
test:   tests
447

448
tests: rehash
449
	@(cd test && echo "testing..." && \
450
	$(MAKE) CC='${CC}' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' SDIRS='${SDIRS}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' AR='${AR}' PERL='${PERL}' TESTS='${TESTS}' KRB5_INCLUDES='${KRB5_INCLUDES}' LIBKRB5='${LIBKRB5}' EXE_EXT='${EXE_EXT}' OPENSSL_DEBUG_MEMORY=on tests );
451
	@apps/openssl version -a
452

453 454 455
report:
	@$(PERL) util/selftest.pl

456 457 458
depend:
	@for i in $(DIRS) ;\
	do \
459
	if [ -d "$$i" ]; then \
460
		(cd $$i && echo "making dependencies $$i..." && \
461
		$(MAKE) SDIRS='${SDIRS}' DEPFLAG='${DEPFLAG}' MAKEDEPPROG='${MAKEDEPPROG}' depend ) || exit 1; \
462
	fi; \
463 464 465 466 467
	done;

lint:
	@for i in $(DIRS) ;\
	do \
468
	if [ -d "$$i" ]; then \
469 470 471
		(cd $$i && echo "making lint $$i..." && \
		$(MAKE) SDIRS='${SDIRS}' lint ) || exit 1; \
	fi; \
472 473 474 475 476
	done;

tags:
	@for i in $(DIRS) ;\
	do \
477
	if [ -d "$$i" ]; then \
478 479 480
		(cd $$i && echo "making tags $$i..." && \
		$(MAKE) SDIRS='${SDIRS}' tags ) || exit 1; \
	fi; \
481 482 483
	done;

errors:
484
	$(PERL) util/mkerr.pl -recurse -write
485

486
stacks:
487
	$(PERL) util/mkstack.pl -write
488

489
util/libeay.num::
490
	$(PERL) util/mkdef.pl crypto update
491 492

util/ssleay.num::
493
	$(PERL) util/mkdef.pl ssl update
494

495
crypto/objects/obj_dat.h: crypto/objects/obj_dat.pl crypto/objects/obj_mac.h
496
	$(PERL) crypto/objects/obj_dat.pl crypto/objects/obj_mac.h crypto/objects/obj_dat.h
B
typo  
Bodo Möller 已提交
497
crypto/objects/obj_mac.h: crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num
498
	$(PERL) crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num crypto/objects/obj_mac.h
499

500
TABLE: Configure
B
Bodo Möller 已提交
501
	(echo 'Output of `Configure TABLE'"':"; \
502
	$(PERL) Configure TABLE) > TABLE
503

504
update: depend errors stacks util/libeay.num util/ssleay.num crypto/objects/obj_dat.h TABLE
505

506
tar:
507
	@$(TAR) $(TARFLAGS) -cvf - \
508
		`find * \! -path CVS/\* \! -path \*/CVS/\* \! -name CVS \! -name .cvsignore \! -name STATUS \! -name TABLE | sort` |\
509
	tardy --user_number=0  --user_name=openssl \
R
Ralf S. Engelschall 已提交
510 511
	      --group_number=0 --group_name=openssl \
	      --prefix=openssl-$(VERSION) - |\
512 513
	gzip --best >../$(TARFILE).gz; \
	ls -l ../$(TARFILE).gz
514

515 516 517 518 519 520 521 522
tar-snap:
	@$(TAR) $(TARFLAGS) -cvf - \
		`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 '.#*' | sort` |\
	tardy --user_number=0  --user_name=openssl \
	      --group_number=0 --group_name=openssl \
	      --prefix=openssl-$(VERSION) - > ../$(TARFILE);\
	ls -l ../$(TARFILE)

523
dist:   
524
	$(PERL) Configure dist
525 526 527 528 529
	@$(MAKE) dist_pem_h
	@$(MAKE) SDIRS='${SDIRS}' clean
	@$(MAKE) tar

dist_pem_h:
U
Ulf Möller 已提交
530
	(cd crypto/pem; $(MAKE) CC='${CC}' SDIRS='${SDIRS}' CFLAG='${CFLAG}' pem.h; $(MAKE) clean)
531

532
install: all install_docs
B
Bodo Möller 已提交
533 534 535 536 537 538
	@$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin \
		$(INSTALL_PREFIX)$(INSTALLTOP)/lib \
		$(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl \
		$(INSTALL_PREFIX)$(OPENSSLDIR)/misc \
		$(INSTALL_PREFIX)$(OPENSSLDIR)/certs \
		$(INSTALL_PREFIX)$(OPENSSLDIR)/private \
539
		$(INSTALL_PREFIX)$(OPENSSLDIR)/lib
B
Bodo Möller 已提交
540 541 542 543 544
	@for i in $(EXHEADER) ;\
	do \
	(cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
	chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
	done;
545 546
	@for i in $(DIRS) ;\
	do \
547
	if [ -d "$$i" ]; then \
548
		(cd $$i; echo "installing $$i..."; \
549
		$(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 ); \
550
	fi; \
551 552 553
	done
	@for i in $(LIBS) ;\
	do \
554 555 556
		if [ -f "$$i" ]; then \
		(       echo installing $$i; \
			cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib; \
557
			$(RANLIB) $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i; \
558 559
			chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i ); \
		fi \
560
	done
561 562 563 564 565 566
	@if [ -n "$(SHARED_LIBS)" ]; then \
		tmp="$(SHARED_LIBS)"; \
		for i in $${tmp:-x}; \
		do \
			if [ -f "$$i" ]; then \
			(       echo installing $$i; \
567 568
				cp -f $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib; \
				chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i ); \
569 570 571 572 573 574
			fi \
		done; \
		(	here="`pwd`"; \
			cd $(INSTALL_PREFIX)$(INSTALLTOP)/lib; \
			make -f $$here/Makefile link-shared ); \
	fi
575 576 577

install_docs:
	@$(PERL) $(TOP)/util/mkdir-p.pl \
578 579 580 581
		$(INSTALL_PREFIX)$(MANDIR)/man1 \
		$(INSTALL_PREFIX)$(MANDIR)/man3 \
		$(INSTALL_PREFIX)$(MANDIR)/man5 \
		$(INSTALL_PREFIX)$(MANDIR)/man7
582 583
	@for i in doc/apps/*.pod; do \
		fn=`basename $$i .pod`; \
584
		if [ "$$fn" = "config" ]; then sec=5; else sec=1; fi; \
585
		echo "installing man$$sec/`basename $$i .pod`.$$sec"; \
586
		(cd `dirname $$i`; \
587
		$(PERL) ../../util/pod2man.pl --section=$$sec --center=OpenSSL \
588 589
			 --release=$(VERSION) `basename $$i`) \
			>  $(INSTALL_PREFIX)$(MANDIR)/man$$sec/`basename $$i .pod`.$$sec; \
590 591 592
	done
	@for i in doc/crypto/*.pod doc/ssl/*.pod; do \
		fn=`basename $$i .pod`; \
593
		if [ "$$fn" = "des_modes" ]; then sec=7; else sec=3; fi; \
594
		echo "installing man$$sec/`basename $$i .pod`.$$sec"; \
595
		(cd `dirname $$i`; \
596
		$(PERL) ../../util/pod2man.pl --section=$$sec --center=OpenSSL \
597 598
			--release=$(VERSION) `basename $$i`) \
			>  $(INSTALL_PREFIX)$(MANDIR)/man$$sec/`basename $$i .pod`.$$sec; \
599
	done
600 601

# DO NOT DELETE THIS LINE -- make depend depends on it.