cc = meson.get_compiler('c')
libm = cc.find_library('m', required : false)

simde_c_defs = ['-DSIMDE_CONSTRAINED_COMPILATION']
simde_cxx_defs = ['-DSIMDE_CONSTRAINED_COMPILATION']
simde_c_args = []
simde_cxx_args = []
simde_deps = [libm]

if get_option('sleef').enabled() or meson.get_external_property('sleef', false)
  sleef = cc.find_library('sleef', required: true)
  simde_deps += sleef
  simde_c_defs = ['-DSIMDE_MATH_SLEEF_ENABLE']
  simde_cxx_defs = ['-DSIMDE_MATH_SLEEF_ENABLE']
endif

c_openmp_simd = false
cxx_openmp_simd = false
foreach omp_arg : ['-fopenmp-simd', '-qopenmp-simd']
  if (not c_openmp_simd) and cc.has_argument(omp_arg)
    simde_c_args += omp_arg
    simde_c_defs += '-DSIMDE_ENABLE_OPENMP'
    c_openmp_simd = true
  endif

  if (not cxx_openmp_simd) and cxx.has_argument(omp_arg)
    simde_cxx_args += omp_arg
    simde_cxx_defs += '-DSIMDE_ENABLE_OPENMP'
    cxx_openmp_simd = true
  endif
endforeach

simde_native_c_flags = []
if cc.has_argument('-Wpsabi')
  simde_native_c_flags += '-Wno-psabi'
endif
# if cc.has_argument('-march=native+simd')
#   simde_native_c_flags += '-march=native+simd'
# elif cc.has_argument('-march=native')
#   simde_native_c_flags += '-march=native'
# endif

if cc.get_id() == 'intel'
  simde_native_c_flags += '-DSIMDE_FAST_MATH'
endif

simde_native_cxx_flags = []
if cxx.has_argument('-Wpsabi')
  simde_native_cxx_flags += '-Wno-psabi'
endif
# if cxx.has_argument('-march=native+simd')
#   simde_native_cxx_flags += '-march=native+simd'
# elif cxx.has_argument('-march=native')
#   simde_native_cxx_flags += '-march=native'
# endif

if cxx.get_id() == 'intel'
  simde_native_cxx_flags += '-DSIMDE_FAST_MATH'
endif

if not c_openmp_simd
  simde_deps += dependency('openmp', required: false)
endif

simde_deps += cc.find_library('m', required: false)

simde_include_dir = include_directories('..')

subdir('common')
subdir('x86')
subdir('arm')
subdir('wasm')
subdir('mips')
