openblas.mk 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. ################################################################################
  2. #
  3. # openblas
  4. #
  5. ################################################################################
  6. OPENBLAS_VERSION = 0.3.9
  7. OPENBLAS_SITE = $(call github,xianyi,OpenBLAS,v$(OPENBLAS_VERSION))
  8. OPENBLAS_LICENSE = BSD-3-Clause
  9. OPENBLAS_LICENSE_FILES = LICENSE
  10. OPENBLAS_INSTALL_STAGING = YES
  11. # Initialise OpenBLAS make options to $(TARGET_CONFIGURE_OPTS)
  12. OPENBLAS_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS)
  13. # Enable cross-compiling
  14. OPENBLAS_MAKE_OPTS += CROSS=1
  15. # Set OpenBLAS target
  16. OPENBLAS_MAKE_OPTS += TARGET=$(BR2_PACKAGE_OPENBLAS_TARGET)
  17. # When Fortran is not available, only build the C version of BLAS
  18. ifeq ($(BR2_TOOLCHAIN_HAS_FORTRAN),)
  19. OPENBLAS_MAKE_OPTS += ONLY_CBLAS=1
  20. endif
  21. # Enable/Disable multi-threading (not for static-only since it uses dlfcn.h)
  22. ifeq ($(BR2_TOOLCHAIN_HAS_THREADS):$(BR2_STATIC_LIBS),y:)
  23. OPENBLAS_MAKE_OPTS += USE_THREAD=1
  24. else
  25. OPENBLAS_MAKE_OPTS += USE_THREAD=0
  26. endif
  27. # We don't know if OpenMP is available or not, so disable
  28. OPENBLAS_MAKE_OPTS += USE_OPENMP=0
  29. # Static-only/Shared-only toggle
  30. ifeq ($(BR2_STATIC_LIBS),y)
  31. OPENBLAS_MAKE_OPTS += NO_SHARED=1
  32. else ifeq ($(BR2_SHARED_LIBS),y)
  33. OPENBLAS_MAKE_OPTS += NO_STATIC=1
  34. endif
  35. # binutils version <= 2.23.2 has a bug
  36. # (https://sourceware.org/bugzilla/show_bug.cgi?id=14887) where
  37. # whitespaces in ARM register specifications such as [ r1, #12 ] or [
  38. # r2 ] cause the assembler to reject the code. Since there are
  39. # numerous instances of such cases in the code, we use sed rather than
  40. # a patch. We simply replace [ foobar ] by [foobar] to work around the
  41. # problem.
  42. define OPENBLAS_FIXUP_ARM_ASSEMBLY
  43. $(SED) 's%\[\s*%\[%;s%\s*\]%\]%' $(@D)/kernel/arm/*.S
  44. endef
  45. OPENBLAS_POST_PATCH_HOOKS += OPENBLAS_FIXUP_ARM_ASSEMBLY
  46. define OPENBLAS_BUILD_CMDS
  47. $(TARGET_MAKE_ENV) $(MAKE) $(OPENBLAS_MAKE_OPTS) \
  48. -C $(@D)
  49. endef
  50. define OPENBLAS_INSTALL_STAGING_CMDS
  51. $(TARGET_MAKE_ENV) $(MAKE) $(OPENBLAS_MAKE_OPTS) \
  52. -C $(@D) install PREFIX=$(STAGING_DIR)/usr
  53. endef
  54. define OPENBLAS_INSTALL_TARGET_CMDS
  55. $(TARGET_MAKE_ENV) $(MAKE) $(OPENBLAS_MAKE_OPTS) \
  56. -C $(@D) install PREFIX=$(TARGET_DIR)/usr
  57. endef
  58. $(eval $(generic-package))