diff options
-rw-r--r-- | external/nss/ExternalProject_nss.mk | 29 | ||||
-rw-r--r-- | external/nss/UnpackedTarball_nss.mk | 2 | ||||
-rw-r--r-- | external/nss/nss-android.patch | 161 | ||||
-rw-r--r-- | external/nss/nss-android.patch.1 | 49 |
4 files changed, 60 insertions, 181 deletions
diff --git a/external/nss/ExternalProject_nss.mk b/external/nss/ExternalProject_nss.mk index 0a0e89006352..8f16c697dc1f 100644 --- a/external/nss/ExternalProject_nss.mk +++ b/external/nss/ExternalProject_nss.mk @@ -9,25 +9,14 @@ $(eval $(call gb_ExternalProject_ExternalProject,nss)) +# nss build calls configure for nspr itself - if for some reason the configure step should be split out, +# make sure to create config.status (aka run configure) in dir specified with OBJDIR_NAME (nspr/out) $(eval $(call gb_ExternalProject_register_targets,nss,\ - configure \ build \ )) -$(call gb_ExternalProject_get_state_target,nss,configure): - $(call gb_ExternalProject_run,configure,\ - $(if $(filter MSC,$(COM)),INCLUDE="$(COMPATH)/include" LIB="$(ILIB)") \ - $(if $(CROSS_COMPILING),\ - NSINSTALL="$(call gb_ExternalExecutable_get_command,python) $(SRCDIR)/external/nss/nsinstall.py") \ - nspr/configure --includedir=$(call gb_UnpackedTarball_get_dir,nss)/mozilla/dist/out/include \ - $(if $(CROSS_COMPILING),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \ - $(if $(filter ANDROID,$(OS)),--build=$(BUILD_PLATFORM) --host="arm-linux-androidebi" --with-android-ndk=$(ANDROID_NDK_HOME) --with-android-toolchain=$(ANDROID_CLANG_TOOLCHAIN) --with-android-platform=$(ANDROID_PLATFORM_DIRECTORY)) \ - $(if $(filter MSC-X86_64,$(COM)-$(CPUNAME)),--enable-64bit) \ - $(if $(filter MSC-INTEL,$(COM)-$(CPUNAME)),--host=i686-pc-cygwin) \ - ,,nss_configure.log) - ifeq ($(OS),WNT) -$(call gb_ExternalProject_get_state_target,nss,build): $(call gb_ExternalProject_get_state_target,nss,configure) $(call gb_ExternalExecutable_get_dependencies,python) +$(call gb_ExternalProject_get_state_target,nss,build): $(call gb_ExternalExecutable_get_dependencies,python) $(call gb_ExternalProject_run,build,\ $(if $(MSVC_USE_DEBUG_RUNTIME),USE_DEBUG_RTL=1,BUILD_OPT=1) \ MOZ_MSVCVERSION=9 OS_TARGET=WIN95 \ @@ -39,7 +28,9 @@ $(call gb_ExternalProject_get_state_target,nss,build): $(call gb_ExternalProject ,nss) else # OS!=WNT -$(call gb_ExternalProject_get_state_target,nss,build): $(call gb_ExternalProject_get_state_target,nss,configure) $(call gb_ExternalExecutable_get_dependencies,python) +# make sure to specify NSPR_CONFIGURE_OPTS as env (before make command), so nss can append it's own defaults +# OTOH specify e.g. CC and NSINSTALL as arguments (after make command), so they will overrule nss makefile values +$(call gb_ExternalProject_get_state_target,nss,build): $(call gb_ExternalExecutable_get_dependencies,python) $(call gb_ExternalProject_run,build,\ $(if $(filter FREEBSD LINUX MACOSX,$(OS)),$(if $(filter X86_64,$(CPUNAME)),USE_64=1)) \ $(if $(filter IOS,$(OS)),\ @@ -52,14 +43,14 @@ $(call gb_ExternalProject_get_state_target,nss,build): $(call gb_ExternalProject $(if $(CROSS_COMPILING),\ $(if $(filter MACOSXPOWERPC,$(OS)$(CPUNAME)),CPU_ARCH=ppc) \ $(if $(filter IOS-ARM,$(OS)-$(CPUNAME)),CPU_ARCH=arm) \ - NSINSTALL="$(call gb_ExternalExecutable_get_command,python) $(SRCDIR)/external/nss/nsinstall.py") \ + NSPR_CONFIGURE_OPTS="--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)") \ NSDISTMODE=copy \ $(MAKE) -j1 AR="$(AR)" \ RANLIB="$(RANLIB)" \ NMEDIT="$(NM)edit" \ - CCC="$(CXX)" \ - $(if $(CROSS_COMPILING),NSPR_CONFIGURE_OPTS="--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)") \ - $(if $(filter ANDROID,$(OS)),OS_TARGET=Android ANDROID_NDK=$(ANDROID_NDK_HOME) ANDROID_TOOLCHAIN_VERSION=$(ANDROID_GCC_TOOLCHAIN_VERSION) NSPR_CONFIGURE_OPTS="--build=$(BUILD_PLATFORM) --host=arm-linux-androidebi --with-android-ndk=$(ANDROID_NDK_HOME) --with-android-toolchain=$(ANDROID_CLANG_TOOLCHAIN) --with-android-platform=$(ANDROID_PLATFORM_DIRECTORY)") \ + CC="$(CC)" CCC="$(CXX)" \ + $(if $(CROSS_COMPILING),NSINSTALL="$(call gb_ExternalExecutable_get_command,python) $(SRCDIR)/external/nss/nsinstall.py") \ + $(if $(filter ANDROID,$(OS)),OS_TARGET=Android OS_TARGET_RELEASE=14 ARCHFLAG="" DEFAULT_COMPILER=clang ANDROID_NDK=$(ANDROID_NDK_HOME) ANDROID_TOOLCHAIN_VERSION=$(ANDROID_GCC_TOOLCHAIN_VERSION)) \ nss_build_all \ && rm -f $(call gb_UnpackedTarball_get_dir,nss)/dist/out/lib/*.a \ $(if $(filter MACOSX,$(OS)),\ diff --git a/external/nss/UnpackedTarball_nss.mk b/external/nss/UnpackedTarball_nss.mk index 7858915ae06e..98cfe73ab4aa 100644 --- a/external/nss/UnpackedTarball_nss.mk +++ b/external/nss/UnpackedTarball_nss.mk @@ -33,7 +33,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,nss,\ $(if $(filter WNT,$(OS)), \ external/nss/nss.utf8bom.patch.1) \ $(if $(filter ANDROID,$(OS)), \ - external/nss/nss-android.patch) \ + external/nss/nss-android.patch.1) \ )) ifeq ($(COM_IS_CLANG),TRUE) diff --git a/external/nss/nss-android.patch b/external/nss/nss-android.patch deleted file mode 100644 index 609c046b3fe2..000000000000 --- a/external/nss/nss-android.patch +++ /dev/null @@ -1,161 +0,0 @@ ---- a/nss.org/nspr/config/config.mk 2017-08-14 18:58:33.560407294 +0530 -+++ b/nss/nspr/config/config.mk 2017-08-14 18:59:34.319025410 +0530 -@@ -42,6 +42,13 @@ - - LDFLAGS = $(OS_LDFLAGS) - -+# When targeting Android, add HOST_CFLAGS to CC flags -+# It is mandatory when using Clang toolchain in NDK -+# See autoconf.mk in nspr/out/config/ for the values. -+ifeq ($(OS_TARGET),Android) -+CC += $(OS_CFLAGS) -+endif -+ - # Enable profile-guided optimization - ifndef NO_PROFILE_GUIDED_OPTIMIZE - ifdef MOZ_PROFILE_GENERATE ---- a/nss.org/nspr/config/Makefile.in 2017-08-14 18:58:33.560407294 +0530 -+++ b/nss/nspr/config/Makefile.in 2017-08-14 18:59:34.319025410 +0530 -@@ -76,6 +76,7 @@ - - include $(topsrcdir)/config/rules.mk - -+ifneq ($(OS_TARGET),Android) - PROGS = $(OBJDIR)/now$(PROG_SUFFIX) - - ifeq (,$(CROSS_COMPILE)$(filter-out OS2 WINNT,$(OS_ARCH))) -@@ -88,6 +89,7 @@ - TARGETS = $(PROGS) $(PLSRCS:.pl=) - endif - endif -+endif - - OUTOPTION = -o # end of the line - ifeq (,$(filter-out WINNT WIN95 WINCE,$(OS_TARGET))) ---- a/nss.org/nspr/configure 2017-08-14 18:58:33.544407658 +0530 -+++ b/nss/nspr/configure 2017-08-14 18:59:34.319025410 +0530 -@@ -2509,7 +2509,9 @@ - OBJDIR='$(OBJDIR_NAME)' - OBJDIR_NAME=. - OBJDIR_SUFFIX=OBJ --NSINSTALL='$(MOD_DEPTH)/config/$(OBJDIR_NAME)/nsinstall' -+if [ -z "$NSINSTALL" ]; then -+ NSINSTALL='$(MOD_DEPTH)/config/$(OBJDIR_NAME)/nsinstall' -+fi - NOSUCHFILE=/no-such-file - LIBNSPR='-L$(dist_libdir) -lnspr$(MOD_MAJOR_VERSION)' - LIBPLC='-L$(dist_libdir) -lplc$(MOD_MAJOR_VERSION)' -@@ -2643,7 +2645,7 @@ - - case "$target" in - arm-linux*-android*|*-linuxandroid*) -- android_tool_prefix="arm-linux-androideabi" -+ android_tool_prefix="clang" - ;; - i?86-*android*) - android_tool_prefix="i686-linux-android" -@@ -2737,18 +2739,19 @@ - esac - - AS="$android_toolchain"/bin/"$android_tool_prefix"-as -- CC="$android_toolchain"/bin/"$android_tool_prefix"-gcc -- CXX="$android_toolchain"/bin/"$android_tool_prefix"-g++ -- CPP="$android_toolchain"/bin/"$android_tool_prefix"-cpp -+ CC="$android_toolchain"/bin/"$android_tool_prefix" -+ CXX="$android_toolchain"/bin/"$android_tool_prefix"++ -+ CPP="$CC" -E - LD="$android_toolchain"/bin/"$android_tool_prefix"-ld - AR="$android_toolchain"/bin/"$android_tool_prefix"-ar - RANLIB="$android_toolchain"/bin/"$android_tool_prefix"-ranlib - STRIP="$android_toolchain"/bin/"$android_tool_prefix"-strip - - CPPFLAGS="-I$android_platform/usr/include $CPPFLAGS" -- CFLAGS="-mandroid -I$android_platform/usr/include -fno-short-enums -fno-exceptions $CFLAGS" -- CXXFLAGS="-mandroid -I$android_platform/usr/include -fpic -fno-short-enums -fno-exceptions $CXXFLAGS" -- LDFLAGS="-mandroid -L$android_platform/usr/lib -Wl,-rpath-link=$android_platform/usr/lib --sysroot=$android_platform $LDFLAGS" -+ CFLAGS="-gcc-toolchain "$android_ndk"/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64" -+ CFLAGS="$CFLAGS -target armv7-none-linux-androideabi" -+ CFLAGS="$CFLAGS --sysroot=$android_platform" -+ CXXFLAGS="-I$android_platform/usr/include -fpic -fno-short-enums -fno-exceptions $CXXFLAGS" - - $as_echo "#define ANDROID 1" >>confdefs.h - -@@ -5954,7 +5957,7 @@ - CFLAGS="$_SAVE_CFLAGS" - fi - --all_flags=`echo $arch_flag $thumb_flag $thumb_interwork_flag $fpu_flag $float_abi_flag $soft_float_flag $align_flag` -+all_flags=`echo -target armv7-none-linux-androideabi $arch_flag $thumb_flag $thumb_interwork_flag $fpu_flag $float_abi_flag $soft_float_flag $align_flag` - if test -n "$all_flags"; then - _SAVE_CFLAGS="$CFLAGS" - CFLAGS="$all_flags" ---- a/nss.org/nss/coreconf/arch.mk 2017-08-14 18:58:33.596406475 +0530 -+++ b/nss/nss/coreconf/arch.mk 2017-08-14 18:59:34.319025410 +0530 -@@ -237,7 +237,7 @@ - OS_TEST := arm - OS_ARCH = Android - ifndef OS_TARGET_RELEASE -- OS_TARGET_RELEASE := 8 -+ OS_TARGET_RELEASE := 15 - endif - endif - ---- a/nss.org/nss/coreconf/Linux.mk 2017-08-14 18:58:33.596406475 +0530 -+++ b/nss/nss/coreconf/Linux.mk 2017-08-14 19:00:20.201982027 +0530 -@@ -33,16 +33,17 @@ - ANDROID_TARGET=$(ANDROID_PREFIX)-$(ANDROID_TOOLCHAIN_VERSION) - # should autodetect which linux we are on, currently android only - # supports linux-x86 prebuilts -- ANDROID_TOOLCHAIN=$(ANDROID_NDK)/toolchains/$(ANDROID_TARGET)/prebuilt/linux-x86 -+ ANDROID_GCC_TOOLCHAIN = $(ANDROID_NDK)/toolchains/$(ANDROID_TARGET)/prebuilt/linux-x86_64 -+ ANDROID_TOOLCHAIN=$(ANDROID_NDK)/toolchains/llvm/prebuilt/linux-x86_64 - ANDROID_SYSROOT=$(ANDROID_NDK)/platforms/android-$(OS_TARGET_RELEASE)/arch-$(OS_TEST) -- ANDROID_CC=$(ANDROID_TOOLCHAIN)/bin/$(ANDROID_PREFIX)-gcc -- ANDROID_CCC=$(ANDROID_TOOLCHAIN)/bin/$(ANDROID_PREFIX)-g++ -+ ANDROID_CC=$(ANDROID_TOOLCHAIN)/bin/clang -+ ANDROID_CCC=$(ANDROID_TOOLCHAIN)/bin/clang++ - NSS_DISABLE_GTESTS=1 - # internal tools need to be built with the native compiler - ifndef INTERNAL_TOOLS -- CC = $(ANDROID_CC) --sysroot=$(ANDROID_SYSROOT) -+ CC = $(ANDROID_CC) --gcc-toolchain=$(ANDROID_GCC_TOOLCHAIN) -target armv7-none-linux-androideabi --sysroot=$(ANDROID_SYSROOT) - CCC = $(ANDROID_CCC) --sysroot=$(ANDROID_SYSROOT) -- DEFAULT_COMPILER=$(ANDROID_PREFIX)-gcc -+ DEFAULT_COMPILER=clang - ARCHFLAG = --sysroot=$(ANDROID_SYSROOT) - DEFINES += -DNO_SYSINFO -DNO_FORK_CHECK -DANDROID - CROSS_COMPILE = 1 ---- a/nss.org/nss/coreconf/Makefile 2017-08-14 18:58:33.596406475 +0530 -+++ b/nss/nss/coreconf/Makefile 2017-08-14 18:59:34.319025410 +0530 -@@ -7,7 +7,9 @@ - - MODULE = coreconf - -+ifneq ($(OS_TARGET),Android) - DIRS = nsinstall -+endif - - include $(DEPTH)/coreconf/config.mk - include $(DEPTH)/coreconf/rules.mk ---- a/nss.org/nss/coreconf/UNIX.mk 2017-08-14 18:58:33.596406475 +0530 -+++ b/nss/nss/coreconf/UNIX.mk 2017-08-14 18:59:34.319025410 +0530 -@@ -24,7 +24,6 @@ - NSINSTALL = $(BUILD_TREE)/nss/nsinstall - else - NSINSTALL_DIR = $(CORE_DEPTH)/coreconf/nsinstall --NSINSTALL = $(NSINSTALL_DIR)/$(OBJDIR_NAME)/nsinstall - endif - - MKDEPEND_DIR = $(CORE_DEPTH)/coreconf/mkdepend ---- a/nss.org/nss/coreconf/Werror.mk 2017-08-14 18:58:33.596406475 +0530 -+++ b/nss/nss/coreconf/Werror.mk 2017-08-14 18:59:34.319025410 +0530 -@@ -52,9 +52,6 @@ - - WARNING_CFLAGS = -Wall - ifdef CC_IS_CLANG -- # -Qunused-arguments : clang objects to arguments that it doesn't understand -- # and fixing this would require rearchitecture -- WARNING_CFLAGS += -Qunused-arguments - # -Wno-parentheses-equality : because clang warns about macro expansions - WARNING_CFLAGS += $(call disable_warning,parentheses-equality) - ifdef BUILD_OPT diff --git a/external/nss/nss-android.patch.1 b/external/nss/nss-android.patch.1 new file mode 100644 index 000000000000..0e91502bdfd0 --- /dev/null +++ b/external/nss/nss-android.patch.1 @@ -0,0 +1,49 @@ +diff -ur nss.org/nspr/build/autoconf/config.sub nss/nspr/build/autoconf/config.sub +--- nss.org/nspr/build/autoconf/config.sub 2017-09-07 15:29:45.031246453 +0200 ++++ nss/nspr/build/autoconf/config.sub 2017-09-07 15:32:13.087235423 +0200 +@@ -111,6 +111,9 @@ + exit 1;; + esac + ++if test $1 = "arm-unknown-linux-androideabi"; then echo $1; exit; fi ++if test $1 = "i686-pc-linux-android"; then echo $1; exit; fi ++ + # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). + # Here we must recognize all the valid KERNEL-OS combinations. + maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +diff -ur nss.org/nspr/configure nss/nspr/configure +--- nss.org/nspr/configure 2017-09-07 15:29:45.018246359 +0200 ++++ nss/nspr/configure 2017-09-07 15:31:47.604075663 +0200 +@@ -2737,18 +2739,15 @@ + esac + + AS="$android_toolchain"/bin/"$android_tool_prefix"-as +- CC="$android_toolchain"/bin/"$android_tool_prefix"-gcc +- CXX="$android_toolchain"/bin/"$android_tool_prefix"-g++ +- CPP="$android_toolchain"/bin/"$android_tool_prefix"-cpp ++ CC="$CC" ++ CXX="$CXX" ++ CPP="$CC" -E + LD="$android_toolchain"/bin/"$android_tool_prefix"-ld + AR="$android_toolchain"/bin/"$android_tool_prefix"-ar + RANLIB="$android_toolchain"/bin/"$android_tool_prefix"-ranlib + STRIP="$android_toolchain"/bin/"$android_tool_prefix"-strip + + CPPFLAGS="-I$android_platform/usr/include $CPPFLAGS" +- CFLAGS="-mandroid -I$android_platform/usr/include -fno-short-enums -fno-exceptions $CFLAGS" +- CXXFLAGS="-mandroid -I$android_platform/usr/include -fpic -fno-short-enums -fno-exceptions $CXXFLAGS" +- LDFLAGS="-mandroid -L$android_platform/usr/lib -Wl,-rpath-link=$android_platform/usr/lib --sysroot=$android_platform $LDFLAGS" + + $as_echo "#define ANDROID 1" >>confdefs.h + +diff -ur nss.org/nss/Makefile nss/nss/Makefile +--- nss.org/nss/Makefile 2017-09-07 15:29:44.933245745 +0200 ++++ nss/nss/Makefile 2017-09-07 15:32:04.347181076 +0200 +@@ -62,6 +62,7 @@ + ifeq ($(OS_TARGET),Android) + NSPR_CONFIGURE_OPTS += --with-android-ndk=$(ANDROID_NDK) \ + --target=$(ANDROID_PREFIX) \ ++ --with-arch=toolchain-default \ + --with-android-version=$(OS_TARGET_RELEASE) \ + --with-android-toolchain=$(ANDROID_TOOLCHAIN) \ + --with-android-platform=$(ANDROID_SYSROOT) |