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
This commit is contained in:
Brad King
2020-04-08 11:28:30 -04:00
parent 3d61ff7b10
commit 45fa9b32ca
2 changed files with 3 additions and 3 deletions

View File

@@ -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()

View File

@@ -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] + " ";