1
0
Эх сурвалжийг харах

Apple: Improve handling of missing SDKs in CMAKE_APPLE_ARCH_SYSROOTS

Use `<arch>-SDK-NOTFOUND` instead of an empty string as a placeholder in
`CMAKE_APPLE_ARCH_SYSROOTS` for architectures whose SDK is not found.
This ensures the length of `CMAKE_APPLE_ARCH_SYSROOTS` matches the
length of `CMAKE_OSX_ARCHITECTURES`.  It also makes the missing SDKs
more visible in the value.

Issue: #20534
Brad King 5 жил өмнө
parent
commit
45fa9b32ca

+ 2 - 2
Modules/Platform/Darwin-Initialize.cmake

@@ -136,7 +136,7 @@ endfunction()
 # Handle multi-arch sysroots. Do this before CMAKE_OSX_SYSROOT is
 # transformed into a path, so that we know the sysroot name.
 function(_apple_resolve_multi_arch_sysroots)
-  if(CMAKE_APPLE_ARCH_SYSROOTS)
+  if(DEFINED CMAKE_APPLE_ARCH_SYSROOTS)
     return() # Already cached
   endif()
 
@@ -202,7 +202,7 @@ function(_apple_resolve_multi_arch_sysroots)
       list(APPEND _arch_sysroots ${_arch_sysroot})
     else()
       message(WARNING "No SDK found for architecture '${arch}'")
-      list(APPEND _arch_sysroots "") # Placeholder
+      list(APPEND _arch_sysroots "${arch}-SDK-NOTFOUND")
     endif()
   endforeach()
 

+ 1 - 1
Source/cmLocalGenerator.cxx

@@ -1800,7 +1800,7 @@ void cmLocalGenerator::AddArchitectureFlags(std::string& flags,
       if (!arch_sysroots.empty()) {
         assert(arch_sysroots.size() == archs.size());
         for (size_t i = 0; i < archs.size(); ++i) {
-          if (arch_sysroots[i].empty()) {
+          if (cmIsOff(arch_sysroots[i])) {
             continue;
           }
           flags += " -Xarch_" + archs[i] + " ";