#| Set the Compilers (must be set first)
include( CMakeForceCompiler )
-cmake_force_c_compiler ( arm-none-eabi-gcc ARMCCompiler )
-cmake_force_cxx_compiler( arm-none-eabi-g++ ARMCxxCompiler )
-set( _CMAKE_TOOLCHAIN_PREFIX arm-none-eabi- )
+message( STATUS "Compiler Selected:" )
+if ( "${COMPILER}" MATCHES "gcc" )
+ cmake_force_c_compiler ( arm-none-eabi-gcc ARMCCompiler )
+ cmake_force_cxx_compiler( arm-none-eabi-g++ ARMCxxCompiler )
+ set( _CMAKE_TOOLCHAIN_PREFIX arm-none-eabi- )
+ message( "gcc" )
+elseif ( "${COMPILER}" MATCHES "clang" )
+ cmake_force_c_compiler ( clang ARMCCompiler )
+ cmake_force_cxx_compiler( clang++ ARMCxxCompiler )
+ set( _CMAKE_TOOLCHAIN_PREFIX llvm- )
+ message( "clang" )
+else ()
+ message( AUTHOR_WARNING "COMPILER: ${COMPILER} - Unknown compiler selection" )
+endif ()
set( PRODUCT_ID "0xB04D" )
set( BOOT_VENDOR_ID "0x1C11" )
set( BOOT_PRODUCT_ID "0xB007" )
+ set( BOOT_DFU_ALTNAME "Kiibohd DFU" )
set( DFU 1 )
message( "dfu" )
elseif ( "${CHIP}" MATCHES "mk20dx128" OR "${CHIP}" MATCHES "mk20dx256" )
if( BOOTLOADER )
set( TUNING "-D_bootloader_ -Wno-main -msoft-float -mthumb -fplan9-extensions -ffunction-sections -fdata-sections -fno-builtin -fstrict-volatile-bitfields -flto -fno-use-linker-plugin -nostdlib" )
#set( TUNING "-mthumb -fdata-sections -ffunction-sections -fno-builtin -msoft-float -fstrict-volatile-bitfields -flto -fno-use-linker-plugin -fwhole-program -Wno-main -nostartfiles -fplan9-extensions -D_bootloader_" )
+elseif ( "${COMPILER}" MATCHES "clang" )
+ set( TUNING "-target arm-none-eabi -mthumb -nostdlib -fdata-sections -ffunction-sections -fshort-wchar -fno-builtin" )
else()
set( TUNING "-mthumb -nostdlib -fdata-sections -ffunction-sections -fshort-wchar -fno-builtin -nostartfiles" )
endif()
#| Lss Flags
-set( LSS_FLAGS -h -S -z )
+if ( "${COMPILER}" MATCHES "clang" )
+ set( LSS_FLAGS -section-headers -triple=arm-none-eabi )
+else ()
+ set( LSS_FLAGS -h -S -z )
+endif ()