--- /dev/null
+# 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"
 
 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
 
 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) \