ProfinetConnector/profinet_stack/p-net/cmake/tools/Platform/STM32Cube.cmake

81 lines
2.0 KiB
CMake

#********************************************************************
# _ _ _
# _ __ | |_ _ | | __ _ | |__ ___
# | '__|| __|(_)| | / _` || '_ \ / __|
# | | | |_ _ | || (_| || |_) |\__ \
# |_| \__|(_)|_| \__,_||_.__/ |___/
#
# www.rt-labs.com
# Copyright 2021 rt-labs AB, Sweden.
#
# This software is licensed under the terms of the BSD 3-clause
# license. See the file LICENSE distributed with this software for
# full license information.
#*******************************************************************/
include_guard()
cmake_minimum_required (VERSION 3.1.2)
enable_language(ASM)
# Avoid warning when re-running cmake
set(DUMMY ${CMAKE_TOOLCHAIN_FILE})
# No support for shared libs
set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS FALSE)
set(UNIX 1)
set(CMAKE_STATIC_LIBRARY_PREFIX "lib")
set(CMAKE_STATIC_LIBRARY_SUFFIX ".a")
set(CMAKE_EXECUTABLE_SUFFIX ".elf")
# Do not build executables during configuration stage. Required
# libraries may not be built yet.
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
# Prefer standard extensions
set(CMAKE_C_OUTPUT_EXTENSION_REPLACE 1)
set(CMAKE_CXX_OUTPUT_EXTENSION_REPLACE 1)
set(CMAKE_ASM_OUTPUT_EXTENSION_REPLACE 1)
# Add machine-specific flags
add_definitions(${MACHINE})
add_link_options(${MACHINE})
# Common flags
add_definitions(
-fdata-sections
-ffunction-sections
)
# Common includes
list (APPEND INCLUDES
# nothing yet
)
set(CMAKE_ASM_STANDARD_INCLUDE_DIRECTORIES ${INCLUDES})
set(CMAKE_C_STANDARD_INCLUDE_DIRECTORIES ${INCLUDES})
set(CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES ${INCLUDES})
# Linker flags
add_link_options(
-Wl,--gc-sections
)
# Libraries
list (APPEND LIBS
-lc
-lm
-lnosys
)
list(JOIN LIBS " " LIBS) # Convert list to space separated string
set(CMAKE_C_STANDARD_LIBRARIES ${LIBS})
set(CMAKE_CXX_STANDARD_LIBRARIES "${LIBS} -lstdc++")
# Macro to add .bin output
macro(generate_bin TARGET)
add_custom_command(TARGET ${TARGET} POST_BUILD
COMMAND ${OBJCOPY}
ARGS -O binary ${TARGET}.elf ${TARGET}.bin
)
endmacro()