From: Richard Levitte Date: Sat, 19 Mar 2016 19:04:51 +0000 (+0100) Subject: Don't let 'generate' target depend on generated files, act directly instead X-Git-Tag: OpenSSL_1_1_0-pre5~292 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9a9f8ee78894a5f1d4e1f0eca2b888fec8012f98;p=openssl Don't let 'generate' target depend on generated files, act directly instead One of the 'generate' targets depended on $(SRCDIR)/apps/progs.h, which depended on... nothing. This meant it never got regenerated once it existed, regardless of need. Of course, we could have it depend on all the files checked to generate it, but they also depend on progs.h, so we'd end up getting cricular dependencies, which makes make unhappy. Furthermore, and this applies for the other generated files, having them as targets means that they may be regenerated on the fly in some cases, and since they get written to the source tree, this isn't such a good idea if that tree is read-only (which is a possible situation in an out-of-tree build). So, we move all the actions to the 'generate' targets themselves, thus making sure they get regenerated in a controlled manner and regardless of dependencies. Reviewed-by: Viktor Dukhovni --- diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl index 8bcb22418d..3a3fd2ea11 100644 --- a/Configurations/unix-Makefile.tmpl +++ b/Configurations/unix-Makefile.tmpl @@ -617,13 +617,35 @@ generate: generate_apps generate_crypto_bn generate_crypto_objects 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 +{- # 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}}; + ""; -} +generate_apps: + ( cd $(SRCDIR); $(PERL) VMS/VMSify-conf.pl \ + < apps/openssl.cnf > apps/openssl-vms.cnf ) + ( b=`pwd`; cd $(SRCDIR); $(PERL) -I$$b apps/progs.pl \ + {- join(" ", @openssl_source) -} \ + > apps/progs.h ) + +generate_crypto_bn: + ( cd $(SRCDIR); $(PERL) crypto/bn/bn_prime.pl > crypto/bn/bn_prime.h ) + +generate_crypto_objects: + ( cd $(SRCDIR); $(PERL) crypto/objects/obj_dat.pl \ + include/openssl/obj_mac.h \ + crypto/objects/obj_dat.h ) + ( cd $(SRCDIR); $(PERL) crypto/objects/objects.pl \ + crypto/objects/objects.txt \ + crypto/objects/obj_mac.num \ + include/openssl/obj_mac.h ) + ( cd $(SRCDIR); $(PERL) crypto/objects/objxref.pl \ + crypto/objects/obj_mac.num \ + crypto/objects/obj_xref.txt \ + > crypto/objects/obj_xref.h ) errors: ( cd $(SRCDIR); $(PERL) util/ck_errf.pl -strict */*.c */*/*.c ) @@ -691,49 +713,6 @@ $(BLDDIR)/util/shlib_wrap.sh: configdata.pm ln -sf "../$(SRCDIR)/util/shlib_wrap.sh" "$(BLDDIR)/util"; \ 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 ###################################################