diff options
author | Jan-Marek Glogowski <glogow@fbihome.de> | 2020-07-18 03:56:14 +0200 |
---|---|---|
committer | Jan-Marek Glogowski <glogow@fbihome.de> | 2020-09-17 06:38:43 +0200 |
commit | dab9f9afe214fd5c5803e880c0e3d69f6fad3b14 (patch) | |
tree | 9ded031b514534604f6a26cc201858c524467938 /external | |
parent | 8babcdb9c995b6c0e20a16e237f5e9cadd1f83ce (diff) |
nss: fix Windows Arm64 build
Change-Id: I59834daebd6c9ccd1255be6f08e5f61b20ee06e4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102853
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
Diffstat (limited to 'external')
-rw-r--r-- | external/nss/ExternalProject_nss.mk | 6 | ||||
-rw-r--r-- | external/nss/UnpackedTarball_nss.mk | 1 | ||||
-rw-r--r-- | external/nss/nss-win-arm64.patch | 66 |
3 files changed, 73 insertions, 0 deletions
diff --git a/external/nss/ExternalProject_nss.mk b/external/nss/ExternalProject_nss.mk index 3679af52b614..8b14ce58153d 100644 --- a/external/nss/ExternalProject_nss.mk +++ b/external/nss/ExternalProject_nss.mk @@ -26,11 +26,17 @@ $(call gb_ExternalProject_get_state_target,nss,build): $(call gb_ExternalExecuta OPT_CODE_SIZE=0) \ OS_TARGET=WIN95 \ $(if $(filter X86_64,$(CPUNAME)),USE_64=1) \ + $(if $(filter ARM64,$(CPUNAME)),USE_64=1) \ LIB="$(ILIB)" \ XCFLAGS="$(SOLARINC)" \ + $(if $(CROSS_COMPILING),\ + CROSS_COMPILE=1 \ + $(if $(filter ARM64,$(CPUNAME)),CPU_ARCH=aarch64) \ + NSPR_CONFIGURE_OPTS="--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)") \ $(MAKE) nss_build_all RC="rc.exe $(SOLARINC)" \ NSINSTALL='$(call gb_ExternalExecutable_get_command,python) $(SRCDIR)/external/nss/nsinstall.py' \ NSS_DISABLE_GTESTS=1 \ + CCC="$(CXX)" \ ,nss) $(call gb_Trace_EndRange,nss,EXTERNAL) diff --git a/external/nss/UnpackedTarball_nss.mk b/external/nss/UnpackedTarball_nss.mk index 4aaa70fc2131..7921d36078bf 100644 --- a/external/nss/UnpackedTarball_nss.mk +++ b/external/nss/UnpackedTarball_nss.mk @@ -27,6 +27,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,nss,\ external/nss/nss-bz1646594.patch.1 \ external/nss/macos-dlopen.patch.0 \ external/nss/nss.getopt.patch.0 \ + external/nss/nss-win-arm64.patch \ $(if $(filter iOS,$(OS)), \ external/nss/nss-ios.patch) \ $(if $(filter ANDROID,$(OS)), \ diff --git a/external/nss/nss-win-arm64.patch b/external/nss/nss-win-arm64.patch new file mode 100644 index 000000000000..eda198f85afc --- /dev/null +++ b/external/nss/nss-win-arm64.patch @@ -0,0 +1,66 @@ +--- a/a/nspr/configure ++++ a/a/nspr/configure +@@ -821,6 +821,7 @@ + linux*) OS_ARCH=Linux ;; + solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;; + mingw*) OS_ARCH=WINNT CPU_ARCH=x86 ;; ++ cygwin*) OS_ARCH=WINNT ;; + darwin*) OS_ARCH=Darwin ;; + riscos*) OS_ARCH=RISCOS ;; + esac +--- a/a/nss/lib/freebl/Makefile.orig ++++ a/a/nss/lib/freebl/Makefile +@@ -119,8 +119,23 @@ + endif + endif + ifeq ($(CPU_ARCH),aarch64) +- DEFINES += -DUSE_HW_AES -DUSE_HW_SHA2 +- EXTRA_SRCS += aes-armv8.c gcm-aarch64.c sha256-armv8.c ++ ifdef CC_IS_CLANG ++ DEFINES += -DUSE_HW_AES -DUSE_HW_SHA2 ++ EXTRA_SRCS += aes-armv8.c gcm-aarch64.c sha256-armv8.c ++ else ifeq (1,$(CC_IS_GCC)) ++ # GCC versions older than 4.9 don't support ARM AES. The check ++ # is done in two parts, first allows "major.minor" == "4.9", ++ # and then rejects any major versions prior to 5. Note that ++ # there has been no GCC 4.10, as it is renamed to GCC 5. ++ ifneq (,$(filter 4.9,$(word 1,$(GCC_VERSION)).$(word 2,$(GCC_VERSION)))) ++ DEFINES += -DUSE_HW_AES -DUSE_HW_SHA2 ++ EXTRA_SRCS += aes-armv8.c gcm-aarch64.c sha256-armv8.c ++ endif ++ ifeq (,$(filter 0 1 2 3 4,$(word 1,$(GCC_VERSION)))) ++ DEFINES += -DUSE_HW_AES -DUSE_HW_SHA2 ++ EXTRA_SRCS += aes-armv8.c gcm-aarch64.c sha256-armv8.c ++ endif ++ endif + endif + ifeq ($(CPU_ARCH),arm) + ifndef NSS_DISABLE_ARM32_NEON +@@ -133,7 +146,10 @@ + DEFINES += -DUSE_HW_AES -DUSE_HW_SHA2 + EXTRA_SRCS += aes-armv8.c sha256-armv8.c + else ifeq (1,$(CC_IS_GCC)) +- # Old compiler doesn't support ARM AES. ++ # GCC versions older than 4.9 don't support ARM AES. The check ++ # is done in two parts, first allows "major.minor" == "4.9", ++ # and then rejects any major versions prior to 5. Note that ++ # there has been no GCC 4.10, as it is renamed to GCC 5. + ifneq (,$(filter 4.9,$(word 1,$(GCC_VERSION)).$(word 2,$(GCC_VERSION)))) + DEFINES += -DUSE_HW_AES -DUSE_HW_SHA2 + EXTRA_SRCS += aes-armv8.c sha256-armv8.c +@@ -198,6 +200,7 @@ + ifdef BUILD_OPT + OPTIMIZER += -Ox # maximum optimization for freebl + endif ++ifeq ($(CPU_ARCH),x86_64) + ASFILES = arcfour-amd64-masm.asm mpi_amd64_masm.asm mp_comba_amd64_masm.asm + DEFINES += -DNSS_BEVAND_ARCFOUR -DMPI_AMD64 -DMP_ASSEMBLY_MULTIPLY + DEFINES += -DNSS_USE_COMBA +@@ -215,6 +218,7 @@ + endif + endif + endif ++endif + + ifeq ($(OS_TARGET),IRIX) + ifeq ($(USE_N32),1) |