X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=Configurations%2Funix-Makefile.tmpl;h=a663589d8db319f3ab1fd9042afa547bec8df9e3;hp=4888dd0240603890a06cfc8cfb4ed0d43e5db449;hb=18c7e6dda8937337d73f4e76b5a0e07aeb71568d;hpb=fcf80c469aa722f7c6eca68d23d86d22f7f7efb9 diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl index 4888dd0240..a663589d8d 100644 --- a/Configurations/unix-Makefile.tmpl +++ b/Configurations/unix-Makefile.tmpl @@ -42,10 +42,10 @@ MISC_SCRIPTS=$(SRCDIR)/tools/c_hash $(SRCDIR)/tools/c_info \ $(SRCDIR)/tools/c_issuer $(SRCDIR)/tools/c_name \ $(BLDDIR)/apps/CA.pl $(SRCDIR)/apps/tsget -# INSTALL_PREFIX is for package builders so that they can configure -# for, say, /usr/ and yet have everything installed to /tmp/somedir/usr/. +# DESTDIR 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={- $config{install_prefix} -} +DESTDIR= # Do not edit these manually. Use Configure with --prefix or --openssldir # to change this! Short explanation in the top comment in Configure @@ -82,8 +82,8 @@ LIBDIR={- # ENGINESDIR={- use File::Spec::Functions; catdir($prefix,$libdir,"engines") -} -MANDIR=$(OPENSSLDIR)/man -HTMLDIR=$(OPENSSLDIR)/html +MANDIR=$(INSTALLTOP)/share/man +HTMLDIR=$(INSTALLTOP)/share/doc/$(BASENAME)/html MANSUFFIX=ssl HTMLSUFFIX=html @@ -92,7 +92,8 @@ HTMLSUFFIX=html CROSS_COMPILE= {- $config{cross_compile_prefix} -} CC= $(CROSS_COMPILE){- $target{cc} -} -CFLAGS={- join(" ",(map { "-D".$_} @{$config{defines}}),"-DOPENSSLDIR=\"\\\"\$(OPENSSLDIR)\\\"\"","-DENGINESDIR=\"\\\"\$(ENGINESDIR)\\\"\"") -} {- $config{cflags} -} +CFLAGS={- our $cflags2 = join(" ",(map { "-D".$_} @{$config{defines}}),"-DOPENSSLDIR=\"\\\"\$(OPENSSLDIR)\\\"\"","-DENGINESDIR=\"\\\"\$(ENGINESDIR)\\\"\"") -} {- $config{cflags} -} +CFLAGS_Q={- $cflags2 =~ s|([\\"])|\\$1|g; $cflags2 -} {- $config{cflags} -} DEPFLAGS= {- join(" ",map { "-D".$_} @{$config{depdefines}}) -} LDFLAGS= {- $config{lflags} -} PLIB_LDFLAGS= {- $config{plib_lflags} -} @@ -111,6 +112,7 @@ SHARED_LDFLAGS={- $target{shared_ldflag} # $prefix is not /usr. . ($config{target} =~ m|^BSD-| && $prefix !~ m|^/usr/.*$| ? " -Wl,-rpath,\$\$(LIBRPATH)" : "") -} +SHARED_RCFLAGS={- $target{shared_rcflag} -} PERL={- $config{perl} -} @@ -141,9 +143,15 @@ PROCESSOR= {- $config{processor} -} # The main targets ################################################### -all: Makefile libcrypto.pc libssl.pc openssl.pc $(ENGINES) $(PROGRAMS) $(SCRIPTS) $(TESTPROGS) +all: build_libs build_engines build_apps link-utils -test tests: $(TESTPROGS) rehash +# The pkg-config files depend on the libraries as well as Makefile +build_libs: libcrypto.pc libssl.pc openssl.pc +build_engines: $(ENGINES) +build_apps: $(PROGRAMS) $(SCRIPTS) +build_tests: $(TESTPROGS) + +test tests: build_tests build_apps build_engines build_libs rehash ( cd test; \ SRCTOP=../$(SRCDIR) \ BLDTOP=../$(BLDDIR) \ @@ -155,7 +163,7 @@ list-tests: libclean: -rm -f `find $(BLDDIR) -name '*$(LIB_EXT)' -o -name '*$(SHLIB_EXT)'` -install: install_sw install_docs +install: install_sw install_ssldirs install_docs uninstall: uninstall_docs uninstall_sw @@ -194,187 +202,191 @@ install_docs: install_man_docs install_html_docs uninstall_docs: uninstall_man_docs uninstall_html_docs +install_ssldirs: + @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(OPENSSLDIR)/certs + @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(OPENSSLDIR)/private + install_dev: @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1) @echo "*** Installing development files" - @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl + @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(INSTALLTOP)/include/openssl @set -e; for i in $(SRCDIR)/include/openssl/*.h \ $(BLDDIR)/include/openssl/*.h; do \ fn=`basename $$i`; \ - echo "install $$i -> $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$fn"; \ - cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$fn; \ - chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$fn; \ + echo "install $$i -> $(DESTDIR)$(INSTALLTOP)/include/openssl/$$fn"; \ + cp $$i $(DESTDIR)$(INSTALLTOP)/include/openssl/$$fn; \ + chmod 644 $(DESTDIR)$(INSTALLTOP)/include/openssl/$$fn; \ done - @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR) + @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(INSTALLTOP)/$(LIBDIR) @set -e; for l in $(LIBS); do \ fn=`basename $$l`; \ - echo "install $$l -> $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn"; \ - cp $$l $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn.new; \ - $(RANLIB) $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn.new; \ - chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn.new; \ - mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn.new \ - $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn; \ + echo "install $$l -> $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn"; \ + cp $$l $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn.new; \ + $(RANLIB) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn.new; \ + chmod 644 $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn.new; \ + mv -f $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn.new \ + $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn; \ done @ : {- output_off() if $config{no_shared}; "" -} @set -e; for s in $(SHLIBS); do \ fn=`basename $$s`; \ - echo "install $$s -> $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn"; \ - cp $$s $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn.new; \ - chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn.new; \ - mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn.new \ - $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn; \ + echo "install $$s -> $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn"; \ + cp $$s $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn.new; \ + chmod 644 $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn.new; \ + mv -f $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn.new \ + $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn; \ if [ "$(SHLIB_EXT)" != "$(SHLIB_EXT_SIMPLE)" ]; then \ - echo "link $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn2 -> $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn"; \ + echo "link $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn2 -> $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn"; \ fn2=`basename $$fn $(SHLIB_EXT)`$(SHLIB_EXT_SIMPLE); \ - ln -sf $$fn $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn2; \ + ln -sf $$fn $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn2; \ fi; \ : {- output_off() unless windowsdll(); "" -}; \ - echo "install $$s.a -> $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn.a"; \ - cp $$s.a $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn.a.new; \ - chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn.a.new; \ - mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn.a.new \ - $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn.a; \ - : {- output_on() -}; \ + echo "install $$s.a -> $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn.a"; \ + cp $$s.a $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn.a.new; \ + chmod 644 $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn.a.new; \ + mv -f $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn.a.new \ + $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn.a; \ + : {- output_on() unless windowsdll(); "" -}; \ done - @ : {- output_on() -} - @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig - @echo "install libcrypto.pc -> $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libcrypto.pc" - @cp libcrypto.pc $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig - @chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libcrypto.pc - @echo "install libssl.pc -> $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libssl.pc" - @cp libssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig - @chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libssl.pc - @echo "install openssl.pc -> $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/openssl.pc" - @cp openssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig - @chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/openssl.pc + @ : {- output_on() if $config{no_shared}; "" -} + @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig + @echo "install libcrypto.pc -> $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libcrypto.pc" + @cp libcrypto.pc $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig + @chmod 644 $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libcrypto.pc + @echo "install libssl.pc -> $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libssl.pc" + @cp libssl.pc $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig + @chmod 644 $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libssl.pc + @echo "install openssl.pc -> $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/openssl.pc" + @cp openssl.pc $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig + @chmod 644 $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/openssl.pc uninstall_dev: @echo "*** Uninstalling development files" @set -e; for i in $(SRCDIR)/include/openssl/*.h \ $(BLDDIR)/include/openssl/*.h; do \ fn=`basename $$i`; \ - echo "$(RM) $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$fn"; \ - $(RM) $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$fn; \ + echo "$(RM) $(DESTDIR)$(INSTALLTOP)/include/openssl/$$fn"; \ + $(RM) $(DESTDIR)$(INSTALLTOP)/include/openssl/$$fn; \ done @set -e; for l in $(LIBS); do \ fn=`basename $$l`; \ - echo "$(RM) $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn"; \ - $(RM) $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn; \ + echo "$(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn"; \ + $(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn; \ done @set -e; for s in $(SHLIBS); do \ fn=`basename $$s`; \ if [ "$(SHLIB_EXT)" != "$(SHLIB_EXT_SIMPLE)" ]; then \ fn2=`basename $$fn $(SHLIB_EXT)`$(SHLIB_EXT_SIMPLE); \ - echo "$(RM) $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn2"; \ - $(RM) $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn2; \ + echo "$(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn2"; \ + $(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn2; \ fi; \ - echo "$(RM) $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn"; \ - $(RM) $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn; \ + echo "$(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn"; \ + $(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn; \ : {- output_off() unless windowsdll(); "" -}; \ - echo "$(RM) $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn.a"; \ - $(RM) $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$fn.a; \ - : {- output_on() -}; \ + echo "$(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn.a"; \ + $(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn.a; \ + : {- output_on() unless windowsdll(); "" -}; \ done - @echo "$(RM) $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libcrypto.pc" - @$(RM) $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libcrypto.pc - @echo "$(RM) $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libssl.pc" - @$(RM) $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libssl.pc - @echo "$(RM) $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/openssl.pc" - @$(RM) $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/openssl.pc + @echo "$(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libcrypto.pc" + @$(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libcrypto.pc + @echo "$(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libssl.pc" + @$(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libssl.pc + @echo "$(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/openssl.pc" + @$(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/openssl.pc install_engines: @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1) - @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/ + @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/engines/ @echo "*** Installing engines" @set -e; for e in $(ENGINES); do \ fn=`basename $$e`; \ - echo "install $$e -> $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$fn"; \ - cp $$e $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$fn.new; \ - chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$fn.new; \ - mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$fn.new \ - $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$fn; \ + echo "install $$e -> $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ + cp $$e $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/engines/$$fn.new; \ + chmod 755 $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/engines/$$fn.new; \ + mv -f $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/engines/$$fn.new \ + $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/engines/$$fn; \ done uninstall_engines: @echo "*** Uninstalling engines" @set -e; for e in $(ENGINES); do \ fn=`basename $$e`; \ - echo "$(RM) $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$fn"; \ - $(RM) $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$fn; \ + echo "$(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ + $(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/engines/$$fn; \ done install_runtime: @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1) - @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin - @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(INSTALL_PREFIX)$(OPENSSLDIR)/misc + @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(INSTALLTOP)/bin + @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(OPENSSLDIR)/misc @echo "*** Installing runtime files" : {- output_off() unless windowsdll(); "" -}; @set -e; for s in $(SHLIBS); do \ fn=`basename $$i`; \ - echo "install $$s -> $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$fn"; \ - cp $$s $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$fn.new; \ - chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$fn.new; \ - mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$fn.new \ - $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$fn; \ + echo "install $$s -> $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ + cp $$s $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ + chmod 644 $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ + mv -f $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new \ + $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \ done - : {- output_on() -}; + : {- output_on() unless windowsdll(); "" -}; @set -e; for x in $(PROGRAMS); do \ fn=`basename $$x`; \ - echo "install $$x -> $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$fn"; \ - cp $$x $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$fn.new; \ - chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$fn.new; \ - mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$fn.new \ - $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$fn; \ + echo "install $$x -> $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ + cp $$x $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ + chmod 755 $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ + mv -f $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new \ + $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \ done @set -e; for x in $(BIN_SCRIPTS); do \ fn=`basename $$x`; \ - echo "install $$x -> $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$fn"; \ - cp $$x $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$fn.new; \ - chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$fn.new; \ - mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$fn.new \ - $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$fn; \ + echo "install $$x -> $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ + cp $$x $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ + chmod 755 $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ + mv -f $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new \ + $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \ done @set -e; for x in $(MISC_SCRIPTS); do \ fn=`basename $$x`; \ - echo "install $$x -> $(INSTALL_PREFIX)$(OPENSSLDIR)/misc/$$fn"; \ - cp $$x $(INSTALL_PREFIX)$(OPENSSLDIR)/misc/$$fn.new; \ - chmod 755 $(INSTALL_PREFIX)$(OPENSSLDIR)/misc/$$fn.new; \ - mv -f $(INSTALL_PREFIX)$(OPENSSLDIR)/misc/$$fn.new \ - $(INSTALL_PREFIX)$(OPENSSLDIR)/misc/$$fn; \ + echo "install $$x -> $(DESTDIR)$(OPENSSLDIR)/misc/$$fn"; \ + cp $$x $(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new; \ + chmod 755 $(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new; \ + mv -f $(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new \ + $(DESTDIR)$(OPENSSLDIR)/misc/$$fn; \ done - @echo "install $(SRCDIR)/apps/openssl.cnf -> $(INSTALL_PREFIX)$(OPENSSLDIR)/openssl.cnf" - @cp $(SRCDIR)/apps/openssl.cnf $(INSTALL_PREFIX)$(OPENSSLDIR)/openssl.cnf.new - @chmod 644 $(INSTALL_PREFIX)$(OPENSSLDIR)/openssl.cnf.new - @mv -f $(INSTALL_PREFIX)$(OPENSSLDIR)/openssl.cnf.new $(INSTALL_PREFIX)$(OPENSSLDIR)/openssl.cnf + @echo "install $(SRCDIR)/apps/openssl.cnf -> $(DESTDIR)$(OPENSSLDIR)/openssl.cnf" + @cp $(SRCDIR)/apps/openssl.cnf $(DESTDIR)$(OPENSSLDIR)/openssl.cnf.new + @chmod 644 $(DESTDIR)$(OPENSSLDIR)/openssl.cnf.new + @mv -f $(DESTDIR)$(OPENSSLDIR)/openssl.cnf.new $(DESTDIR)$(OPENSSLDIR)/openssl.cnf uninstall_runtime: @echo "*** Uninstalling runtime files" @set -e; for x in $(PROGRAMS); \ do \ fn=`basename $$x`; \ - echo "$(RM) $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$fn"; \ - $(RM) $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$fn; \ + echo "$(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ + $(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \ done; @set -e; for x in $(BIN_SCRIPTS); \ do \ fn=`basename $$x`; \ - echo "$(RM) $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$fn"; \ - $(RM) $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$fn; \ + echo "$(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ + $(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \ done @set -e; for x in $(MISC_SCRIPTS); \ do \ fn=`basename $$x`; \ - echo "$(RM) $(INSTALL_PREFIX)$(OPENSSLDIR)/misc/$$fn"; \ - $(RM) $(INSTALL_PREFIX)$(OPENSSLDIR)/misc/$$fn; \ + echo "$(RM) $(DESTDIR)$(OPENSSLDIR)/misc/$$fn"; \ + $(RM) $(DESTDIR)$(OPENSSLDIR)/misc/$$fn; \ done : {- output_off() unless windowsdll(); "" -}; @set -e; for s in $(SHLIBS); do \ fn=`basename $$i`; \ - echo "$(RM) $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$fn"; \ - $(RM) $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$fn; \ + echo "$(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ + $(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \ done - : {- output_on() -}; - $(RM) $(INSTALL_PREFIX)$(OPENSSLDIR)/openssl.cnf + : {- output_on() unless windowsdll(); "" -}; + $(RM) $(DESTDIR)$(OPENSSLDIR)/openssl.cnf # A method to extract all names from a .pod file # The first sed extracts everything between "=head1 NAME" and the next =head1 @@ -405,7 +417,14 @@ PROCESS_PODS=\ names=`cat $$p | $(EXTRACT_NAMES)`; \ ( cd $$top/man$$SEC; \ for n in $$names; do \ - if [ "$$n" != "$$fn" ]; then \ + comp_n="$$n"; \ + comp_fn="$$fn"; \ + case "$(PLATFORM)" in DJGPP|Cygwin*|mingw*|darwin*-*-cc) \ + comp_n=`echo "$$n" | tr [A-Z] [a-z]`; \ + comp_fn=`echo "$$fn" | tr [A-Z] [a-z]`; \ + ;; \ + esac; \ + if [ "$$comp_n" != "$$comp_fn" ]; then \ echo "link $$top/man$$SEC/$$n$$suf -> $$top/man$$SEC/$$fn$$suf"; \ PLATFORM=$(PLATFORM) $$point $$fn$$suf $$n$$suf; \ fi; \ @@ -428,7 +447,14 @@ UNINSTALL_DOCS=\ $(RM) $$top/man$$SEC/$$fn$$suf; \ names=`cat $$p | $(EXTRACT_NAMES)`; \ for n in $$names; do \ - if [ "$$n" != "$$fn" ]; then \ + comp_n="$$n"; \ + comp_fn="$$fn"; \ + case "$(PLATFORM)" in DJGPP|Cygwin*|mingw*|darwin*-*-cc) \ + comp_n=`echo "$$n" | tr [A-Z] [a-z]`; \ + comp_fn=`echo "$$fn" | tr [A-Z] [a-z]`; \ + ;; \ + esac; \ + if [ "$$comp_n" != "$$comp_fn" ]; then \ echo "$(RM) $$top/man$$SEC/$$n$$suf"; \ $(RM) $$top/man$$SEC/$$n$$suf; \ fi; \ @@ -441,7 +467,7 @@ install_man_docs: @echo "*** Installing manpages" @\ OUTSUFFIX='.$${SEC}$(MANSUFFIX)'; \ - OUTTOP="$(INSTALL_PREFIX)$(MANDIR)"; \ + OUTTOP="$(DESTDIR)$(MANDIR)"; \ GENERATE='pod2man --name=$$NAME --section=$$SEC --center=OpenSSL --release=$(VERSION)'; \ $(PROCESS_PODS) @@ -449,7 +475,7 @@ uninstall_man_docs: @echo "*** Uninstalling manpages" @\ OUTSUFFIX='.$${SEC}$(MANSUFFIX)'; \ - OUTTOP="$(INSTALL_PREFIX)$(MANDIR)"; \ + OUTTOP="$(DESTDIR)$(MANDIR)"; \ $(UNINSTALL_DOCS) install_html_docs: @@ -457,7 +483,7 @@ install_html_docs: @echo "*** Installing HTML manpages" @\ OUTSUFFIX='.$(HTMLSUFFIX)'; \ - OUTTOP="$(INSTALL_PREFIX)$(HTMLDIR)"; \ + OUTTOP="$(DESTDIR)$(HTMLDIR)"; \ GENERATE="pod2html --podroot=$(SRCDIR)/doc --htmldir=.. \ --podpath=apps:crypto:ssl \ | sed -e 's|href=\"http://man.he.net/man|href=\"../man|g'"; \ @@ -467,13 +493,15 @@ uninstall_html_docs: @echo "*** Uninstalling manpages" @\ OUTSUFFIX='.$(HTMLSUFFIX)'; \ - OUTTOP="$(INSTALL_PREFIX)$(HTMLDIR)"; \ + OUTTOP="$(DESTDIR)$(HTMLDIR)"; \ $(UNINSTALL_DOCS) # Developer targets (note: these are only available on Unix) ######### -update: errors ordinals tags test_ordinals +update: generate errors ordinals + +generate: generate_apps generate_crypto_bn generate_crypto_objects # Test coverage is a good idea for the future #coverage: $(PROGRAMS) $(TESTPROGRAMS) @@ -486,6 +514,14 @@ update: errors ordinals tags test_ordinals lint: lint -DLINT $(INCLUDES) $(SRCS) +generate_apps: $(SRCDIR)/apps/openssl-vms.cnf $(SRCDIR)/apps/progs.h + +generate_crypto_bn: $(SRCDIR)/crypto/bn/bn_prime.h + +generate_crypto_objects: $(SRCDIR)/crypto/objects/obj_dat.h \ + $(SRCDIR)/include/openssl/obj_mac.h \ + $(SRCDIR)/crypto/objects/obj_xref.h + errors: ( cd $(SRCDIR); $(PERL) util/ck_errf.pl -strict */*.c */*/*.c ) ( cd $(SRCDIR); $(PERL) util/mkerr.pl -recurse -write ) @@ -568,6 +604,49 @@ copy-certs: FORCE cp -R "$(SRCDIR)/certs" "$(BLDDIR)/"; \ fi +$(SRCDIR)/apps/openssl-vms.cnf: $(SRCDIR)/apps/openssl.cnf + $(PERL) $(SRCDIR)/VMS/VMSify-conf.pl \ + < $(SRCDIR)/apps/openssl.cnf > $(SRCDIR)/apps/openssl-vms.cnf + +{- # because the program apps/openssl has object files as sources, and + # they then have the corresponding C files as source, we need to chain + # the lookups in %unified_info + my $apps_openssl = catfile("apps","openssl"); + our @openssl_source = map { @{$unified_info{sources}->{$_}} } + @{$unified_info{sources}->{$apps_openssl}}; + ""; -} +$(SRCDIR)/apps/progs.h: + $(RM) $@ + $(PERL) $(SRCDIR)/apps/progs.pl {- join(" ", @openssl_source) -} > $@ + +$(SRCDIR)/crypto/bn/bn_prime.h: $(SRCDIR)/crypto/bn/bn_prime.pl + $(PERL) $(SRCDIR)/crypto/bn/bn_prime.pl > $(SRCDIR)/crypto/bn/bn_prime.h + +$(SRCDIR)/crypto/objects/obj_dat.h: $(SRCDIR)/crypto/objects/obj_dat.pl \ + $(SRCDIR)/include/openssl/obj_mac.h + $(PERL) $(SRCDIR)/crypto/objects/obj_dat.pl \ + $(SRCDIR)/include/openssl/obj_mac.h \ + $(SRCDIR)/crypto/objects/obj_dat.h + +# objects.pl both reads and writes obj_mac.num +$(SRCDIR)/include/openssl/obj_mac.h: $(SRCDIR)/crypto/objects/objects.pl \ + $(SRCDIR)/crypto/objects/objects.txt \ + $(SRCDIR)/crypto/objects/obj_mac.num + $(PERL) $(SRCDIR)/crypto/objects/objects.pl \ + $(SRCDIR)/crypto/objects/objects.txt \ + $(SRCDIR)/crypto/objects/obj_mac.num \ + $(SRCDIR)/include/openssl/obj_mac.h + @sleep 1; touch $(SRCDIR)/include/openssl/obj_mac.h; sleep 1 + +$(SRCDIR)/crypto/objects/obj_xref.h: $(SRCDIR)/crypto/objects/objxref.pl \ + $(SRCDIR)/crypto/objects/obj_xref.txt \ + $(SRCDIR)/crypto/objects/obj_mac.num + $(PERL) $(SRCDIR)/crypto/objects/objxref.pl \ + $(SRCDIR)/crypto/objects/obj_mac.num \ + $(SRCDIR)/crypto/objects/obj_xref.txt \ + > $(SRCDIR)/crypto/objects/obj_xref.h + @sleep 1; touch $(SRCDIR)/crypto/objects/obj_xref.h; sleep 1 + FORCE : # Building targets ################################################### @@ -629,16 +708,37 @@ Makefile: {- $config{build_file_template} -} $(SRCDIR)/Configure $(SRCDIR)/confi {- use File::Basename; use File::Spec::Functions qw/:DEFAULT abs2rel rel2abs/; + + # Helper function to figure out dependencies on libraries + # It takes a list of library names and outputs a list of dependencies + sub compute_lib_depends { + if ($config{no_shared}) { + return map { $_."\$(LIB_EXT)" } @_; + } + + # Depending on shared libraries: + # On Windows POSIX layers, we depend on {libname}.dll.a + # On Unix platforms, we depend on {shlibname}.so + return map { if (windowsdll()) { + "$_\$(SHLIB_EXT_SIMPLE).a" + } else { + my $libname = + $unified_info{sharednames}->{$_} || $_; + "$libname\$(SHLIB_EXT_SIMPLE)" + } } @_; + } + sub src2dep { my %args = @_; my $dep = $args{obj}.'$(DEP_EXT)'; my $obj = $args{obj}.'$(OBJ_EXT)'; my $srcs = join(" ", @{$args{srcs}}); + my $deps = join(" ", @{$args{srcs}}, @{$args{deps}}); my $incs = join(" ", map { " -I".$_ } @{$args{incs}}); my $makedepprog = $config{makedepprog}; if ($makedepprog eq "makedepend") { return <<"EOF"; -$dep : $srcs +$dep : $deps rm -f \$\@.tmp; touch \$\@.tmp \$(MAKEDEPEND) -f\$\@.tmp -o"|$obj"\ -- -DOPENSSL_DOING_MAKEDEPEND \$(DEPFLAGS)$incs \ @@ -648,7 +748,7 @@ $dep : $srcs EOF } return <<"EOF"; -$dep : $srcs Makefile +$dep : $deps Makefile \$(CC) -DOPENSSL_DOING_MAKEDEPEND \$(DEPFLAGS)$incs -MM -MF \$\@ -MQ $obj $srcs EOF } @@ -673,28 +773,36 @@ EOF my $libd = dirname($lib); my $libn = basename($lib); (my $libname = $libn) =~ s/^lib//; - my $shlibdeps = join("", map { my $d = dirname($_); - my $f = basename($_); - (my $l = $f) =~ s/^lib//; - " -L$d -l$l" } @{$args{deps}}); - my $deps = join(" ",map { $_."\$(SHLIB_EXT_SIMPLE)" } @{$args{deps}}); + my $linklibs = join("", map { my $d = dirname($_); + my $f = basename($_); + (my $l = $f) =~ s/^lib//; + " -L$d -l$l" } @{$args{deps}}); + my $deps = join(" ",compute_lib_depends(@{$args{deps}})); my $shlib_target = $target{shared_target}; my $ordinalsfile = defined($args{ordinals}) ? $args{ordinals}->[1] : ""; - my $targets = - "$shlib".shlib_ext() . - (shlib_ext() ne shlib_ext_simple() - ? " $shlib".shlib_ext_simple() : ""); + my $shlibtarget = windowsdll() ? + "$lib\$(SHLIB_EXT_SIMPLE).a" : "$shlib\$(SHLIB_EXT_SIMPLE)"; return <<"EOF" -$targets : $lib\$(LIB_EXT) $deps $ordinalsfile +# With a build on a Windows POSIX layer (Cygwin or Mingw), we know for a fact +# that two files get produced, {shlibname}.dll and {libname}.dll.a. +# With all other Unix platforms, we often build a shared library with the +# SO version built into the file name and a symlink without the SO version +# It's not necessary to have both as targets. The choice falls on the +# simplest, {libname}\$(SHLIB_EXT_SIMPLE).a for Windows POSIX layers and +# {libname}\$(SHLIB_EXT_SIMPLE) for the Unix platforms. +$shlibtarget : $lib\$(LIB_EXT) $deps $ordinalsfile \$(MAKE) -f \$(SRCDIR)/Makefile.shared -e \\ + PLATFORM=\$(PLATFORM) \\ PERL=\$(PERL) SRCDIR="\$(SRCDIR)" DSTDIR="$libd" \\ - INSTALLTOP="\$(INSTALLTOP)" LIBDIR="\$(LIBDIR)" \\ - LIBDEPS="\$(PLIB_LDFLAGS) $shlibdeps \$(EX_LIBS)" \\ - LIBNAME=$libname LIBVERSION=\$(SHLIB_MAJOR).\$(SHLIB_MINOR) \\ - LIBCOMPATVERSIONS=";\$(SHLIB_VERSION_HISTORY)" \\ - CC="\$(CC)" CFLAGS="\$(CFLAGS)" LDFLAGS="\$(LDFLAGS)" \\ - SHARED_LDFLAGS="\$(SHARED_LDFLAGS)" SHLIB_EXT=\$(SHLIB_EXT) \\ - link_a.$shlib_target + INSTALLTOP="\$(INSTALLTOP)" LIBDIR="\$(LIBDIR)" \\ + LIBDEPS="\$(PLIB_LDFLAGS) $linklibs \$(EX_LIBS)" \\ + LIBNAME=$libname LIBVERSION=\$(SHLIB_MAJOR).\$(SHLIB_MINOR) \\ + LIBCOMPATVERSIONS=";\$(SHLIB_VERSION_HISTORY)" \\ + CC="\$(CC)" CFLAGS="\$(CFLAGS)" LDFLAGS="\$(LDFLAGS)" \\ + CROSS_COMPILE="\$(CROSS_COMPILE)" \\ + SHARED_LDFLAGS="\$(SHARED_LDFLAGS)" SHLIB_EXT=\$(SHLIB_EXT) \\ + SHARED_RCFLAGS="\$(SHARED_RCFLAGS)" \\ + link_a.$shlib_target EOF . (windowsdll() ? <<"EOF" : ""); rm -f apps/$shlib\$(SHLIB_EXT) @@ -713,20 +821,21 @@ EOF my $f = basename($_); (my $l = $f) =~ s/^lib//; " -L$d -l$l" } @{$args{deps}}); - my $deps = join(" ",map { $_."\$(SHLIB_EXT_SIMPLE)" } @{$args{deps}}); + my $deps = join(" ",compute_lib_depends(@{$args{deps}})); my $shlib_target = $target{shared_target}; my $objs = join(" ", map { $_."\$(OBJ_EXT)" } @{$args{objs}}); return <<"EOF"; $lib\$(SHLIB_EXT_SIMPLE): $objs $deps \$(MAKE) -f \$(SRCDIR)/Makefile.shared -e \\ - PERL=\$(PERL) SRCDIR="\$(SRCDIR)" DSTDIR="$libd" \\ - LIBDEPS="\$(PLIB_LDFLAGS) $shlibdeps \$(EX_LIBS)" \\ - LIBNAME=$libname LDFLAGS="\$(LDFLAGS)" \\ - CC="\$(CC)" CFLAGS="\$(CFLAGS)" \\ - SHARED_LDFLAGS="\$(SHARED_LDFLAGS)" \\ + PLATFORM=\$(PLATFORM) \\ + PERL=\$(PERL) SRCDIR="\$(SRCDIR)" DSTDIR="$libd" \\ + LIBDEPS="\$(PLIB_LDFLAGS) $shlibdeps \$(EX_LIBS)" \\ + LIBNAME=$libname LDFLAGS="\$(LDFLAGS)" \\ + CC="\$(CC)" CFLAGS="\$(CFLAGS)" \\ + SHARED_LDFLAGS="\$(SHARED_LDFLAGS)" \\ SHLIB_EXT=\$(SHLIB_EXT_SIMPLE) \\ LIBEXTRAS="$objs" \\ - link_o.$shlib_target + link_o.$shlib_target EOF } sub obj2lib { @@ -745,25 +854,22 @@ EOF my $bind = dirname($bin); my $binn = basename($bin); my $objs = join(" ", map { $_."\$(OBJ_EXT)" } @{$args{objs}}); - my $deps = join(" ", - (map { $_."\$(OBJ_EXT)" } @{$args{objs}}), - (map { $_.($config{no_shared} ? "\$(LIB_EXT)" : "\$(SHLIB_EXT)" ) } - @{$args{deps}})); - my $libdeps = join("", map { my $d = dirname($_); - my $f = basename($_); - $d = "." if $d eq $f; - (my $l = $f) =~ s/^lib//; - " -L$d -l$l" } @{$args{deps}}); + my $deps = join(" ",compute_lib_depends(@{$args{deps}})); + my $linklibs = join("", map { my $d = dirname($_); + my $f = basename($_); + $d = "." if $d eq $f; + (my $l = $f) =~ s/^lib//; + " -L$d -l$l" } @{$args{deps}}); my $shlib_target = $config{no_shared} ? "" : $target{shared_target}; return <<"EOF"; -$bin\$(EXE_EXT) : $deps +$bin\$(EXE_EXT) : $objs $deps \$(RM) $bin\$(EXE_EXT) \$(MAKE) -f \$(SRCDIR)/Makefile.shared -e \\ - PERL=\$(PERL) SRCDIR=\$(SRCDIR) \\ + PERL=\$(PERL) SRCDIR=\$(SRCDIR) \\ APPNAME=$bin OBJECTS="$objs" \\ - LIBDEPS="\$(PLIB_LDFLAGS) \$(LDFLAGS) $libdeps \$(EX_LIBS)" \\ - CC="\$(CC)" CFLAGS="\$(CFLAGS)" LDFLAGS="\$(LDFLAGS)" \\ - LIBRPATH="\$(INSTALLTOP)/\$(LIBDIR)" \\ + LIBDEPS="\$(PLIB_LDFLAGS) $linklibs \$(EX_LIBS)" \\ + CC="\$(CC)" CFLAGS="\$(CFLAGS)" LDFLAGS="\$(LDFLAGS)" \\ + LIBRPATH="\$(INSTALLTOP)/\$(LIBDIR)" \\ link_app.$shlib_target EOF } @@ -776,7 +882,8 @@ EOF rel2abs($config{builddir})); return <<"EOF"; $script : $sources - \$(PERL) "-I\$(BLDDIR)" -Mconfigdata "$dofile" $sources > "$script" + \$(PERL) "-I\$(BLDDIR)" -Mconfigdata "$dofile" \\ + "-o$target{build_file}" $sources > "$script" chmod a+x $script EOF }