mirror of https://github.com/ARMmbed/mbed-os.git
36 lines
1.6 KiB
CMake
36 lines
1.6 KiB
CMake
# Copyright (c) 2022 ARM Limited. All rights reserved.
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
# Function to write all Mbed target defines into a header. This makes the build run more smoothly
|
|
# by removing the need to pass 100s of #define flags on the command line, which makes debugging difficult
|
|
# and can cause issues with command line length limits besides.
|
|
function(mbed_write_target_config_header HEADER_PATH) # ARGN: Lists of defines to add to the file.
|
|
|
|
set(TARGET_HEADER_CONTENTS
|
|
" /*
|
|
Mbed OS Target Define Header.
|
|
This contains all of the #defines specific to your target and device.
|
|
It is prepended to every source file using the -include compiler option.
|
|
AUTOGENERATED by cmake. DO NOT EDIT!
|
|
*/
|
|
")
|
|
|
|
foreach(DEFINE_LIST ${ARGN})
|
|
string(APPEND TARGET_HEADER_CONTENTS "\n // Defines from ${DEFINE_LIST}:\n")
|
|
|
|
foreach(DEFINE_COMMAND ${${DEFINE_LIST}}) # double dereference needed to get contents of list
|
|
|
|
# convert defines in command-line format (VAR=value) to header format (#define VAR value)
|
|
if("${DEFINE_COMMAND}" MATCHES "^([^=]+)=(.*)$")
|
|
string(APPEND TARGET_HEADER_CONTENTS "#define ${CMAKE_MATCH_1} ${CMAKE_MATCH_2}\n")
|
|
else()
|
|
# no value given, so follow GCC command line semantics and define it to 1
|
|
string(APPEND TARGET_HEADER_CONTENTS "#define ${DEFINE_COMMAND} 1\n")
|
|
endif()
|
|
endforeach()
|
|
endforeach()
|
|
|
|
# Write the file, using file(GENERATE) so that the timestamp is not updated if the contents don't change
|
|
file(GENERATE OUTPUT ${HEADER_PATH} CONTENT ${TARGET_HEADER_CONTENTS})
|
|
|
|
endfunction(mbed_write_target_config_header) |