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)
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
$(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 \
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)
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