Skip to content
Permalink
Browse files

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>
  • Loading branch information...
daor-oti authored and aescolar committed Jun 12, 2019
1 parent f5d2d99 commit e34ed7c8e28bdba6126dea7dae3d60b2a40c0dda
@@ -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)
@@ -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)

0 comments on commit e34ed7c

Please sign in to comment.
You can’t perform that action at this time.