source: trunk/third/openssl/Makefile.org @ 18442

Revision 18442, 28.5 KB checked in by zacheiss, 21 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r18441, which included commits to RCS files with non-trunk default branches.
Line 
1##
2## Makefile for OpenSSL
3##
4
5VERSION=
6MAJOR=
7MINOR=
8SHLIB_VERSION_NUMBER=
9SHLIB_VERSION_HISTORY=
10SHLIB_MAJOR=
11SHLIB_MINOR=
12SHLIB_EXT=
13PLATFORM=dist
14OPTIONS=
15CONFIGURE_ARGS=
16SHLIB_TARGET=
17
18# HERE indicates where this Makefile lives.  This can be used to indicate
19# where sub-Makefiles are expected to be.  Currently has very limited usage,
20# and should probably not be bothered with at all.
21HERE=.
22
23# INSTALL_PREFIX is for package builders so that they can configure
24# for, say, /usr/ and yet have everything installed to /tmp/somedir/usr/.
25# Normally it is left empty.
26INSTALL_PREFIX=
27INSTALLTOP=/usr/local/ssl
28
29# Do not edit this manually. Use Configure --openssldir=DIR do change this!
30OPENSSLDIR=/usr/local/ssl
31
32# NO_IDEA - Define to build without the IDEA algorithm
33# NO_RC4  - Define to build without the RC4 algorithm
34# NO_RC2  - Define to build without the RC2 algorithm
35# 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# TERMIO  - Define the termio terminal subsystem, needed if sgtty is missing.
38# TERMIOS - Define the termios terminal subsystem, Silicon Graphics.
39# LONGCRYPT - Define to use HPUX 10.x's long password modification to crypt(3).
40# DEVRANDOM - Give this the value of the 'random device' if your OS supports
41#           one.  32 bytes will be read from this when the random
42#           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# LOCK_DEBUG - turns on lots of lock debug output :-)
47# REF_CHECK - turn on some xyz_free() assertions.
48# REF_PRINT - prints some stuff on structure free.
49# CRYPTO_MDEBUG - turns on my 'memory leak' detecting stuff
50# MFUNC - Make all Malloc/Free/Realloc calls call
51#       CRYPTO_malloc/CRYPTO_free/CRYPTO_realloc which can be setup to
52#       call application defined callbacks via CRYPTO_set_mem_functions()
53# MD5_ASM needs to be defined to use the x86 assembler for MD5
54# SHA1_ASM needs to be defined to use the x86 assembler for SHA1
55# RMD160_ASM needs to be defined to use the x86 assembler for RIPEMD160
56# Do not define B_ENDIAN or L_ENDIAN if 'unsigned long' == 8.  It must
57# equal 4.
58# PKCS1_CHECK - pkcs1 tests.
59
60CC= gcc
61#CFLAG= -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall -Wuninitialized -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
62CFLAG= -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
63DEPFLAG=
64PEX_LIBS=
65EX_LIBS=
66EXE_EXT=
67ARFLAGS=
68AR=ar $(ARFLAGS) r
69RANLIB= ranlib
70PERL= perl
71TAR= tar
72TARFLAGS= --no-recursion
73MAKEDEPPROG=makedepend
74
75# Set BN_ASM to bn_asm.o if you want to use the C version
76BN_ASM= bn_asm.o
77#BN_ASM= bn_asm.o
78#BN_ASM= asm/bn86-elf.o # elf, linux-elf
79#BN_ASM= asm/bn86-sol.o # solaris
80#BN_ASM= asm/bn86-out.o # a.out, FreeBSD
81#BN_ASM= asm/bn86bsdi.o # bsdi
82#BN_ASM= asm/alpha.o    # DEC Alpha
83#BN_ASM= asm/pa-risc2.o # HP-UX PA-RISC
84#BN_ASM= asm/r3000.o    # SGI MIPS cpu
85#BN_ASM= asm/sparc.o    # Sun solaris/SunOS
86#BN_ASM= asm/bn-win32.o # Windows 95/NT
87#BN_ASM= asm/x86w16.o   # 16 bit code for Windows 3.1/DOS
88#BN_ASM= asm/x86w32.o   # 32 bit code for Windows 3.1
89
90# For x86 assembler: Set PROCESSOR to 386 if you want to support
91# the 80386.
92PROCESSOR=
93
94# Set DES_ENC to des_enc.o if you want to use the C version
95#There are 4 x86 assember options.
96DES_ENC= asm/dx86-out.o asm/yx86-out.o
97#DES_ENC= des_enc.o fcrypt_b.o          # C
98#DES_ENC= asm/dx86-elf.o asm/yx86-elf.o # elf
99#DES_ENC= asm/dx86-sol.o asm/yx86-sol.o # solaris
100#DES_ENC= asm/dx86-out.o asm/yx86-out.o # a.out, FreeBSD
101#DES_ENC= asm/dx86bsdi.o asm/yx86bsdi.o # bsdi
102
103# Set BF_ENC to bf_enc.o if you want to use the C version
104#There are 4 x86 assember options.
105BF_ENC= asm/bx86-out.o
106#BF_ENC= bf_enc.o
107#BF_ENC= asm/bx86-elf.o # elf
108#BF_ENC= asm/bx86-sol.o # solaris
109#BF_ENC= asm/bx86-out.o # a.out, FreeBSD
110#BF_ENC= asm/bx86bsdi.o # bsdi
111
112# Set CAST_ENC to c_enc.o if you want to use the C version
113#There are 4 x86 assember options.
114CAST_ENC= asm/cx86-out.o
115#CAST_ENC= c_enc.o
116#CAST_ENC= asm/cx86-elf.o # elf
117#CAST_ENC= asm/cx86-sol.o # solaris
118#CAST_ENC= asm/cx86-out.o # a.out, FreeBSD
119#CAST_ENC= asm/cx86bsdi.o # bsdi
120
121# Set RC4_ENC to rc4_enc.o if you want to use the C version
122#There are 4 x86 assember options.
123RC4_ENC= asm/rx86-out.o
124#RC4_ENC= rc4_enc.o
125#RC4_ENC= asm/rx86-elf.o # elf
126#RC4_ENC= asm/rx86-sol.o # solaris
127#RC4_ENC= asm/rx86-out.o # a.out, FreeBSD
128#RC4_ENC= asm/rx86bsdi.o # bsdi
129
130# Set RC5_ENC to rc5_enc.o if you want to use the C version
131#There are 4 x86 assember options.
132RC5_ENC= asm/r586-out.o
133#RC5_ENC= rc5_enc.o
134#RC5_ENC= asm/r586-elf.o # elf
135#RC5_ENC= asm/r586-sol.o # solaris
136#RC5_ENC= asm/r586-out.o # a.out, FreeBSD
137#RC5_ENC= asm/r586bsdi.o # bsdi
138
139# Also need MD5_ASM defined
140MD5_ASM_OBJ= asm/mx86-out.o
141#MD5_ASM_OBJ= asm/mx86-elf.o        # elf
142#MD5_ASM_OBJ= asm/mx86-sol.o        # solaris
143#MD5_ASM_OBJ= asm/mx86-out.o        # a.out, FreeBSD
144#MD5_ASM_OBJ= asm/mx86bsdi.o        # bsdi
145
146# Also need SHA1_ASM defined
147SHA1_ASM_OBJ= asm/sx86-out.o
148#SHA1_ASM_OBJ= asm/sx86-elf.o       # elf
149#SHA1_ASM_OBJ= asm/sx86-sol.o       # solaris
150#SHA1_ASM_OBJ= asm/sx86-out.o       # a.out, FreeBSD
151#SHA1_ASM_OBJ= asm/sx86bsdi.o       # bsdi
152
153# Also need RMD160_ASM defined
154RMD160_ASM_OBJ= asm/rm86-out.o
155#RMD160_ASM_OBJ= asm/rm86-elf.o       # elf
156#RMD160_ASM_OBJ= asm/rm86-sol.o       # solaris
157#RMD160_ASM_OBJ= asm/rm86-out.o       # a.out, FreeBSD
158#RMD160_ASM_OBJ= asm/rm86bsdi.o       # bsdi
159
160# KRB5 stuff
161KRB5_INCLUDES=
162
163# When we're prepared to use shared libraries in the programs we link here
164# we might set SHLIB_MARK to '$(SHARED_LIBS)'.
165SHLIB_MARK=
166
167DIRS=   crypto ssl $(SHLIB_MARK) apps test tools
168SHLIBDIRS= crypto ssl
169
170# dirs in crypto to build
171SDIRS=  \
172        md2 md4 md5 sha mdc2 hmac ripemd \
173        des rc2 rc4 rc5 idea bf cast \
174        bn ec rsa dsa dh dso engine aes \
175        buffer bio stack lhash rand err objects \
176        evp asn1 pem x509 x509v3 conf txt_db pkcs7 pkcs12 comp ocsp ui krb5
177
178# tests to perform.  "alltests" is a special word indicating that all tests
179# should be performed.
180TESTS = alltests
181
182MAKEFILE= Makefile.ssl
183MAKE=     make -f Makefile.ssl
184
185MANDIR=$(OPENSSLDIR)/man
186MAN1=1
187MAN3=3
188SHELL=/bin/sh
189
190TOP=    .
191ONEDIRS=out tmp
192EDIRS=  times doc bugs util include certs ms shlib mt demos perl sf dep VMS
193WDIRS=  windows
194LIBS=   libcrypto.a libssl.a
195SHARED_CRYPTO=libcrypto$(SHLIB_EXT)
196SHARED_SSL=libssl$(SHLIB_EXT)
197SHARED_LIBS=
198SHARED_LIBS_LINK_EXTS=
199SHARED_LDFLAGS=
200
201GENERAL=        Makefile
202BASENAME=       openssl
203NAME=           $(BASENAME)-$(VERSION)
204TARFILE=        $(NAME).tar
205WTARFILE=       $(NAME)-win.tar
206EXHEADER=       e_os2.h
207HEADER=         e_os.h
208
209# When we're prepared to use shared libraries in the programs we link here
210# we might remove 'clean-shared' from the targets to perform at this stage
211
212all: Makefile.ssl sub_all openssl.pc
213
214sub_all:
215        @for i in $(DIRS); \
216        do \
217        if [ -d "$$i" ]; then \
218                (cd $$i && echo "making all in $$i..." && \
219                $(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}' SHARED_LIBS='${SHARED_LIBS}' SHLIB_EXT='${SHLIB_EXT}' SHLIB_TARGET='${SHLIB_TARGET}' all ) || exit 1; \
220        else \
221                $(MAKE) $$i; \
222        fi; \
223        done;
224
225libcrypto$(SHLIB_EXT): libcrypto.a
226        @if [ "$(SHLIB_TARGET)" != "" ]; then \
227                $(MAKE) SHLIBDIRS=crypto build-shared; \
228        else \
229                echo "There's no support for shared libraries on this platform" >&2; \
230        fi
231
232libssl$(SHLIB_EXT): libcrypto$(SHLIB_EXT) libssl.a
233        @if [ "$(SHLIB_TARGET)" != "" ]; then \
234                $(MAKE) SHLIBDIRS=ssl SHLIBDEPS='-lcrypto' build-shared; \
235        else \
236                echo "There's no support for shared libraries on this platform" >&2; \
237        fi
238
239clean-shared:
240        @for i in $(SHLIBDIRS); do \
241                if [ -n "$(SHARED_LIBS_LINK_EXTS)" ]; then \
242                        tmp="$(SHARED_LIBS_LINK_EXTS)"; \
243                        for j in $${tmp:-x}; do \
244                                ( set -x; rm -f lib$$i$$j ); \
245                        done; \
246                fi; \
247                ( set -x; rm -f lib$$i$(SHLIB_EXT) ); \
248                if [ "$(PLATFORM)" = "Cygwin" ]; then \
249                        ( set -x; rm -f cyg$$i-$(SHLIB_VERSION_NUMBER)$(SHLIB_EXT) lib$$i$(SHLIB_EXT).a ); \
250                fi; \
251        done
252
253link-shared:
254        @if [ -n "$(SHARED_LIBS_LINK_EXTS)" ]; then \
255                tmp="$(SHARED_LIBS_LINK_EXTS)"; \
256                for i in $(SHLIBDIRS); do \
257                        prev=lib$$i$(SHLIB_EXT); \
258                        for j in $${tmp:-x}; do \
259                                ( set -x; \
260                                rm -f lib$$i$$j; ln -s $$prev lib$$i$$j ); \
261                                prev=lib$$i$$j; \
262                        done; \
263                done; \
264        fi
265
266build-shared: clean-shared do_$(SHLIB_TARGET) link-shared
267
268do_bsd-gcc-shared: do_gnu-shared
269do_linux-shared: do_gnu-shared
270do_gnu-shared:
271        libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
272        ( set -x; ${CC} ${SHARED_LDFLAGS} \
273                -shared -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
274                -Wl,-soname=lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
275                -Wl,-Bsymbolic \
276                -Wl,--whole-archive lib$$i.a \
277                -Wl,--no-whole-archive $$libs ${EX_LIBS} -lc ) || exit 1; \
278        libs="$$libs -l$$i"; \
279        done
280
281DETECT_GNU_LD=(${CC} -Wl,-V /dev/null 2>&1 | grep '^GNU ld' )>/dev/null
282
283# For Darwin AKA Mac OS/X (dyld)
284do_darwin-shared:
285        libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
286        ( set -x ; ${CC} --verbose -dynamiclib -o lib$$i${SHLIB_EXT} \
287                lib$$i.a $$libs -all_load -current_version ${SHLIB_MAJOR}.${SHLIB_MINOR} \
288                -compatibility_version ${SHLIB_MAJOR}.`echo ${SHLIB_MINOR} | cut -d. -f1` \
289                -install_name ${INSTALLTOP}/lib/lib$$i${SHLIB_EXT} ) || exit 1; \
290        libs="$$libs -l`basename $$i${SHLIB_EXT} .dylib`"; \
291        echo "" ; \
292        done
293
294do_cygwin-shared:
295        libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
296        ( set -x; ${CC}  -shared -o cyg$$i-$(SHLIB_VERSION_NUMBER).dll \
297                -Wl,-Bsymbolic \
298                -Wl,--whole-archive lib$$i.a \
299                -Wl,--out-implib,lib$$i.dll.a \
300                -Wl,--no-whole-archive $$libs ) || exit 1; \
301        libs="$$libs -l$$i"; \
302        done
303
304# This assumes that GNU utilities are *not* used
305do_alpha-osf1-shared:
306        if ${DETECT_GNU_LD}; then \
307                $(MAKE) do_gnu-shared; \
308        else \
309                libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
310                ( set -x; ${CC} ${SHARED_LDFLAGS} \
311                        -shared -o lib$$i.so \
312                        -set_version "${SHLIB_VERSION_HISTORY}${SHLIB_VERSION_NUMBER}" \
313                        -all lib$$i.a -none $$libs ${EX_LIBS} -lc ) || exit 1; \
314                libs="$$libs -l$$i"; \
315                done; \
316        fi
317
318# This assumes that GNU utilities are *not* used
319# The difference between alpha-osf1-shared and tru64-shared is the `-msym'
320# option passed to the linker.
321do_tru64-shared:
322        if ${DETECT_GNU_LD}; then \
323                $(MAKE) do_gnu-shared; \
324        else \
325                libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
326                ( set -x; ${CC} ${SHARED_LDFLAGS} \
327                        -shared -msym -o lib$$i.so \
328                        -set_version "${SHLIB_VERSION_HISTORY}${SHLIB_VERSION_NUMBER}" \
329                        -all lib$$i.a -none $$libs ${EX_LIBS} -lc ) || exit 1; \
330                libs="$$libs -l$$i"; \
331                done; \
332        fi
333
334# This assumes that GNU utilities are *not* used
335# The difference between tru64-shared and tru64-shared-rpath is the
336# -rpath ${INSTALLTOP}/lib passed to the linker.
337do_tru64-shared-rpath:
338        if ${DETECT_GNU_LD}; then \
339                $(MAKE) do_gnu-shared; \
340        else \
341                libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
342                ( set -x; ${CC} ${SHARED_LDFLAGS} \
343                        -shared -msym -o lib$$i.so \
344                        -rpath  ${INSTALLTOP}/lib \
345                        -set_version "${SHLIB_VERSION_HISTORY}${SHLIB_VERSION_NUMBER}" \
346                        -all lib$$i.a -none $$libs ${EX_LIBS} -lc ) || exit 1; \
347                libs="$$libs -l$$i"; \
348                done; \
349        fi
350
351
352# This assumes that GNU utilities are *not* used
353do_solaris-shared:
354        if ${DETECT_GNU_LD}; then \
355                $(MAKE) do_gnu-shared; \
356        else \
357                libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
358                ( PATH=/usr/ccs/bin:$$PATH ; export PATH; \
359                  MINUSZ='-z '; \
360                  (${CC} -v 2>&1 | grep gcc) > /dev/null && MINUSZ='-Wl,-z,'; \
361                  set -x; ${CC} ${SHARED_LDFLAGS} -G -dy -z text \
362                        -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
363                        -h lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
364                        $${MINUSZ}allextract lib$$i.a $${MINUSZ}defaultextract \
365                        $$libs ${EX_LIBS} -lc ) || exit 1; \
366                libs="$$libs -l$$i"; \
367                done; \
368        fi
369
370# OpenServer 5 native compilers used
371do_svr3-shared:
372        if ${DETECT_GNU_LD}; then \
373                $(MAKE) do_gnu-shared; \
374        else \
375                libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
376                ( PATH=/usr/ccs/bin:$$PATH ; export PATH; \
377                  find . -name "*.o" -print > allobjs ; \
378                  OBJS= ; export OBJS ; \
379                  for obj in `ar t lib$$i.a` ; do \
380                    OBJS="$${OBJS} `grep $$obj allobjs`" ; \
381                  done ; \
382                  set -x; ${CC}  -G -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
383                        -h lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
384                        $${OBJS} $$libs ${EX_LIBS} ) || exit 1; \
385                libs="$$libs -l$$i"; \
386                done; \
387        fi
388
389# UnixWare 7 and OpenUNIX 8 native compilers used
390do_svr5-shared:
391        if ${DETECT_GNU_LD}; then \
392                $(MAKE) do_gnu-shared; \
393        else \
394                libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
395                ( PATH=/usr/ccs/bin:$$PATH ; export PATH; \
396                  find . -name "*.o" -print > allobjs ; \
397                  OBJS= ; export OBJS ; \
398                  for obj in `ar t lib$$i.a` ; do \
399                    OBJS="$${OBJS} `grep $$obj allobjs`" ; \
400                  done ; \
401                  set -x; ${CC} ${SHARED_LDFLAGS} \
402                        -G -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
403                        -h lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
404                        $${OBJS} $$libs ${EX_LIBS} ) || exit 1; \
405                libs="$$libs -l$$i"; \
406                done; \
407        fi
408
409# This assumes that GNU utilities are *not* used
410do_irix-shared:
411        if ${DETECT_GNU_LD}; then \
412                $(MAKE) do_gnu-shared; \
413        else \
414                libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
415                ( set -x; ${CC} ${SHARED_LDFLAGS} \
416                        -shared -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
417                        -Wl,-soname,lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
418                        -all lib$$i.a $$libs ${EX_LIBS} -lc) || exit 1; \
419                libs="$$libs -l$$i"; \
420                done; \
421        fi
422
423# This assumes that GNU utilities are *not* used
424# HP-UX includes the full pathname of libs we depend on, so we would get
425# ./libcrypto (with ./ as path information) compiled into libssl, hence
426# we omit the SHLIBDEPS. Applications must be linked with -lssl -lcrypto
427# anyway.
428# The object modules are loaded from lib$i.a using the undocumented -Fl
429# option.
430#
431# WARNING: Until DSO is fixed to support a search path, we support SHLIB_PATH
432#          by temporarily specifying "+s"!
433#
434do_hpux-shared:
435        for i in ${SHLIBDIRS}; do \
436        ( set -x; /usr/ccs/bin/ld ${SHARED_LDFLAGS} \
437                +vnocompatwarnings \
438                -b -z +s \
439                -o lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR} \
440                +h lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR} \
441                -Fl lib$$i.a -ldld -lc ) || exit 1; \
442        chmod a=rx lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR}; \
443        done
444
445# This assumes that GNU utilities are *not* used
446# HP-UX includes the full pathname of libs we depend on, so we would get
447# ./libcrypto (with ./ as path information) compiled into libssl, hence
448# we omit the SHLIBDEPS. Applications must be linked with -lssl -lcrypto
449# anyway.
450#
451# HP-UX in 64bit mode has "+s" enabled by default; it will search for
452# shared libraries along LD_LIBRARY_PATH _and_ SHLIB_PATH.
453#
454do_hpux64-shared:
455        for i in ${SHLIBDIRS}; do \
456        ( set -x; /usr/ccs/bin/ld ${SHARED_LDFLAGS} \
457                -b -z \
458                -o lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR} \
459                +h lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR} \
460                +forceload lib$$i.a -ldl -lc ) || exit 1; \
461        chmod a=rx lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR}; \
462        done
463
464# The following method is said to work on all platforms.  Tests will
465# determine if that's how it's gong to be used.
466# This assumes that for all but GNU systems, GNU utilities are *not* used.
467# ALLSYMSFLAGS would be:
468#  GNU systems: --whole-archive
469#  Tru64 Unix:  -all
470#  Solaris:     -z allextract
471#  Irix:        -all
472#  HP/UX-32bit: -Fl
473#  HP/UX-64bit: +forceload
474#  AIX:         -bnogc
475# SHAREDFLAGS would be:
476#  GNU systems: -shared -Wl,-soname=lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
477#  Tru64 Unix:  -shared \
478#               -set_version "${SHLIB_VERSION_HISTORY}${SHLIB_VERSION_NUMBER}"
479#  Solaris:     -G -h lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
480#  Irix:        -shared -Wl,-soname,lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
481#  HP/UX-32bit: +vnocompatwarnings -b -z +s \
482#               +h lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR}
483#  HP/UX-64bit: -b -z +h lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR}
484#  AIX:         -G -bE:lib$$i.exp -bM:SRE
485# SHAREDCMD would be:
486#  GNU systems: $(CC)
487#  Tru64 Unix:  $(CC)
488#  Solaris:     $(CC)
489#  Irix:        $(CC)
490#  HP/UX-32bit: /usr/ccs/bin/ld
491#  HP/UX-64bit: /usr/ccs/bin/ld
492#  AIX:         $(CC)
493ALLSYMSFLAG=-bnogc
494SHAREDFLAGS=${SHARED_LDFLAGS} -G -bE:lib$$i.exp -bM:SRE
495SHAREDCMD=$(CC)
496do_aix-shared:
497        libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
498        ( set -x; \
499          ld -r -o $$i.o $(ALLSYMSFLAG) lib$$i.a && \
500          ( nm -Pg lib$$i.o | grep ' [BD] ' | cut -f1 -d' ' > lib$$i.exp; \
501            $(SHAREDCMD) $(SHAREDFLAG) -o lib$$i.so lib$$i.o \
502                $$libs ${EX_LIBS} ) ) \
503        || exit 1; \
504        libs="$$libs -l$$i"; \
505        done
506
507do_reliantunix-shared:
508        libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \
509        tmpdir=/tmp/openssl.$$$$ ; rm -rf $$tmpdir ; \
510        ( set -x; \
511          ( Opwd=`pwd` ; mkdir $$tmpdir || exit 1; \
512            cd $$tmpdir || exit 1 ; ar x $$Opwd/lib$$i.a ; \
513            ${CC} -G -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} *.o \
514          ) || exit 1; \
515          cp $$tmpdir/lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} . ; \
516        ) || exit 1; \
517        rm -rf $$tmpdir ; \
518        libs="$$libs -l$$i"; \
519        done
520
521openssl.pc: Makefile.ssl
522        @ ( echo 'prefix=$(INSTALLTOP)'; \
523            echo 'exec_prefix=$${prefix}'; \
524            echo 'libdir=$${exec_prefix}/lib'; \
525            echo 'includedir=$${prefix}/include'; \
526            echo ''; \
527            echo 'Name: OpenSSL'; \
528            echo 'Description: Secure Sockets Layer and cryptography libraries and tools'; \
529            echo 'Version: '$(VERSION); \
530            echo 'Requires: '; \
531            echo 'Libs: -L$${libdir} -lssl -lcrypto $(EX_LIBS)'; \
532            echo 'Cflags: -I$${includedir} $(KRB5_INCLUDES)' ) > openssl.pc
533
534Makefile.ssl: Makefile.org
535        @echo "Makefile.ssl is older than Makefile.org."
536        @echo "Reconfigure the source tree (via './config' or 'perl Configure'), please."
537        @false
538
539libclean:
540        rm -f *.a */lib */*/lib
541
542clean:
543        rm -f shlib/*.o *.o core a.out fluff *.map rehash.time testlog make.log cctest cctest.c
544        @for i in $(DIRS) ;\
545        do \
546        if [ -d "$$i" ]; then \
547                (cd $$i && echo "making clean in $$i..." && \
548                $(MAKE) SDIRS='${SDIRS}' clean ) || exit 1; \
549                rm -f $(LIBS); \
550        fi; \
551        done;
552        rm -f openssl.pc
553        rm -f *.a *.o speed.* *.map *.so .pure core
554        rm -f $(TARFILE)
555        @for i in $(ONEDIRS) ;\
556        do \
557        rm -fr $$i/*; \
558        done
559
560makefile.one: files
561        $(PERL) util/mk1mf.pl >makefile.one; \
562        sh util/do_ms.sh
563
564files:
565        $(PERL) $(TOP)/util/files.pl Makefile.ssl > $(TOP)/MINFO
566        @for i in $(DIRS) ;\
567        do \
568        if [ -d "$$i" ]; then \
569                (cd $$i && echo "making 'files' in $$i..." && \
570                $(MAKE) SDIRS='${SDIRS}' PERL='${PERL}' files ) || exit 1; \
571        fi; \
572        done;
573
574links:
575        @$(TOP)/util/point.sh Makefile.ssl Makefile
576        @$(PERL) $(TOP)/util/mkdir-p.pl include/openssl
577        @$(PERL) $(TOP)/util/mklink.pl include/openssl $(EXHEADER)
578        @for i in $(DIRS); do \
579        if [ -d "$$i" ]; then \
580                (cd $$i && echo "making links in $$i..." && \
581                $(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; \
582        fi; \
583        done;
584
585gentests:
586        @(cd test && echo "generating dummy tests (if needed)..." && \
587        $(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}' 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 );
588
589dclean:
590        rm -f *.bak
591        @for i in $(DIRS) ;\
592        do \
593        if [ -d "$$i" ]; then \
594                (cd $$i && echo "making dclean in $$i..." && \
595                $(MAKE) SDIRS='${SDIRS}' PERL='${PERL}' dclean ) || exit 1; \
596        fi; \
597        done;
598
599rehash: rehash.time
600rehash.time: certs
601        @(OPENSSL="`pwd`/apps/openssl"; OPENSSL_DEBUG_MEMORY=on; \
602                export OPENSSL OPENSSL_DEBUG_MEMORY; \
603                LD_LIBRARY_PATH="`pwd`"; DYLD_LIBRARY_PATH="`pwd`"; SHLIB_PATH="`pwd`"; LIBPATH="`pwd`"; \
604                if [ "$(PLATFORM)" = "DJGPP" ]; then PATH="`pwd`\;$$PATH";  \
605                elif [ "$(PLATFORM)" = "Cygwin" ]; then PATH="`pwd`:$$PATH"; fi; \
606                export LD_LIBRARY_PATH DYLD_LIBRARY_PATH SHLIB_PATH LIBPATH PATH; \
607                $(PERL) tools/c_rehash certs)
608        touch rehash.time
609
610test:   tests
611
612tests: rehash
613        @(cd test && echo "testing..." && \
614        $(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}' 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 );
615        @LD_LIBRARY_PATH="`pwd`"; DYLD_LIBRARY_PATH="`pwd`"; SHLIB_PATH="`pwd`"; LIBPATH="`pwd`"; \
616                if [ "$(PLATFORM)" = "DJGPP" ]; then PATH="`pwd`\;$$PATH";  \
617                elif [ "$(PLATFORM)" = "Cygwin" ]; then PATH="`pwd`:$$PATH"; fi; \
618                export LD_LIBRARY_PATH DYLD_LIBRARY_PATH SHLIB_PATH LIBPATH PATH; \
619                apps/openssl version -a
620
621report:
622        @$(PERL) util/selftest.pl
623
624depend:
625        @for i in $(DIRS) ;\
626        do \
627        if [ -d "$$i" ]; then \
628                (cd $$i && echo "making dependencies $$i..." && \
629                $(MAKE) SDIRS='${SDIRS}' CFLAG='${CFLAG}' DEPFLAG='${DEPFLAG}' MAKEDEPPROG='${MAKEDEPPROG}' KRB5_INCLUDES='${KRB5_INCLUDES}' PERL='${PERL}' depend ) || exit 1; \
630        fi; \
631        done;
632
633lint:
634        @for i in $(DIRS) ;\
635        do \
636        if [ -d "$$i" ]; then \
637                (cd $$i && echo "making lint $$i..." && \
638                $(MAKE) SDIRS='${SDIRS}' lint ) || exit 1; \
639        fi; \
640        done;
641
642tags:
643        @for i in $(DIRS) ;\
644        do \
645        if [ -d "$$i" ]; then \
646                (cd $$i && echo "making tags $$i..." && \
647                $(MAKE) SDIRS='${SDIRS}' tags ) || exit 1; \
648        fi; \
649        done;
650
651errors:
652        $(PERL) util/mkerr.pl -recurse -write
653        (cd crypto/engine; $(MAKE) PERL=$(PERL) errors)
654
655stacks:
656        $(PERL) util/mkstack.pl -write
657
658util/libeay.num::
659        $(PERL) util/mkdef.pl crypto update
660
661util/ssleay.num::
662        $(PERL) util/mkdef.pl ssl update
663
664crypto/objects/obj_dat.h: crypto/objects/obj_dat.pl crypto/objects/obj_mac.h
665        $(PERL) crypto/objects/obj_dat.pl crypto/objects/obj_mac.h crypto/objects/obj_dat.h
666crypto/objects/obj_mac.h: crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num
667        $(PERL) crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num crypto/objects/obj_mac.h
668
669TABLE: Configure
670        (echo 'Output of `Configure TABLE'"':"; \
671        $(PERL) Configure TABLE) > TABLE
672
673update: depend errors stacks util/libeay.num util/ssleay.num crypto/objects/obj_dat.h TABLE
674
675# Build distribution tar-file. As the list of files returned by "find" is
676# pretty long, on several platforms a "too many arguments" error or similar
677# would occur. Therefore the list of files is temporarily stored into a file
678# and read directly, requiring GNU-Tar. Call "make TAR=gtar dist" if the normal
679# tar does not support the --files-from option.
680tar:
681        find . -type d -print | xargs chmod 755
682        find . -type f -print | xargs chmod a+r
683        find . -type f -perm -0100 -print | xargs chmod a+x
684        find * \! -path CVS/\* \! -path \*/CVS/\* \! -name CVS \! -name .cvsignore \! -name STATUS \! -name TABLE | sort > ../$(TARFILE).list; \
685        $(TAR) $(TARFLAGS) --files-from ../$(TARFILE).list -cvf - | \
686        tardy --user_number=0  --user_name=openssl \
687              --group_number=0 --group_name=openssl \
688              --prefix=openssl-$(VERSION) - |\
689        gzip --best >../$(TARFILE).gz; \
690        rm -f ../$(TARFILE).list; \
691        ls -l ../$(TARFILE).gz
692
693tar-snap:
694        @$(TAR) $(TARFLAGS) -cvf - \
695                `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` |\
696        tardy --user_number=0  --user_name=openssl \
697              --group_number=0 --group_name=openssl \
698              --prefix=openssl-$(VERSION) - > ../$(TARFILE);\
699        ls -l ../$(TARFILE)
700
701dist:   
702        $(PERL) Configure dist
703        @$(MAKE) dist_pem_h
704        @$(MAKE) SDIRS='${SDIRS}' clean
705        @$(MAKE) TAR='${TAR}' TARFLAGS='${TARFLAGS}' tar
706
707dist_pem_h:
708        (cd crypto/pem; $(MAKE) CC='${CC}' SDIRS='${SDIRS}' CFLAG='${CFLAG}' pem.h; $(MAKE) clean)
709
710install: all install_docs
711        @$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin \
712                $(INSTALL_PREFIX)$(INSTALLTOP)/lib \
713                $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig \
714                $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl \
715                $(INSTALL_PREFIX)$(OPENSSLDIR)/misc \
716                $(INSTALL_PREFIX)$(OPENSSLDIR)/certs \
717                $(INSTALL_PREFIX)$(OPENSSLDIR)/private \
718                $(INSTALL_PREFIX)$(OPENSSLDIR)/lib
719        @for i in $(EXHEADER) ;\
720        do \
721        (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
722        chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
723        done;
724        @for i in $(DIRS) ;\
725        do \
726        if [ -d "$$i" ]; then \
727                (cd $$i; echo "installing $$i..."; \
728                $(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 ); \
729        fi; \
730        done
731        @for i in $(LIBS) ;\
732        do \
733                if [ -f "$$i" ]; then \
734                (       echo installing $$i; \
735                        cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
736                        $(RANLIB) $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
737                        chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
738                        mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i ); \
739                fi; \
740        done;
741        @if [ -n "$(SHARED_LIBS)" ]; then \
742                tmp="$(SHARED_LIBS)"; \
743                for i in $${tmp:-x}; \
744                do \
745                        if [ -f "$$i" -o -f "$$i.a" ]; then \
746                        (       echo installing $$i; \
747                                if [ "$(PLATFORM)" != "Cygwin" ]; then \
748                                        cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
749                                        chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
750                                        mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i; \
751                                else \
752                                        c=`echo $$i | sed 's/^lib\(.*\)/cyg\1-$(SHLIB_VERSION_NUMBER)/'`; \
753                                        cp $$c $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
754                                        chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
755                                        mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c; \
756                                        cp $$i.a $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.a.new; \
757                                        chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.a.new; \
758                                        mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.a.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.a; \
759                                fi ); \
760                        fi; \
761                done; \
762                (       here="`pwd`"; \
763                        cd $(INSTALL_PREFIX)$(INSTALLTOP)/lib; \
764                        set $(MAKE); \
765                        $$1 -f $$here/Makefile link-shared ); \
766        fi
767        cp openssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig
768
769install_docs:
770        @$(PERL) $(TOP)/util/mkdir-p.pl \
771                $(INSTALL_PREFIX)$(MANDIR)/man1 \
772                $(INSTALL_PREFIX)$(MANDIR)/man3 \
773                $(INSTALL_PREFIX)$(MANDIR)/man5 \
774                $(INSTALL_PREFIX)$(MANDIR)/man7
775        @pod2man="`cd util; ./pod2mantest $(PERL)`"; \
776        here="`pwd`"; \
777        filecase=; \
778        if [ "$(PLATFORM)" = "DJGPP" -o "$(PLATFORM)" = "Cygwin" ]; then \
779                filecase=-i; \
780        fi; \
781        for i in doc/apps/*.pod; do \
782                fn=`basename $$i .pod`; \
783                if [ "$$fn" = "config" ]; then sec=5; else sec=1; fi; \
784                echo "installing man$$sec/$$fn.$$sec"; \
785                (cd `$(PERL) util/dirname.pl $$i`; \
786                sh -c "$$pod2man \
787                        --section=$$sec --center=OpenSSL \
788                        --release=$(VERSION) `basename $$i`") \
789                        >  $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$$sec; \
790                $(PERL) util/extract-names.pl < $$i | \
791                        grep -v $$filecase "^$$fn\$$" | \
792                        (cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \
793                         while read n; do \
794                                $$here/util/point.sh $$fn.$$sec $$n.$$sec; \
795                         done); \
796        done; \
797        for i in doc/crypto/*.pod doc/ssl/*.pod; do \
798                fn=`basename $$i .pod`; \
799                if [ "$$fn" = "des_modes" ]; then sec=7; else sec=3; fi; \
800                echo "installing man$$sec/$$fn.$$sec"; \
801                (cd `$(PERL) util/dirname.pl $$i`; \
802                sh -c "$$pod2man \
803                        --section=$$sec --center=OpenSSL \
804                        --release=$(VERSION) `basename $$i`") \
805                        >  $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$$sec; \
806                $(PERL) util/extract-names.pl < $$i | \
807                        grep -v $$filecase "^$$fn\$$" | \
808                        (cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \
809                         while read n; do \
810                                $$here/util/point.sh $$fn.$$sec $$n.$$sec; \
811                         done); \
812        done
813
814# DO NOT DELETE THIS LINE -- make depend depends on it.
Note: See TracBrowser for help on using the repository browser.