From ed7fbfefacfa3228d9d5694bbf7e6a965d10b0d0 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Wed, 20 Jan 2021 02:15:43 +0100 Subject: [PATCH] build system: don't add GCC-specific options when building with clang --- CMakeLists.txt | 7 +++++++ .../cmake/linux_host_app/sdkconfig.defaults | 2 +- tools/cmake/build.cmake | 2 -- tools/cmake/project.cmake | 6 ++++-- tools/cmake/toolchain-linux.cmake | 11 +++-------- 5 files changed, 15 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d7630462e2..c7e499304b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -90,6 +90,13 @@ if(CONFIG_COMPILER_DUMP_RTL_FILES) list(APPEND compile_options "-fdump-rtl-expand") endif() +# GCC-specific options +if(CMAKE_C_COMPILER_ID STREQUAL "GNU") + list(APPEND compile_options "-fstrict-volatile-bitfields" + "-Wno-error=unused-but-set-variable" + ) +endif() + list(APPEND link_options "-fno-lto") idf_build_set_property(COMPILE_OPTIONS "${compile_options}" APPEND) diff --git a/examples/build_system/cmake/linux_host_app/sdkconfig.defaults b/examples/build_system/cmake/linux_host_app/sdkconfig.defaults index 517e112e61..c18d7771a4 100644 --- a/examples/build_system/cmake/linux_host_app/sdkconfig.defaults +++ b/examples/build_system/cmake/linux_host_app/sdkconfig.defaults @@ -1,2 +1,2 @@ CONFIG_IDF_TARGET="linux" -CONFIG_CXX_EXCEPTIONS=y +CONFIG_COMPILER_CXX_EXCEPTIONS=y diff --git a/tools/cmake/build.cmake b/tools/cmake/build.cmake index e6063d7d9c..934ab8905f 100644 --- a/tools/cmake/build.cmake +++ b/tools/cmake/build.cmake @@ -94,12 +94,10 @@ function(__build_set_default_build_specifications) list(APPEND compile_options "-ffunction-sections" "-fdata-sections" - "-fstrict-volatile-bitfields" # warning-related flags "-Wall" "-Werror=all" "-Wno-error=unused-function" - "-Wno-error=unused-but-set-variable" "-Wno-error=unused-variable" "-Wno-error=deprecated-declarations" "-Wextra" diff --git a/tools/cmake/project.cmake b/tools/cmake/project.cmake index 3060dccdcb..8329ed50af 100644 --- a/tools/cmake/project.cmake +++ b/tools/cmake/project.cmake @@ -460,8 +460,10 @@ macro(project project_name) endif() target_link_libraries(${project_elf} ${build_components}) - set(mapfile "${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.map") - target_link_libraries(${project_elf} "-Wl,--cref -Wl,--Map=${mapfile}") + if(CMAKE_C_COMPILER_ID STREQUAL "GNU") + set(mapfile "${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.map") + target_link_libraries(${project_elf} "-Wl,--cref -Wl,--Map=${mapfile}") + endif() set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES diff --git a/tools/cmake/toolchain-linux.cmake b/tools/cmake/toolchain-linux.cmake index 4c17215281..90cf4c3e0d 100644 --- a/tools/cmake/toolchain-linux.cmake +++ b/tools/cmake/toolchain-linux.cmake @@ -1,8 +1,3 @@ -set(CMAKE_SYSTEM_NAME Generic) - -set(CMAKE_C_COMPILER gcc) -set(CMAKE_CXX_COMPILER g++) -set(CMAKE_ASM_COMPILER gcc) - -set(CMAKE_C_FLAGS "-Wno-frame-address" CACHE STRING "C Compiler Base Flags") -set(CMAKE_CXX_FLAGS "-Wno-frame-address" CACHE STRING "C++ Compiler Base Flags") +# The build system assumes that toolchain-${IDF_TARGET}.cmake file +# is present. It is not necessary for the host build, so we keep +# this file as a placeholder.