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:
Danny Oerndrup 2019-06-12 14:56:46 +02:00 committed by Alberto Escolar
parent f5d2d99762
commit e34ed7c8e2
6 changed files with 21 additions and 1 deletions

View file

@ -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}
)

View file

@ -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

View file

@ -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)

View 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()

View file

@ -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)

View file

@ -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)