summaryrefslogtreecommitdiffstats
path: root/tools/functions.make
diff options
context:
space:
mode:
Diffstat (limited to 'tools/functions.make')
-rw-r--r--tools/functions.make10
1 files changed, 8 insertions, 2 deletions
diff --git a/tools/functions.make b/tools/functions.make
index d9acbba2ba..c2237c9547 100644
--- a/tools/functions.make
+++ b/tools/functions.make
@@ -14,12 +14,18 @@
#
# The sed line is to prepend the directory to all source files
+# This is needed because GNU Make older than 4.3 treats this as the start
+# of a comment even within a $(shell) call and requires a backslash escape.
+# Newer Makes pass the whole "\#" through, making the backslash visible in
+# the shell. To safely pass a literal "#", it has to go in a variable.
+_hash_ = \#
+
preprocess = $(shell $(CC) $(PPCFLAGS) $(2) -E -P -x c -include config.h $(1) | \
- grep -v '^#' | grep -v "^ *$$" | \
+ grep -v "^$(_hash_)" | grep -v "^ *$$" | \
sed -e 's:^..*:$(dir $(1))&:')
preprocess2file = $(shell $(CC) $(PPCFLAGS) $(3) -E -P -x c -include config.h $(1) | \
- grep -v '^#' | grep -v "^$$" > $(2))
+ grep -v '^$(_hash_)' | grep -v "^$$" > $(2))
asmdefs2file = $(SILENT)$(CC) $(PPCFLAGS) $(3) -S -x c -o - -include config.h $(1) | \
perl -ne 'if(/^_?AD_(\w+):$$/){$$var=$$1}else{/^\W\.(?:word|long)\W(.*)$$/ && $$var && print "\#define $$var $$1\n";$$var=0}' > $(2)