Blame cpprules.in

Packit 5bd3a9
#							-*- Makefile -*-
Packit 5bd3a9
# Rules for generating files using the C pre-processor
Packit 5bd3a9
# (Replaces CppFileTarget from Imake)
Packit 5bd3a9
Packit 5bd3a9
SED = LC_CTYPE=C sed
Packit 5bd3a9
Packit 5bd3a9
SUFFIXES += .pre
Packit 5bd3a9
Packit 5bd3a9
WCHAR32_FLAGS = -DWCHAR32=@WCHAR32@
Packit 5bd3a9
Packit 5bd3a9
CPP_FILES_FLAGS = $(WCHAR32_FLAGS)
Packit 5bd3a9
Packit 5bd3a9
# Translate XCOMM into pound sign with sed, rather than passing -DXCOMM=XCOMM
Packit 5bd3a9
# to cpp, because that trick does not work on all ANSI C preprocessors.
Packit 5bd3a9
# Delete line numbers from the cpp output (-P is not portable, I guess).
Packit 5bd3a9
# Allow XCOMM to be preceded by whitespace and provide a means of generating
Packit 5bd3a9
# output lines with trailing backslashes.
Packit 5bd3a9
# Allow XHASH to always be substituted, even in cases where XCOMM isn't.
Packit 5bd3a9
Packit 5bd3a9
CPP_SED_MAGIC = $(SED) -e '/^\#  *[0-9][0-9]*  *.*$$/d' \
Packit 5bd3a9
                       -e '/^\#line  *[0-9][0-9]*  *.*$$/d' \
Packit 5bd3a9
                       -e '/^[	 ]*XCOMM$$/s/XCOMM/\#/' \
Packit 5bd3a9
                       -e '/^[	 ]*XCOMM[^a-zA-Z0-9_]/s/XCOMM/\#/' \
Packit 5bd3a9
                       -e '/^[	 ]*XHASH/s/XHASH/\#/' \
Packit 5bd3a9
                       -e 's,X11_LOCALEDATADIR,$(X11_LOCALEDATADIR),g' \
Packit 5bd3a9
                       -e '/\@\@$$/s/\@\@$$/\\/'
Packit 5bd3a9
Packit 5bd3a9
.pre:
Packit 5bd3a9
	@$(MKDIR_P) $(@D)
Packit 5bd3a9
	$(AM_V_GEN)$(RAWCPP) $(RAWCPPFLAGS) $(CPP_FILES_FLAGS) < $< | $(CPP_SED_MAGIC) > $@