summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Coopersmith <Alan.Coopersmith@sun.com>2005-10-16 22:18:22 +0000
committerAlan Coopersmith <Alan.Coopersmith@sun.com>2005-10-16 22:18:22 +0000
commit0c48fdb05b2538c94c809e25c8690a7094900e07 (patch)
tree864988082c895b3bbccccd8ac63ea7d1218a37c1
parent9c8787d2ce69e55b9ba362a92f01592d8ee0a3a3 (diff)
Use cpp to substitute variables in man pages
-rw-r--r--ChangeLog6
-rw-r--r--Makefile.am49
-rw-r--r--configure.ac5
3 files changed, 51 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index 6341101..e9e6672 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-10-16 Alan Coopersmith <alan.coopersmith@sun.com>
+
+ * configure.ac:
+ * Makefile.am:
+ Use cpp to substitute variables in man pages
+
2005-10-10 Alan Coopersmith <alan.coopersmith@sun.com>
* configure.ac:
diff --git a/Makefile.am b/Makefile.am
index 46e1a5f..b16dd56 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -30,21 +30,58 @@ xinit_LDADD = $(XINIT_LIBS)
xinit_SOURCES = \
xinit.c
-dist_man1_MANS = \
- startx.man \
+appmandir = $(mandir)/man$(APP_MAN_SUFFIX)
+
+appman_SOURCES = \
+ startx.man \
xinit.man
+appman_DATA = $(appman_SOURCES:man=$(APP_MAN_SUFFIX))
+
+# 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/\@\@$$/\\/'
+
+# Strings to replace in man pages
+XORGRELSTRING = @PACKAGE_STRING@
+ XORGMANNAME = X Version 11
+
+MANDEFS = \
+ -D__xorgversion__="\"$(XORGRELSTRING)\" \"$(XORGMANNAME)\"" \
+ -D__appmansuffix__=$(APP_MAN_SUFFIX) \
+ -D__filemansuffix__=$(FILE_MAN_SUFFIX) \
+ -D__libmansuffix__=$(LIB_MAN_SUFFIX) \
+ -D__miscmansuffix__=$(MISC_MAN_SUFFIX) \
+ -D__XSERVERNAME__=Xorg -D__XCONFIGFILE__=xorg.conf \
+ -D__xinitdir__=$(XINITDIR)
+
+SUFFIXES = .$(APP_MAN_SUFFIX) .man
+
+.man.$(APP_MAN_SUFFIX):
+ $(RAWCPP) $(RAWCPPFLAGS) $(MANDEFS) $(EXTRAMANDEFS) < $< | $(CPP_SED_MAGIC) > $@
+
xinitrcdir = $(XINITDIR)
xinitrc: xinitrc.cpp
- $(SED) s/XINITDIR/`echo $(XINITDIR) | sed -e s/\\\\//\\\\\\\\\\\\\//g`/ < $(srcdir)/xinitrc.cpp | $(SED) s/XCOMM/\#/ > $@
+ $(RAWCPP) -DXINITDIR=$(XINITDIR) < $(srcdir)/xinitrc.cpp | $(CPP_SED_MAGIC) > $@
startx: startx.cpp Makefile
- $(RAWCPP) -DXINITDIR=$(XINITDIR) -DBINDIR=$(bindir) $(STARTX_COOKIE_FLAGS) $(srcdir)/startx.cpp | $(SED) -e /^\#/d | $(SED) -e s/XCOMM/\#/ | $(SED) -e 's/@@/\\/' > $@
+ $(RAWCPP) -DXINITDIR=$(XINITDIR) -DBINDIR=$(bindir) $(STARTX_COOKIE_FLAGS) $(srcdir)/startx.cpp | $(CPP_SED_MAGIC) > $@
xinitrc_DATA = xinitrc
-CLEANFILES = xinitrc startx
+CLEANFILES = xinitrc startx $(appman_DATA)
-EXTRA_DIST = xinitrc.cpp startx.cpp \
+EXTRA_DIST = xinitrc.cpp startx.cpp $(appman_SOURCES) \
startx.cmd xinitrc.cmd xinit.def
+
diff --git a/configure.ac b/configure.ac
index 5b17f71..54e3996 100644
--- a/configure.ac
+++ b/configure.ac
@@ -29,9 +29,7 @@ AM_MAINTAINER_MODE
AM_CONFIG_HEADER(config.h)
AC_PROG_CC
-AC_PROG_CPP
-AC_PATH_PROGS(RAWCPP, [cpp], [$(CPP)],
- [$PATH:/bin:/usr/bin:/usr/lib:/usr/libexec:/usr/ccs/lib:/usr/ccs/lbin:/lib])
+XORG_PROG_RAWCPP
AC_PROG_INSTALL
AC_PATH_PROG(SED,sed)
AC_CANONICAL_HOST
@@ -58,6 +56,7 @@ if test x$MCOOKIE != x ; then
fi
AC_SUBST(STARTX_COOKIE_FLAGS)
+XORG_MANPAGE_SECTIONS
XORG_RELEASE_VERSION
AC_OUTPUT([Makefile])