1*4882a593Smuzhiyunconfig BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET 2*4882a593Smuzhiyun string 3*4882a593Smuzhiyun default "P2" if BR2_x86_pentium2 4*4882a593Smuzhiyun default "KATMAI" if BR2_x86_pentium3 5*4882a593Smuzhiyun default "NORTHWOOD" if BR2_x86_pentium4 6*4882a593Smuzhiyun default "PRESCOTT" if BR2_x86_prescott || BR2_x86_nocona 7*4882a593Smuzhiyun default "BANIAS" if BR2_x86_pentium_m 8*4882a593Smuzhiyun default "CORE2" if BR2_x86_core2 9*4882a593Smuzhiyun default "NEHALEM" if BR2_x86_corei7 || BR2_x86_silvermont || BR2_x86_westmere 10*4882a593Smuzhiyun default "SANDYBRIDGE" if BR2_x86_corei7_avx 11*4882a593Smuzhiyun default "HASWELL" if BR2_x86_core_avx2 12*4882a593Smuzhiyun default "ATOM" if BR2_x86_atom 13*4882a593Smuzhiyun default "ATHLON" if BR2_x86_athlon || BR2_x86_athlon_4 14*4882a593Smuzhiyun default "OPTERON" if BR2_x86_opteron 15*4882a593Smuzhiyun default "OPTERON_SSE3" if BR2_x86_opteron_sse3 16*4882a593Smuzhiyun default "BARCELONA" if BR2_x86_barcelona 17*4882a593Smuzhiyun default "BOBCAT" if BR2_x86_jaguar 18*4882a593Smuzhiyun default "STEAMROLLER" if BR2_x86_steamroller 19*4882a593Smuzhiyun default "VIAC3" if BR2_x86_c3 || BR2_x86_c32 20*4882a593Smuzhiyun default "POWER4" if BR2_powerpc_power4 21*4882a593Smuzhiyun default "POWER5" if BR2_powerpc_power5 22*4882a593Smuzhiyun default "POWER6" if BR2_powerpc_power6 23*4882a593Smuzhiyun default "POWER7" if BR2_powerpc_power7 24*4882a593Smuzhiyun default "POWER8" if BR2_powerpc_power8 25*4882a593Smuzhiyun default "PPCG4" if BR2_powerpc_7400 || BR2_powerpc_7450 26*4882a593Smuzhiyun default "PPC970" if BR2_powerpc_970 27*4882a593Smuzhiyun default "PPC440" if BR2_powerpc_440 28*4882a593Smuzhiyun default "PPC440FP2" if BR2_powerpc_440fp 29*4882a593Smuzhiyun # P5600 is built with MSA support which is only available in Codescape toolchains 30*4882a593Smuzhiyun default "P5600" if BR2_mips_p5600 && BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS 31*4882a593Smuzhiyun default "SICORTEX" if BR2_MIPS_CPU_MIPS64 32*4882a593Smuzhiyun # I6400 is built with MSA support which is only available in Codescape toolchains 33*4882a593Smuzhiyun default "I6400" if BR2_mips_i6400 && BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS 34*4882a593Smuzhiyun # OpenBLAS assumes SPARC=Sparc v9 35*4882a593Smuzhiyun default "SPARC" if BR2_sparc_v9 36*4882a593Smuzhiyun # Cortex-A15 always have a VFPv4 37*4882a593Smuzhiyun default "CORTEXA15" if (BR2_cortex_a15 && BR2_ARM_EABIHF) 38*4882a593Smuzhiyun # Cortex-A9 have an optional VFPv3, so we need to make sure it 39*4882a593Smuzhiyun # is available 40*4882a593Smuzhiyun default "CORTEXA9" if (BR2_cortex_a9 && BR2_ARM_EABIHF && \ 41*4882a593Smuzhiyun BR2_ARM_CPU_HAS_VFPV3) 42*4882a593Smuzhiyun default "ARMV5" if BR2_ARM_CPU_ARMV5 43*4882a593Smuzhiyun # On ARMv6, OpenBLAS assumes that a VFP is available, and 44*4882a593Smuzhiyun # EABIhf is used 45*4882a593Smuzhiyun default "ARMV6" if (BR2_ARM_CPU_ARMV6 && BR2_ARM_EABIHF && \ 46*4882a593Smuzhiyun BR2_ARM_CPU_HAS_VFPV2) 47*4882a593Smuzhiyun # On ARMv7, OpenBLAS assumes that a full VFPv3+ is available 48*4882a593Smuzhiyun # (and not the more limited D16 variant), and that EABIhf is 49*4882a593Smuzhiyun # used. 50*4882a593Smuzhiyun default "ARMV7" if (BR2_ARM_CPU_ARMV7A && BR2_ARM_EABIHF && \ 51*4882a593Smuzhiyun BR2_ARM_CPU_HAS_VFPV3) 52*4882a593Smuzhiyun default "ARMV8" if BR2_aarch64 || BR2_aarch64_be 53*4882a593Smuzhiyun help 54*4882a593Smuzhiyun OpenBLAS target CPU. See TargetList.txt in the source tree for 55*4882a593Smuzhiyun the possible target strings. A possible value is set 56*4882a593Smuzhiyun automatically based on your Target Architecture Variant. 57*4882a593Smuzhiyun 58*4882a593Smuzhiyunconfig BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS 59*4882a593Smuzhiyun bool 60*4882a593Smuzhiyun default y if BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET != "" 61*4882a593Smuzhiyun 62*4882a593Smuzhiyunconfig BR2_PACKAGE_OPENBLAS 63*4882a593Smuzhiyun bool "openblas" 64*4882a593Smuzhiyun depends on BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS 65*4882a593Smuzhiyun help 66*4882a593Smuzhiyun An optimized BLAS library based on GotoBLAS2 1.13 BSD version. 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun https://www.openblas.net/ 69*4882a593Smuzhiyun 70*4882a593Smuzhiyunif BR2_PACKAGE_OPENBLAS 71*4882a593Smuzhiyun 72*4882a593Smuzhiyunconfig BR2_PACKAGE_OPENBLAS_TARGET 73*4882a593Smuzhiyun string "OpenBLAS target CPU" 74*4882a593Smuzhiyun default BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET 75*4882a593Smuzhiyun 76*4882a593Smuzhiyunconfig BR2_PACKAGE_OPENBLAS_USE_THREAD 77*4882a593Smuzhiyun bool "use multithreading" 78*4882a593Smuzhiyun default y 79*4882a593Smuzhiyun depends on BR2_TOOLCHAIN_HAS_THREADS 80*4882a593Smuzhiyun depends on !BR2_STATIC_LIBS 81*4882a593Smuzhiyun help 82*4882a593Smuzhiyun Tell OpenBLAS to use multithreading, by passing USE_THREAD=1. 83*4882a593Smuzhiyun 84*4882a593Smuzhiyunconfig BR2_PACKAGE_OPENBLAS_USE_LOCKING 85*4882a593Smuzhiyun bool "use locking" 86*4882a593Smuzhiyun default y 87*4882a593Smuzhiyun depends on BR2_TOOLCHAIN_HAS_THREADS 88*4882a593Smuzhiyun depends on !BR2_PACKAGE_OPENBLAS_USE_THREAD 89*4882a593Smuzhiyun help 90*4882a593Smuzhiyun Tell OpenBLAS to use locking, by passing USE_LOCKING=1. 91*4882a593Smuzhiyun Locking is implicitly enabled when USE_THREAD=1. 92*4882a593Smuzhiyun However, if USE_THREAD=0 (i.e. OpenBLAS itself will run in 93*4882a593Smuzhiyun single-threaded mode) but an application makes OpenBLAS 94*4882a593Smuzhiyun function calls from multiple threads, then locking is 95*4882a593Smuzhiyun mandatory for correct operation. 96*4882a593Smuzhiyun 97*4882a593Smuzhiyunendif 98