diff --git a/arch/posix/CMakeLists.txt b/arch/posix/CMakeLists.txt index 35110ed4480..ba208328b53 100644 --- a/arch/posix/CMakeLists.txt +++ b/arch/posix/CMakeLists.txt @@ -1,7 +1,6 @@ # SPDX-License-Identifier: Apache-2.0 zephyr_compile_options( - -fno-freestanding -m32 -MMD -MP @@ -9,6 +8,9 @@ zephyr_compile_options( -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 diff --git a/cmake/compiler/clang/target.cmake b/cmake/compiler/clang/target.cmake index cd0f9296327..a5e0ab3c969 100644 --- a/cmake/compiler/clang/target.cmake +++ b/cmake/compiler/clang/target.cmake @@ -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() diff --git a/cmake/compiler/gcc/target.cmake b/cmake/compiler/gcc/target.cmake index 3131adf7277..42b1619bf16 100644 --- a/cmake/compiler/gcc/target.cmake +++ b/cmake/compiler/gcc/target.cmake @@ -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) diff --git a/cmake/compiler/gcc/target_freestanding.cmake b/cmake/compiler/gcc/target_freestanding.cmake new file mode 100644 index 00000000000..3648ecf8f45 --- /dev/null +++ b/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() diff --git a/cmake/compiler/host-gcc/target.cmake b/cmake/compiler/host-gcc/target.cmake index 8dc58dd3a63..8eaf816e62a 100644 --- a/cmake/compiler/host-gcc/target.cmake +++ b/cmake/compiler/host-gcc/target.cmake @@ -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)