1INCLUDE(CMakeForceCompiler)
2
3# TOOLCHAIN EXTENSION
4IF(WIN32)
5    SET(TOOLCHAIN_EXT ".exe")
6ELSE()
7    SET(TOOLCHAIN_EXT "")
8ENDIF()
9
10# EXECUTABLE EXTENSION
11SET (CMAKE_EXECUTABLE_SUFFIX ".elf")
12
13# TOOLCHAIN_DIR AND NANO LIBRARY
14SET(TOOLCHAIN_DIR $ENV{XCC_DIR})
15STRING(REGEX REPLACE "\\\\" "/" TOOLCHAIN_DIR "${TOOLCHAIN_DIR}")
16
17IF(NOT TOOLCHAIN_DIR)
18    MESSAGE(FATAL_ERROR "***Please set XCC_DIR in envionment variables***")
19ENDIF()
20
21MESSAGE(STATUS "TOOLCHAIN_DIR: " ${TOOLCHAIN_DIR})
22
23SET(XTENSA_SYSTEM $ENV{XTENSA_SYSTEM})
24IF(NOT XTENSA_SYSTEM)
25    SET(XTENSA_SYSTEM "/opt/xtensa/builds/RI-2019.1-linux/nxp_rt600_RI2019_newlib/config")
26ENDIF()
27SET(XTENSA_CORE $ENV{XTENSA_CORE})
28IF(NOT XTENSA_CORE)
29    SET(XTENSA_CORE "nxp_rt600_RI2019_newlib")
30ENDIF()
31
32# TARGET_TRIPLET
33SET(TARGET_TRIPLET "xt")
34
35SET(TOOLCHAIN_BIN_DIR ${TOOLCHAIN_DIR}/bin)
36
37SET(CMAKE_SYSTEM_NAME Generic)
38SET(CMAKE_SYSTEM_PROCESSOR hifi4)
39
40CMAKE_FORCE_C_COMPILER(${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-xcc${TOOLCHAIN_EXT} GNU)
41CMAKE_FORCE_CXX_COMPILER(${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-xc++${TOOLCHAIN_EXT} GNU)
42SET(CMAKE_ASM_COMPILER ${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-xcc${TOOLCHAIN_EXT})
43
44SET(CMAKE_OBJCOPY ${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-objcopy CACHE INTERNAL "objcopy tool")
45SET(CMAKE_OBJDUMP ${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-objdump CACHE INTERNAL "objdump tool")
46
47SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -g" CACHE INTERNAL "c compiler flags debug")
48SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g" CACHE INTERNAL "cxx compiler flags debug")
49SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -g" CACHE INTERNAL "asm compiler flags debug")
50SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG}" CACHE INTERNAL "linker flags debug")
51
52SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 " CACHE INTERNAL "c compiler flags release")
53SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 " CACHE INTERNAL "cxx compiler flags release")
54SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE}" CACHE INTERNAL "asm compiler flags release")
55SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}" CACHE INTERNAL "linker flags release")
56
57SET(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_DIR}/${TARGET_TRIPLET} ${EXTRA_FIND_PATH})
58SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
59SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
60SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
61
62SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/${CMAKE_BUILD_TYPE})
63SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/${CMAKE_BUILD_TYPE})
64
65MESSAGE(STATUS "BUILD_TYPE: " ${CMAKE_BUILD_TYPE})
66