Skip to content

Commit

Permalink
posix: cmake: Abstract freestanding options
Browse files Browse the repository at this point in the history
clang has problems compiling the native_posix with -fno-freestanding.

Signed-off-by: Oleg Zhurakivskyy <oleg.zhurakivskyy@intel.com>
  • Loading branch information
ozhuraki authored and nashif committed Apr 30, 2019
1 parent ab2f00e commit f616aa3
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 1 deletion.
4 changes: 3 additions & 1 deletion arch/posix/CMakeLists.txt
@@ -1,14 +1,16 @@
# SPDX-License-Identifier: Apache-2.0

zephyr_compile_options(
-fno-freestanding
-m32
-MMD
-MP
${ARCH_FLAG}
-include ${ZEPHYR_BASE}/arch/posix/include/posix_cheats.h
)

# @Intent: Obtain compiler specific flags for no freestanding compilation
toolchain_cc_no_freestanding_options()

zephyr_include_directories(${BOARD_DIR})

zephyr_compile_options_ifdef(CONFIG_COVERAGE
Expand Down
5 changes: 5 additions & 0 deletions cmake/compiler/clang/target.cmake
Expand Up @@ -79,3 +79,8 @@ include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_baremetal.cmake)
macro(toolchain_cc_security_fortify)
# No op, clang doesn't understand fortify at all
endmacro()

macro(toolchain_cc_no_freestanding_options)
# No op, this is used by the native_posix, clang has problems
# compiling the native_posix with -fno-freestanding.
endmacro()
1 change: 1 addition & 0 deletions cmake/compiler/gcc/target.cmake
Expand Up @@ -131,6 +131,7 @@ list(APPEND CMAKE_REQUIRED_FLAGS -nostartfiles -nostdlib ${isystem_include_flags
string(REPLACE ";" " " CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")

# Load toolchain_cc-family macros
include(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}/target_freestanding.cmake)
include(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}/target_security_fortify.cmake)
include(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}/target_security_canaries.cmake)
include(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}/target_optimizations.cmake)
Expand Down
8 changes: 8 additions & 0 deletions cmake/compiler/gcc/target_freestanding.cmake
@@ -0,0 +1,8 @@
# Copyright (c) 2019 Intel Corporation.
# SPDX-License-Identifier: Apache-2.0

macro(toolchain_cc_no_freestanding_options)

zephyr_cc_option(-fno-freestanding)

endmacro()
1 change: 1 addition & 0 deletions cmake/compiler/host-gcc/target.cmake
Expand Up @@ -81,6 +81,7 @@ endforeach()

# Load toolchain_cc-family macros
# Significant overlap with freestanding gcc compiler so reuse it
include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_freestanding.cmake)
include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_security_fortify.cmake)
include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_security_canaries.cmake)
include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_optimizations.cmake)
Expand Down

0 comments on commit f616aa3

Please sign in to comment.