From c782f140d4dbbffec03d834e0f1b3cf5a7acb004 Mon Sep 17 00:00:00 2001 From: hotwatermorning Date: Sun, 24 Oct 2021 03:54:20 +0900 Subject: Swift: Ignore WIN32_EXECUTABLE property outside of Windows Issue: #19877 --- Source/cmGlobalGenerator.cxx | 6 ++++++ Tests/RunCMake/CMakeLists.txt | 2 +- Tests/RunCMake/Swift/RunCMakeTest.cmake | 13 ++++++++----- Tests/RunCMake/Swift/Win32ExecutableIgnored.cmake | 4 ++++ 4 files changed, 19 insertions(+), 6 deletions(-) create mode 100644 Tests/RunCMake/Swift/Win32ExecutableIgnored.cmake diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 8799180..26e2cf8 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -337,6 +337,12 @@ bool cmGlobalGenerator::CheckTargetsForType() const bool failed = false; for (const auto& generator : this->LocalGenerators) { for (const auto& target : generator->GetGeneratorTargets()) { + std::string systemName = + target->Makefile->GetSafeDefinition("CMAKE_SYSTEM_NAME"); + if (systemName.find("Windows") == std::string::npos) { + continue; + } + if (target->GetType() == cmStateEnums::EXECUTABLE) { std::vector const& configs = target->Makefile->GetGeneratorConfigs( diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 0c1258e..5dc7031 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -345,7 +345,7 @@ if(UNIX AND CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG AND CMAKE_EXECUTABLE_FORMAT STRE add_RunCMake_test(RuntimePath) endif() add_RunCMake_test(ScriptMode) -add_RunCMake_test(Swift -DCMAKE_Swift_COMPILER=${CMAKE_Swift_COMPILER}) +add_RunCMake_test(Swift -DCMAKE_Swift_COMPILER=${CMAKE_Swift_COMPILER} -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}) add_RunCMake_test(TargetObjects) add_RunCMake_test(TargetProperties) add_RunCMake_test(ToolchainFile) diff --git a/Tests/RunCMake/Swift/RunCMakeTest.cmake b/Tests/RunCMake/Swift/RunCMakeTest.cmake index 1db202e..21d5a25 100644 --- a/Tests/RunCMake/Swift/RunCMakeTest.cmake +++ b/Tests/RunCMake/Swift/RunCMakeTest.cmake @@ -6,11 +6,14 @@ if(RunCMake_GENERATOR STREQUAL Xcode) endif() elseif(RunCMake_GENERATOR STREQUAL Ninja) if(CMAKE_Swift_COMPILER) - run_cmake(Win32ExecutableDisallowed) - - set(RunCMake_TEST_OPTIONS -DCMAKE_SYSTEM_NAME=Darwin) - run_cmake(SwiftMultiArch) - unset(RunCMake_TEST_OPTIONS) + if (CMAKE_SYSTEM_NAME MATCHES "Windows") + run_cmake_with_options(Win32ExecutableDisallowed) + else() + run_cmake_with_options(Win32ExecutableIgnored) + set(RunCMake_TEST_OPTIONS -DCMAKE_SYSTEM_NAME=Darwin) + run_cmake(SwiftMultiArch) + unset(RunCMake_TEST_OPTIONS) + endif() endif() elseif(RunCMake_GENERATOR STREQUAL "Ninja Multi-Config") if(CMAKE_Swift_COMPILER) diff --git a/Tests/RunCMake/Swift/Win32ExecutableIgnored.cmake b/Tests/RunCMake/Swift/Win32ExecutableIgnored.cmake new file mode 100644 index 0000000..02d5447 --- /dev/null +++ b/Tests/RunCMake/Swift/Win32ExecutableIgnored.cmake @@ -0,0 +1,4 @@ +enable_language(Swift) +add_executable(E E.swift) +set_target_properties(E PROPERTIES + WIN32_EXECUTABLE TRUE) -- cgit v0.12