Makefile.org 25.3 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 22
# HERE indicates where this Makefile lives.  This can be used to indicate
# where sub-Makefiles are expected to be.  Currently has very limited usage,
# and should probably not be bothered with at all.
HERE=.

23 24 25 26
# 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=
27 28 29 30
INSTALLTOP=/usr/local/ssl

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

32 33 34 35
# 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
36
#           system defines as well, i.e. _REENTERANT for Solaris 2.[34]
37 38 39 40
# 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
41 42
#           one.  32 bytes will be read from this when the random
#           number generator is initalised.
43
# SSL_FORBID_ENULL - define if you want the server to be not able to use the
44
#           NULL encryption ciphers.
45 46 47
#
# LOCK_DEBUG - turns on lots of lock debug output :-)
# REF_CHECK - turn on some xyz_free() assertions.
48
# REF_PRINT - prints some stuff on structure free.
49 50
# CRYPTO_MDEBUG - turns on my 'memory leak' detecting stuff
# MFUNC - Make all Malloc/Free/Realloc calls call
51 52 53 54 55
#       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
56 57 58
# Do not define B_ENDIAN or L_ENDIAN if 'unsigned long' == 8.  It must
# equal 4.
# PKCS1_CHECK - pkcs1 tests.
59

60 61
CC= cc
CFLAG= -O
62
DEPFLAG= 
63
PEX_LIBS= 
64
EX_LIBS= 
65
EXE_EXT= 
66 67
ARFLAGS=
AR=ar $(ARFLAGS) r
68
RANLIB= ranlib
69
NM= nm
70
PERL= perl
71
TAR= tar
R
Richard Levitte 已提交
72
TARFLAGS= --no-recursion
73
MAKEDEPPROG=makedepend
D
Dr. Stephen Henson 已提交
74
LIBDIR=lib
75

76 77 78 79 80 81
# We let the C compiler driver to take care of .s files. This is done in
# order to be excused from maintaining a separate set of architecture
# dependent assembler flags. E.g. if you throw -mcpu=ultrasparc at SPARC
# gcc, then the driver will automatically translate it to -xarch=v8plus
# and pass it down to assembler.
AS=$(CC) -c
82
ASFLAG=$(CFLAG)
83

84 85 86 87 88 89
# For x86 assembler: Set PROCESSOR to 386 if you want to support
# the 80386.
PROCESSOR=

# CPUID module collects small commonly used assembler snippets
CPUID_OBJ= 
90
BN_ASM= bn_asm.o
91
DES_ENC= des_enc.o fcrypt_b.o
A
Andy Polyakov 已提交
92
AES_ENC= aes_core.o aes_cbc.o
93 94 95 96 97 98 99
BF_ENC= bf_enc.o
CAST_ENC= c_enc.o
RC4_ENC= rc4_enc.o
RC5_ENC= rc5_enc.o
MD5_ASM_OBJ= 
SHA1_ASM_OBJ= 
RMD160_ASM_OBJ= 
100
WP_ASM_OBJ=
101
CMLL_ENC=
102
MODES_ASM_OBJ=
A
Andy Polyakov 已提交
103
PERLASM_SCHEME=
104

105 106
# KRB5 stuff
KRB5_INCLUDES=
107
LIBKRB5=
108

D
Dr. Stephen Henson 已提交
109 110 111 112
# Zlib stuff
ZLIB_INCLUDE=
LIBZLIB=

113 114 115 116
# This is the location of fipscanister.o and friends.
# The FIPS module build will place it $(INSTALLTOP)/lib
# but since $(INSTALLTOP) can only take the default value
# when the module is built it will be in /usr/local/ssl/lib
D
typo  
Dr. Stephen Henson 已提交
117
# $(INSTALLTOP) for this build may be different so hard
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
# code the path.

FIPSLIBDIR=/usr/local/ssl/$(LIBDIR)/

# This is set to "y" if fipscanister.o is compiled internally as
# opposed to coming from an external validated location.

FIPSCANISTERINTERNAL=n

# The location of the library which contains fipscanister.o
# normally it will be libcrypto unless fipsdso is set in which
# case it will be libfips. If not compiling in FIPS mode at all
# this is empty making it a useful test for a FIPS compile.

FIPSCANLIB=

# Shared library base address. Currently only used on Windows.
#

BASEADDR=

DIRS=   crypto fips ssl engines apps test tools
140
ENGDIRS= ccgost
U
Ulf Möller 已提交
141 142
SHLIBDIRS= crypto ssl

143 144
# dirs in crypto to build
SDIRS=  \
145
	objects \
146
	md2 md4 md5 sha mdc2 hmac ripemd whrlpool \
A
Andy Polyakov 已提交
147
	des aes rc2 rc4 rc5 idea bf cast camellia seed modes \
148
	bn ec rsa dsa ecdsa dh ecdh dso engine \
149
	buffer bio stack lhash rand err \
150
	evp asn1 pem x509 x509v3 conf txt_db pkcs7 pkcs12 comp ocsp ui krb5 \
151
	cms pqueue ts jpake store cmac
A
Andy Polyakov 已提交
152 153
# keep in mind that the above list is adjusted by ./Configure
# according to no-xxx arguments...
154

155 156 157 158
# tests to perform.  "alltests" is a special word indicating that all tests
# should be performed.
TESTS = alltests

B
Ben Laurie 已提交
159
MAKEFILE= Makefile
160

161
MANDIR=$(OPENSSLDIR)/man
162 163
MAN1=1
MAN3=3
164
MANSUFFIX=
U
Ulf Möller 已提交
165 166
HTMLSUFFIX=html
HTMLDIR=$(OPENSSLDIR)/html
167 168
SHELL=/bin/sh

169
TOP=    .
170
ONEDIRS=out tmp
U
Ulf Möller 已提交
171
EDIRS=  times doc bugs util include certs ms shlib mt demos perl sf dep VMS
172
WDIRS=  windows
173
LIBS=   libcrypto.a libssl.a
174 175 176 177
SHARED_CRYPTO=libcrypto$(SHLIB_EXT)
SHARED_SSL=libssl$(SHLIB_EXT)
SHARED_LIBS=
SHARED_LIBS_LINK_EXTS=
178
SHARED_LDFLAGS=
179 180

GENERAL=        Makefile
R
Ralf S. Engelschall 已提交
181
BASENAME=       openssl
182 183 184
NAME=           $(BASENAME)-$(VERSION)
TARFILE=        $(NAME).tar
WTARFILE=       $(NAME)-win.tar
185
EXHEADER=       e_os2.h
186
HEADER=         e_os.h
187

188
all: Makefile build_all openssl.pc libssl.pc libcrypto.pc
189

A
Andy Polyakov 已提交
190
# as we stick to -e, CLEARENV ensures that local variables in lower
191 192 193 194 195
# Makefiles remain local and variable. $${VAR+VAR} is tribute to Korn
# shell, which [annoyingly enough] terminates unset with error if VAR
# is not present:-( TOP= && unset TOP is tribute to HP-UX /bin/sh,
# which terminates unset with error if no variable was present:-(
CLEARENV=	TOP= && unset TOP $${LIB+LIB} $${LIBS+LIBS}	\
A
Andy Polyakov 已提交
196 197 198 199 200 201
		$${INCLUDE+INCLUDE} $${INCLUDES+INCLUDES}	\
		$${DIR+DIR} $${DIRS+DIRS} $${SRC+SRC}		\
		$${LIBSRC+LIBSRC} $${LIBOBJ+LIBOBJ} $${ALL+ALL}	\
		$${EXHEADER+EXHEADER} $${HEADER+HEADER}		\
		$${GENERAL+GENERAL} $${CFLAGS+CFLAGS}		\
		$${ASFLAGS+ASFLAGS} $${AFLAGS+AFLAGS}		\
A
Andy Polyakov 已提交
202 203
		$${LDCMD+LDCMD} $${LDFLAGS+LDFLAGS}		\
		$${SHAREDCMD+SHAREDCMD} $${SHAREDFLAGS+SHAREDFLAGS}	\
A
Andy Polyakov 已提交
204 205
		$${SHARED_LIB+SHARED_LIB} $${LIBEXTRAS+LIBEXTRAS}

206 207 208 209
BUILDENV=	PLATFORM='$(PLATFORM)' PROCESSOR='$(PROCESSOR)' \
		CC='$(CC)' CFLAG='$(CFLAG)' 			\
		AS='$(CC)' ASFLAG='$(CFLAG) -c'			\
		AR='$(AR)' NM='$(NM)' RANLIB='$(RANLIB)'	\
210
		CROSS_COMPILE='$(CROSS_COMPILE)'	\
211
		PERL='$(PERL)' ENGDIRS='$(ENGDIRS)'		\
D
Dr. Stephen Henson 已提交
212
		SDIRS='$(SDIRS)' LIBRPATH='$(INSTALLTOP)/$(LIBDIR)'	\
213 214
		INSTALL_PREFIX='$(INSTALL_PREFIX)'		\
		INSTALLTOP='$(INSTALLTOP)' OPENSSLDIR='$(OPENSSLDIR)'	\
D
Dr. Stephen Henson 已提交
215
		LIBDIR='$(LIBDIR)'				\
216 217 218 219 220
		MAKEDEPEND='$$$${TOP}/util/domd $$$${TOP} -MD $(MAKEDEPPROG)' \
		DEPFLAG='-DOPENSSL_NO_DEPRECATED $(DEPFLAG)'	\
		MAKEDEPPROG='$(MAKEDEPPROG)'			\
		SHARED_LDFLAGS='$(SHARED_LDFLAGS)'		\
		KRB5_INCLUDES='$(KRB5_INCLUDES)' LIBKRB5='$(LIBKRB5)'	\
D
Dr. Stephen Henson 已提交
221
		ZLIB_INCLUDE='$(ZLIB_INCLUDE)' LIBZLIB='$(LIBZLIB)'	\
222 223 224 225 226 227 228 229 230 231 232 233
		EXE_EXT='$(EXE_EXT)' SHARED_LIBS='$(SHARED_LIBS)'	\
		SHLIB_EXT='$(SHLIB_EXT)' SHLIB_TARGET='$(SHLIB_TARGET)'	\
		PEX_LIBS='$(PEX_LIBS)' EX_LIBS='$(EX_LIBS)'	\
		CPUID_OBJ='$(CPUID_OBJ)'			\
		BN_ASM='$(BN_ASM)' DES_ENC='$(DES_ENC)' 	\
		AES_ENC='$(AES_ENC)' CMLL_ENC='$(CMLL_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)'		\
		WP_ASM_OBJ='$(WP_ASM_OBJ)'			\
234
		MODES_ASM_OBJ='$(MODES_ASM_OBJ)'		\
235
		PERLASM_SCHEME='$(PERLASM_SCHEME)'		\
236 237 238 239
		FIPSLIBDIR='${FIPSLIBDIR}'			\
		FIPSCANLIB="$${FIPSCANLIB:-$(FIPSCANLIB)}"	\
		FIPSCANISTERINTERNAL='${FIPSCANISTERINTERNAL}'	\
		FIPS_EX_OBJ='${FIPS_EX_OBJ}'	\
A
Andy Polyakov 已提交
240 241 242
		THIS=$${THIS:-$@} MAKEFILE=Makefile MAKEOVERRIDES=
# MAKEOVERRIDES= effectively "equalizes" GNU-ish and SysV-ish make flavors,
# which in turn eliminates ambiguities in variable treatment with -e.
243

R
Richard Levitte 已提交
244 245 246 247 248 249 250 251 252 253 254 255 256
# BUILD_CMD is a generic macro to build a given target in a given
# subdirectory.  The target must be given through the shell variable
# `target' and the subdirectory to build in must be given through `dir'.
# This macro shouldn't be used directly, use RECURSIVE_BUILD_CMD or
# BUILD_ONE_CMD instead.
#
# BUILD_ONE_CMD is a macro to build a given target in a given
# subdirectory if that subdirectory is part of $(DIRS).  It requires
# exactly the same shell variables as BUILD_CMD.
#
# RECURSIVE_BUILD_CMD is a macro to build a given target in all
# subdirectories defined in $(DIRS).  It requires that the target
# is given through the shell variable `target'.
A
Andy Polyakov 已提交
257 258 259 260 261 262
BUILD_CMD=  if [ -d "$$dir" ]; then \
	    (	cd $$dir && echo "making $$target in $$dir..." && \
		$(CLEARENV) && $(MAKE) -e $(BUILDENV) TOP=.. DIR=$$dir $$target \
	    ) || exit 1; \
	    fi
RECURSIVE_BUILD_CMD=for dir in $(DIRS); do $(BUILD_CMD); done
263
BUILD_ONE_CMD=\
264
	if expr " $(DIRS) " : ".* $$dir " >/dev/null 2>&1; then \
265 266
		$(BUILD_CMD); \
	fi
267

268
reflect:
A
Andy Polyakov 已提交
269
	@[ -n "$(THIS)" ] && $(CLEARENV) && $(MAKE) $(THIS) -e $(BUILDENV)
270

271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315

# FIXME

FIPS_EX_OBJ= ../crypto/aes/aes_cfb.o \
	../crypto/aes/aes_ecb.o \
	../crypto/aes/aes_ofb.o \
	../crypto/bn/bn_add.o \
	../crypto/bn/bn_blind.o \
	../crypto/bn/bn_ctx.o \
	../crypto/bn/bn_div.o \
	../crypto/bn/bn_exp2.o \
	../crypto/bn/bn_exp.o \
	../crypto/bn/bn_gcd.o \
	../crypto/bn/bn_lib.o \
	../crypto/bn/bn_mod.o \
	../crypto/bn/bn_mont.o \
	../crypto/bn/bn_mul.o \
	../crypto/bn/bn_prime.o \
	../crypto/bn/bn_rand.o \
	../crypto/bn/bn_recp.o \
	../crypto/bn/bn_shift.o \
	../crypto/bn/bn_sqr.o \
	../crypto/bn/bn_word.o \
	../crypto/bn/bn_x931p.o \
	../crypto/buffer/buf_str.o \
	../crypto/cryptlib.o \
	../crypto/des/cfb64ede.o \
	../crypto/des/cfb64enc.o \
	../crypto/des/cfb_enc.o \
	../crypto/des/ecb3_enc.o \
	../crypto/des/ofb64ede.o \
	../crypto/des/fcrypt.o \
	../crypto/des/set_key.o \
	../crypto/dh/dh_check.o \
	../crypto/dh/dh_gen.o \
	../crypto/dh/dh_key.o \
	../crypto/dsa/dsa_gen.o \
	../crypto/dsa/dsa_key.o \
	../crypto/dsa/dsa_ossl.o \
	../crypto/dsa/dsa_sign.o \
	../crypto/dsa/dsa_vrf.o \
	../crypto/evp/e_aes.o \
	../crypto/evp/e_des3.o \
	../crypto/evp/m_sha1.o \
	../crypto/hmac/hmac.o \
316
	../crypto/modes/cbc128.o \
317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338
	../crypto/modes/cfb128.o \
	../crypto/modes/ctr128.o \
	../crypto/modes/ofb128.o \
	../crypto/rand/md_rand.o \
	../crypto/rand/rand_egd.o \
	../crypto/rand/randfile.o \
	../crypto/rand/rand_lib.o \
	../crypto/rand/rand_os2.o \
	../crypto/rand/rand_unix.o \
	../crypto/rand/rand_win.o \
	../crypto/rsa/rsa_eay.o \
	../crypto/rsa/rsa_gen.o \
	../crypto/rsa/rsa_crpt.o \
	../crypto/rsa/rsa_none.o \
	../crypto/rsa/rsa_oaep.o \
	../crypto/rsa/rsa_pk1.o \
	../crypto/rsa/rsa_pss.o \
	../crypto/rsa/rsa_ssl.o \
	../crypto/rsa/rsa_x931.o \
	../crypto/sha/sha1dgst.o \
	../crypto/sha/sha256.o \
	../crypto/sha/sha512.o \
339
	../crypto/thr_id.o \
340 341
	../crypto/uid.o

342
sub_all: build_all
343 344
build_all: build_libs build_apps build_tests build_tools

345 346 347 348
build_libs: build_crypto build_fips build_ssl build_engines

build_fips:
	@dir=fips; target=all; [ -z "$(FIPSCANLIB)" ] || $(BUILD_ONE_CMD)
349 350

build_crypto:
351 352 353 354 355 356 357
	if [ -n "$(FIPSCANLIB)" ]; then \
		EXCL_OBJ='$(AES_ENC) $(BN_ASM) $(DES_ENC) $(CPUID_OBJ) $(SHA1_ASM_OBJ) $(FIPS_EX_OBJ)' ; export EXCL_OBJ ; \
		ARX='$(PERL) $${TOP}/util/arx.pl $(AR)' ; \
	else \
		ARX='${AR}' ; \
	fi ; export ARX ; \
		dir=crypto; target=all; $(BUILD_ONE_CMD)
358
build_ssl:
359
	@dir=ssl; target=all; $(BUILD_ONE_CMD)
360
build_engines:
361
	@dir=engines; target=all; $(BUILD_ONE_CMD)
362
build_apps:
363
	@dir=apps; target=all; $(BUILD_ONE_CMD)
364
build_tests:
365
	@dir=test; target=all; $(BUILD_ONE_CMD)
366
build_tools:
367
	@dir=tools; target=all; $(BUILD_ONE_CMD)
368 369 370

all_testapps: build_libs build_testapps
build_testapps:
371
	@dir=crypto; target=testapps; $(BUILD_ONE_CMD)
372

D
Dr. Stephen Henson 已提交
373
libcrypto$(SHLIB_EXT): libcrypto.a build_fips
374
	@if [ "$(SHLIB_TARGET)" != "" ]; then \
D
Dr. Stephen Henson 已提交
375 376 377 378
		if [ "$(FIPSCANLIB)" = "libcrypto" ]; then \
			FIPSLD_CC="$(CC)"; CC=fips/fipsld; \
			export CC FIPSLD_CC; \
		fi; \
379
		$(MAKE) SHLIBDIRS=crypto build-shared; \
380 381
	else \
		echo "There's no support for shared libraries on this platform" >&2; \
382
		exit 1; \
383
	fi
384

385
libssl$(SHLIB_EXT): libcrypto$(SHLIB_EXT) libssl.a
386
	@if [ "$(SHLIB_TARGET)" != "" ]; then \
387
		$(MAKE) SHLIBDIRS=ssl SHLIBDEPS='-lcrypto' build-shared; \
388 389
	else \
		echo "There's no support for shared libraries on this platform" >&2; \
390
		exit 1; \
391
	fi
392 393

clean-shared:
394
	@set -e; for i in $(SHLIBDIRS); do \
395 396 397 398 399 400 401
		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) ); \
402
		if [ "$(PLATFORM)" = "Cygwin" ]; then \
403 404
			( set -x; rm -f cyg$$i$(SHLIB_EXT) lib$$i$(SHLIB_EXT).a ); \
		fi; \
405
	done
406

407
link-shared:
408
	@ set -e; for i in $(SHLIBDIRS); do \
409
		$(MAKE) -f $(HERE)/Makefile.shared -e $(BUILDENV) \
410 411
			LIBNAME=$$i LIBVERSION=$(SHLIB_MAJOR).$(SHLIB_MINOR) \
			LIBCOMPATVERSIONS=";$(SHLIB_VERSION_HISTORY)" \
412
			symlink.$(SHLIB_TARGET); \
413
		libs="$$libs -l$$i"; \
414 415
	done

416 417 418
build-shared: do_$(SHLIB_TARGET) link-shared

do_$(SHLIB_TARGET):
419
	@ set -e; libs='-L. $(SHLIBDEPS)'; for i in $(SHLIBDIRS); do \
D
Dr. Stephen Henson 已提交
420
		if [ "$$i" = "ssl" -a -n "$(LIBKRB5)" ]; then \
421 422
			libs="$(LIBKRB5) $$libs"; \
		fi; \
A
Andy Polyakov 已提交
423
		$(CLEARENV) && $(MAKE) -f Makefile.shared -e $(BUILDENV) \
424 425
			LIBNAME=$$i LIBVERSION=$(SHLIB_MAJOR).$(SHLIB_MINOR) \
			LIBCOMPATVERSIONS=";$(SHLIB_VERSION_HISTORY)" \
426 427
			LIBDEPS="$$libs $(EX_LIBS)" \
			link_a.$(SHLIB_TARGET); \
428
		libs="-l$$i $$libs"; \
429 430
	done

431 432 433
libcrypto.pc: Makefile
	@ ( echo 'prefix=$(INSTALLTOP)'; \
	    echo 'exec_prefix=$${prefix}'; \
D
Dr. Stephen Henson 已提交
434
	    echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \
435 436 437 438 439 440 441 442 443 444 445 446
	    echo 'includedir=$${prefix}/include'; \
	    echo ''; \
	    echo 'Name: OpenSSL-libcrypto'; \
	    echo 'Description: OpenSSL cryptography library'; \
	    echo 'Version: '$(VERSION); \
	    echo 'Requires: '; \
	    echo 'Libs: -L$${libdir} -lcrypto $(EX_LIBS)'; \
	    echo 'Cflags: -I$${includedir} $(KRB5_INCLUDES)' ) > libcrypto.pc

libssl.pc: Makefile
	@ ( echo 'prefix=$(INSTALLTOP)'; \
	    echo 'exec_prefix=$${prefix}'; \
D
Dr. Stephen Henson 已提交
447
	    echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \
448 449 450 451 452 453 454 455 456
	    echo 'includedir=$${prefix}/include'; \
	    echo ''; \
	    echo 'Name: OpenSSL'; \
	    echo 'Description: Secure Sockets Layer and cryptography libraries'; \
	    echo 'Version: '$(VERSION); \
	    echo 'Requires: '; \
	    echo 'Libs: -L$${libdir} -lssl -lcrypto $(EX_LIBS)'; \
	    echo 'Cflags: -I$${includedir} $(KRB5_INCLUDES)' ) > libssl.pc

B
Ben Laurie 已提交
457
openssl.pc: Makefile
458 459
	@ ( echo 'prefix=$(INSTALLTOP)'; \
	    echo 'exec_prefix=$${prefix}'; \
D
Dr. Stephen Henson 已提交
460
	    echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \
461 462 463 464 465 466 467
	    echo 'includedir=$${prefix}/include'; \
	    echo ''; \
	    echo 'Name: OpenSSL'; \
	    echo 'Description: Secure Sockets Layer and cryptography libraries and tools'; \
	    echo 'Version: '$(VERSION); \
	    echo 'Requires: '; \
	    echo 'Libs: -L$${libdir} -lssl -lcrypto $(EX_LIBS)'; \
468
	    echo 'Cflags: -I$${includedir} $(KRB5_INCLUDES)' ) > openssl.pc
469

470 471
Makefile: Makefile.org Configure config
	@echo "Makefile is older than Makefile.org, Configure or config."
472
	@echo "Reconfigure the source tree (via './config' or 'perl Configure'), please."
473 474
	@false

475
libclean:
476
	rm -f *.map *.so *.so.* *.dll engines/*.so engines/*.dll *.a engines/*.a */lib */*/lib
477

478
clean:	libclean
479
	rm -f shlib/*.o *.o core a.out fluff rehash.time testlog make.log cctest cctest.c
A
Andy Polyakov 已提交
480 481
	@set -e; target=clean; $(RECURSIVE_BUILD_CMD)
	rm -f $(LIBS)
482
	rm -f openssl.pc libssl.pc libcrypto.pc
483
	rm -f speed.* .pure
484
	rm -f $(TARFILE)
485
	@set -e; for i in $(ONEDIRS) ;\
486
	do \
487
	rm -fr $$i/*; \
488 489 490
	done

makefile.one: files
491
	$(PERL) util/mk1mf.pl >makefile.one; \
492 493
	sh util/do_ms.sh

U
Ulf Möller 已提交
494
files:
B
Ben Laurie 已提交
495
	$(PERL) $(TOP)/util/files.pl Makefile > $(TOP)/MINFO
A
Andy Polyakov 已提交
496
	@set -e; target=files; $(RECURSIVE_BUILD_CMD)
497 498

links:
499
	@$(PERL) $(TOP)/util/mkdir-p.pl include/openssl
500
	@$(PERL) $(TOP)/util/mklink.pl include/openssl $(EXHEADER)
A
Andy Polyakov 已提交
501
	@set -e; target=links; $(RECURSIVE_BUILD_CMD)
502

503 504
gentests:
	@(cd test && echo "generating dummy tests (if needed)..." && \
505
	$(CLEARENV) && $(MAKE) -e $(BUILDENV) TESTS='$(TESTS)' OPENSSL_DEBUG_MEMORY=on generate );
506

507
dclean:
508
	rm -rf *.bak include/openssl certs/.0
A
Andy Polyakov 已提交
509
	@set -e; target=dclean; $(RECURSIVE_BUILD_CMD)
510

511 512
rehash: rehash.time
rehash.time: certs apps
513
	@if [ -z "$(CROSS_COMPILE)" ]; then \
514 515 516 517 518 519 520 521
		(OPENSSL="`pwd`/util/opensslwrap.sh"; \
		[ -x "apps/openssl.exe" ] && OPENSSL="apps/openssl.exe" || :; \
		OPENSSL_DEBUG_MEMORY=on; \
		export OPENSSL OPENSSL_DEBUG_MEMORY; \
		$(PERL) tools/c_rehash certs) && \
		touch rehash.time; \
	else :; fi

522
test:   tests
523

524
tests: rehash
525
	@(cd test && echo "testing..." && \
D
Dr. Stephen Henson 已提交
526 527
	$(CLEARENV) && $(MAKE) -e $(BUILDENV) TOP=.. TESTS='$(TESTS)' OPENSSL_DEBUG_MEMORY=on OPENSSL_CONF=../apps/openssl.cnf tests );
	OPENSSL_CONF=apps/openssl.cnf util/opensslwrap.sh version -a
528

529 530 531
report:
	@$(PERL) util/selftest.pl

532
depend:
A
Andy Polyakov 已提交
533
	@set -e; target=depend; $(RECURSIVE_BUILD_CMD)
534 535

lint:
A
Andy Polyakov 已提交
536
	@set -e; target=lint; $(RECURSIVE_BUILD_CMD)
537 538

tags:
B
Ben Laurie 已提交
539 540
	rm -f TAGS
	find . -name '[^.]*.[ch]' | xargs etags -a
541 542

errors:
543
	$(PERL) util/mkerr.pl -recurse -write
544
	(cd engines; $(MAKE) PERL=$(PERL) errors)
545
	$(PERL) util/ck_errf.pl -strict */*.c */*/*.c
546

547 548 549
stacks:
	$(PERL) util/mkstack.pl -write

550
util/libeay.num::
551
	$(PERL) util/mkdef.pl crypto update
552 553

util/ssleay.num::
554
	$(PERL) util/mkdef.pl ssl update
555

556
crypto/objects/obj_dat.h: crypto/objects/obj_dat.pl crypto/objects/obj_mac.h
557
	$(PERL) crypto/objects/obj_dat.pl crypto/objects/obj_mac.h crypto/objects/obj_dat.h
B
typo  
Bodo Möller 已提交
558
crypto/objects/obj_mac.h: crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num
559
	$(PERL) crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num crypto/objects/obj_mac.h
560
crypto/objects/obj_xref.h: crypto/objects/objxref.pl crypto/objects/obj_xref.txt crypto/objects/obj_mac.num
561
	$(PERL) crypto/objects/objxref.pl crypto/objects/obj_mac.num crypto/objects/obj_xref.txt >crypto/objects/obj_xref.h
562

563 564 565
apps/openssl-vms.cnf: apps/openssl.cnf
	$(PERL) VMS/VMSify-conf.pl < apps/openssl.cnf > apps/openssl-vms.cnf

566 567 568 569
crypto/bn/bn_prime.h: crypto/bn/bn_prime.pl
	$(PERL) crypto/bn/bn_prime.pl >crypto/bn/bn_prime.h


570
TABLE: Configure
B
Bodo Möller 已提交
571
	(echo 'Output of `Configure TABLE'"':"; \
572
	$(PERL) Configure TABLE) > TABLE
573

574
update: errors stacks util/libeay.num util/ssleay.num crypto/objects/obj_dat.h crypto/objects/obj_xref.h apps/openssl-vms.cnf crypto/bn/bn_prime.h TABLE depend
575

576 577 578 579 580
# Build distribution tar-file. As the list of files returned by "find" is
# pretty long, on several platforms a "too many arguments" error or similar
# would occur. Therefore the list of files is temporarily stored into a file
# and read directly, requiring GNU-Tar. Call "make TAR=gtar dist" if the normal
# tar does not support the --files-from option.
581
tar:
582 583 584
	find . -type d -print | xargs chmod 755
	find . -type f -print | xargs chmod a+r
	find . -type f -perm -0100 -print | xargs chmod a+x
585 586
	find * \! -path CVS/\* \! -path \*/CVS/\* \! -name CVS \! -name .cvsignore \! -name STATUS \! -name TABLE | sort > ../$(TARFILE).list; \
	$(TAR) $(TARFLAGS) --files-from ../$(TARFILE).list -cvf - | \
587
	tardy --user_number=0  --user_name=openssl \
R
Ralf S. Engelschall 已提交
588 589
	      --group_number=0 --group_name=openssl \
	      --prefix=openssl-$(VERSION) - |\
590
	gzip --best >../$(TARFILE).gz; \
591
	rm -f ../$(TARFILE).list; \
592
	ls -l ../$(TARFILE).gz
593

594 595
tar-snap:
	@$(TAR) $(TARFLAGS) -cvf - \
596
		`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` |\
597 598 599 600 601
	tardy --user_number=0  --user_name=openssl \
	      --group_number=0 --group_name=openssl \
	      --prefix=openssl-$(VERSION) - > ../$(TARFILE);\
	ls -l ../$(TARFILE)

602
dist:   
603
	$(PERL) Configure dist
604
	@$(MAKE) dist_pem_h
605 606
	@$(MAKE) SDIRS='$(SDIRS)' clean
	@$(MAKE) TAR='$(TAR)' TARFLAGS='$(TARFLAGS)' tar
607 608

dist_pem_h:
A
Andy Polyakov 已提交
609
	(cd crypto/pem; $(MAKE) -e $(BUILDENV) pem.h; $(MAKE) clean)
610

611 612 613
install: all install_docs install_sw

install_sw:
B
Bodo Möller 已提交
614
	@$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin \
D
Dr. Stephen Henson 已提交
615 616 617
		$(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR) \
		$(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines \
		$(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig \
B
Bodo Möller 已提交
618 619 620
		$(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl \
		$(INSTALL_PREFIX)$(OPENSSLDIR)/misc \
		$(INSTALL_PREFIX)$(OPENSSLDIR)/certs \
621
		$(INSTALL_PREFIX)$(OPENSSLDIR)/private
622
	@set -e; headerlist="$(EXHEADER)"; for i in $$headerlist;\
B
Bodo Möller 已提交
623 624 625 626
	do \
	(cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
	chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
	done;
A
Andy Polyakov 已提交
627
	@set -e; target=install; $(RECURSIVE_BUILD_CMD)
628
	@set -e; for i in $(LIBS) ;\
629
	do \
630 631
		if [ -f "$$i" ]; then \
		(       echo installing $$i; \
D
Dr. Stephen Henson 已提交
632 633 634 635
			cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
			$(RANLIB) $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
			chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
			mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i ); \
L
Lutz Jänicke 已提交
636 637
		fi; \
	done;
638
	@set -e; if [ -n "$(SHARED_LIBS)" ]; then \
639 640 641
		tmp="$(SHARED_LIBS)"; \
		for i in $${tmp:-x}; \
		do \
642
			if [ -f "$$i" -o -f "$$i.a" ]; then \
643
			(       echo installing $$i; \
644
				if [ "$(PLATFORM)" != "Cygwin" ]; then \
D
Dr. Stephen Henson 已提交
645 646 647
					cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
					chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
					mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i; \
648
				else \
649
					c=`echo $$i | sed 's/^lib\(.*\)\.dll\.a/cyg\1-$(SHLIB_VERSION_NUMBER).dll/'`; \
650 651
					cp $$c $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
					chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
652
					mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c; \
D
Dr. Stephen Henson 已提交
653 654 655
					cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
					chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
					mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i; \
656
				fi ); \
657 658 659 660 661 662 663 664 665 666
				if expr $(PLATFORM) : 'mingw' > /dev/null; then \
				(	case $$i in \
						*crypto*) i=libeay32.dll;; \
						*ssl*)    i=ssleay32.dll;; \
					esac; \
					echo installing $$i; \
	 				cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
	 				chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
	 				mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i ); \
				fi; \
L
Lutz Jänicke 已提交
667
			fi; \
668 669
		done; \
		(	here="`pwd`"; \
D
Dr. Stephen Henson 已提交
670
			cd $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR); \
671
			$(MAKE) -f $$here/Makefile HERE="$$here" link-shared ); \
672 673 674 675
		if [ "$(INSTALLTOP)" != "/usr" ]; then \
			echo 'OpenSSL shared libraries have been installed in:'; \
			echo '  $(INSTALLTOP)'; \
			echo ''; \
676
			sed -e '1,/^$$/d' doc/openssl-shared.txt; \
677
		fi; \
678
	fi
D
Dr. Stephen Henson 已提交
679 680 681 682 683 684
	cp libcrypto.pc $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig
	chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libcrypto.pc
	cp libssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig
	chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libssl.pc
	cp openssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig
	chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/openssl.pc
685

U
Ulf Möller 已提交
686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701
install_html_docs:
	here="`pwd`"; \
	for subdir in apps crypto ssl; do \
		mkdir -p $(INSTALL_PREFIX)$(HTMLDIR)/$$subdir; \
		for i in doc/$$subdir/*.pod; do \
			fn=`basename $$i .pod`; \
			echo "installing html/$$fn.$(HTMLSUFFIX)"; \
			cat $$i \
			| sed -r 's/L<([^)]*)(\([0-9]\))?\|([^)]*)(\([0-9]\))?>/L<\1|\3>/g' \
			| pod2html --podroot=doc --htmlroot=.. --podpath=apps:crypto:ssl \
			| sed -r 's/<!DOCTYPE.*//g' \
			> $(INSTALL_PREFIX)$(HTMLDIR)/$$subdir/$$fn.$(HTMLSUFFIX); \
			$(PERL) util/extract-names.pl < $$i | \
				grep -v $$filecase "^$$fn\$$" | \
				(cd $(INSTALL_PREFIX)$(HTMLDIR)/$$subdir; \
				 while read n; do \
D
Dr. Stephen Henson 已提交
702
					PLATFORM=$(PLATFORM) $$here/util/point.sh $$fn.$(HTMLSUFFIX) "$$n".$(HTMLSUFFIX); \
U
Ulf Möller 已提交
703 704 705 706
				 done); \
		done; \
	done

707 708
install_docs:
	@$(PERL) $(TOP)/util/mkdir-p.pl \
709 710 711 712
		$(INSTALL_PREFIX)$(MANDIR)/man1 \
		$(INSTALL_PREFIX)$(MANDIR)/man3 \
		$(INSTALL_PREFIX)$(MANDIR)/man5 \
		$(INSTALL_PREFIX)$(MANDIR)/man7
713
	@pod2man="`cd ./util; ./pod2mantest $(PERL)`"; \
714 715
	here="`pwd`"; \
	filecase=; \
A
Andy Polyakov 已提交
716
	if [ "$(PLATFORM)" = "DJGPP" -o "$(PLATFORM)" = "Cygwin" -o "$(PLATFORM)" = "mingw" ]; then \
717 718
		filecase=-i; \
	fi; \
719
	set -e; for i in doc/apps/*.pod; do \
720
		fn=`basename $$i .pod`; \
721
		sec=`$(PERL) util/extract-section.pl 1 < $$i`; \
722
		echo "installing man$$sec/$$fn.$${sec}$(MANSUFFIX)"; \
723
		(cd `$(PERL) util/dirname.pl $$i`; \
724
		sh -c "$$pod2man \
725 726
			--section=$$sec --center=OpenSSL \
			--release=$(VERSION) `basename $$i`") \
727
			>  $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$${sec}$(MANSUFFIX); \
728
		$(PERL) util/extract-names.pl < $$i | \
729 730
			(grep -v $$filecase "^$$fn\$$"; true) | \
			(grep -v "[	]"; true) | \
731 732
			(cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \
			 while read n; do \
D
Dr. Stephen Henson 已提交
733
				PLATFORM=$(PLATFORM) $$here/util/point.sh $$fn.$${sec}$(MANSUFFIX) "$$n".$${sec}$(MANSUFFIX); \
734
			 done); \
735
	done; \
736
	set -e; for i in doc/crypto/*.pod doc/ssl/*.pod; do \
737
		fn=`basename $$i .pod`; \
738
		sec=`$(PERL) util/extract-section.pl 3 < $$i`; \
739
		echo "installing man$$sec/$$fn.$${sec}$(MANSUFFIX)"; \
740
		(cd `$(PERL) util/dirname.pl $$i`; \
741
		sh -c "$$pod2man \
742 743
			--section=$$sec --center=OpenSSL \
			--release=$(VERSION) `basename $$i`") \
744
			>  $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$${sec}$(MANSUFFIX); \
745
		$(PERL) util/extract-names.pl < $$i | \
746 747
			(grep -v $$filecase "^$$fn\$$"; true) | \
			(grep -v "[	]"; true) | \
748 749
			(cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \
			 while read n; do \
D
Dr. Stephen Henson 已提交
750
				PLATFORM=$(PLATFORM) $$here/util/point.sh $$fn.$${sec}$(MANSUFFIX) "$$n".$${sec}$(MANSUFFIX); \
751
			 done); \
752
	done
753 754

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