diff options
author | Travis Geiselbrecht <geist@foobox.com> | 2013-07-31 11:47:03 -0700 |
---|---|---|
committer | Travis Geiselbrecht <geist@foobox.com> | 2013-07-31 12:12:07 -0700 |
commit | 7e8b333b97918fe31097ffae919ae9c2be032f41 (patch) | |
tree | c8b1b2f2111e91143cbb2476189142c8171e4436 | |
parent | 7ee9e78c07332c56bffebf66226f0a3fe2430391 (diff) | |
download | lk-7e8b333b97918fe31097ffae919ae9c2be032f41.tar.gz |
[make] add new TESTANDREPLACEFILE macro
Split the MAKECONFIGHEADER macro into the part that generates
the header and the part that tests if you should replace the
target file with the generated one.
-rw-r--r-- | engine.mk | 2 | ||||
-rw-r--r-- | make/macros.mk | 32 | ||||
-rw-r--r-- | make/module.mk | 2 |
3 files changed, 22 insertions, 14 deletions
@@ -213,7 +213,7 @@ install: all configheader: $(CONFIGHEADER): configheader - $(call MAKECONFIGHEADER,$@,GLOBAL_DEFINES) + @$(call MAKECONFIGHEADER,$@,GLOBAL_DEFINES) # Empty rule for the .d files. The above rules will build .d files as a side # effect. Only works on gcc 3.x and above, however. diff --git a/make/macros.mk b/make/macros.mk index a6bcc035..5eebdca9 100644 --- a/make/macros.mk +++ b/make/macros.mk @@ -11,11 +11,27 @@ COMMA := , SPACE := SPACE += +# test if two files are different, replacing the first +# with the second if so +# args: $1 - temporary file to test +# $2 - file to replace +define TESTANDREPLACEFILE + if [ -f "$2" ]; then \ + if cmp "$1" "$2"; then \ + rm -f $1; \ + else \ + mv $1 $2; \ + fi \ + else \ + mv $1 $2; \ + fi +endef + # generate a header file at $1 with an expanded variable in $2 define MAKECONFIGHEADER - @$(MKDIR) - @echo generating $1 - @rm -f $1.tmp; \ + $(MKDIR); \ + echo generating $1; \ + rm -f $1.tmp; \ LDEF=`echo $1 | tr '/\\.-' '_'`; \ echo \#ifndef __$${LDEF}_H > $1.tmp; \ echo \#define __$${LDEF}_H >> $1.tmp; \ @@ -23,13 +39,5 @@ define MAKECONFIGHEADER echo "#define $$d" | sed "s/=/\ /g;s/-/_/g;s/\//_/g;s/\./_/g;s/\//_/g" >> $1.tmp; \ done; \ echo \#endif >> $1.tmp; \ - if [ -f "$1" ]; then \ - if cmp "$1.tmp" "$1"; then \ - rm -f $1.tmp; \ - else \ - mv $1.tmp $1; \ - fi \ - else \ - mv $1.tmp $1; \ - fi + $(call TESTANDREPLACEFILE,$1.tmp,$1) endef diff --git a/make/module.mk b/make/module.mk index 996b5935..99ccd882 100644 --- a/make/module.mk +++ b/make/module.mk @@ -61,7 +61,7 @@ MODULE_CONFIG := $(MODULE_BUILDDIR)/module_config.h $(MODULE_CONFIG): MODULE_DEFINES:=$(MODULE_DEFINES) $(MODULE_CONFIG): configheader - $(call MAKECONFIGHEADER,$@,MODULE_DEFINES) + @$(call MAKECONFIGHEADER,$@,MODULE_DEFINES) GENERATED += $(MODULE_CONFIG) |