summaryrefslogtreecommitdiffstats
path: root/external/nss
diff options
context:
space:
mode:
authorChristian Lohmaier <lohmaier+LibreOffice@googlemail.com>2017-09-07 18:10:36 +0200
committerChristian Lohmaier <lohmaier+LibreOffice@googlemail.com>2017-09-07 21:59:28 +0200
commit9a920bf9c96468c29505eab15f80d45e5f296597 (patch)
tree5f27399f3bc1c5787f0660269ce898474120b494 /external/nss
parentunotest.py: refactor confusing mess of openDoc functions (diff)
downloadcore-9a920bf9c96468c29505eab15f80d45e5f296597.tar.gz
core-9a920bf9c96468c29505eab15f80d45e5f296597.zip
fix nss build for android x86 and remove duplicated configure call
remove hardcoded arm flags for android, and instead of patching the sources, rather specify the desired values on commandline to override nss' makefile defaults where possible. Also since the build stage runs nspr configure by itself in a dedicated outdir, the separate configure step was removed (for all systems). Change-Id: I586c605615cc2d45b757497395a98c53dd1beb1d Reviewed-on: https://gerrit.libreoffice.org/42070 Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com> Tested-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
Diffstat (limited to 'external/nss')
-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)