diff mbox

nfs-utils: Run rpcgen using the cpp found by configure.

Message ID 1428991229-19835-1-git-send-email-calvin.walton@kepstin.ca (mailing list archive)
State New, archived
Headers show

Commit Message

Calvin Walton April 14, 2015, 6 a.m. UTC
rpcgen normally runs with a hardcoded cpp path of e.g. /lib/cpp,
but not all Linux distributions install a cpp there.

Grab a trick from glibc, and run rpcgen with a cpp-path pointing at
a script; the script then runs the cpp specified in the CPP
environment variable - which was set by the configure script to
something reasonable.
---
 support/export/Makefile.am   | 13 +++++++------
 support/nsm/Makefile.am      | 17 +++++++++--------
 tests/nsm_client/Makefile.am | 17 +++++++++--------
 tools/rpcgen/cpp             |  6 ++++++
 utils/statd/Makefile.am      | 17 +++++++++--------
 5 files changed, 40 insertions(+), 30 deletions(-)
 create mode 100755 tools/rpcgen/cpp

Comments

Calvin Walton April 14, 2015, 6:12 a.m. UTC | #1
I forgot to include it in my original email, but this patch is

Signed-off-by: Calvin Walton <calvin.walton@kepstin.ca>

If you'd prefer I resend with that included, let me know.

On Tue, 2015-04-14 at 02:00 -0400, Calvin Walton wrote:
> rpcgen normally runs with a hardcoded cpp path of e.g. /lib/cpp,
> but not all Linux distributions install a cpp there.
> 
> Grab a trick from glibc, and run rpcgen with a cpp-path pointing at
> a script; the script then runs the cpp specified in the CPP
> environment variable - which was set by the configure script to
> something reasonable.
> ---
>  support/export/Makefile.am   | 13 +++++++------
>  support/nsm/Makefile.am      | 17 +++++++++--------
>  tests/nsm_client/Makefile.am | 17 +++++++++--------
>  tools/rpcgen/cpp             |  6 ++++++
>  utils/statd/Makefile.am      | 17 +++++++++--------
>  5 files changed, 40 insertions(+), 30 deletions(-)
>  create mode 100755 tools/rpcgen/cpp
Calvin Walton April 21, 2015, 5:19 p.m. UTC | #2
On Tue, 2015-04-14 at 02:00 -0400, Calvin Walton wrote:
> rpcgen normally runs with a hardcoded cpp path of e.g. /lib/cpp,
> but not all Linux distributions install a cpp there.
> 
> Grab a trick from glibc, and run rpcgen with a cpp-path pointing at
> a script; the script then runs the cpp specified in the CPP
> environment variable - which was set by the configure script to
> something reasonable.

I've discovered that I've made a mistake here; this patch doesn't work 
unless you happen to have $CPP set in your environment.

I'm going to roll a revised version that fixes the issue, probably by 
copying exactly what glibc does: setting CPP='$(CC) -E -x c-header' 
when running rpcgen.
diff mbox

Patch

diff --git a/support/export/Makefile.am b/support/export/Makefile.am
index 1ea1539..d33516d 100644
--- a/support/export/Makefile.am
+++ b/support/export/Makefile.am
@@ -22,22 +22,23 @@  dist-hook:
 	done
 
 if CONFIG_RPCGEN
-RPCGEN		= $(top_builddir)/tools/rpcgen/rpcgen
-$(RPCGEN):
+RPCGEN_DEP = $(top_builddir)/tools/rpcgen/rpcgen
+$(RPCGEN_DEP):
 	make -C $(top_srcdir)/tools/rpcgen all
+RPCGEN = $(RPCGEN_DEP) -Y $(top_srcdir)/tools/rpcgen
 else
-RPCGEN = @RPCGEN_PATH@
+RPCGEN = @RPCGEN_PATH@ -Y $(top_srcdir)/tools/rpcgen
 endif
 
-$(GENFILES_CLNT): %_clnt.c: %.x $(RPCGEN)
+$(GENFILES_CLNT): %_clnt.c: %.x $(RPCGEN_DEP)
 	test -f $@ && rm -rf $@ || true
 	$(RPCGEN) -l -o $@ $<
 
-$(GENFILES_XDR): %_xdr.c: %.x $(RPCGEN)
+$(GENFILES_XDR): %_xdr.c: %.x $(RPCGEN_DEP)
 	test -f $@ && rm -rf $@ || true
 	$(RPCGEN) -c -o $@ $<
 
-$(GENFILES_H): %.h: %.x $(RPCGEN)
+$(GENFILES_H): %.h: %.x $(RPCGEN_DEP)
 	test -f $@ && rm -rf $@ || true
 	$(RPCGEN) -h -o $@ $<
 	rm -f $(top_builddir)/support/include/mount.h
diff --git a/support/nsm/Makefile.am b/support/nsm/Makefile.am
index 2038e68..bbbc199 100644
--- a/support/nsm/Makefile.am
+++ b/support/nsm/Makefile.am
@@ -15,26 +15,27 @@  libnsm_a_SOURCES = $(GENFILES) file.c rpc.c
 BUILT_SOURCES = $(GENFILES)
 
 if CONFIG_RPCGEN
-RPCGEN	= $(top_builddir)/tools/rpcgen/rpcgen
-$(RPCGEN):
-	make -C ../../tools/rpcgen all
+RPCGEN_DEP = $(top_builddir)/tools/rpcgen/rpcgen
+$(RPCGEN_DEP):
+	make -C $(top_srcdir)/tools/rpcgen all
+RPCGEN = $(RPCGEN_DEP) -Y $(top_srcdir)/tools/rpcgen
 else
-RPCGEN = @RPCGEN_PATH@
+RPCGEN = @RPCGEN_PATH@ -Y $(top_srcdir)/tools/rpcgen
 endif
 
-$(GENFILES_CLNT): %_clnt.c: %.x $(RPCGEN)
+$(GENFILES_CLNT): %_clnt.c: %.x $(RPCGEN_DEP)
 	test -f $@ && rm -rf $@ || true
 	$(RPCGEN) -l -o $@ $<
 
-$(GENFILES_SVC): %_svc.c: %.x $(RPCGEN)
+$(GENFILES_SVC): %_svc.c: %.x $(RPCGEN_DEP)
 	test -f $@ && rm -rf $@ || true
 	$(RPCGEN) -m -o $@ $<
 
-$(GENFILES_XDR): %_xdr.c: %.x $(RPCGEN)
+$(GENFILES_XDR): %_xdr.c: %.x $(RPCGEN_DEP)
 	test -f $@ && rm -rf $@ || true
 	$(RPCGEN) -c -o $@ $<
 
-$(GENFILES_H): %.h: %.x $(RPCGEN)
+$(GENFILES_H): %.h: %.x $(RPCGEN_DEP)
 	test -f $@ && rm -rf $@ || true
 	$(RPCGEN) -h -o $@ $<
 	rm -f $(top_builddir)/support/include/sm_inter.h
diff --git a/tests/nsm_client/Makefile.am b/tests/nsm_client/Makefile.am
index a8fc131..aeaa05f 100644
--- a/tests/nsm_client/Makefile.am
+++ b/tests/nsm_client/Makefile.am
@@ -17,26 +17,27 @@  nsm_client_LDADD = ../../support/nfs/libnfs.a \
 		   ../../support/nsm/libnsm.a $(LIBCAP) $(LIBTIRPC)
 
 if CONFIG_RPCGEN
-RPCGEN	= $(top_builddir)/tools/rpcgen/rpcgen
-$(RPCGEN):
-	make -C ../../tools/rpcgen all
+RPCGEN_DEP = $(top_builddir)/tools/rpcgen/rpcgen
+$(RPCGEN_DEP):
+	make -C $(top_srcdir)/tools/rpcgen all
+RPCGEN = $(RPCGEN_DEP) -Y $(top_srcdir)/tools/rpcgen
 else
-RPCGEN = @RPCGEN_PATH@
+RPCGEN = @RPCGEN_PATH@ -Y $(top_srcdir)/tools/rpcgen
 endif
 
-$(GENFILES_CLNT): %_clnt.c: %.x $(RPCGEN)
+$(GENFILES_CLNT): %_clnt.c: %.x $(RPCGEN_DEP)
 	test -f $@ && rm -rf $@ || true
 	$(RPCGEN) -l -o $@ $<
 
-$(GENFILES_SVC): %_svc.c: %.x $(RPCGEN)
+$(GENFILES_SVC): %_svc.c: %.x $(RPCGEN_DEP)
 	test -f $@ && rm -rf $@ || true
 	$(RPCGEN) -m -o $@ $<
 
-$(GENFILES_XDR): %_xdr.c: %.x $(RPCGEN)
+$(GENFILES_XDR): %_xdr.c: %.x $(RPCGEN_DEP)
 	test -f $@ && rm -rf $@ || true
 	$(RPCGEN) -c -o $@ $<
 
-$(GENFILES_H): %.h: %.x $(RPCGEN)
+$(GENFILES_H): %.h: %.x $(RPCGEN_DEP)
 	test -f $@ && rm -rf $@ || true
 	$(RPCGEN) -h -o $@ $<
 
diff --git a/tools/rpcgen/cpp b/tools/rpcgen/cpp
new file mode 100755
index 0000000..73a5522
--- /dev/null
+++ b/tools/rpcgen/cpp
@@ -0,0 +1,6 @@ 
+#!/bin/sh
+
+# This script is use solely by rpcgen when run during the build.
+# It allows using CPP from the environment rather than a hardcoded path.
+
+exec ${CPP} "$@"
diff --git a/utils/statd/Makefile.am b/utils/statd/Makefile.am
index 152b680..9c016ed 100644
--- a/utils/statd/Makefile.am
+++ b/utils/statd/Makefile.am
@@ -23,26 +23,27 @@  sm_notify_LDADD = ../../support/nsm/libnsm.a \
 EXTRA_DIST = sim_sm_inter.x $(man8_MANS) simulate.c
 
 if CONFIG_RPCGEN
-RPCGEN	= $(top_builddir)/tools/rpcgen/rpcgen
-$(RPCGEN):
-	make -C ../../tools/rpcgen all
+RPCGEN_DEP = $(top_builddir)/tools/rpcgen/rpcgen
+$(RPCGEN_DEP):
+	make -C $(top_srcdir)/tools/rpcgen all
+RPCGEN = $(RPCGEN_DEP) -Y $(top_srcdir)/tools/rpcgen
 else
-RPCGEN = @RPCGEN_PATH@
+RPCGEN = @RPCGEN_PATH@ -Y $(top_srcdir)/tools/rpcgen
 endif
 
-$(GENFILES_CLNT): %_clnt.c: %.x $(RPCGEN)
+$(GENFILES_CLNT): %_clnt.c: %.x $(RPCGEN_DEP)
 	test -f $@ && rm -rf $@ || true
 	$(RPCGEN) -l -o $@ $<
 
-$(GENFILES_SVC): %_svc.c: %.x $(RPCGEN)
+$(GENFILES_SVC): %_svc.c: %.x $(RPCGEN_DEP)
 	test -f $@ && rm -rf $@ || true
 	$(RPCGEN) -m -o $@ $<
 
-$(GENFILES_XDR): %_xdr.c: %.x $(RPCGEN)
+$(GENFILES_XDR): %_xdr.c: %.x $(RPCGEN_DEP)
 	test -f $@ && rm -rf $@ || true
 	$(RPCGEN) -c -o $@ $<
 
-$(GENFILES_H): %.h: %.x $(RPCGEN)
+$(GENFILES_H): %.h: %.x $(RPCGEN_DEP)
 	test -f $@ && rm -rf $@ || true
 	$(RPCGEN) -h -o $@ $<