# SPDX-License-Identifier: Apache-2.0

if(DEFINED ENV{ONEAPI_ROOT})
  set_ifndef(ONEAPI_TOOLCHAIN_PATH $ENV{ONEAPI_ROOT})
else()
  zephyr_get(ONEAPI_TOOLCHAIN_PATH)
endif()

# the default oneApi installation path is related to os
string(TOLOWER ${CMAKE_HOST_SYSTEM_NAME} system)
if(ONEAPI_TOOLCHAIN_PATH)
  set(TOOLCHAIN_HOME ${ONEAPI_TOOLCHAIN_PATH}/compiler/latest/${system}/bin/)
  set(ONEAPI_PYTHON_PATH ${ONEAPI_TOOLCHAIN_PATH}/intelpython/latest/bin)
endif()

set(ONEAPI_TOOLCHAIN_PATH ${ONEAPI_TOOLCHAIN_PATH} CACHE PATH "oneApi install directory")

set(LINKER lld)
set(BINTOOLS oneApi)

if(CONFIG_64BIT)
  set(triple x86_64-pc-none-elf)
else()
  set(triple i686-pc-none-elf)
endif()

if(system STREQUAL "linux")
  set(COMPILER icx)
  set(CMAKE_C_COMPILER_TARGET   ${triple})
  set(CMAKE_ASM_COMPILER_TARGET ${triple})
  set(CMAKE_CXX_COMPILER_TARGET ${triple})

# icx compiler of oneApi will invoke clang-cl on windows,
# this is not supported in zephyr now, so change to use
# clang directly.
# and the clang from oneApi can't recognize those cross
# compiling target variables of cmake, so used other
# cmake functions to pass them to clang.
elseif(system STREQUAL "windows")
  set(COMPILER clang)
  list(APPEND CMAKE_REQUIRED_FLAGS --target=${triple})
  add_compile_options(--target=${triple})
  add_link_options(--target=${triple})
endif()

message(STATUS "Found toolchain: host (clang/ld)")
