mirror of
https://gitlab.freedesktop.org/xorg/lib/libx11.git
synced 2025-12-24 20:40:13 +01:00
CPP is used to generate files, but as cpp reads files from the build host the output has a number of blank lines at the beginning which varies depending on what GCC and friends is used. Pathalogical example: $ cpp -undef -traditional /dev/null # 1 "/dev/null" # 1 "<built-in>" # 1 "<command-line>" # 31 "<command-line>" # 1 "/usr/include/stdc-predef.h" 1 3 4 # 17 "/usr/include/stdc-predef.h" 3 4 [ 40 blank line ] # 32 "<command-line>" 2 # 1 "/dev/null" So depending on the content of stdc-predef.h and what other headers CPP will load, the amount of whitespace in the generates files varies. This can result in differences in reproducible environments, and file conflicts in multilib environments. As whitespace is irrelevant to these machine-readable files, extend the sed to just delete blank lines.
31 lines
1.2 KiB
Makefile
31 lines
1.2 KiB
Makefile
# -*- Makefile -*-
|
|
# Rules for generating files using the C pre-processor
|
|
# (Replaces CppFileTarget from Imake)
|
|
|
|
SED = LC_CTYPE=C sed
|
|
|
|
SUFFIXES += .pre
|
|
|
|
WCHAR32_FLAGS = -DWCHAR32=@WCHAR32@
|
|
|
|
CPP_FILES_FLAGS = $(WCHAR32_FLAGS)
|
|
|
|
# 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,X11_LOCALEDATADIR,$(X11_LOCALEDATADIR),g' \
|
|
-e '/\@\@$$/s/\@\@$$/\\/' \
|
|
-e '/^$$/d'
|
|
|
|
.pre:
|
|
@$(MKDIR_P) $(@D)
|
|
$(AM_V_GEN)$(RAWCPP) $(RAWCPPFLAGS) $(CPP_FILES_FLAGS) < $< | $(CPP_SED_MAGIC) > $@
|