include(opus_functions.cmake)

configure_file(config.h.cmake.in config.h @ONLY)
add_definitions(-DHAVE_CONFIG_H)

set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set_property(GLOBAL PROPERTY C_STANDARD 99)

if(MSVC)
  add_definitions(-D_CRT_SECURE_NO_WARNINGS)
endif()

include(CheckLibraryExists)
check_library_exists(m floor "" HAVE_LIBM)
if(HAVE_LIBM)
  list(APPEND OPUS_REQUIRED_LIBRARIES m)
endif()

if(CMAKE_SYSTEM_PROCESSOR MATCHES "(i[0-9]86|x86|X86|amd64|AMD64|x86_64)")
  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
    set(OPUS_CPU_X64 1)
  else()
    set(OPUS_CPU_X86 1)
  endif()
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm")
  set(OPUS_CPU_ARM 1)
endif()

opus_supports_cpu_detection(RUNTIME_CPU_CAPABILITY_DETECTION)

if(OPUS_CPU_X86 OR OPUS_CPU_X64)
  opus_detect_sse(COMPILER_SUPPORT_SIMD)
elseif(OPUS_CPU_ARM)
  opus_detect_neon(COMPILER_SUPPORT_NEON)
  if(COMPILER_SUPPORT_NEON)
    option(OPUS_USE_NEON "Option to turn off SSE" ON)
    option(OPUS_MAY_SUPPORT_NEON "Does runtime check for neon support" ON)
    option(OPUS_PRESUME_NEON "Assume target CPU has NEON support" OFF)
    if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
      set(OPUS_PRESUME_NEON ON)
    endif()
  endif()
endif()
