mirror of
https://github.com/thelsing/knx.git
synced 2024-12-18 19:08:18 +01:00
d90843ba45
* Initial commit * Clean up * Remove display code * Change cmake build * Add SimpleLink SDK for CC13xx/CC26xx as submodule * Remove commented line from build.sh * Working build * Remove SDK submodule * Squashed 'examples/knx-cc1310/coresdk_cc13xx_cc26xx/' content from commit 0d78d32 git-subtree-dir: examples/knx-cc1310/coresdk_cc13xx_cc26xx git-subtree-split: 0d78d3280357416a5c0388148cda13717c9ffaa5 * Add more comments and enable Power_idleFunc() for NoRTOS variant. Internal SDK driver functions which have to wait for something will cause Power_idleFunc to be called instead of doing busy wait. * Move CC1310 platform init around * Optimize a bit more in debug build config as the binary does not fit into 128Kb flash otherwise. * Explicitly list each source/header file in build config. Use linker group to resolve circular dependencies. * Ignore vscode settings.json * Increase stacks size * Only compile CC1310 source code if #define DeviceFamily_CC13X0 * initial commit of CC1310 RF driver with first working RX version * Better handling of buttonUp() across platforms * Start cleanup * continue cleanup * Fix bau2920 compilation * Continue cleanup * Fix compilation in other examples * Fix compilation * htons() and ntohs() only for SAMD and STM32, but not for Linux and ESP8266 and ESP32 * htons(9 and ntohs() needed for CC13x0 * Continue cleanup * Add CC1310 platform to CI * Fix CI * Use more recent toolchain from ARM * Fix travis * Use Ubuntu Focal * Fix toolchain for travis * Fix package name * Fix toolchain * Add libstdc++-dev package * Add newlib packages * Remove commented commands from CI * Fix travis * Fix compilation of knxPython * Clean up linefeeds * Fix RX callback * Move RF CRC16-DNP to bits.cpp * Fix TX * Optimization: do not calc CRC for block1 again in rf_data_link_layer * Make newline optional in printHex * Cleanup. First working version: ETS5 programming of individual address via KNX/RF coupler. * Use LEDs and Buttons to control ProgMode and Flash Erase * Remove settings.json (VScode) * Add README.md * Update README.md * Update README.md * Fix typo
121 lines
6.1 KiB
CMake
121 lines
6.1 KiB
CMake
## Derived from this project: https://github.com/jobroe/cmake-arm-embedded
|
||
##
|
||
## MIT License
|
||
##
|
||
## Copyright (c) 2018 Johannes Bruder
|
||
##
|
||
## Permission is hereby granted, free of charge, to any person obtaining a copy
|
||
## of this software and associated documentation files (the "Software"), to deal
|
||
## in the Software without restriction, including without limitation the rights
|
||
## to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||
## copies of the Software, and to permit persons to whom the Software is
|
||
## furnished to do so, subject to the following conditions:
|
||
##
|
||
## The above copyright notice and this permission notice shall be included in all
|
||
## copies or substantial portions of the Software.
|
||
##
|
||
## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||
## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||
## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||
## AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||
## LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||
## OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||
## SOFTWARE.
|
||
|
||
##
|
||
## CMake arm-none-eabi toolchain file
|
||
##
|
||
|
||
# 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)
|
||
|
||
#---------------------------------------------------------------------------------------
|
||
# Set compiler/linker flags
|
||
#---------------------------------------------------------------------------------------
|
||
|
||
# Object build options
|
||
# -O0 No optimizations, reduce compilation time and make debugging produce the expected results.
|
||
# -mthumb Generat thumb instructions.
|
||
# -fno-builtin Do not use built-in functions provided by GCC.
|
||
# -Wall Print only standard warnings, for all use Wextra
|
||
# -ffunction-sections Place each function item into its own section in the output file.
|
||
# -fdata-sections Place each data item into its own section in the output file.
|
||
# -fomit-frame-pointer Omit the frame pointer in functions that don’t need one.
|
||
# -mabi=aapcs Defines enums to be a variable sized type.
|
||
set(OBJECT_GEN_FLAGS "-O0 -mthumb -fno-builtin -Wall -ffunction-sections -fdata-sections -fomit-frame-pointer -mabi=aapcs")
|
||
|
||
set(CMAKE_C_FLAGS "${OBJECT_GEN_FLAGS} -std=gnu99 " CACHE INTERNAL "C Compiler options")
|
||
set(CMAKE_CXX_FLAGS "${OBJECT_GEN_FLAGS} -std=c++11 -fno-threadsafe-statics -fno-rtti -fno-exceptions" CACHE INTERNAL "C++ Compiler options")
|
||
set(CMAKE_ASM_FLAGS "${OBJECT_GEN_FLAGS} -x assembler-with-cpp " CACHE INTERNAL "ASM Compiler options")
|
||
|
||
|
||
# -Wl,--gc-sections Perform the dead code elimination.
|
||
# --specs=nano.specs Link with newlib-nano.
|
||
# --specs=nosys.specs No syscalls, provide empty implementations for the POSIX system calls.
|
||
set(CMAKE_EXE_LINKER_FLAGS "-Wl,--gc-sections --specs=nano.specs --specs=nosys.specs -mthumb -mabi=aapcs -Wl,-Map=${CMAKE_PROJECT_NAME}.map" CACHE INTERNAL "Linker options")
|
||
|
||
#---------------------------------------------------------------------------------------
|
||
# Set debug/release build configuration 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 -gstrict-dwarf" CACHE INTERNAL "C Compiler options for debug build type")
|
||
set(CMAKE_CXX_FLAGS_DEBUG "-Og -g -gstrict-dwarf" CACHE INTERNAL "C++ Compiler options for debug build type")
|
||
set(CMAKE_ASM_FLAGS_DEBUG "-g -gstrict-dwarf" 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.
|
||
# -flto Runs the standard link-time optimizer.
|
||
set(CMAKE_C_FLAGS_RELEASE "-Os -flto" CACHE INTERNAL "C Compiler options for release build type")
|
||
set(CMAKE_CXX_FLAGS_RELEASE "-Os -flto" 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 "-flto" 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_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)
|
||
|