# SPDX-License-Identifier: Apache-2.0

# Configures CMake for using ccac

find_program(CMAKE_C_COMPILER ${CROSS_COMPILE}armclang PATHS ${TOOLCHAIN_HOME}/bin NO_DEFAULT_PATH)

set(triple arm-arm-none-eabi)

find_package(armclang 6.17 REQUIRED)

set(CMAKE_DTS_PREPROCESSOR
      ${CMAKE_C_COMPILER}
      "--target=${triple}"
      # -march=armv6-m is added to silence the warnings:
      # 'armv4t' and 'arm7tdmi' is unsupported.
      # We only do preprocessing so the actual arch is not important.
      "-march=armv6-m"
)

set(CMAKE_C_COMPILER_TARGET   ${triple})
set(CMAKE_ASM_COMPILER_TARGET ${triple})
set(CMAKE_CXX_COMPILER_TARGET ${triple})

if(CMAKE_C_COMPILER STREQUAL CMAKE_C_COMPILER-NOTFOUND)
  message(FATAL_ERROR "Zephyr was unable to find the armclang compiler")
endif()

execute_process(
  COMMAND ${CMAKE_C_COMPILER} --version
  RESULT_VARIABLE ret
  OUTPUT_QUIET
  ERROR_QUIET
  )

if(ret)
  message(FATAL_ERROR "Executing the below command failed. "
  "Are permissions set correctly? '${CMAKE_C_COMPILER} --version' "
  "And is the license setup correctly ?"
  )
endif()
