mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-06 05:40:54 -06:00
Swift: Honor COMPILE_WARNING_AS_ERROR for command-line build systems
Define missing CMAKE_Swift_COMPILE_OPTIONS_WARNING_AS_ERROR for Swift to `-warnings-as-errors`. Fixes: #26872
This commit is contained in:
3
Modules/Compiler/Apple-Swift.cmake
Normal file
3
Modules/Compiler/Apple-Swift.cmake
Normal file
@@ -0,0 +1,3 @@
|
||||
if(CMAKE_Swift_COMPILER_VERSION VERSION_GREATER_EQUAL 3.0)
|
||||
set(CMAKE_Swift_COMPILE_OPTIONS_WARNING_AS_ERROR -warnings-as-errors)
|
||||
endif()
|
||||
@@ -580,7 +580,13 @@ add_RunCMake_test(TargetProperties)
|
||||
add_RunCMake_test(ToolchainFile)
|
||||
add_RunCMake_test(find_dependency)
|
||||
add_RunCMake_test(CompileDefinitions)
|
||||
add_RunCMake_test(CompileWarningAsError -DCMake_TEST_CUDA=${CMake_TEST_CUDA})
|
||||
add_RunCMake_test(CompileWarningAsError
|
||||
-DCMake_TEST_CUDA=${CMake_TEST_CUDA}
|
||||
-DCMake_TEST_Swift=${CMake_TEST_Swift}
|
||||
-DCMAKE_Swift_COMPILER_VERSION=${CMAKE_Swift_COMPILER_VERSION}
|
||||
)
|
||||
set_property(TEST RunCMake.CompileWarningAsError APPEND PROPERTY LABELS
|
||||
"CUDA" "Swift")
|
||||
if((CMAKE_C_COMPILER_ID MATCHES "AppleClang|MSVC"
|
||||
OR (CMAKE_SYSTEM_NAME MATCHES "Linux|Windows" AND CMAKE_C_COMPILER_ID MATCHES "Clang|GNU")
|
||||
OR (CMAKE_SYSTEM_NAME STREQUAL "SunOS" AND CMAKE_C_COMPILER_ID STREQUAL "SunPro")
|
||||
@@ -588,7 +594,6 @@ if((CMAKE_C_COMPILER_ID MATCHES "AppleClang|MSVC"
|
||||
AND CMAKE_C_COMPILER_LINKER_ID)
|
||||
add_RunCMake_test(LinkWarningAsError)
|
||||
endif()
|
||||
set_property(TEST RunCMake.CompileWarningAsError APPEND PROPERTY LABELS "CUDA")
|
||||
add_RunCMake_test(CompileFeatures -DCMake_NO_C_STANDARD=${CMake_NO_C_STANDARD} -DCMake_NO_CXX_STANDARD=${CMake_NO_CXX_STANDARD})
|
||||
add_RunCMake_test(Policy)
|
||||
add_RunCMake_test(PolicyScope)
|
||||
|
||||
@@ -19,6 +19,15 @@ if(CMake_TEST_CUDA)
|
||||
list(APPEND exts cu)
|
||||
endif()
|
||||
|
||||
if(CMAKE_Swift_COMPILER_VERSION AND CMAKE_Swift_COMPILER_VERSION VERSION_LESS 3.0)
|
||||
set(CMake_TEST_Swift 0)
|
||||
endif()
|
||||
|
||||
if(CMake_TEST_Swift)
|
||||
list(APPEND langs Swift)
|
||||
list(APPEND exts swift)
|
||||
endif()
|
||||
|
||||
foreach(lang ext IN ZIP_LISTS langs exts)
|
||||
run_compile_warn(WerrorOn ${lang} ${ext})
|
||||
run_compile_warn(WerrorOff ${lang} ${ext})
|
||||
|
||||
@@ -26,4 +26,9 @@ macro(get_warning_options warning_options lang)
|
||||
elseif (CMAKE_${lang}_COMPILER_ID STREQUAL "Fujitsu")
|
||||
set(${warning_options} "SHELL:-w 8")
|
||||
endif()
|
||||
|
||||
if(${lang} STREQUAL Swift)
|
||||
# No extra flags required for Swift
|
||||
set(${warning_options} "")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
@@ -3,6 +3,10 @@ enable_language(${LANGUAGE})
|
||||
include(WarningAsErrorOptions.cmake)
|
||||
get_warning_options(warning_options ${LANGUAGE})
|
||||
|
||||
add_executable(WerrorOff warn.${EXTENSION})
|
||||
if(NOT DEFINED FILENAME)
|
||||
set(FILENAME warn)
|
||||
endif()
|
||||
|
||||
add_executable(WerrorOff ${FILENAME}.${EXTENSION})
|
||||
target_compile_options(WerrorOff PUBLIC "${warning_options}")
|
||||
set_target_properties(WerrorOff PROPERTIES COMPILE_WARNING_AS_ERROR OFF)
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
set(FILENAME main)
|
||||
include(WerrorOff.cmake)
|
||||
@@ -3,8 +3,12 @@ enable_language(${LANGUAGE})
|
||||
include(WarningAsErrorOptions.cmake)
|
||||
get_warning_options(warning_options ${LANGUAGE})
|
||||
|
||||
if(NOT DEFINED FILENAME)
|
||||
set(FILENAME warn)
|
||||
endif()
|
||||
|
||||
if (DEFINED warning_options)
|
||||
add_executable(WerrorOn warn.${EXTENSION})
|
||||
add_executable(WerrorOn ${FILENAME}.${EXTENSION})
|
||||
target_compile_options(WerrorOn PUBLIC "${warning_options}")
|
||||
set_target_properties(WerrorOn PROPERTIES COMPILE_WARNING_AS_ERROR ON)
|
||||
else()
|
||||
|
||||
@@ -3,6 +3,10 @@ enable_language(${LANGUAGE})
|
||||
include(WarningAsErrorOptions.cmake)
|
||||
get_warning_options(warning_options ${LANGUAGE})
|
||||
|
||||
add_executable(WerrorOn warn.${EXTENSION})
|
||||
if(NOT DEFINED FILENAME)
|
||||
set(FILENAME warn)
|
||||
endif()
|
||||
|
||||
add_executable(WerrorOn ${FILENAME}.${EXTENSION})
|
||||
target_compile_options(WerrorOn PUBLIC "${warning_options}")
|
||||
set_target_properties(WerrorOn PROPERTIES COMPILE_WARNING_AS_ERROR ON)
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
set(FILENAME main)
|
||||
include(WerrorOnIgnore.cmake)
|
||||
@@ -0,0 +1 @@
|
||||
[^0]
|
||||
@@ -0,0 +1,2 @@
|
||||
set(FILENAME main)
|
||||
include(WerrorOn.cmake)
|
||||
1
Tests/RunCMake/CompileWarningAsError/err.swift
Normal file
1
Tests/RunCMake/CompileWarningAsError/err.swift
Normal file
@@ -0,0 +1 @@
|
||||
#error("boom")
|
||||
1
Tests/RunCMake/CompileWarningAsError/main.swift
Normal file
1
Tests/RunCMake/CompileWarningAsError/main.swift
Normal file
@@ -0,0 +1 @@
|
||||
let a = (0 as Int) as! Int
|
||||
Reference in New Issue
Block a user