]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
mod_v8: Added configure flag --enable-static-v8 to enable static linking of the V8...
authorPeter Olsson <peter@olssononline.se>
Mon, 20 Jan 2014 10:32:28 +0000 (11:32 +0100)
committerPeter Olsson <peter@olssononline.se>
Mon, 20 Jan 2014 10:33:38 +0000 (11:33 +0100)
configure.in
debian/rules
src/mod/languages/mod_v8/Makefile.am

index 6dd8887b8650aee38fe2f47da6c6bcd6322de503..76de318b5d81f424231e24158329a4ee7df7085b 100644 (file)
@@ -1018,6 +1018,10 @@ fi
 
 AX_CHECK_JAVA
 
+# Option to enable static linking of Google's V8 inside mod_v8
+AC_ARG_ENABLE(static-v8,
+[AS_HELP_STRING([--enable-static-v8], [Statically link V8 into mod_v8])], [enable_static_v8="$enableval"], [enable_static_v8="no"])
+AM_CONDITIONAL([ENABLE_STATIC_V8],[test "x$enable_static_v8" != "xno"])
 
 AM_CONDITIONAL([HAVE_ODBC],[test "x$enable_core_odbc_support" != "xno"])
 AM_CONDITIONAL([HAVE_LIBEDIT],[test "x$enable_core_libedit_support" != "xno"])
index 6010f5f1b96f2490626fe54e64f5680795bdb631..35119ab2d7d1b8b9797b60818dddf74959b352af 100755 (executable)
@@ -79,7 +79,8 @@ override_dh_auto_clean:
                --with-grammardir=/usr/share/freeswitch/grammar \
                --with-certsdir=/etc/freeswitch/tls \
                --with-scriptdir=/usr/share/freeswitch/scripts \
-               --with-recordingsdir=/var/lib/freeswitch/recordings
+               --with-recordingsdir=/var/lib/freeswitch/recordings \
+               --enable-static-v8
        touch $@
 
 override_dh_auto_configure: .stamp-configure
index f8a9cfe9e35c326ce8eae4d6da0251daaf832460..eeb8d635d5c5bf0298ce11de546bd1f7de6833d6 100644 (file)
@@ -1,24 +1,44 @@
 include $(top_srcdir)/build/modmake.rulesam
 
+AUTOMAKE_OPTIONS = foreign
+
+# V8 version to use
 V8=v8-3.24.14
 
 V8_DIR=$(switch_srcdir)/libs/$(V8)
 V8_BUILDDIR=$(switch_builddir)/libs/$(V8)
 
 if PLATFORM_MACOSX
-# For some reason V8 puts the libraries somewhere else on Mac OSX
 V8_LIBDIR=$(V8_DIR)/out/native
 V8_LIBEXT=dylib
 # Build with snapshot doesn't work for OSX right now
 V8_BUILDPARAMS=snapshot=off
+V8_SNAPSHOT=nosnapshot
 else
 V8_LIBDIR=$(V8_DIR)/out/native/lib.target
 V8_LIBEXT=so
 # Some gcc versions report warnings incorrectly
 V8_BUILDPARAMS=strictaliasing=off werror=no
+V8_SNAPSHOT=snapshot
 endif
 
-V8SO=$(V8_LIBDIR)/libv8.$(V8_LIBEXT)
+if ENABLE_STATIC_V8
+# Build the static lib version of V8
+if PLATFORM_MACOSX
+V8_STATIC_DIR=$(V8_DIR)/out/native
+V8_ICU_STATIC_DIR=$(V8_DIR)/out/native
+V8_CXXFLAGS =
+else
+V8_STATIC_DIR=$(V8_DIR)/out/native/obj.target/tools/gyp
+V8_ICU_STATIC_DIR=$(V8_DIR)/out/native/obj.target/third_party/icu
+V8_CXXFLAGS = -fPIC
+endif
+V8LIB=$(V8_STATIC_DIR)/libv8_base*.a
+else
+# Build the dynamic lib version of V8
+V8_BUILDPARAMS += library=shared
+V8LIB=$(V8_LIBDIR)/libv8.$(V8_LIBEXT)
+endif
 
 # Try to find the target platform for our configured CXX compiler
 # Parse the result one extra time to handle different i386 platforms (i386, i486 etc)
@@ -31,27 +51,34 @@ CURLLA=${switch_builddir}/libs/curl/lib/libcurl.la
 
 MODNAME=mod_v8
 
-AM_CFLAGS  += -I. -I./include -I$(V8_DIR)/include 
-AM_CPPFLAGS += -I. -I./include -I$(V8_DIR)/include 
-AM_LIBADD   = $(switch_builddir)/libfreeswitch.la -lv8 -licuuc -licui18n 
-AM_LDFLAGS += -avoid-version -module -no-undefined -shared 
-AM_LDFLAGS += -L$(V8_LIBDIR) 
-BUILT_SOURCES = $(V8SO) $(LIBCURL_DEPS)
+AM_CFLAGS    += -I. -I./include -I$(V8_DIR)/include
+AM_CPPFLAGS  += -I. -I./include -I$(V8_DIR)/include
+AM_LDFLAGS   += -avoid-version -module -no-undefined -shared
+
+if ENABLE_STATIC_V8
+AM_LIBADD     = $(switch_builddir)/libfreeswitch.la
+V8_LDFLAGS    = $(V8_STATIC_DIR)/libv8_{base*,$(V8_SNAPSHOT)*}.a $(V8_ICU_STATIC_DIR)/libicu{i18n,uc,data}.a $(SOLINK)
+else
+AM_LIBADD     = $(switch_builddir)/libfreeswitch.la -lv8 -licuuc -licui18n
+AM_LDFLAGS   += -L$(V8_LIBDIR)
+endif
+
+BUILT_SOURCES = $(V8LIB) $(LIBCURL_DEPS)
 
 if HAVE_ODBC
-AM_CFLAGS  += -DHAVE_ODBC $(ODBC_INC_FLAGS) 
-AM_CPPFLAGS += -DHAVE_ODBC $(ODBC_INC_FLAGS) 
-AM_LDFLAGS += -DHAVE_ODBC 
+AM_CFLAGS   += -DHAVE_ODBC $(ODBC_INC_FLAGS)
+AM_CPPFLAGS += -DHAVE_ODBC $(ODBC_INC_FLAGS)
+AM_LDFLAGS  += -DHAVE_ODBC
 endif
 
-mod_LTLIBRARIES            = mod_v8.la 
-mod_v8_la_SOURCES  = mod_v8.cpp ./src/fscoredb.cpp ./src/fscurl.cpp ./src/fsdtmf.cpp ./src/fsevent.cpp ./src/fsfileio.cpp ./src/fsglobal.cpp ./src/fsodbc.cpp ./src/fspcre.cpp ./src/fsrequest.cpp ./src/fssession.cpp ./src/fssocket.cpp ./src/fsteletone.cpp ./src/fsxml.cpp ./src/fsfile.cpp ./src/jsbase.cpp ./src/jsmain.cpp
+mod_LTLIBRARIES    = mod_v8.la
+mod_v8_la_SOURCES  = mod_v8.cpp src/fscoredb.cpp src/fscurl.cpp src/fsdtmf.cpp src/fsevent.cpp src/fsfileio.cpp src/fsglobal.cpp src/fsodbc.cpp src/fspcre.cpp src/fsrequest.cpp src/fssession.cpp src/fssocket.cpp src/fsteletone.cpp src/fsxml.cpp src/fsfile.cpp src/jsbase.cpp src/jsmain.cpp
 mod_v8_la_CFLAGS   = $(AM_CFLAGS) $(LIBCURL_CPPFLAGS) -I$(switch_srcdir)/libs/libteletone/src
 mod_v8_la_CPPFLAGS = $(AM_CPPFLAGS) $(LIBCURL_CPPFLAGS) -I$(switch_srcdir)/libs/libteletone/src
 mod_v8_la_LIBADD   = $(AM_LIBADD)
-mod_v8_la_LDFLAGS  = $(AM_LDFLAGS) $(LIBCURL)
+mod_v8_la_LDFLAGS  = $(AM_LDFLAGS) $(LIBCURL) $(V8_LDFLAGS)
 
-#mod_LTLIBRARIES                += mod_v8_skel.la
+#mod_LTLIBRARIES        += mod_v8_skel.la
 #mod_v8_skel_la_SOURCES  = mod_v8_skel.cpp
 #mod_v8_skel_la_CFLAGS   = $(AM_CFLAGS) -DJSMOD_IMPORT
 #mod_v8_skel_la_CPPFLAGS = $(AM_CPPFLAGS) -DJSMOD_IMPORT
@@ -63,7 +90,7 @@ $(SOURCES): $(BUILT_SOURCES)
 $(V8_DIR):
        $(GETLIB) $(V8).tar.bz2
 
-$(V8SO): $(V8_DIR)
+$(V8LIB): $(V8_DIR)
        if test "$(CXX_TARGET_PLATFORM)" = "x86_64"; then \
           defines="v8_target_arch=x64 target_arch=x64"; \
        else \
@@ -75,12 +102,15 @@ $(V8SO): $(V8_DIR)
              fi; \
           fi; \
        fi; \
-       cd $(V8_BUILDDIR) && GYP_DEFINES="$$defines" $(MAKE) library=shared $(V8_BUILDPARAMS) native
+       cd $(V8_BUILDDIR) && CFLAGS="$(V8_CXXFLAGS)" CXXFLAGS="$(V8_CXXFLAGS)" GYP_DEFINES="$$defines" $(MAKE) $(V8_BUILDPARAMS) native
 
 $(CURLLA):
        @cd $(CURL_BUILDDIR) && $(MAKE)
        $(TOUCH_TARGET)
 
+if ENABLE_STATIC_V8
+install-exec-local: $(V8LIB)
+else
 # This is a temporary solution to force Mac OSX build to load the libraries at the right place
 if PLATFORM_MACOSX
 install-exec-local: $(DESTDIR)$(libdir)/libv8.$(V8_LIBEXT)
@@ -96,8 +126,8 @@ install-exec-local: $(DESTDIR)$(libdir)/libv8.$(V8_LIBEXT)
 else
 install-exec-local: $(DESTDIR)$(libdir)/libv8.$(V8_LIBEXT)
 endif
-
-$(DESTDIR)$(libdir)/libv8.$(V8_LIBEXT): $(V8SO)
+$(DESTDIR)$(libdir)/libv8.$(V8_LIBEXT): $(V8LIB)
        rm -f $(DESTDIR)$(libdir)/libv8.$(V8_LIBEXT) && cp -a $(V8_LIBDIR)/libv8.$(V8_LIBEXT) $(DESTDIR)$(libdir)/libv8.$(V8_LIBEXT)
        rm -f $(DESTDIR)$(libdir)/libicuuc.$(V8_LIBEXT) && cp -a $(V8_LIBDIR)/libicuuc.$(V8_LIBEXT) $(DESTDIR)$(libdir)/libicuuc.$(V8_LIBEXT)
        rm -f $(DESTDIR)$(libdir)/libicui18n.$(V8_LIBEXT) && cp -a $(V8_LIBDIR)/libicui18n.$(V8_LIBEXT) $(DESTDIR)$(libdir)/libicui18n.$(V8_LIBEXT)
+endif