## ## ______ _ ## / _____) _ | | ## ( (____ _____ ____ _| |_ _____ ____| |__ ## \____ \| ___ | (_ _) ___ |/ ___) _ \ ## _____) ) ____| | | || |_| ____( (___| | | | ## (______/|_____)_|_|_| \__)_____)\____)_| |_| ## (C)2013-2017 Semtech ## ___ _____ _ ___ _ _____ ___ ___ ___ ___ ## / __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| ## \__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| ## |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| ## embedded.connectivity.solutions.============== ## ## License: Revised BSD License, see LICENSE.TXT file included in the project ## Authors: Johannes Bruder ( STACKFORCE ), Miguel Luis ( Semtech ) ## ## ## CMake arm-none-eabi toolchain file ## # Append current directory to CMAKE_MODULE_PATH for making device specific cmake modules visible list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}) # Target definition set(CMAKE_SYSTEM_NAME Generic) set(CMAKE_SYSTEM_PROCESSOR ARM) #--------------------------------------------------------------------------------------- # Set toolchain paths #--------------------------------------------------------------------------------------- set(TOOLCHAIN arm-none-eabi) if(NOT DEFINED TOOLCHAIN_PREFIX) if(CMAKE_HOST_SYSTEM_NAME STREQUAL Linux) set(TOOLCHAIN_PREFIX "/usr") elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL Darwin) set(TOOLCHAIN_PREFIX "/usr/local") elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL Windows) message(STATUS "Please specify the TOOLCHAIN_PREFIX !\n For example: -DTOOLCHAIN_PREFIX=\"C:/Program Files/GNU Tools ARM Embedded\" ") else() set(TOOLCHAIN_PREFIX "/usr") message(STATUS "No TOOLCHAIN_PREFIX specified, using default: " ${TOOLCHAIN_PREFIX}) endif() endif() set(TOOLCHAIN_BIN_DIR ${TOOLCHAIN_PREFIX}/bin) set(TOOLCHAIN_INC_DIR ${TOOLCHAIN_PREFIX}/${TOOLCHAIN}/include) set(TOOLCHAIN_LIB_DIR ${TOOLCHAIN_PREFIX}/${TOOLCHAIN}/lib) # Set system depended extensions if(WIN32) set(TOOLCHAIN_EXT ".exe" ) else() set(TOOLCHAIN_EXT "" ) endif() # Perform compiler test with static library set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) #--------------------------------------------------------------------------------------- # Preset some general GCC Options #--------------------------------------------------------------------------------------- # Options for DEBUG build # -Og enables optimizations that do not interfere with debugging # -g produce debugging information in the operating system’s native format set(CMAKE_C_FLAGS_DEBUG "-Og -g -DDEBUG" CACHE INTERNAL "C Compiler options for debug build type") set(CMAKE_CXX_FLAGS_DEBUG "-Og -g -DDEBUG" CACHE INTERNAL "C++ Compiler options for debug build type") set(CMAKE_ASM_FLAGS_DEBUG "-g" CACHE INTERNAL "ASM Compiler options for debug build type") set(CMAKE_EXE_LINKER_FLAGS_DEBUG "" CACHE INTERNAL "Linker options for debug build type") # Options for RELEASE build # -Os Optimize for size. -Os enables all -O2 optimizations set(CMAKE_C_FLAGS_RELEASE "-Os" CACHE INTERNAL "C Compiler options for release build type") set(CMAKE_CXX_FLAGS_RELEASE "-Os" CACHE INTERNAL "C++ Compiler options for release build type") set(CMAKE_ASM_FLAGS_RELEASE "" CACHE INTERNAL "ASM Compiler options for release build type") set(CMAKE_EXE_LINKER_FLAGS_RELEASE "" CACHE INTERNAL "Linker options for release build type") #--------------------------------------------------------------------------------------- # Set compilers #--------------------------------------------------------------------------------------- set(CMAKE_C_COMPILER ${TOOLCHAIN_BIN_DIR}/${TOOLCHAIN}-gcc${TOOLCHAIN_EXT} CACHE INTERNAL "C Compiler") set(CMAKE_CXX_COMPILER ${TOOLCHAIN_BIN_DIR}/${TOOLCHAIN}-g++${TOOLCHAIN_EXT} CACHE INTERNAL "C++ Compiler") set(CMAKE_ASM_COMPILER ${TOOLCHAIN_BIN_DIR}/${TOOLCHAIN}-gcc${TOOLCHAIN_EXT} CACHE INTERNAL "ASM Compiler") set(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_PREFIX}/${${TOOLCHAIN}} ${CMAKE_PREFIX_PATH}) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)