Browse Source

Merge topic 'swift-warning-as-error'

dfa78c4868 Swift: Honor COMPILE_WARNING_AS_ERROR for command-line build systems

Acked-by: Kitware Robot <[email protected]>
Merge-request: !10660
Brad King 7 months ago
parent
commit
15daf279f2

+ 3 - 0
Modules/Compiler/Apple-Swift.cmake

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

+ 7 - 2
Tests/RunCMake/CMakeLists.txt

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

+ 9 - 0
Tests/RunCMake/CompileWarningAsError/RunCMakeTest.cmake

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

+ 5 - 0
Tests/RunCMake/CompileWarningAsError/WarningAsErrorOptions.cmake

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

+ 5 - 1
Tests/RunCMake/CompileWarningAsError/WerrorOff.cmake

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

+ 2 - 0
Tests/RunCMake/CompileWarningAsError/WerrorOff_Swift.cmake

@@ -0,0 +1,2 @@
+set(FILENAME main)
+include(WerrorOff.cmake)

+ 5 - 1
Tests/RunCMake/CompileWarningAsError/WerrorOn.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()

+ 5 - 1
Tests/RunCMake/CompileWarningAsError/WerrorOnIgnore.cmake

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

+ 2 - 0
Tests/RunCMake/CompileWarningAsError/WerrorOnIgnore_Swift.cmake

@@ -0,0 +1,2 @@
+set(FILENAME main)
+include(WerrorOnIgnore.cmake)

+ 1 - 0
Tests/RunCMake/CompileWarningAsError/WerrorOn_Swift-Build-result.txt

@@ -0,0 +1 @@
+[^0]

+ 2 - 0
Tests/RunCMake/CompileWarningAsError/WerrorOn_Swift.cmake

@@ -0,0 +1,2 @@
+set(FILENAME main)
+include(WerrorOn.cmake)

+ 1 - 0
Tests/RunCMake/CompileWarningAsError/err.swift

@@ -0,0 +1 @@
+#error("boom")

+ 1 - 0
Tests/RunCMake/CompileWarningAsError/main.swift

@@ -0,0 +1 @@
+let a = (0 as Int) as! Int