package/libopenssl: move target arch selection to Config.in
authorThomas Petazzoni <thomas.petazzoni@bootlin.com>
Sun, 27 Oct 2019 10:24:17 +0000 (11:24 +0100)
committerYann E. MORIN <yann.morin.1998@free.fr>
Mon, 30 Dec 2019 12:41:54 +0000 (13:41 +0100)
The logic to select the proper OpenSSL target arch in libopenssl.mk is
not easy to read, so let's move it to Config.in where we have some
nice constructs for that kind of value selection.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
package/libopenssl/Config.in [new file with mode: 0644]
package/libopenssl/libopenssl.mk
package/openssl/Config.in

diff --git a/package/libopenssl/Config.in b/package/libopenssl/Config.in
new file mode 100644 (file)
index 0000000..732da5b
--- /dev/null
@@ -0,0 +1,29 @@
+# 4xx PowerPC cores seem to have trouble with openssl's ASM
+# optimizations
+config BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH_LINUX_PPC
+       bool
+       default y if BR2_powerpc
+       depends on !BR2_powerpc_401
+       depends on !BR2_powerpc_403
+       depends on !BR2_powerpc_405
+       depends on !BR2_powerpc_405fp
+       depends on !BR2_powerpc_440
+       depends on !BR2_powerpc_440fp
+
+config BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH
+       string
+       # Use "gcc" minimalistic target to disable DSO
+       # no-asm is needed with generic architectures such as gcc, see
+       # https://github.com/openssl/openssl/issues/9839
+       default "gcc no-asm"                    if BR2_STATIC_LIBS
+       # Doesn't work for thumb-only (Cortex-M?)
+       default "linux-armv4"                   if BR2_ARM_CPU_HAS_ARM
+       default "linux-aarch64"                 if BR2_aarch64
+       default "linux-ppc"                     if BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH_LINUX_PPC
+       default "linux-ppc64"                   if BR2_powerpc64
+       default "linux-ppc64le"                 if BR2_powerpc64le
+       default "linux-x86_64"                  if BR2_x86_64
+       # no-asm is needed with generic architectures such as
+       # linux-generic32, see
+       # https://github.com/openssl/openssl/issues/9839
+       default "linux-generic32 no-asm"
index a1bbf9a900a1d7e330b786fd5f8e29cd6eeeeb73..da4ae291c0f04f53a68216db3050056dadfa722a 100644 (file)
@@ -12,9 +12,7 @@ LIBOPENSSL_LICENSE_FILES = LICENSE
 LIBOPENSSL_INSTALL_STAGING = YES
 LIBOPENSSL_DEPENDENCIES = zlib
 HOST_LIBOPENSSL_DEPENDENCIES = host-zlib
-# no-asm is needed with generic architectures such as linux-generic32, see
-# https://github.com/openssl/openssl/issues/9839
-LIBOPENSSL_TARGET_ARCH = linux-generic32 no-asm
+LIBOPENSSL_TARGET_ARCH = $(call qstrip,$(BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH))
 LIBOPENSSL_CFLAGS = $(TARGET_CFLAGS)
 LIBOPENSSL_PROVIDES = openssl
 
@@ -55,37 +53,6 @@ ifeq ($(BR2_TOOLCHAIN_HAS_UCONTEXT),)
 LIBOPENSSL_CFLAGS += -DOPENSSL_NO_ASYNC
 endif
 
-ifeq ($(BR2_STATIC_LIBS),y)
-# Use "gcc" minimalistic target to disable DSO
-# no-asm is needed with generic architectures such as gcc, see
-# https://github.com/openssl/openssl/issues/9839
-LIBOPENSSL_TARGET_ARCH = gcc no-asm
-else
-# Some architectures are optimized in OpenSSL
-# Doesn't work for thumb-only (Cortex-M?)
-ifeq ($(BR2_ARM_CPU_HAS_ARM),y)
-LIBOPENSSL_TARGET_ARCH = linux-armv4
-endif
-ifeq ($(ARCH),aarch64)
-LIBOPENSSL_TARGET_ARCH = linux-aarch64
-endif
-ifeq ($(ARCH),powerpc)
-# 4xx cores seem to have trouble with openssl's ASM optimizations
-ifeq ($(BR2_powerpc_401)$(BR2_powerpc_403)$(BR2_powerpc_405)$(BR2_powerpc_405fp)$(BR2_powerpc_440)$(BR2_powerpc_440fp),)
-LIBOPENSSL_TARGET_ARCH = linux-ppc
-endif
-endif
-ifeq ($(ARCH),powerpc64)
-LIBOPENSSL_TARGET_ARCH = linux-ppc64
-endif
-ifeq ($(ARCH),powerpc64le)
-LIBOPENSSL_TARGET_ARCH = linux-ppc64le
-endif
-ifeq ($(ARCH),x86_64)
-LIBOPENSSL_TARGET_ARCH = linux-x86_64
-endif
-endif
-
 define HOST_LIBOPENSSL_CONFIGURE_CMDS
        (cd $(@D); \
                $(HOST_CONFIGURE_OPTS) \
index a64660bea373b35316b0efc89b309b3e0f019e07..4d37a3ecf9b09f4374a7f9cc581d1274f9b671cd 100644 (file)
@@ -43,6 +43,8 @@ config BR2_PACKAGE_LIBOPENSSL_ENGINES
        help
          Install additional encryption engine libraries.
 
+source "package/libopenssl/Config.in"
+
 endif
 
 config BR2_PACKAGE_LIBRESSL