kumquat-buildroot/package/openblas/openblas.mk
Arnout Vandecappelle fb45f199e5 openblas: disable OpenMP
For powerpc (and powerpc only), the openblas build system will enable
USE_OPENMP when threads are enabled. But the toolchain wasn't
necessarily built with OpenMP support. So explicitly disable OpenMP -
for all architectures, not just powerpc, just to keep things simple.

We could have autodetected whether OpenMP is available at configure
time, but that would be more of a feature patch, it's up to upstream
to do that.

Fixes:
http://autobuild.buildroot.net/results/423b5e79cd4342d6c160ed478054b294b0826c6a
http://autobuild.buildroot.net/results/c9e554c8f880b49b3c9203725ac5e6565b7e5c6f

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-11-21 21:44:58 +01:00

73 lines
2.2 KiB
Makefile

################################################################################
#
# openblas
#
################################################################################
OPENBLAS_VERSION = f04af36ad0e85b64f12a7c38095383192cc52345
OPENBLAS_SITE = $(call github,xianyi,OpenBLAS,$(OPENBLAS_VERSION))
OPENBLAS_LICENSE = BSD-3c
OPENBLAS_LICENSE_FILES = LICENSE
OPENBLAS_INSTALL_STAGING = YES
# Initialise OpenBLAS make options to $(TARGET_CONFIGURE_OPTS)
OPENBLAS_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS)
# Enable cross-compiling
OPENBLAS_MAKE_OPTS += CROSS=1
# Set OpenBLAS target
OPENBLAS_MAKE_OPTS += TARGET=$(BR2_PACKAGE_OPENBLAS_TARGET)
# When Fortran is not available, only build the C version of BLAS
ifeq ($(BR2_TOOLCHAIN_HAS_FORTRAN),)
OPENBLAS_MAKE_OPTS += ONLY_CBLAS=1
endif
# Enable/Disable multi-threading (not for static-only since it uses dlfcn.h)
ifeq ($(BR2_TOOLCHAIN_HAS_THREADS):$(BR2_STATIC_LIBS),y:)
OPENBLAS_MAKE_OPTS += USE_THREAD=1
else
OPENBLAS_MAKE_OPTS += USE_THREAD=0
endif
# We don't know if OpenMP is available or not, so disable
OPENBLAS_MAKE_OPTS += USE_OPENMP=0
# Static-only/Shared-only toggle
ifeq ($(BR2_STATIC_LIBS),y)
OPENBLAS_MAKE_OPTS += NO_SHARED=1
else ifeq ($(BR2_SHARED_LIBS),y)
OPENBLAS_MAKE_OPTS += NO_STATIC=1
endif
# binutils version <= 2.23.2 has a bug
# (https://sourceware.org/bugzilla/show_bug.cgi?id=14887) where
# whitespaces in ARM register specifications such as [ r1, #12 ] or [
# r2 ] cause the assembler to reject the code. Since there are
# numerous instances of such cases in the code, we use sed rather than
# a patch. We simply replace [ foobar ] by [foobar] to work around the
# problem.
define OPENBLAS_FIXUP_ARM_ASSEMBLY
$(SED) 's%\[\s*%\[%;s%\s*\]%\]%' $(@D)/kernel/arm/*.S
endef
OPENBLAS_POST_PATCH_HOOKS += OPENBLAS_FIXUP_ARM_ASSEMBLY
define OPENBLAS_BUILD_CMDS
$(TARGET_MAKE_ENV) $(MAKE) $(OPENBLAS_MAKE_OPTS) \
-C $(@D)
endef
define OPENBLAS_INSTALL_STAGING_CMDS
$(TARGET_MAKE_ENV) $(MAKE) $(OPENBLAS_MAKE_OPTS) \
-C $(@D) install PREFIX=$(STAGING_DIR)/usr
endef
define OPENBLAS_INSTALL_TARGET_CMDS
$(TARGET_MAKE_ENV) $(MAKE) $(OPENBLAS_MAKE_OPTS) \
-C $(@D) install PREFIX=$(TARGET_DIR)/usr
endef
$(eval $(generic-package))