Quellcode durchsuchen

cmake: fix the map file not generated when compiling with Clang

When compiling for a chip target with Clang,
CMAKE_C_COMPILER_ID="Clang" but the linker is still a GNU linker.
Therefore we can still generate the map file.
Ivan Grokhotkov vor 3 Jahren
Ursprung
Commit
b47155a70b
1 geänderte Dateien mit 10 neuen und 1 gelöschten Zeilen
  1. 10 1
      tools/cmake/project.cmake

+ 10 - 1
tools/cmake/project.cmake

@@ -512,6 +512,15 @@ macro(project project_name)
         list(REMOVE_ITEM build_components ${test_components})
     endif()
 
+    if(CONFIG_IDF_TARGET_LINUX AND CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
+        # Compiling for the host, and the host is macOS, so the linker is Darwin LD.
+        # Note, when adding support for Clang and LLD based toolchain this check will
+        # need to be modified.
+        set(linker_type "Darwin")
+    else()
+        set(linker_type "GNU")
+    endif()
+
     foreach(build_component ${build_components})
         __component_get_target(build_component_target ${build_component})
         __component_get_property(whole_archive ${build_component_target} WHOLE_ARCHIVE)
@@ -534,7 +543,7 @@ macro(project project_name)
     endforeach()
 
 
-    if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
+    if(linker_type STREQUAL "GNU")
         set(mapfile "${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.map")
         set(idf_target "${IDF_TARGET}")
         string(TOUPPER ${idf_target} idf_target)