From 8f2566c5a39f758bb0db337fc106fa94f52220df Mon Sep 17 00:00:00 2001 From: Hans Ulrich Niedermann Date: Sat, 5 Mar 2011 14:21:24 +0100 Subject: build: Support (srcdir != builddir) VDIR builds Support (srcdir != builddir) VDIR builds. This will also help a lot with preparing for a working "make distcheck". --- bin/Makefile.am | 4 ++-- clientcomm/Makefile.am | 38 +++++++++++++++++++++++--------------- configure.ac | 5 +++-- ecpg.mk | 8 ++++++++ include/Makefile.am | 7 ++++++- insertutils/Makefile.am | 2 +- manuals_and_examples/Makefile.am | 2 +- reladminif/Makefile.am | 5 +---- relblobif/Makefile.am | 5 +---- relcatalogif/Makefile.am | 6 +----- relindexif/Makefile.am | 4 +--- relmddif/Makefile.am | 4 +--- relstorageif/Makefile.am | 5 +---- rnprotocol/rnpembedded.cc | 2 +- rnprotocol/rnprotocol.cc | 2 +- servercomm/Makefile.am | 2 +- 16 files changed, 53 insertions(+), 48 deletions(-) create mode 100644 ecpg.mk diff --git a/bin/Makefile.am b/bin/Makefile.am index 72a45fe..348a4b2 100644 --- a/bin/Makefile.am +++ b/bin/Makefile.am @@ -35,7 +35,7 @@ script_edit = $(SED) \ start_rasdaman.sh stop_rasdaman.sh create_db.sh: Makefile rm -f $@ - $(script_edit) '$@.in' >$@ + $(script_edit) "$(srcdir)/$$(basename "$@").in" >$@ chmod +x $@ chmod a-w $@ @@ -44,4 +44,4 @@ stop_rasdaman.sh: stop_rasdaman.sh.in create_db.sh: create_db.sh.in rasmgr.conf: rasmgr.conf.in Makefile rm -f $@ - $(SED) -e "s|@hostname[@]|`hostname`|g" '$@.in' >$@ + $(SED) -e "s|@hostname[@]|`hostname`|g" "$(srcdir)/$$(basename "$@").in" >$@ diff --git a/clientcomm/Makefile.am b/clientcomm/Makefile.am index e7aa7f0..6b2bad0 100644 --- a/clientcomm/Makefile.am +++ b/clientcomm/Makefile.am @@ -45,7 +45,7 @@ libclientcomm_a_SOURCES = rpcif_clnt.cc rpcif_xdr.c rpcif.h \ ../rnprotocol/rnpclientcomm2.cc \ ../rnprotocol/rnpclientcomm.hh libclientcomm_a_CPPFLAGS = $(AM_CPPFLAGS) -libclientcomm_a_CPPFLAGS += -I../rnprotocol +libclientcomm_a_CPPFLAGS += -I$(top_srcdir)/rnprotocol libclientcomm_a_CPPFLAGS += $(CLIENT_CPPFLAGS) EXTRA_libclientcomm_a_SOURCES = rpcif.x @@ -53,22 +53,30 @@ BUILT_SOURCES= rpcif_clnt.cc rpcif_xdr.c rpcif.h rpcif_svc.cc CLEANFILES=rpcif_clnt.cc rpcif_xdr.c rpcif.h rpcif.h.tmp rpcif.h.tmp2 \ rpcif_clnt.c.tmp rpcif_svc.cc.tmp rpcif_svc.cc -rpcif.h: rpcif.x - $(RPCGEN) -h -o rpcif.h.tmp rpcif.x - $(AWK) -f rpcif.h.awk rpcif.h.tmp > rpcif.h.tmp2 +rpcif.h: rpcif.x rpcif.h.awk + $(RPCGEN) -h -o rpcif.h.tmp $(srcdir)/rpcif.x + $(AWK) -f $(srcdir)/rpcif.h.awk rpcif.h.tmp > rpcif.h.tmp2 $(SED) 's,_RPCIF\.H_H_RPCGEN,_RPCIF_H_H_RPCGEN,g' rpcif.h.tmp2 > rpcif.h rm rpcif.h.tmp rpcif.h.tmp2 -rpcif_clnt.cc: rpcif.x - $(RPCGEN) -l -o rpcif_clnt.cc.tmp rpcif.x - $(AWK) -f rpcif_clnt.c.awk rpcif_clnt.cc.tmp > rpcif_clnt.cc - rm rpcif_clnt.cc.tmp +FIX_INCLUDE = $(SED) +FIX_INCLUDE += 's,^\#include "../../clientcomm/rpcif.h"$$,\#include "clientcomm/rpcif.h",' -rpcif_xdr.c: rpcif.x - -rm rpcif_xdr.c - $(RPCGEN) -c -o rpcif_xdr.c rpcif.x +rpcif_clnt.cc: rpcif.x rpcif_clnt.c.awk Makefile + -rm rpcif_clnt.cc.tmp + $(RPCGEN) -l -o rpcif_clnt.cc.tmp $(srcdir)/rpcif.x + $(AWK) -f $(srcdir)/rpcif_clnt.c.awk rpcif_clnt.cc.tmp > rpcif_clnt.cc.tmp2 + $(FIX_INCLUDE) rpcif_clnt.cc.tmp2 > rpcif_clnt.cc + rm rpcif_clnt.cc.tmp rpcif_clnt.cc.tmp2 -rpcif_svc.cc: rpcif.x - $(RPCGEN) -m -o rpcif_svc.cc.tmp rpcif.x - $(AWK) -f rpcif_svc.c.awk rpcif_svc.cc.tmp > rpcif_svc.cc - rm rpcif_svc.cc.tmp +rpcif_xdr.c: rpcif.x Makefile + -rm rpcif_xdr.c.tmp + $(RPCGEN) -c -o rpcif_xdr.c.tmp $(srcdir)/rpcif.x + $(FIX_INCLUDE) rpcif_xdr.c.tmp > rpcif_xdr.c + rm rpcif_xdr.c.tmp + +rpcif_svc.cc: rpcif.x rpcif_svc.c.awk Makefile + $(RPCGEN) -m -o rpcif_svc.cc.tmp $(srcdir)/rpcif.x + $(AWK) -f $(srcdir)/rpcif_svc.c.awk rpcif_svc.cc.tmp > rpcif_svc.cc.tmp2 + $(FIX_INCLUDE) rpcif_svc.cc.tmp2 > rpcif_svc.cc + rm rpcif_svc.cc.tmp rpcif_svc.cc.tmp2 diff --git a/configure.ac b/configure.ac index 59f3601..04d3805 100644 --- a/configure.ac +++ b/configure.ac @@ -279,7 +279,7 @@ AS_IF([test "$with_default_basedb" == postgresql], # TODO: change main to something sensible AC_CHECK_LIB([pq], [main], , [AC_MSG_FAILURE([Library not found! Please install...])]) AC_CHECK_LIB([pgtypes], [main], , [AC_MSG_FAILURE([Library not found! Please install...])]) - EMBEDDEDSQLPRECOMPILER="$ECPG -o" + EMBEDDEDSQLPRECOMPILER="\$(ECPG)" BASEDBSTRING=pgsql ], [AC_MSG_ERROR([unsupported base DBMS: $with_default_basedb])]) @@ -335,7 +335,8 @@ LDFLAGS="" COMPDATE=`date +"%d.%m.%Y %H:%M:%S"` AC_DEFINE_UNQUOTED([COMPDATE], ["$COMPDATE"]) -AM_CPPFLAGS+=" -I$abs_top_srcdir -I$abs_top_srcdir/debug -I$abs_top_srcdir/include" +AM_CPPFLAGS+=" -I\${top_builddir}" +AM_CPPFLAGS+=" -I\${top_srcdir} -I\${top_srcdir}/debug -I\${top_srcdir}/include" # Our special install locations AC_SUBST([pkgdatadir], ["\${datadir}/\${RDM_SUBDIR}"]) diff --git a/ecpg.mk b/ecpg.mk new file mode 100644 index 0000000..3e6ead7 --- /dev/null +++ b/ecpg.mk @@ -0,0 +1,8 @@ +# -*- Makefile -*- +# ecpg.mk + +SUFFIXES = .@EMBEDDEDSQLEXT@ .@EMBEDDEDSQLOUT@ + +.@EMBEDDEDSQLEXT@.@EMBEDDEDSQLOUT@: + set -x; cwd="$$PWD"; \ + cd "$$(dirname "$<")" && $(EMBEDDEDSQLPRECOMPILER) -o "$$cwd/$@" "$$(basename "$<")" diff --git a/include/Makefile.am b/include/Makefile.am index 9f79a2a..7dcd344 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -22,4 +22,9 @@ # ################################################################### -pkginclude_HEADERS=*.h *.hh +pkginclude_HEADERS = +pkginclude_HEADERS += basictypes.hh +pkginclude_HEADERS += bool.h +pkginclude_HEADERS += globals.hh +pkginclude_HEADERS += rasdaman.hh +pkginclude_HEADERS += stdexcept.h diff --git a/insertutils/Makefile.am b/insertutils/Makefile.am index 4eb646e..b8f74fe 100644 --- a/insertutils/Makefile.am +++ b/insertutils/Makefile.am @@ -48,6 +48,6 @@ insertdemo.sh: insertdemo.sh.in Makefile rm -f insertdemo.sh sed -e 's|@bindir[@]|$(bindir)/|g' \ -e 's|@pkgdatadir[@]|$(pkgdatadir)/|g'\ - insertdemo.sh + < $(srcdir)/insertdemo.sh.in > insertdemo.sh chmod +x insertdemo.sh chmod a-w insertdemo.sh diff --git a/manuals_and_examples/Makefile.am b/manuals_and_examples/Makefile.am index ee89bc1..c9acbe6 100644 --- a/manuals_and_examples/Makefile.am +++ b/manuals_and_examples/Makefile.am @@ -52,4 +52,4 @@ install-data-hook: (cd ..; doxygen manuals_and_examples/doxygen-all.cfg) (cd ..; doxygen manuals_and_examples/doxygen-api.cfg) (cd ..; doxygen manuals_and_examples/doxygen-basedbms.cfg) - cp -r manuals/ $(DESTDIR)$(pkgdatadir)/doc + cp -r $(srcdir)/manuals/ $(DESTDIR)$(pkgdatadir)/doc diff --git a/reladminif/Makefile.am b/reladminif/Makefile.am index 0bdb68f..7f4c907 100644 --- a/reladminif/Makefile.am +++ b/reladminif/Makefile.am @@ -30,10 +30,7 @@ # ################################################################## -.SUFFIXES= .@EMBEDDEDSQLEXT@ .@EMBEDDEDSQLOUT@ -.@EMBEDDEDSQLEXT@.@EMBEDDEDSQLOUT@: - $(EMBEDDEDSQLPRECOMPILER) $@ $< - +include $(top_srcdir)/ecpg.mk pkglib_LIBRARIES=libreladminif.a libreladminif_a_SOURCES=adminifcommon.cc adminif.hh databaseifcommon.cc databaseif.hh \ diff --git a/relblobif/Makefile.am b/relblobif/Makefile.am index e1da954..60d7c3d 100644 --- a/relblobif/Makefile.am +++ b/relblobif/Makefile.am @@ -29,10 +29,7 @@ # ################################################################## -.SUFFIXES= .@EMBEDDEDSQLEXT@ .@EMBEDDEDSQLOUT@ -.@EMBEDDEDSQLEXT@.@EMBEDDEDSQLOUT@: - $(EMBEDDEDSQLPRECOMPILER) $@ $< - +include $(top_srcdir)/ecpg.mk pkglib_LIBRARIES=librelblobif.a librelblobif_a_SOURCES= blobtile.hh \ diff --git a/relcatalogif/Makefile.am b/relcatalogif/Makefile.am index 6fec2cc..cafbd97 100644 --- a/relcatalogif/Makefile.am +++ b/relcatalogif/Makefile.am @@ -31,11 +31,7 @@ # This Makefile only works with GNU Make! # -######################### Definitions ############################ - -.SUFFIXES= .@EMBEDDEDSQLEXT@ .@EMBEDDEDSQLOUT@ -.@EMBEDDEDSQLEXT@.@EMBEDDEDSQLOUT@: - $(EMBEDDEDSQLPRECOMPILER) $@ $< +include $(top_srcdir)/ecpg.mk pkglib_LIBRARIES=librelcatalogif.a librelcatalogif_a_SOURCES= type.C type.hh basetype.C basetype.hh atomictype.C ulongtype.C ulongtype.hh ushorttype.C ushorttype.hh \ diff --git a/relindexif/Makefile.am b/relindexif/Makefile.am index 40711d0..adb5aaa 100644 --- a/relindexif/Makefile.am +++ b/relindexif/Makefile.am @@ -26,9 +26,7 @@ # ################################################################## -.SUFFIXES= .@EMBEDDEDSQLEXT@ .@EMBEDDEDSQLOUT@ -.@EMBEDDEDSQLEXT@.@EMBEDDEDSQLOUT@: - $(EMBEDDEDSQLPRECOMPILER) $@ $< +include $(top_srcdir)/ecpg.mk pkglib_LIBRARIES=librelindexif.a librelindexif_a_SOURCES=dbrcindexdscommon.cc dbrcindexds.hh \ diff --git a/relmddif/Makefile.am b/relmddif/Makefile.am index daf85ac..aab618b 100644 --- a/relmddif/Makefile.am +++ b/relmddif/Makefile.am @@ -29,9 +29,7 @@ # ################################################################## -.SUFFIXES= .@EMBEDDEDSQLEXT@ .@EMBEDDEDSQLOUT@ -.@EMBEDDEDSQLEXT@.@EMBEDDEDSQLOUT@: - $(EMBEDDEDSQLPRECOMPILER) $@ $< +include $(top_srcdir)/ecpg.mk pkglib_LIBRARIES=librelmddif.a librelmddif_a_SOURCES=dbmddsetcommon.cc dbmddobj.hh dbmddset.hh dbiterid.hh mddid.hh diff --git a/relstorageif/Makefile.am b/relstorageif/Makefile.am index 03d3284..653826a 100644 --- a/relstorageif/Makefile.am +++ b/relstorageif/Makefile.am @@ -28,10 +28,7 @@ # ################################################################## -.SUFFIXES= .@EMBEDDEDSQLEXT@ -.@EMBEDDEDSQLEXT@.@EMBEDDEDSQLOUT@: - $(EMBEDDEDSQLPRECOMPILER) $@ $< - +include $(top_srcdir)/ecpg.mk pkglib_LIBRARIES=librelstorageif.a librelstorageif_a_SOURCES= dbstoragelayout.hh storageid.hh empty.cc diff --git a/rnprotocol/rnpembedded.cc b/rnprotocol/rnpembedded.cc index c0362bb..318764c 100644 --- a/rnprotocol/rnpembedded.cc +++ b/rnprotocol/rnpembedded.cc @@ -27,7 +27,7 @@ rasdaman GmbH. * ****************************************************************************/ -#include +#include "rnpembedded.hh" #include #include "debug.hh" diff --git a/rnprotocol/rnprotocol.cc b/rnprotocol/rnprotocol.cc index ce0deec..5c05f40 100644 --- a/rnprotocol/rnprotocol.cc +++ b/rnprotocol/rnprotocol.cc @@ -27,7 +27,7 @@ rasdaman GmbH. * ****************************************************************************/ -#include +#include "rnprotocol.hh" #include using namespace rnp; diff --git a/servercomm/Makefile.am b/servercomm/Makefile.am index 6bb13f6..8fa5104 100644 --- a/servercomm/Makefile.am +++ b/servercomm/Makefile.am @@ -50,7 +50,7 @@ libservercomm_a_SOURCES=../clientcomm/rpcif_xdr.c ../clientcomm/rpcif_svc.cc ser ../rnprotocol/rnpservercomm.hh libservercomm_a_CPPFLAGS = $(AM_CPPFLAGS) -libservercomm_a_CPPFLAGS += -I../rnprotocol +libservercomm_a_CPPFLAGS += -I$(top_srcdir)/rnprotocol libservercomm_a_CPPFLAGS += $(BASEDB_CPPFLAGS) BUILT_SOURCES=../clientcomm/rpcif_xdr.c ../clientcomm/rpcif.h ../clientcomm/rpcif_svc.cc -- cgit