summaryrefslogtreecommitdiff
path: root/gccmakedep/cpprules.in
diff options
context:
space:
mode:
Diffstat (limited to 'gccmakedep/cpprules.in')
-rw-r--r--gccmakedep/cpprules.in26
1 files changed, 26 insertions, 0 deletions
diff --git a/gccmakedep/cpprules.in b/gccmakedep/cpprules.in
new file mode 100644
index 0000000..09b7567
--- /dev/null
+++ b/gccmakedep/cpprules.in
@@ -0,0 +1,26 @@
+# -*- Makefile -*-
+# Rules for generating files using the C pre-processor
+# (Replaces CppFileTarget from Imake)
+
+SED = sed
+
+SUFFIXES = .cpp
+
+WCHAR32_FLAGS = -DWCHAR32=@WCHAR32@
+
+# Translate XCOMM into pound sign with sed, rather than passing -DXCOMM=XCOMM
+# to cpp, because that trick does not work on all ANSI C preprocessors.
+# Delete line numbers from the cpp output (-P is not portable, I guess).
+# Allow XCOMM to be preceded by whitespace and provide a means of generating
+# output lines with trailing backslashes.
+# Allow XHASH to always be substituted, even in cases where XCOMM isn't.
+
+CPP_SED_MAGIC = $(SED) -e '/^\# *[0-9][0-9]* *.*$$/d' \
+ -e '/^\#line *[0-9][0-9]* *.*$$/d' \
+ -e '/^[ ]*XCOMM$$/s/XCOMM/\#/' \
+ -e '/^[ ]*XCOMM[^a-zA-Z0-9_]/s/XCOMM/\#/' \
+ -e '/^[ ]*XHASH/s/XHASH/\#/' \
+ -e '/\@\@$$/s/\@\@$$/\\/'
+
+.cpp:
+ $(RAWCPP) $(RAWCPPFLAGS) $(CPP_FILES_FLAGS) < $< | $(CPP_SED_MAGIC) > $@