summaryrefslogtreecommitdiffstats
path: root/Configurations/unix-Makefile.tmpl
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2016-03-19 20:04:51 +0100
committerRichard Levitte <levitte@openssl.org>2016-03-19 22:19:12 +0100
commit9a9f8ee78894a5f1d4e1f0eca2b888fec8012f98 (patch)
tree4be2fbe285fb873411c6385f9245702b3302dda3 /Configurations/unix-Makefile.tmpl
parentad2c5ed74ed16018779681ea603c96cb7b2b02fa (diff)
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 <viktor@openssl.org>
Diffstat (limited to 'Configurations/unix-Makefile.tmpl')
-rw-r--r--Configurations/unix-Makefile.tmpl79
1 files changed, 29 insertions, 50 deletions
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 ###################################################