Revision
15704
Author
mikej
Date
2009-11-28 22:58:51 -0600 (Sat, 28 Nov 2009)

Log Message

an attempt at working --srcdir builds for the modules. (FSBUILD-211)

Modified Paths

Diff

Modified: freeswitch/trunk/build/modmake.rules.in (15703 => 15704)


--- freeswitch/trunk/build/modmake.rules.in	2009-11-29 04:55:50 UTC (rev 15703)
+++ freeswitch/trunk/build/modmake.rules.in	2009-11-29 04:58:51 UTC (rev 15704)
@@ -20,7 +20,7 @@
 LIBCURL=@LIBCURL@
 LIBCURL_CPPFLAGS=@LIBCURL_CPPFLAGS@
 CURL_DIR=$(switch_srcdir)/libs/curl
-CURLLA=$(CURL_DIR)/lib/libcurl.la
+CURLLA=$(switch_builddir)/libs/curl/lib/libcurl.la
 
 OPENSSL_LIBS=@openssl_LIBS@
 OPENSSL_CFLAGS=@openssl_CFLAGS@
@@ -50,14 +50,14 @@
 LTCXXCOMPILE = $(LIBTOOL) --mode=compile --tag=CXX $(CXXCOMPILE)
 CXXLINK = $(LIBTOOL) --mode=link --tag=CXX $(CXXLD) $(ALL_CXXFLAGS) $(LDFLAGS) -shared -module -avoid-version -rpath $(MODINSTDIR) -o $@
 
-CSOURCEFILE=$(MODNAME).c
-CXXSOURCEFILE=$(MODNAME).cpp
+CSOURCEFILE=$(MODDIR)/$(MODNAME).c
+CXXSOURCEFILE=$(MODDIR)/$(MODNAME).cpp
 TOUCH_TARGET=@TOUCH_TARGET@
 
 #MAKE_OPTS = `if test -z "$(VERBOSE)" ; then $(MAKE) --help | grep silent | grep "\-s" 2>&1 >/dev/null && echo -s;fi`
 MAKE_OPTS = `test -n "$(VERBOSE)" || echo -s`
 RECURSE_MODNAME=`pwd | sed -e 's|^.*/||'`
-RECURSE_SOURCEFILE=`if test -f $$modname.cpp; then echo $$modname.cpp; else echo $$modname.c; fi`
+RECURSE_SOURCEFILE=`if test -f "$(MODDIR)/$$modname.cpp"; then echo "$(MODDIR)/$$modname.cpp"; else echo "$(MODDIR)/$$modname.c"; fi`
 RECURSE_OUR_DEPS=`test -z "$(WANT_CURL)" || if test ! -z "$(LIBCURL_DEPS)"; then echo $(CURLLA); fi `
 RECURSE_OUR_CFLAGS=`test -z "$(WANT_CURL)" || echo $(LIBCURL_CPPFLAGS) ; $(LOCAL_INSERT_CFLAGS) `
 RECURSE_OUR_LDFLAGS=`test -z "$(WANT_CURL)" || echo $(LIBCURL) ; $(LOCAL_INSERT_LDFLAGS) `
@@ -68,7 +68,7 @@
 		ourcflags="$(RECURSE_OUR_CFLAGS)" ; \
 		ourldflags="$(RECURSE_OUR_LDFLAGS)" ; \
 		insertobjs="`$(LOCAL_INSERT_OBJS)`" ; \
-		$(MAKE) $(MAKE_OPTS) MODNAME="$$modname" SOURCEFILE="$$sourcefile" \
+		$(MAKE) $(MAKE_OPTS) MODNAME="$$modname" SOURCEFILE="$$sourcefile" MODDIR="$(MODDIR)" \
 			OUR_DEPS="$$ourdefs" OUR_CFLAGS="$$ourcflags" OUR_LDFLAGS="$$ourldflags" OUR_OBJS="$$insertobjs"
 
 all: Makefile
@@ -96,7 +96,7 @@
 
 Makefile:
 	@if test ! -f $@; then \
-	  if ! pwd | grep $(switch_srcdir)/src/mod ; then rulesdir=$(switch_srcdir) ; else rulesdir=../../../.. ; fi ; \
+	  if ! pwd | grep $(switch_builddir)/src/mod ; then rulesdir=$(switch_builddir) ; else rulesdir=../../../.. ; fi ; \
 	  echo BASE=$$rulesdir > Makefile ; \
 	  echo 'include $$(BASE)/build/modmake.rules' >> Makefile ; \
 	fi ;

Modified: freeswitch/trunk/src/mod/Makefile.am (15703 => 15704)


--- freeswitch/trunk/src/mod/Makefile.am	2009-11-29 04:55:50 UTC (rev 15703)
+++ freeswitch/trunk/src/mod/Makefile.am	2009-11-29 04:58:51 UTC (rev 15704)
@@ -8,10 +8,16 @@
 	target=`echo $@ | sed -e 's|^.*-||'`; \
 	modname=`echo $@ | sed -e 's|-.*||' | sed -e 's|^.*/||'`; \
 	confmoddir=`cat $(switch_builddir)/modules.conf | sed -e 's| ||' | grep $$modname$$ | sed -e 's|#||' | head -n 1`; \
-	if test -z "$$confmoddir" ; then moddir=$@ ; else  \
+	if test -z "$$confmoddir" ; then \
+		moddir=$@ ; \
+		buildmoddir=$(switch_builddir)/src/mod/$@ ;\
+	else  \
 		if test -d  "$(switch_srcdir)/src/mod/$$confmoddir" ; then \
-			moddir="$(switch_srcdir)/src/mod/$$confmoddir" ; else \
+			moddir="$(switch_srcdir)/src/mod/$$confmoddir" ; \
+			buildmoddir="$(switch_builddir)/src/mod/$$confmoddir" ; \
+		else \
 			moddir="$$confmoddir" ; \
+			buildmoddir="$(switch_builddir)/src/mod/$$confmoddir" ; \
 		fi ; \
 	fi ; \
 	if test -z "$$target" ; then target="all" ; fi ; \
@@ -20,8 +26,10 @@
 		echo ;\
 		echo making $$target $$modname ;\
 		(if test -f "$$moddir/Makefile" ; then \
-			cd $$moddir && MODNAME=$$modname BASE=$(switch_builddir) $(MAKE) $(AM_MAKEFLAGS) $$target; else\
-			cd $$moddir && MODNAME=$$modname BASE=$(switch_builddir) $(MAKE) $(AM_MAKEFLAGS) -f $(switch_builddir)/build/modmake.rules $$target ;\
+			test -f "$$buildmoddir/Makefile" || cp $$moddir/Makefile $$buildmoddir/Makefile ; \
+			cd $$buildmoddir && MODDIR=$$moddir MODNAME=$$modname BASE=$(switch_srcdir) $(MAKE) $(AM_MAKEFLAGS) $$target; \
+		else\
+			cd $$buildmoddir && MODDIR=$$moddir MODNAME=$$modname BASE=$(switch_srcdir) $(MAKE) $(AM_MAKEFLAGS) -f $(switch_builddir)/build/modmake.rules $$target ;\
 		fi;) || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
 	fi; \
 	test -z "$$fail" ;