summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Coopersmith <alan.coopersmith@oracle.com>2019-02-25 14:22:27 -0800
committerAlan Coopersmith <alan.coopersmith@oracle.com>2019-02-25 14:46:45 -0800
commit5f941a815b7bad49a766987660094b01046c8e7d (patch)
tree908eaae769132a78648ece6dfa83882a1011d341
parentdd7402c2f1e828cc3b0fae036b62f74b8014814b (diff)
Use sed instead of the C pre-processor to generate config files
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=93359 while avoiding https://bugs.freedesktop.org/show_bug.cgi?id=107368 Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
-rw-r--r--config/Makefile.am66
-rw-r--r--config/Xreset.in (renamed from config/Xreset.cpp)0
-rw-r--r--config/Xresources.in (renamed from config/Xresources.cpp)2
-rw-r--r--config/Xservers.ws.in (renamed from config/Xservers.ws.cpp)0
-rw-r--r--config/Xsession.in (renamed from config/Xsession.cpp)10
-rw-r--r--config/Xstartup.in (renamed from config/Xstartup.cpp)0
-rw-r--r--config/xdm-config.in (renamed from config/xdm-config.cpp)6
-rw-r--r--cpprules.in26
8 files changed, 46 insertions, 64 deletions
diff --git a/config/Makefile.am b/config/Makefile.am
index e1484f1..c444667 100644
--- a/config/Makefile.am
+++ b/config/Makefile.am
@@ -1,7 +1,5 @@
#
-include $(top_srcdir)/cpprules.in
-
xdmscriptdir = $(XDMSCRIPTDIR)
xdmconfigdir = $(XDMCONFIGDIR)
@@ -32,43 +30,61 @@ BUILT_SOURCES = Xservers.ws xdm-config Xreset Xresources Xsession Xstartup
CLEANFILES = $(BUILT_SOURCES) Xservers
-EXTRA_DIST = Xservers.ws.cpp Xservers.fs \
- xdm-config.cpp Xreset.cpp Xresources.cpp Xsession.cpp Xstartup.cpp
+EXTRA_DIST = Xservers.ws.in Xservers.fs \
+ xdm-config.in Xreset.in Xresources.in Xsession.in Xstartup.in
Xservers: Xservers.$(SERVERSTYPE)
ln -s Xservers.$(SERVERSTYPE) Xservers
-# Defines used when cpp'ing config files to replace settings in the files
+# Defines used when sed'ing config files to replace settings in the files
-#if USE_XPM
-XPMDEFINES = -DXPM -DBITMAPDIR=$(XDM_PIXMAPDIR) -DXDM_PIXMAP=$(XDM_PIXMAP) \
- -DXDM_BWPIXMAP=$(XDM_BWPIXMAP)
-#endif
+if USE_XPM
+XPM_SED_FLAGS = -e '/ifdef XPM/d' -e '/endif \/\* XPM \*\//d'
+XPM_SED_FLAGS += -e 's|BITMAPDIR|$(XDM_PIXMAPDIR)|'
+XPM_SED_FLAGS += -e 's|XDM_PIXMAP|$(XDM_PIXMAP)|'
+XPM_SED_FLAGS += -e 's|XDM_BWPIXMAP|$(XDM_BWPIXMAP)|'
+else
+XPM_SED_FLAGS = -e '/ifdef XPM/,/endif \/\* XPM \*\//d'
+endif
#if HAVE_MKTEMP_COMMAND
-MKTEMP_DEFINES = -DMKTEMP_COMMAND=$(MKTEMP_COMMAND)
+MKTEMP_SED_FLAGS = -e 's|MKTEMP_COMMAND|$(MKTEMP_COMMAND)|'
#endif
if SET_UTMP_FILE
-UTMP_CPP_FLAGS = -DUTMP_FILE="$(UTMP_FILE)" -DUTMP_FLAG="-u $(UTMP_FILE)"
+UTMP_SED_FLAGS = -e 's|UTMP_FILE|$(UTMP_FILE)|'
+UTMP_SED_FLAGS += -e 's|UTMP_FLAG|-u $(UTMP_FILE)|'
else
-UTMP_CPP_FLAGS = -DUTMP_FILE="" -DUTMP_FLAG=""
+UTMP_SED_FLAGS = -e 's|UTMP_FILE||' -e 's|UTMP_FLAG||'
endif
if SET_WTMP_FILE
-WTMP_CPP_FLAGS = -DWTMP_FILE="$(WTMP_FILE)" -DWTMP_FLAG="-w $(WTMP_FILE)"
+WTMP_SED_FLAGS = -e 's|WTMP_FILE|$(WTMP_FILE)|'
+WTMP_SED_FLAGS += -e 's|WTMP_FLAG|-w $(WTMP_FILE)|'
else
-WTMP_CPP_FLAGS = -DWTMP_FILE="" -DWTMP_FLAG=""
+WTMP_SED_FLAGS = -e 's|WTMP_FILE||' -e 's|WTMP_FLAG||'
endif
-CPP_FILES_FLAGS = -DBINDIR="$(bindir)" -DDEFAULTVT="$(DEFAULTVT)" \
- $(UTMP_CPP_FLAGS) $(WTMP_CPP_FLAGS) \
- -DXDMDIR="$(XDMLIBDIR)" -DXDMLOGDIR="$(XDMLOGDIR)" \
- -DXDMXAUTHDIR="$(XDMXAUTHDIR)" \
- -DXDMPIDDIR="$(XDMPIDDIR)" -DXDMCONFIGDIR="$(XDMCONFIGDIR)" \
- -DXDMSCRIPTDIR="$(XDMSCRIPTDIR)" -DSU="$(SU)" \
- -DCHOOSERPATH="$(XDMLIBDIR)/chooser" $(XPMDEFINES) \
- -DSHELL_CMD="$(SHELL_CMD)" $(MKTEMP_DEFINES)
-
-Xservers.ws: $(srcdir)/Xservers.ws.cpp
- $(AM_V_GEN)$(RAWCPP) $(RAWCPPFLAGS) $(CPP_FILES_FLAGS) < $(srcdir)/Xservers.ws.cpp | $(CPP_SED_MAGIC) > $@
+SED_FILES_FLAGS = -e 's|BINDIR|$(bindir)|'
+SED_FILES_FLAGS += -e 's|DEFAULTVT|$(DEFAULTVT)|'
+SED_FILES_FLAGS += $(UTMP_SED_FLAGS) $(WTMP_SED_FLAGS)
+SED_FILES_FLAGS += -e 's|XDMDIR|$(XDMLIBDIR)|'
+SED_FILES_FLAGS += -e 's|XDMLOGDIR|$(XDMLOGDIR)|'
+SED_FILES_FLAGS += -e 's|XDMXAUTHDIR|$(XDMXAUTHDIR)|'
+SED_FILES_FLAGS += -e 's|XDMPIDDIR|$(XDMPIDDIR)|'
+SED_FILES_FLAGS += -e 's|XDMCONFIGDIR|$(XDMCONFIGDIR)|'
+SED_FILES_FLAGS += -e 's|XDMSCRIPTDIR|$(XDMSCRIPTDIR)|'
+SED_FILES_FLAGS += -e 's|SU|$(SU)|'
+SED_FILES_FLAGS += -e 's|CHOOSERPATH|$(XDMLIBDIR)/chooser|'
+SED_FILES_FLAGS += $(XPM_SED_FLAGS)
+SED_FILES_FLAGS += -e 's|SHELL_CMD|$(SHELL_CMD)|'
+SED_FILES_FLAGS += $(MKTEMP_SED_FLAGS)
+
+# Substitutions previously needed to work around the C pre-processor
+SED_CPP_FLAGS = -e 's|XCOMM|\#|' -e 's|XHASH|\#|' \
+ -e 's|NLBS|\\n\\|' -e 's|BS|\\|' -e 's|/\*\*/||g'
+
+SUFFIXES = .in
+
+.in:
+ $(AM_V_GEN)$(SED) $(SED_FILES_FLAGS) $(SED_CPP_FLAGS) $< > $@
diff --git a/config/Xreset.cpp b/config/Xreset.in
index 5327402..5327402 100644
--- a/config/Xreset.cpp
+++ b/config/Xreset.in
diff --git a/config/Xresources.cpp b/config/Xresources.in
index c880db7..5c43848 100644
--- a/config/Xresources.cpp
+++ b/config/Xresources.in
@@ -1,7 +1,5 @@
Xcursor.theme: whiteglass
-#define BS \ /* cpp can be trickier than m4 */
-#define NLBS \n\ /* don't remove these comments */
xlogin*login.translations: #override BS
Ctrl<Key>R: abort-display()NLBS
<Key>F1: set-session-argument(failsafe) finish-field()NLBS
diff --git a/config/Xservers.ws.cpp b/config/Xservers.ws.in
index b6089ef..b6089ef 100644
--- a/config/Xservers.ws.cpp
+++ b/config/Xservers.ws.in
diff --git a/config/Xsession.cpp b/config/Xsession.in
index aed2ab7..42a8b7d 100644
--- a/config/Xsession.cpp
+++ b/config/Xsession.in
@@ -8,8 +8,9 @@ if ( umask 077 && cp /dev/null "$errfile" 2> /dev/null )
then
exec > "$errfile" 2>&1
else
-#ifdef MKTEMP_COMMAND
- mktemp=MKTEMP_COMMAND
+ mktemp="MKTEMP_COMMAND"
+ if [ "x$mktemp" != "x" -a -x "$mktemp" ]
+ then
for errfile in "${TMPDIR-/tmp}/xses-$USER" "/tmp/xses-$USER"
do
if ef="$( umask 077 && $mktemp "$errfile.XXXXXX" 2> /dev/null)"
@@ -19,7 +20,7 @@ else
break
fi
done
-#else
+ else
XCOMM Since this system doesn't have a mktemp command to allow secure
XCOMM creation of files in shared directories, no fallback error log
XCOMM is being used. See https://bugs.freedesktop.org/show_bug.cgi?id=5898
@@ -34,8 +35,7 @@ XCOMM fi
XCOMM done
exec > /dev/null 2>&1
-
-#endif
+ fi
fi
case $# in
diff --git a/config/Xstartup.cpp b/config/Xstartup.in
index 9329460..9329460 100644
--- a/config/Xstartup.cpp
+++ b/config/Xstartup.in
diff --git a/config/xdm-config.cpp b/config/xdm-config.in
index a685129..d01cb08 100644
--- a/config/xdm-config.cpp
+++ b/config/xdm-config.in
@@ -3,12 +3,6 @@
!
!
!
-#ifndef XDMCONFIGDIR
-#define XDMCONFIGDIR XDMDIR
-#endif
-#ifndef XDMSCRIPTDIR
-#define XDMSCRIPTDIR XDMDIR
-#endif
DisplayManager.authDir: XDMXAUTHDIR
DisplayManager.errorLogFile: XDMLOGDIR/xdm.log
DisplayManager.pidFile: XDMPIDDIR/xdm.pid
diff --git a/cpprules.in b/cpprules.in
deleted file mode 100644
index c6daca3..0000000
--- a/cpprules.in
+++ /dev/null
@@ -1,26 +0,0 @@
-# -*- 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:
- $(AM_V_GEN)$(RAWCPP) $(RAWCPPFLAGS) $(CPP_FILES_FLAGS) < $< | $(CPP_SED_MAGIC) > $@