Simplify CM_FALLTHROUGH implementation

Use the macro now provided by KWSys instead of using `try_compile`
checks.  It will no longer consider the `__attribute__((fallthrough))`
variant, but compilers that don't have one of the modern attributes
shouldn't warn about not using one anyway.
This commit is contained in:
Brad King
2017-11-30 08:58:01 -05:00
parent d094b6796a
commit b2f612a0fa
5 changed files with 1 additions and 52 deletions
@@ -1,11 +0,0 @@
int main(int argc, char* [])
{
int i = 3;
switch (argc) {
case 1:
i = 0;
__attribute__((fallthrough));
default:
return i;
}
}
-11
View File
@@ -1,11 +0,0 @@
int main(int argc, char* [])
{
int i = 3;
switch (argc) {
case 1:
i = 0;
[[fallthrough]];
default:
return i;
}
}
-7
View File
@@ -41,13 +41,6 @@ function(cm_check_cxx_feature name)
endif() endif()
endfunction() endfunction()
cm_check_cxx_feature(fallthrough)
if(NOT CMake_HAVE_CXX_FALLTHROUGH)
cm_check_cxx_feature(gnu_fallthrough)
if(NOT CMake_HAVE_CXX_GNU_FALLTHROUGH)
cm_check_cxx_feature(attribute_fallthrough)
endif()
endif()
cm_check_cxx_feature(make_unique) cm_check_cxx_feature(make_unique)
if(CMake_HAVE_CXX_MAKE_UNIQUE) if(CMake_HAVE_CXX_MAKE_UNIQUE)
set(CMake_HAVE_CXX_UNIQUE_PTR 1) set(CMake_HAVE_CXX_UNIQUE_PTR 1)
-11
View File
@@ -1,11 +0,0 @@
int main(int argc, char* [])
{
int i = 3;
switch (argc) {
case 1:
i = 0;
[[gnu::fallthrough]];
default:
return i;
}
}
+1 -12
View File
@@ -19,22 +19,11 @@
#cmakedefine HAVE_UNSETENV #cmakedefine HAVE_UNSETENV
#cmakedefine CMAKE_USE_ELF_PARSER #cmakedefine CMAKE_USE_ELF_PARSER
#cmakedefine CMAKE_USE_MACH_PARSER #cmakedefine CMAKE_USE_MACH_PARSER
#cmakedefine CMake_HAVE_CXX_FALLTHROUGH
#cmakedefine CMake_HAVE_CXX_GNU_FALLTHROUGH
#cmakedefine CMake_HAVE_CXX_ATTRIBUTE_FALLTHROUGH
#cmakedefine CMake_HAVE_CXX_MAKE_UNIQUE #cmakedefine CMake_HAVE_CXX_MAKE_UNIQUE
#define CMAKE_BIN_DIR "/@CMAKE_BIN_DIR@" #define CMAKE_BIN_DIR "/@CMAKE_BIN_DIR@"
#define CMAKE_DATA_DIR "/@CMAKE_DATA_DIR@" #define CMAKE_DATA_DIR "/@CMAKE_DATA_DIR@"
#if defined(CMake_HAVE_CXX_FALLTHROUGH) #define CM_FALLTHROUGH cmsys_FALLTHROUGH
#define CM_FALLTHROUGH [[fallthrough]]
#elif defined(CMake_HAVE_CXX_GNU_FALLTHROUGH)
#define CM_FALLTHROUGH [[gnu::fallthrough]]
#elif defined(CMake_HAVE_CXX_ATTRIBUTE_FALLTHROUGH)
#define CM_FALLTHROUGH __attribute__((fallthrough))
#else
#define CM_FALLTHROUGH
#endif
#define CM_DISABLE_COPY(Class) \ #define CM_DISABLE_COPY(Class) \
Class(Class const&) = delete; \ Class(Class const&) = delete; \