[openssl-commits] [openssl] master update

Richard Levitte levitte at openssl.org
Thu Feb 18 23:10:50 UTC 2016


The branch master has been updated
       via  c058fcd79877530f18a288664ea71def012c405a (commit)
      from  df302cdce7bd9b27bb4745674abc06d3310dde33 (commit)


- Log -----------------------------------------------------------------
commit c058fcd79877530f18a288664ea71def012c405a
Author: Richard Levitte <levitte at openssl.org>
Date:   Thu Feb 18 19:41:57 2016 +0100

    Automatic 'make depend' for the unified build scheme
    
    This isn't the fully featured combination of compiler generated
    dependency files and Makefile include directives, but a cheaper
    variant of the same.
    
    The dependency files are generated automatically, but then we have the
    usual "depend" target.  However, we depend on it in the bigger phony
    targets that are the most likely to be used.  That make this feature
    automatic enough.
    
    A side effect is that we can't use the build file's timestamp to check
    if reconfiguring might be in order.  In its place, we use a flag file
    that depends on Configure and the build file template and depend on it
    in spots where it makes sense to check for the need to reconfigure.
    
    Reviewed-by: Rich Salz <rsalz at openssl.org>

-----------------------------------------------------------------------

Summary of changes:
 Configurations/descrip.mms.tmpl   | 71 ++++++++++++++++++++++-----------------
 Configurations/unix-Makefile.tmpl | 59 ++++++++++++++++++--------------
 2 files changed, 74 insertions(+), 56 deletions(-)

diff --git a/Configurations/descrip.mms.tmpl b/Configurations/descrip.mms.tmpl
index 2798b19..065d5a3 100644
--- a/Configurations/descrip.mms.tmpl
+++ b/Configurations/descrip.mms.tmpl
@@ -105,6 +105,10 @@ ENGINES={- join(", ", map { "-\n\t".$_.".EXE" } @{$unified_info{engines}}) -}
 PROGRAMS={- join(", ", map { "-\n\t".$_.".EXE" } grep { !m|^\[\.test\]| } @{$unified_info{programs}}) -}
 TESTPROGS={- join(", ", map { "-\n\t".$_.".EXE" } grep { m|^\[\.test\]| } @{$unified_info{programs}}) -}
 SCRIPTS={- join(", ", map { "-\n\t".$_ } @{$unified_info{scripts}}) -}
+DEPS={- our @deps = map { (my $x = $_) =~ s|\.o$|\$(DEP_EXT)|; $x; }
+                    grep { $unified_info{sources}->{$_}->[0] =~ /\.c$/ }
+                    keys %{$unified_info{sources}};
+        join(", ", map { "-\n\t".$_ } @deps); -}
 
 # DESTDIR is for package builders so that they can configure for, say,
 # SYS$COMMON:[OPENSSL] and yet have everything installed in STAGING:[USER].
@@ -200,14 +204,22 @@ NODEBUG=@
 
 # The main targets ###################################################
 
-all : descrip.mms, build_libs, build_engines, build_apps
-
-build_libs : $(LIBS)
-build_engines : $(ENGINES)
-build_apps : $(PROGRAMS), $(SCRIPTS)
-build_tests : $(TESTPROGS)
-
-test tests : build_apps, build_engines, build_tests, rehash
+all : config.timestamp, -
+      build_libs_nodep, build_engines_nodep, build_apps_nodep, -
+      depend
+
+build_libs : config.timestamp, build_libs_nodep, depend
+build_libs_nodep : $(LIBS)
+build_engines : config.timestamp, build_engines_nodep, depend
+build_engines_nodep : $(ENGINES)
+build_apps : config.timestamp, build_apps_nodep, depend
+build_apps_nodep : $(PROGRAMS), $(SCRIPTS)
+build_tests : config.timestamp, build_tests_nodep, depend
+build_tests_nodep : $(TESTPROGS)
+
+test tests : config.timestamp, -
+             build_apps_nodep, build_engines_nodep, build_tests_nodep, -
+             depend, rehash
         SET DEFAULT [.test]{- move("test") -}
         DEFINE SRCTOP {- sourcedir() -}
         DEFINE BLDTOP {- builddir() -}
@@ -242,24 +254,18 @@ clean : libclean
         - DELETE [.test]*.LOG;*
         - DELETE []*.MAP;*
 
-DCLEAN_CMD=$(PERL) -pe "if (/^# DO NOT DELETE.*/) { exit(0); }"
-dclean :
-        $(DCLEAN_CMD) < descrip.mms > descrip.mms.new
-        RENAME descrip.mms.new descrip.mms
-        PURGE descrip.mms
-
-{- our @deps = map { (my $x = $_) =~ s|\.o$|\$(DEP_EXT)|; $x; }
-               grep { $unified_info{sources}->{$_}->[0] =~ /\.c$/ }
-               keys %{$unified_info{sources}};
-   ""; -}
-depend : {- join(",-\n\t", @deps); -}
-        $(DCLEAN_CMD) < descrip.mms > descrip.mms.new
-        OPEN/APPEND DESCRIP descrip.mms.new
-        WRITE DESCRIP "# DO NOT DELETE THIS LINE -- make depend depends on it."
-        {- join("\n\t", map { "TYPE $_ /OUTPUT=DESCRIP:" } @deps); -}
-        CLOSE DESCRIP
-        RENAME descrip.mms.new descrip.mms
-        PURGE descrip.mms
+depend : descrip.mms
+descrip.mms : FORCE
+        @ $(PERL) -pe "if (/^# DO NOT DELETE.*/) { exit(0); }" -
+                < descrip.mms > descrip.mms-new
+        @ OPEN/APPEND DESCRIP descrip.mms-new
+        @ WRITE DESCRIP "# DO NOT DELETE THIS LINE -- make depend depends on it."
+        @ {- join("\n\t", map { "IF F\$SEARCH(\"$_\") .NES. \"\" THEN TYPE $_ /OUTPUT=DESCRIP:" } @deps); -}
+        @ CLOSE DESCRIP
+        @ DIFF/OUTPUT=NLA0: descrip.mms,descrip.mms-new
+        @ IF $SEVERITY .EQ. 3 THEN RENAME descrip.mms-new descrip.mms
+        @ IF F$SEARCH("descrip.mms-new") .NES. "" THEN DELETE descrip.mms-new;*
+        -@ SPAWN/OUTPUT=NLA0: PURGE/NOLOG descrip.mms
 
 # Install helper targets #############################################
 
@@ -345,7 +351,7 @@ install_config : [.VMS]openssl_startup.com [.VMS]openssl_shutdown.com -
                 {- sourcefile("VMS", "openssl_shutdown.com.in") -} -
                 > [.VMS]openssl_shutdown.com
 
-vmsconfig.pm : descrip.mms
+vmsconfig.pm : config.timestamp
         OPEN/WRITE/SHARE=READ CONFIG []vmsconfig.pm
         WRITE CONFIG "package vmsconfig;"
         WRITE CONFIG "use strict; use warnings;"
@@ -377,7 +383,7 @@ check_INSTALLTOP :
 
 # Helper targets #####################################################
 
-rehash : [.apps]openssl.exe, copy-certs
+rehash : copy-certs, build_apps_nodep
         !MCR [.apps]openssl.exe rehash {- builddir("certs", "demo") -}
         $(PERL) [.tools]c_rehash. [.certs.demo]
 
@@ -396,8 +402,8 @@ debug_logicals :
 
 # Building targets ###################################################
 
-descrip.mms : {- sourcefile("Configurations", "descrip.mms.tmpl") -} $(SRCDIR)Configure ! $(SRCDIR)config.com
-        @ WRITE SYS$OUTPUT "descrip.mms is older than $?."
+config.timestamp : {- sourcefile("Configurations", "descrip.mms.tmpl") -} $(SRCDIR)Configure ! $(SRCDIR)config.com
+        @ WRITE SYS$OUTPUT "Detected changed: $?"
         @ WRITE SYS$OUTPUT "Reconfiguring..."
         perl $(SRCDIR)Configure reconf
         @ WRITE SYS$OUTPUT "*************************************************"
@@ -405,6 +411,11 @@ descrip.mms : {- sourcefile("Configurations", "descrip.mms.tmpl") -} $(SRCDIR)Co
         @ WRITE SYS$OUTPUT "***   Please run the same mms command again   ***"
         @ WRITE SYS$OUTPUT "***                                           ***"
         @ WRITE SYS$OUTPUT "*************************************************"
+        @ IF F$SEARCH("config.timestamp",1) .NES. "" THEN -
+                OPEN/APPEND TIMESTAMP "config.timestamp"
+        @ IF F$SEARCH("config.timestamp",2) .EQS. "" THEN -
+                OPEN/WRITE TIMESTAMP "config.timestamp"
+        @ close TIMESTAMP
         @ exit %10000000
 
 {-
diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl
index 3cfbfd2..092a7b3 100644
--- a/Configurations/unix-Makefile.tmpl
+++ b/Configurations/unix-Makefile.tmpl
@@ -37,6 +37,10 @@ ENGINES={- join(" ", map { $_."\$(SHLIB_EXT_SIMPLE)" } @{$unified_info{engines}}
 PROGRAMS={- join(" ", map { $_."\$(EXE_EXT)" } grep { !m|^test/| } @{$unified_info{programs}}) -}
 TESTPROGS={- join(" ", map { $_."\$(EXE_EXT)" } grep { m|^test/| } @{$unified_info{programs}}) -}
 SCRIPTS={- join(" ", @{$unified_info{scripts}}) -}
+DEPS={- join(" ", map { (my $x = $_) =~ s|\.o$|\$(DEP_EXT)|; $x; }
+                  grep { $unified_info{sources}->{$_}->[0] =~ /\.c$/ }
+                  keys %{$unified_info{sources}}); -}
+
 BIN_SCRIPTS=$(BLDDIR)/tools/c_rehash
 MISC_SCRIPTS=$(SRCDIR)/tools/c_hash $(SRCDIR)/tools/c_info \
 	     $(SRCDIR)/tools/c_issuer $(SRCDIR)/tools/c_name \
@@ -146,15 +150,19 @@ PROCESSOR= {- $config{processor} -}
 
 # The main targets ###################################################
 
-all: build_libs build_engines build_apps link-utils
+all: config.timestamp build_libs_nodep build_engines_nodep build_apps_nodep \
+     depend link-utils
 
-# 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)
+build_libs: config.timestamp build_libs_nodep depend
+build_libs_nodep: libcrypto.pc libssl.pc openssl.pc
+build_engines: config.timestamp build_engines_nodep depend
+build_engines_nodep: $(ENGINES)
+build_apps: config.timestamp build_apps_nodep depend
+build_apps_nodep: $(PROGRAMS) $(SCRIPTS)
+build_tests: config.timestamp build_tests_nodep depend
+build_tests_nodep: $(TESTPROGS)
 
-test tests: build_tests build_apps build_engines rehash
+test tests: build_tests_nodep build_apps_nodep build_engines_nodep depend rehash
 	( cd test; \
 	  SRCTOP=../$(SRCDIR) \
 	  BLDTOP=../$(BLDDIR) \
@@ -181,20 +189,18 @@ clean: libclean
 	-rm -f `find $(BLDDIR) -type l`
 	rm -f $(TARFILE)
 
-DCLEAN_CMD=sed -e '/^. DO NOT DELETE.*/,$$d'
-dclean:
-	$(DCLEAN_CMD) < Makefile >Makefile.new
-	mv -f Makefile.new Makefile
-
-DEPS={- join(" ", map { (my $x = $_) =~ s|\.o$|\$(DEP_EXT)|; $x; }
-                  grep { $unified_info{sources}->{$_}->[0] =~ /\.c$/ }
-                  keys %{$unified_info{sources}}); -}
-depend: $(DEPS)
-	( $(DCLEAN_CMD) < Makefile; \
+# This exists solely for those who still type 'make depend'
+depend: Makefile
+Makefile: FORCE
+	@( sed -e '/^# DO NOT DELETE THIS LINE.*/,$$d' < Makefile; \
 	  echo '# DO NOT DELETE THIS LINE -- make depend depends on it.'; \
 	  echo; \
-	  cat `find . -name '*$(DEP_EXT)'` ) > Makefile.new
-	mv -f Makefile.new Makefile
+	  for d in $(DEPS); do \
+	    if [ -f $$d ]; then cat $$d; fi; \
+	  done ) > Makefile.new
+	@if ! cmp Makefile.new Makefile >/dev/null 2>&1; then \
+		mv -f Makefile.new Makefile; \
+	fi
 
 # Install helper targets #############################################
 
@@ -579,7 +585,7 @@ dist:
 
 # Helper targets #####################################################
 
-rehash: link-utils copy-certs build_apps
+rehash: link-utils copy-certs build_apps_nodep
 	@if [ -z "$(CROSS_COMPILE)" ]; then \
 		(OPENSSL="$(BLDDIR)/util/shlib_wrap.sh apps/openssl"; \
 		[ -x "$(BLDDIR)/openssl.exe" ] && OPENSSL="$(BLDDIR)/openssl.exe" || :; \
@@ -592,12 +598,12 @@ rehash: link-utils copy-certs build_apps
 
 link-utils: $(BLDDIR)/util/opensslwrap.sh $(BLDDIR)/util/shlib_wrap.sh
 
-$(BLDDIR)/util/opensslwrap.sh: Makefile
+$(BLDDIR)/util/opensslwrap.sh: config.timestamp
 	@if [ "$(SRCDIR)" != "$(BLDDIR)" ]; then \
 	    mkdir -p "$(BLDDIR)/util"; \
 	    ln -sf "../$(SRCDIR)/util/opensslwrap.sh" "$(BLDDIR)/util"; \
 	fi
-$(BLDDIR)/util/shlib_wrap.sh: Makefile
+$(BLDDIR)/util/shlib_wrap.sh: config.timestamp
 	@if [ "$(SRCDIR)" != "$(BLDDIR)" ]; then \
 	    mkdir -p "$(BLDDIR)/util"; \
 	    ln -sf "../$(SRCDIR)/util/shlib_wrap.sh" "$(BLDDIR)/util"; \
@@ -651,11 +657,11 @@ $(SRCDIR)/crypto/objects/obj_xref.h: $(SRCDIR)/crypto/objects/objxref.pl \
                 > $(SRCDIR)/crypto/objects/obj_xref.h
 	@sleep 1; touch $(SRCDIR)/crypto/objects/obj_xref.h; sleep 1
 
-FORCE :
+FORCE:
 
 # Building targets ###################################################
 
-libcrypto.pc libssl.pc openssl.pc: Makefile $(LIBS)
+libcrypto.pc libssl.pc openssl.pc: config.timestamp $(LIBS)
 libcrypto.pc:
 	@ ( echo 'prefix=$(INSTALLTOP)'; \
 	    echo 'exec_prefix=$${prefix}'; \
@@ -698,8 +704,8 @@ openssl.pc:
 # wasn't passed down automatically.  It's quite safe to use it like we do
 # below; if it doesn't exist, the result will be empty and 'make' will pick
 # up $(MAKEFLAGS) which is passed down as an environment variable.
-Makefile: {- $config{build_file_template} -} $(SRCDIR)/Configure $(SRCDIR)/config
-	@echo "Makefile is older than {- $config{build_file_template} -}, $(SRCDIR)/Configure or $(SRCDIR)/config."
+config.timestamp: {- $config{build_file_template} -} $(SRCDIR)/Configure $(SRCDIR)/config
+	@echo "Detected that {- $config{build_file_template} -}, $(SRCDIR)/Configure or $(SRCDIR)/config may have changed."
 	@echo "Reconfiguring..."
 	$(SRCDIR)/Configure reconf
 	@echo "**************************************************"
@@ -707,6 +713,7 @@ Makefile: {- $config{build_file_template} -} $(SRCDIR)/Configure $(SRCDIR)/confi
 	@echo "***   Please run the same make command again   ***"
 	@echo "***                                            ***"
 	@echo "**************************************************"
+	@touch config.timestamp
 	@false
 
 {-


More information about the openssl-commits mailing list