From: wolf Date: Wed, 24 Feb 1999 13:38:34 +0000 (+0000) Subject: Add the Makefile which generates the forward declarations file. X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=23749ba8ef573daa05f43b21517eb0846ee1a997;p=dealii-svn.git Add the Makefile which generates the forward declarations file. git-svn-id: https://svn.dealii.org/trunk@897 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/deal.II/Make.forward-declarations b/deal.II/deal.II/Make.forward-declarations new file mode 100644 index 0000000000..225b335888 --- /dev/null +++ b/deal.II/deal.II/Make.forward-declarations @@ -0,0 +1,42 @@ +# rule how to make the file containing all the forward declarations +# taken from the deal.II Makefile +# +# this rule is rather complicated, it works as follows: +# +# - if this is the outermost 'make', then create a file $@.old. +# if the forward declaration file $@ already exists, then copy +# it over, otherwise leave it empty. this way, we always have +# a file to run diff on +# - write the forward declarations for the presently available +# header files to $@.new +# - we would like to compare the output of the script generating +# the forward declarations with the old file, or the empty +# string if there is no such file; this is why we created $@.old +# - if the files differ, we would like to copy over the old file. +# - this can either be done using shell programming using 'if [...]' +# or using conditionals inside 'make'. the first way is not +# portable over different shells, however, and I also do not know +# how to write it. the second way has a problem also: conditionals +# are evaluated at the time the Makefile is read first, so we +# can't compare against $@.old, since this file does not exist at +# that time. +# - we therefore invoke a second 'make', which can compare the two +# files against each other in a preconditional clause and +# copy over the file if necessary. +# - delete the two temporary files +$(forward-declarations): $(filter-out $(forward-declarations),$(h-files)) +ifeq (0,${MAKELEVEL}) + @echo ============================ Checking $@ + @touch $@.old + -@cp $@ $@.old + @perl $D/deal.II/Make_forward_declarations $(filter-out $(forward-declarations),$(h-files)) > $@.new + @make --silent $@ + @rm $@.old $@.new +else + ifneq (,$(shell diff $(forward-declarations).old $(forward-declarations).new)) + @echo ============================ Generating $@ + @cp $@.new $@ + else + @echo "============================ $@ needs no change" + endif +endif