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