[Libreoffice-commits] core.git: external/nss

Christian Lohmaier lohmaier+LibreOffice at googlemail.com
Thu Sep 7 19:59:48 UTC 2017


 external/nss/ExternalProject_nss.mk |   29 ++----
 external/nss/UnpackedTarball_nss.mk |    2 
 external/nss/nss-android.patch      |  161 ------------------------------------
 external/nss/nss-android.patch.1    |   49 ++++++++++
 4 files changed, 60 insertions(+), 181 deletions(-)

New commits:
commit 9a920bf9c96468c29505eab15f80d45e5f296597
Author: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>
Date:   Thu Sep 7 18:10:36 2017 +0200

    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 at googlemail.com>
    Tested-by: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>

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)


More information about the Libreoffice-commits mailing list