config BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET
	string
	default "P2"           if BR2_x86_pentium2
	default "KATMAI"       if BR2_x86_pentium3
	default "NORTHWOOD"    if BR2_x86_pentium4
	default "PRESCOTT"     if BR2_x86_prescott
	default "BANIAS"       if BR2_x86_pentium_m
	default "CORE2"        if BR2_x86_core2
	default "NEHALEM"      if BR2_x86_corei7
	default "SANDYBRIDGE"  if BR2_x86_corei7_avx
	default "HASWELL"      if BR2_x86_core_avx2
	default "ATOM"         if BR2_x86_atom
	default "ATHLON"       if BR2_x86_athlon || BR2_x86_athlon_4
	default "OPTERON"      if BR2_x86_opteron
	default "OPTERON_SSE3" if BR2_x86_opteron_sse3
	default "BARCELONA"    if BR2_x86_barcelona
	default "STEAMROLLER"  if BR2_x86_steamroller
	default "VIAC3"        if BR2_x86_c3 || BR2_x86_c32
	default "SSE_GENERIC"  if BR2_X86_CPU_HAS_SSE
	default "POWER4"       if BR2_powerpc_power4
	default "POWER5"       if BR2_powerpc_power5
	default "POWER6"       if BR2_powerpc_power6
	default "POWER7"       if BR2_powerpc_power7
	default "POWER8"       if BR2_powerpc_power8
	default "PPCG4"        if BR2_powerpc_7400 || BR2_powerpc_7450
	default "PPC970"       if BR2_powerpc_970
	default "PPC440"       if BR2_powerpc_440
	default "PPC440FP2"    if BR2_powerpc_440fp
	# P5600 is built with MSA support which is only available in Codescape toolchains
	default "P5600"        if BR2_mips_p5600 && BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS
	default "SICORTEX"     if BR2_MIPS_CPU_MIPS64
	# I6400 is built with MSA support which is only available in Codescape toolchains
	default "I6400"        if BR2_mips_i6400 && BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS
	# OpenBLAS assumes SPARC=Sparc v9
	default "SPARC"        if BR2_sparc_v9
	# Cortex-A15 always have a VFPv4
	default "CORTEXA15"    if (BR2_cortex_a15 && BR2_ARM_EABIHF)
	# Cortex-A9 have an optional VFPv3, so we need to make sure it
	# is available
	default "CORTEXA9"     if (BR2_cortex_a9 && BR2_ARM_EABIHF && \
				   BR2_ARM_CPU_HAS_VFPV3)
	default "ARMV5"        if BR2_ARM_CPU_ARMV5
	# On ARMv6, OpenBLAS assumes that a VFP is available, and
	# EABIhf is used
	default "ARMV6"        if (BR2_ARM_CPU_ARMV6 && BR2_ARM_EABIHF && \
				   BR2_ARM_CPU_HAS_VFPV2)
	# On ARMv7, OpenBLAS assumes that a full VFPv3+ is available
	# (and not the more limited D16 variant), and that EABIhf is
	# used.
	default "ARMV7"        if (BR2_ARM_CPU_ARMV7A && BR2_ARM_EABIHF && \
				   BR2_ARM_CPU_HAS_VFPV3)
	default "ARMV8"        if BR2_aarch64 || BR2_aarch64_be
	help
	  OpenBLAS target CPU. See TargetList.txt in the source tree for
	  the possible target strings. A possible value is set
	  automatically based on your Target Architecture Variant.

config BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS
	bool
	default y if BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET != ""

config BR2_PACKAGE_OPENBLAS
	bool "openblas"
	depends on BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS
	help
	  An optimized BLAS library based on GotoBLAS2 1.13 BSD version.

	  https://www.openblas.net/

if BR2_PACKAGE_OPENBLAS

config BR2_PACKAGE_OPENBLAS_TARGET
	string "OpenBLAS target CPU"
	default BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET

endif
