diff options
| -rw-r--r-- | Makefile.am | 2 | ||||
| -rw-r--r-- | configure.ac | 1 | ||||
| -rw-r--r-- | rpc/xdr/gen/Makefile.am | 48 | ||||
| -rw-r--r-- | rpc/xdr/src/Makefile.am | 57 | 
4 files changed, 60 insertions, 48 deletions
diff --git a/Makefile.am b/Makefile.am index bc4627e9f54..68aed4fefb3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -9,7 +9,7 @@ EXTRA_DIST = autogen.sh \          contrib/uuid \  	$(shell find $(top_srcdir)/tests -type f -print) -SUBDIRS = $(ARGP_STANDALONE_DIR) rpc/xdr/src libglusterfs rpc api xlators \ +SUBDIRS = $(ARGP_STANDALONE_DIR) rpc/xdr/gen libglusterfs rpc api xlators \  	glusterfsd $(FUSERMOUNT_SUBDIR) doc extras cli heal \  	@SYNCDAEMON_SUBDIR@ @UMOUNTD_SUBDIR@ tools events diff --git a/configure.ac b/configure.ac index 46fb1d7ef53..c9742e2560e 100644 --- a/configure.ac +++ b/configure.ac @@ -58,6 +58,7 @@ AC_CONFIG_FILES([Makefile                  rpc/rpc-transport/rdma/src/Makefile                  rpc/xdr/Makefile                  rpc/xdr/src/Makefile +                rpc/xdr/gen/Makefile                  xlators/Makefile                  xlators/meta/Makefile                  xlators/meta/src/Makefile diff --git a/rpc/xdr/gen/Makefile.am b/rpc/xdr/gen/Makefile.am new file mode 100644 index 00000000000..fc6973c1821 --- /dev/null +++ b/rpc/xdr/gen/Makefile.am @@ -0,0 +1,48 @@ +XDRGENFILES = glusterfs3-xdr.x cli1-xdr.x nlm4-xdr.x nsm-xdr.x \ +	rpc-common-xdr.x glusterd1-xdr.x acl3-xdr.x portmap-xdr.x \ +	mount3udp.x changelog-xdr.x glusterfs-fops.x +XDRHEADERS = $(XDRGENFILES:.x=.h) +XDRSOURCES = $(XDRGENFILES:.x=.c) + +CLEANFILES = $(XDRSOURCES) $(XDRHEADERS) + +# trick automake into doing BUILT_SOURCES magic +BUILT_SOURCES = $(XDRHEADERS) $(XDRSOURCES) + +xdrsrc=$(top_srcdir)/rpc/xdr/src + +# make's dependency resolution may mean that it decides to run +# rpcgen again (unnecessarily), but as the .c file already exists, +# rpcgen will exit with an error, resulting in a build error. We +# could use a '-' (i.e. -@rpcgen ...) and suffer with noisy warnings +# in the build. Or we do this crufty thing instead. +$(XDRSOURCES): $(XDRGENFILES) +	if [ ! -e $@ -o $(@:.c=.x) -nt $@ ]; then \ +		rpcgen -c -o $(@:.c=.tmp) $(@:.c=.x) && mv $(@:.c=.tmp) $@ ; \ +		cp $@ $(xdrsrc)/ ;\ +	fi + +# d*mn sed in netbsd6 doesn't do -i (inline) +# (why are we still running smoke on netbsd6 and not netbsd7?) +$(XDRHEADERS): $(XDRGENFILES) +	if [ ! -e $@ -o $(@:.h=.x) -nt $@ ]; then \ +		rpcgen -h -o $(@:.h=.tmp) $(@:.h=.x) ; \ +		sed -e '/#ifndef/ s/-/_/g' -e '/#define/ s/-/_/g' -e '/#endif/ s/-/_/' \ +			$(@:.h=.tmp) > $@ && rm -f $(@:.h=.tmp) ; \ +		cp $@ $(xdrsrc)/ ; \ +	fi + + +# link .x files when doing out-of-tree builds +# have to use .PHONY here to force it; all versions of make +# will think the file already exists "here" by virtue of the +# VPATH. And we have to have the .x file in $cwd in order to +# have rpcgen generate "nice" #include directives +# i.e. (nice): +# #include "acl3-xdr.h" +# versus (not nice): +# #include "../../../../foo/src/rpc/xdr/src/acl3-xdr.h" +.PHONY : $(XDRGENFILES) +$(XDRGENFILES): +	@if [ ! -e $@ ]; then ln -s $(xdrsrc)/$@ . ; fi; + diff --git a/rpc/xdr/src/Makefile.am b/rpc/xdr/src/Makefile.am index 10487e27664..2f3a6cc1005 100644 --- a/rpc/xdr/src/Makefile.am +++ b/rpc/xdr/src/Makefile.am @@ -1,8 +1,10 @@ -XDRSOURCES = glusterfs3-xdr.c cli1-xdr.c nlm4-xdr.c nsm-xdr.c \ -	rpc-common-xdr.c glusterd1-xdr.c acl3-xdr.c portmap-xdr.c \ -	mount3udp.c changelog-xdr.c glusterfs-fops.c -XDRHEADERS = $(XDRSOURCES:.c=.h) -XDRGENFILES = $(XDRSOURCES:.c=.x) +XDRGENFILES = glusterfs3-xdr.x cli1-xdr.x nlm4-xdr.x nsm-xdr.x \ +	rpc-common-xdr.x glusterd1-xdr.x acl3-xdr.x portmap-xdr.x \ +	mount3udp.x changelog-xdr.x glusterfs-fops.x +XDRHEADERS = $(XDRGENFILES:.x=.h) +XDRSOURCES = $(XDRGENFILES:.x=.c) + +EXTRA_DIST = $(XDRGENFILES)  lib_LTLIBRARIES = libgfxdr.la @@ -12,7 +14,7 @@ libgfxdr_la_CPPFLAGS = $(GF_CPPFLAGS) -D__USE_FILE_OFFSET64 \  	-I$(top_srcdir)/libglusterfs/src -I$(top_srcdir)/rpc/rpc-lib/src \  	-I$(top_builddir)/rpc/xdr/src -# libgfxdr_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la +libgfxdr_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la  libgfxdr_la_LDFLAGS = -version-info $(LIBGFXDR_LT_VERSION) @@ -20,48 +22,9 @@ libgfxdr_la_SOURCES = xdr-generic.c xdr-nfs3.c msg-nfs3.c  nodist_libgfxdr_la_SOURCES = $(XDRSOURCES)  libgfxdr_la_HEADERS = xdr-generic.h xdr-nfs3.h msg-nfs3.h glusterfs3.h \ -	rpc-pragmas.h $(XDRHEADERS) +	rpc-pragmas.h +nodist_libgfxdr_la_HEADERS = $(XDRHEADERS)  libgfxdr_ladir = $(includedir)/glusterfs/rpc -# trick automake into doing BUILT_SOURCES magic -BUILT_SOURCES = $(XDRHEADERS) - -EXTRA_DIST = $(XDRGENFILES) -  CLEANFILES = $(XDRSOURCES) $(XDRHEADERS) - -xdrsrc=$(top_srcdir)/rpc/xdr/src - -# make's dependency resolution may mean that it decides to run -# rpcgen again (unnecessarily), but as the .c file already exists, -# rpcgen will exit with an error, resulting in a build error. We -# could use a '-' (i.e. -@rpcgen ...) and suffer with noisy warnings -# in the build. Or we do this crufty thing instead. -$(XDRSOURCES): $(XDRHEADERS) -	@if [ ! -e $@ -o $(@:.c=.x) -nt $@ ]; then \ -		rpcgen -c -o $(@:.c=.tmp) $(@:.c=.x) && mv $(@:.c=.tmp) $@ ; \ -	fi - -# d*mn sed in netbsd6 doesn't do -i (inline) -# (why are we still running smoke on netbsd6 and not netbsd7?) -$(XDRHEADERS): $(XDRGENFILES) -	@if [ ! -e $@ -o $(@:.h=.x) -nt $@ ]; then \ -		rpcgen -h -o $(@:.h=.tmp) $(@:.h=.x) ; \ -		sed -e '/#ifndef/ s/-/_/g' -e '/#define/ s/-/_/g' -e '/#endif/ s/-/_/' \ -			$(@:.h=.tmp) > $@ && rm -f $(@:.h=.tmp) ; \ -	fi - -# link .x files when doing out-of-tree builds -# have to use .PHONY here to force it; all versions of make -# will think the file already exists "here" by virtue of the -# VPATH. And we have to have the .x file in $cwd in order to -# have rpcgen generate "nice" #include directives -# i.e. (nice): -# #include "acl3-xdr.h" -# versus (not nice): -# #include "../../../../foo/src/rpc/xdr/src/acl3-xdr.h" -.PHONY : $(XDRGENFILES) -$(XDRGENFILES): -	@if [ ! -e $@ ]; then ln -s $(xdrsrc)/$@ . ; fi; -  | 
