From c986f10adfbc5d4f728ea84640cc1c81532105ae Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Wed, 8 Mar 2017 15:04:50 -0500 Subject: build: libgfxdr.so calls GF_FREE(), needs to link with -lglusterfs build: libgfxdr.so calls GF_FREE(), needs to link with -lglusterfs The previous change to remove the xdrgen script exposed (or created) a recursive build dependency: libglusterfs needs the generated headers, and libgfxdr should be linked with libglusterfs for GF_FREE/__gf_free. (Much grumbling about libglusterfs being the kitchen sink of gluster elided. This would not be necessary if there were two more more libs, a gluster "runtime" library with common gluster code shared by the xlators and daemons, and a utility library with things like the rbtree, memory allocation, and whatnot.) So. Link at build time or link at runtime? For truth-and-beauty, link with libglusterfs.so at build time. Without truth-and-beauty, don't link with libglusterfs and rely on other the libs that link with libglusterfs to provide resolution of __gf_free(). Truth-and-beauty it is. But how to generate the headers first, then build libglusterfs, then come back and build libgfxdr? Autotools is a maze of twisty passages, all different. Things that work with gnu make on linux don't work with the BSD make. Finally I hit on this solution. Add a shadow directory where make only generates the headers, then build libglusterfs using the generated headers, and finally build libgfxdr and link with libglusterfs. See original BZ 1330604 change http://review.gluster.org/14085 master BZ 1429696 master change: https://review.gluster.org/#/c/16873/ Change-Id: Iede8a30e3103176cb8f0b054885f30fcb352492b BUG: 1430512 Signed-off-by: Kaleb S. KEITHLEY Reviewed-on: https://review.gluster.org/16874 Smoke: Gluster Build System NetBSD-regression: NetBSD Build System CentOS-regression: Gluster Build System --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Makefile.am') 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 -- cgit