cmake: Toolchain abstraction: Introducing macro toolchain_cc_nocommon
The macro is intended to abstract the -fno-common compiler option which controls the placement of uninitialized global variables. The macro leaves it up to the toolchain to define the option. The intent here is to abstract Zephyr's dependence on toolchains, thus allowing for easier porting to other, perhaps commercial, toolchains and/or usecases. No functional change expected. Signed-off-by: Danny Oerndrup <daor@demant.com>
This commit is contained in:
parent
f5d2d99762
commit
e34ed7c8e2
|
@ -220,9 +220,11 @@ toolchain_cc_imacros(${AUTOCONF_H})
|
|||
# @Intent: Set compiler specific flag for bare metal freestanding option
|
||||
toolchain_cc_freestanding()
|
||||
|
||||
# @Intent: Set compiler specific flag for tentative definitions, no-common
|
||||
toolchain_cc_nocommon()
|
||||
|
||||
zephyr_compile_options(
|
||||
-g # TODO: build configuration enough?
|
||||
-fno-common
|
||||
${TOOLCHAIN_C_FLAGS}
|
||||
)
|
||||
|
||||
|
|
|
@ -81,6 +81,7 @@ include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_asm.cmake)
|
|||
include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_baremetal.cmake)
|
||||
include(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}/target_warnings.cmake)
|
||||
include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_imacros.cmake)
|
||||
include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_base.cmake)
|
||||
|
||||
macro(toolchain_cc_security_fortify)
|
||||
# No op, clang doesn't understand fortify at all
|
||||
|
|
|
@ -141,3 +141,4 @@ include(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}/target_asm.cmake)
|
|||
include(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}/target_baremetal.cmake)
|
||||
include(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}/target_warnings.cmake)
|
||||
include(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}/target_imacros.cmake)
|
||||
include(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}/target_base.cmake)
|
||||
|
|
14
cmake/compiler/gcc/target_base.cmake
Normal file
14
cmake/compiler/gcc/target_base.cmake
Normal file
|
@ -0,0 +1,14 @@
|
|||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
# The intention with this file is, to have a common placeholder for macros
|
||||
# which does not fit into any of the categories defined by the existing
|
||||
# target_xxx.cmake files and which have a fairly high commonality between
|
||||
# toolchains.
|
||||
#
|
||||
# See root CMakeLists.txt for description and expectations of this macro
|
||||
|
||||
macro(toolchain_cc_nocommon)
|
||||
|
||||
zephyr_compile_options(-fno-common)
|
||||
|
||||
endmacro()
|
|
@ -90,3 +90,4 @@ include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_asm.cmake)
|
|||
include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_baremetal.cmake)
|
||||
include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_warnings.cmake)
|
||||
include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_imacros.cmake)
|
||||
include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_base.cmake)
|
||||
|
|
|
@ -84,3 +84,4 @@ include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_asm.cmake)
|
|||
include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_baremetal.cmake)
|
||||
include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_warnings.cmake)
|
||||
include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_imacros.cmake)
|
||||
include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_base.cmake)
|
||||
|
|
Loading…
Reference in a new issue