]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
mod_v8: Improved build for some version of gcc and (hopefully) fixed build on OSX
authorPeter Olsson <peter@olssononline.se>
Thu, 16 Jan 2014 18:56:45 +0000 (19:56 +0100)
committerPeter Olsson <peter@olssononline.se>
Thu, 16 Jan 2014 18:56:45 +0000 (19:56 +0100)
configure.in
src/mod/languages/mod_v8/Makefile.am

index f3b804aabfa63946b32bc40e3c303ee6ddea7372..6dd8887b8650aee38fe2f47da6c6bcd6322de503 100644 (file)
@@ -501,6 +501,7 @@ PLATFORM_CORE_LIBS=
 # tweak platform specific flags
 case "$host" in
     *darwin12.*|*darwin11.*)
+        is_macosx=yes
         APR_ADDTO(SWITCH_AM_CFLAGS, -DMACOSX)
         APR_ADDTO(CFLAGS, -pipe -no-cpp-precomp -Wno-deprecated-declarations)
         APR_ADDTO(LDFLAGS, -pipe -bind_at_load)
@@ -512,6 +513,7 @@ case "$host" in
        APR_ADDTO([PLATFORM_CORE_LIBS], [-ldl])
     ;;
     *darwin10.*)
+        is_macosx=yes
         APR_ADDTO(SWITCH_AM_CFLAGS, -DMACOSX)
         APR_ADDTO(CFLAGS, -pipe -no-cpp-precomp)
         APR_ADDTO(LDFLAGS, -pipe -bind_at_load)
@@ -523,6 +525,7 @@ case "$host" in
        APR_ADDTO([PLATFORM_CORE_LIBS], [-ldl])
     ;;
     *darwin*)
+        is_macosx=yes
         APR_ADDTO(SWITCH_AM_CFLAGS, -DMACOSX)
         APR_REMOVEFROM(SWITCH_AM_CFLAGS, -fPIC)
        if test "x$enable_core_odbc_support" != "xno"; then
@@ -545,6 +548,8 @@ case "$host" in
     ;;
 esac
 
+AM_CONDITIONAL([PLATFORM_MACOSX],[test "x$is_macosx" == "xyes"])
+
 APR_REMOVEFROM(SWITCH_AM_CXXFLAGS, -std=c99)
 
 AC_SUBST(SWITCH_AM_CFLAGS)
index 1c54814728387d5cd29d5713b86b943a71612158..ccc47ed8e0b4ea3635a4ff62e303d2bd24eafcd3 100644 (file)
@@ -4,7 +4,21 @@ V8=v8-3.24.14
 
 V8_DIR=$(switch_srcdir)/libs/$(V8)
 V8_BUILDDIR=$(switch_builddir)/libs/$(V8)
-V8SO=$(V8_DIR)/out/native/lib.target/libv8.so
+
+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
+else
+V8_LIBDIR=$(V8_DIR)/out/native/lib.target
+V8_LIBEXT=so
+# Some gcc versions report warnings incorrectly
+V8_BUILDPARAMS=strictaliasing=off werror=no
+endif
+
+V8SO=$(V8_LIBDIR)/libv8.$(V8_LIBEXT)
 
 CURL_DIR=$(switch_srcdir)/libs/curl
 CURL_BUILDDIR=$(switch_builddir)/libs/curl
@@ -16,7 +30,7 @@ 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_DIR)/out/native/lib.target 
+AM_LDFLAGS += -L$(V8_LIBDIR) 
 BUILT_SOURCES = $(V8SO) $(LIBCURL_DEPS)
 
 if HAVE_ODBC
@@ -45,15 +59,29 @@ $(V8_DIR):
        $(GETLIB) $(V8).tar.bz2
         
 $(V8SO): $(V8_DIR)
-       cd $(V8_BUILDDIR) && $(MAKE) library=shared native
+       cd $(V8_BUILDDIR) && $(MAKE) library=shared $(V8_BUILDPARAMS) native
 
 $(CURLLA):
        @cd $(CURL_BUILDDIR) && $(MAKE)
        $(TOUCH_TARGET)
 
-install-exec-local: $(DESTDIR)$(libdir)/libv8.so
+# 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)
+       install_name_tool -change /usr/local/lib/libv8.$(V8_LIBEXT) $(DESTDIR)$(libdir)/libv8.$(V8_LIBEXT) .libs/mod_v8.so
+       install_name_tool -change /usr/local/lib/libicuuc.$(V8_LIBEXT) $(DESTDIR)$(libdir)/libicuuc.$(V8_LIBEXT) .libs/mod_v8.so
+       install_name_tool -change /usr/local/lib/libicui18n.$(V8_LIBEXT) $(DESTDIR)$(libdir)/libicui18n.$(V8_LIBEXT) .libs/mod_v8.so
+       install_name_tool -change /usr/local/lib/libv8.$(V8_LIBEXT) $(DESTDIR)$(libdir)/libv8.$(V8_LIBEXT) $(DESTDIR)$(libdir)/libv8.$(V8_LIBEXT)
+       install_name_tool -change /usr/local/lib/libicuuc.$(V8_LIBEXT) $(DESTDIR)$(libdir)/libicuuc.$(V8_LIBEXT) $(DESTDIR)$(libdir)/libv8.$(V8_LIBEXT)
+       install_name_tool -change /usr/local/lib/libicui18n.$(V8_LIBEXT) $(DESTDIR)$(libdir)/libicui18n.$(V8_LIBEXT) $(DESTDIR)$(libdir)/libv8.$(V8_LIBEXT)
+       install_name_tool -change /usr/local/lib/libicuuc.$(V8_LIBEXT) $(DESTDIR)$(libdir)/libicuuc.$(V8_LIBEXT) $(DESTDIR)$(libdir)/libicui18n.$(V8_LIBEXT)
+       install_name_tool -change /usr/local/lib/libicui18n.$(V8_LIBEXT) $(DESTDIR)$(libdir)/libicui18n.$(V8_LIBEXT) $(DESTDIR)$(libdir)/libicui18n.$(V8_LIBEXT)
+       install_name_tool -change /usr/local/lib/libicuuc.$(V8_LIBEXT) $(DESTDIR)$(libdir)/libicuuc.$(V8_LIBEXT) $(DESTDIR)$(libdir)/libicuuc.$(V8_LIBEXT)
+else
+install-exec-local: $(DESTDIR)$(libdir)/libv8.$(V8_LIBEXT)
+endif
 
-$(DESTDIR)$(libdir)/libv8.so: $(V8SO)
-       rm -f $(DESTDIR)$(libdir)/libv8.so && cp -a $(V8_DIR)/out/native/lib.target/libv8.so $(DESTDIR)$(libdir)/libv8.so
-       rm -f $(DESTDIR)$(libdir)/libicuuc.so && cp -a $(V8_DIR)/out/native/lib.target/libicuuc.so $(DESTDIR)$(libdir)/libicuuc.so
-       rm -f $(DESTDIR)$(libdir)/libicui18n.so && cp -a $(V8_DIR)/out/native/lib.target/libicui18n.so $(DESTDIR)$(libdir)/libicui18n.so
+$(DESTDIR)$(libdir)/libv8.$(V8_LIBEXT): $(V8SO)
+       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)