summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--external/nss/ExternalProject_nss.mk29
-rw-r--r--external/nss/UnpackedTarball_nss.mk2
-rw-r--r--external/nss/nss-android.patch161
-rw-r--r--external/nss/nss-android.patch.149
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)