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 || BR2_x86_nocona
	default "BANIAS"       if BR2_x86_pentium_m
	default "CORE2"        if BR2_x86_core2
	default "NEHALEM"      if BR2_x86_corei7 || BR2_x86_silvermont
	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 "JAGUAR"       if BR2_x86_jaguar
	default "STEAMROLLER"  if BR2_x86_steamroller
	default "VIAC3"        if BR2_x86_c3 || BR2_x86_c32
	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
