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 <[email protected]>
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 <[email protected]>
    Tested-by: Christian Lohmaier <[email protected]>

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)
_______________________________________________
Libreoffice-commits mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to