summaryrefslogtreecommitdiffstats
path: root/Tests
diff options
context:
space:
mode:
authorRobert Maynard <rmaynard@nvidia.com>2022-06-28 13:49:36 (GMT)
committerRobert Maynard <rmaynard@nvidia.com>2022-06-29 15:50:34 (GMT)
commit2e9ac1d2726c4f260efd6b455242ec5d65391e12 (patch)
treea181ede8b2b6b83f7263f5aac9a1a6ff7de066ce /Tests
parent8c562ece28b7a13ddb734b8c51710ebafe9ac570 (diff)
downloadCMake-2e9ac1d2726c4f260efd6b455242ec5d65391e12.zip
CMake-2e9ac1d2726c4f260efd6b455242ec5d65391e12.tar.gz
CMake-2e9ac1d2726c4f260efd6b455242ec5d65391e12.tar.bz2
Tests: Refactor warn on error tests to support multiple languages
Diffstat (limited to 'Tests')
-rw-r--r--Tests/RunCMake/CompileWarningAsError/RunCMakeTest.cmake19
-rw-r--r--Tests/RunCMake/CompileWarningAsError/WarningAsErrorOptions.cmake22
-rw-r--r--Tests/RunCMake/CompileWarningAsError/WerrorOff.cmake6
-rw-r--r--Tests/RunCMake/CompileWarningAsError/WerrorOff_C.cmake1
-rw-r--r--Tests/RunCMake/CompileWarningAsError/WerrorOff_CXX.cmake1
-rw-r--r--Tests/RunCMake/CompileWarningAsError/WerrorOn.cmake10
-rw-r--r--Tests/RunCMake/CompileWarningAsError/WerrorOnIgnore.cmake6
-rw-r--r--Tests/RunCMake/CompileWarningAsError/WerrorOnIgnore_C.cmake1
-rw-r--r--Tests/RunCMake/CompileWarningAsError/WerrorOnIgnore_CXX.cmake1
-rw-r--r--Tests/RunCMake/CompileWarningAsError/WerrorOn_C-Build-result.txt (renamed from Tests/RunCMake/CompileWarningAsError/WerrorOn-Build-result.txt)0
-rw-r--r--Tests/RunCMake/CompileWarningAsError/WerrorOn_C.cmake1
-rw-r--r--Tests/RunCMake/CompileWarningAsError/WerrorOn_CXX-Build-result.txt1
-rw-r--r--Tests/RunCMake/CompileWarningAsError/WerrorOn_CXX.cmake1
-rw-r--r--Tests/RunCMake/CompileWarningAsError/err.c0
-rw-r--r--Tests/RunCMake/CompileWarningAsError/warn.c25
-rw-r--r--Tests/RunCMake/CompileWarningAsError/warn.cxx18
16 files changed, 69 insertions, 44 deletions
diff --git a/Tests/RunCMake/CompileWarningAsError/RunCMakeTest.cmake b/Tests/RunCMake/CompileWarningAsError/RunCMakeTest.cmake
index a532f72..b068c18 100644
--- a/Tests/RunCMake/CompileWarningAsError/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CompileWarningAsError/RunCMakeTest.cmake
@@ -1,13 +1,18 @@
include(RunCMake)
-function(run_compile_warn test)
- set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${test}-build)
+function(run_compile_warn test lang extension)
+ set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${test}_${lang}-build)
set(RunCMake_TEST_OUTPUT_MERGE 1)
- run_cmake_with_options(${test} ${ARGN})
+ run_cmake_with_options(${test}_${lang} "-DLANGUAGE=${lang}" "-DEXTENSION=${extension}" ${ARGN})
set(RunCMake_TEST_NO_CLEAN 1)
- run_cmake_command(${test}-Build ${CMAKE_COMMAND} --build . ${verbose_args})
+ run_cmake_command(${test}_${lang}-Build ${CMAKE_COMMAND} --build . ${verbose_args})
endfunction()
-run_compile_warn(WerrorOn)
-run_compile_warn(WerrorOff)
-run_compile_warn(WerrorOnIgnore "--compile-no-warning-as-error")
+set(langs C CXX)
+set(exts c cxx)
+
+foreach(lang ext IN ZIP_LISTS langs exts)
+ run_compile_warn(WerrorOn ${lang} ${ext})
+ run_compile_warn(WerrorOff ${lang} ${ext})
+ run_compile_warn(WerrorOnIgnore ${lang} ${ext} "--compile-no-warning-as-error")
+endforeach()
diff --git a/Tests/RunCMake/CompileWarningAsError/WarningAsErrorOptions.cmake b/Tests/RunCMake/CompileWarningAsError/WarningAsErrorOptions.cmake
index ccc6cc5..b5b981c 100644
--- a/Tests/RunCMake/CompileWarningAsError/WarningAsErrorOptions.cmake
+++ b/Tests/RunCMake/CompileWarningAsError/WarningAsErrorOptions.cmake
@@ -1,18 +1,22 @@
# add compile options to warning_options to ensure unused-function throws a warning
# if warning_options is NOT DEFINED, assume compiler doesn't support warning as error
-macro(get_warning_options warning_options)
- if (CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang|XLClang|IBMClang|LCC|NVCC|IntelLLVM)$")
+macro(get_warning_options warning_options lang)
+ if (CMAKE_${lang}_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang|XLClang|IBMClang|LCC|IntelLLVM)$")
set(${warning_options} "-Wall")
- elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC"
- OR (CMAKE_CXX_COMPILER_ID STREQUAL "Intel" AND CMAKE_CXX_SIMULATE_ID MATCHES "MSVC"))
+ elseif (CMAKE_${lang}_COMPILER_ID STREQUAL "MSVC"
+ OR (CMAKE_${lang}_COMPILER_ID STREQUAL "Intel" AND CMAKE_${lang}_SIMULATE_ID MATCHES "MSVC"))
set(${warning_options} "-W4")
- elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
+ elseif (CMAKE_${lang}_COMPILER_ID STREQUAL "Intel")
set(${warning_options} "-w3")
- elseif (CMAKE_CXX_COMPILER_ID STREQUAL "XL")
+ elseif (CMAKE_${lang}_COMPILER_ID STREQUAL "XL")
set(${warning_options} "-qinfo=all")
- elseif (CMAKE_CXX_COMPILER_ID STREQUAL "SunPro")
- set(${warning_options} "+w;+w2")
- elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Fujitsu")
+ elseif (CMAKE_${lang}_COMPILER_ID STREQUAL "SunPro")
+ if(lang STREQUAL CXX)
+ set(${warning_options} "+w;+w2")
+ else()
+ set(${warning_options} "")
+ endif()
+ elseif (CMAKE_${lang}_COMPILER_ID STREQUAL "Fujitsu")
set(${warning_options} "SHELL:-w 8")
endif()
endmacro()
diff --git a/Tests/RunCMake/CompileWarningAsError/WerrorOff.cmake b/Tests/RunCMake/CompileWarningAsError/WerrorOff.cmake
index b05d65e..0af60f0 100644
--- a/Tests/RunCMake/CompileWarningAsError/WerrorOff.cmake
+++ b/Tests/RunCMake/CompileWarningAsError/WerrorOff.cmake
@@ -1,8 +1,8 @@
-enable_language(CXX)
+enable_language(${LANGUAGE})
include(WarningAsErrorOptions.cmake)
-get_warning_options(warning_options)
+get_warning_options(warning_options ${LANGUAGE})
-add_executable(WerrorOff warn.cxx)
+add_executable(WerrorOff warn.${EXTENSION})
target_compile_options(WerrorOff PUBLIC "${warning_options}")
set_target_properties(WerrorOff PROPERTIES COMPILE_WARNING_AS_ERROR OFF)
diff --git a/Tests/RunCMake/CompileWarningAsError/WerrorOff_C.cmake b/Tests/RunCMake/CompileWarningAsError/WerrorOff_C.cmake
new file mode 100644
index 0000000..35c02aa
--- /dev/null
+++ b/Tests/RunCMake/CompileWarningAsError/WerrorOff_C.cmake
@@ -0,0 +1 @@
+include(WerrorOff.cmake)
diff --git a/Tests/RunCMake/CompileWarningAsError/WerrorOff_CXX.cmake b/Tests/RunCMake/CompileWarningAsError/WerrorOff_CXX.cmake
new file mode 100644
index 0000000..35c02aa
--- /dev/null
+++ b/Tests/RunCMake/CompileWarningAsError/WerrorOff_CXX.cmake
@@ -0,0 +1 @@
+include(WerrorOff.cmake)
diff --git a/Tests/RunCMake/CompileWarningAsError/WerrorOn.cmake b/Tests/RunCMake/CompileWarningAsError/WerrorOn.cmake
index 4310333..c3f6526 100644
--- a/Tests/RunCMake/CompileWarningAsError/WerrorOn.cmake
+++ b/Tests/RunCMake/CompileWarningAsError/WerrorOn.cmake
@@ -1,13 +1,13 @@
-enable_language(CXX)
+enable_language(${LANGUAGE})
include(WarningAsErrorOptions.cmake)
-get_warning_options(warning_options)
+get_warning_options(warning_options ${LANGUAGE})
if (DEFINED warning_options)
- add_executable(WerrorOn warn.cxx)
+ add_executable(WerrorOn warn.${EXTENSION})
target_compile_options(WerrorOn PUBLIC "${warning_options}")
set_target_properties(WerrorOn PROPERTIES COMPILE_WARNING_AS_ERROR ON)
else()
- # if no werror option is set for the environment, use err.cxx so that build fails as expected
- add_executable(WerrorOn err.cxx)
+ # if no werror option is set for the environment, use err so that build fails as expected
+ add_executable(WerrorOn err.${EXTENSION})
endif()
diff --git a/Tests/RunCMake/CompileWarningAsError/WerrorOnIgnore.cmake b/Tests/RunCMake/CompileWarningAsError/WerrorOnIgnore.cmake
index 1f7ccdb..847bd78 100644
--- a/Tests/RunCMake/CompileWarningAsError/WerrorOnIgnore.cmake
+++ b/Tests/RunCMake/CompileWarningAsError/WerrorOnIgnore.cmake
@@ -1,8 +1,8 @@
-enable_language(CXX)
+enable_language(${LANGUAGE})
include(WarningAsErrorOptions.cmake)
-get_warning_options(warning_options)
+get_warning_options(warning_options ${LANGUAGE})
-add_executable(WerrorOn warn.cxx)
+add_executable(WerrorOn warn.${EXTENSION})
target_compile_options(WerrorOn PUBLIC "${warning_options}")
set_target_properties(WerrorOn PROPERTIES COMPILE_WARNING_AS_ERROR ON)
diff --git a/Tests/RunCMake/CompileWarningAsError/WerrorOnIgnore_C.cmake b/Tests/RunCMake/CompileWarningAsError/WerrorOnIgnore_C.cmake
new file mode 100644
index 0000000..ebb9e0e
--- /dev/null
+++ b/Tests/RunCMake/CompileWarningAsError/WerrorOnIgnore_C.cmake
@@ -0,0 +1 @@
+include(WerrorOnIgnore.cmake)
diff --git a/Tests/RunCMake/CompileWarningAsError/WerrorOnIgnore_CXX.cmake b/Tests/RunCMake/CompileWarningAsError/WerrorOnIgnore_CXX.cmake
new file mode 100644
index 0000000..ebb9e0e
--- /dev/null
+++ b/Tests/RunCMake/CompileWarningAsError/WerrorOnIgnore_CXX.cmake
@@ -0,0 +1 @@
+include(WerrorOnIgnore.cmake)
diff --git a/Tests/RunCMake/CompileWarningAsError/WerrorOn-Build-result.txt b/Tests/RunCMake/CompileWarningAsError/WerrorOn_C-Build-result.txt
index d197c91..d197c91 100644
--- a/Tests/RunCMake/CompileWarningAsError/WerrorOn-Build-result.txt
+++ b/Tests/RunCMake/CompileWarningAsError/WerrorOn_C-Build-result.txt
diff --git a/Tests/RunCMake/CompileWarningAsError/WerrorOn_C.cmake b/Tests/RunCMake/CompileWarningAsError/WerrorOn_C.cmake
new file mode 100644
index 0000000..a00edb8
--- /dev/null
+++ b/Tests/RunCMake/CompileWarningAsError/WerrorOn_C.cmake
@@ -0,0 +1 @@
+include(WerrorOn.cmake)
diff --git a/Tests/RunCMake/CompileWarningAsError/WerrorOn_CXX-Build-result.txt b/Tests/RunCMake/CompileWarningAsError/WerrorOn_CXX-Build-result.txt
new file mode 100644
index 0000000..d197c91
--- /dev/null
+++ b/Tests/RunCMake/CompileWarningAsError/WerrorOn_CXX-Build-result.txt
@@ -0,0 +1 @@
+[^0]
diff --git a/Tests/RunCMake/CompileWarningAsError/WerrorOn_CXX.cmake b/Tests/RunCMake/CompileWarningAsError/WerrorOn_CXX.cmake
new file mode 100644
index 0000000..a00edb8
--- /dev/null
+++ b/Tests/RunCMake/CompileWarningAsError/WerrorOn_CXX.cmake
@@ -0,0 +1 @@
+include(WerrorOn.cmake)
diff --git a/Tests/RunCMake/CompileWarningAsError/err.c b/Tests/RunCMake/CompileWarningAsError/err.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Tests/RunCMake/CompileWarningAsError/err.c
diff --git a/Tests/RunCMake/CompileWarningAsError/warn.c b/Tests/RunCMake/CompileWarningAsError/warn.c
new file mode 100644
index 0000000..cd0c2ba
--- /dev/null
+++ b/Tests/RunCMake/CompileWarningAsError/warn.c
@@ -0,0 +1,25 @@
+static void unused_function();
+
+#ifdef __SUNPRO_C
+KandR(x) int x;
+{
+ return x;
+}
+#endif
+
+#ifdef __SUNPRO_CC
+struct A
+{
+ virtual ~A() throw();
+};
+struct B : public A
+{
+ virtual ~B() throw(int);
+};
+#endif
+
+int main(int argc, char* argv[])
+{
+ unsigned int unused_sign_conversion = -1;
+ return 1;
+}
diff --git a/Tests/RunCMake/CompileWarningAsError/warn.cxx b/Tests/RunCMake/CompileWarningAsError/warn.cxx
index 64a245a..22b8db8 100644
--- a/Tests/RunCMake/CompileWarningAsError/warn.cxx
+++ b/Tests/RunCMake/CompileWarningAsError/warn.cxx
@@ -1,17 +1 @@
-static void unused_function();
-
-#ifdef __SUNPRO_CC
-struct A
-{
- virtual ~A() throw();
-};
-struct B : public A
-{
- virtual ~B() throw(int);
-};
-#endif
-
-int main(int unused_argument, char* [])
-{
- return 1;
-}
+#include "warn.c"