aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Geiselbrecht <geist@foobox.com>2013-07-31 11:47:03 -0700
committerTravis Geiselbrecht <geist@foobox.com>2013-07-31 12:12:07 -0700
commit7e8b333b97918fe31097ffae919ae9c2be032f41 (patch)
treec8b1b2f2111e91143cbb2476189142c8171e4436
parent7ee9e78c07332c56bffebf66226f0a3fe2430391 (diff)
downloadlk-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.mk2
-rw-r--r--make/macros.mk32
-rw-r--r--make/module.mk2
3 files changed, 22 insertions, 14 deletions
diff --git a/engine.mk b/engine.mk
index 3079c45d..e2da15eb 100644
--- a/engine.mk
+++ b/engine.mk
@@ -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)