Skip to content
Snippets Groups Projects
Commit fa1ab7b8 authored by Brad King's avatar Brad King Committed by Kitware Robot
Browse files

Merge topic 'fallthrough'


1b09cf0d Configure: Add KWSYS_FALLTHROUGH macro for C++ code

Acked-by: default avatarKitware Robot <kwrobot@kitware.com>
Merge-request: !69
parents 40d7b1bb 1b09cf0d
No related branches found
No related tags found
No related merge requests found
...@@ -1033,6 +1033,7 @@ IF(KWSYS_STANDALONE OR CMake_SOURCE_DIR) ...@@ -1033,6 +1033,7 @@ IF(KWSYS_STANDALONE OR CMake_SOURCE_DIR)
) )
ENDIF() ENDIF()
SET(KWSYS_CXX_TESTS ${KWSYS_CXX_TESTS} SET(KWSYS_CXX_TESTS ${KWSYS_CXX_TESTS}
testConfigure
testSystemTools testSystemTools
testCommandLineArguments testCommandLineArguments
testCommandLineArguments1 testCommandLineArguments1
......
...@@ -12,6 +12,31 @@ ...@@ -12,6 +12,31 @@
#define @KWSYS_NAMESPACE@_CXX_HAS_EXT_STDIO_FILEBUF_H \ #define @KWSYS_NAMESPACE@_CXX_HAS_EXT_STDIO_FILEBUF_H \
@KWSYS_CXX_HAS_EXT_STDIO_FILEBUF_H@ @KWSYS_CXX_HAS_EXT_STDIO_FILEBUF_H@
#if defined(__SUNPRO_CC) && __SUNPRO_CC > 0x5130 && defined(__has_attribute)
#define @KWSYS_NAMESPACE@__has_cpp_attribute(x) __has_attribute(x)
#elif defined(__has_cpp_attribute)
#define @KWSYS_NAMESPACE@__has_cpp_attribute(x) __has_cpp_attribute(x)
#else
#define @KWSYS_NAMESPACE@__has_cpp_attribute(x) 0
#endif
#ifndef @KWSYS_NAMESPACE@_FALLTHROUGH
#if __cplusplus >= 201703L && @KWSYS_NAMESPACE@__has_cpp_attribute(fallthrough)
#define @KWSYS_NAMESPACE@_FALLTHROUGH [[fallthrough]]
#elif __cplusplus >= 201103L && \
@KWSYS_NAMESPACE@__has_cpp_attribute(gnu::fallthrough)
#define @KWSYS_NAMESPACE@_FALLTHROUGH [[gnu::fallthrough]]
#elif __cplusplus >= 201103L && \
@KWSYS_NAMESPACE@__has_cpp_attribute(clang::fallthrough)
#define @KWSYS_NAMESPACE@_FALLTHROUGH [[clang::fallthrough]]
#endif
#endif
#ifndef @KWSYS_NAMESPACE@_FALLTHROUGH
#define @KWSYS_NAMESPACE@_FALLTHROUGH static_cast<void>(0)
#endif
#undef @KWSYS_NAMESPACE@__has_cpp_attribute
/* If building a C++ file in kwsys itself, give the source file /* If building a C++ file in kwsys itself, give the source file
access to the macros without a configured namespace. */ access to the macros without a configured namespace. */
#if defined(KWSYS_NAMESPACE) #if defined(KWSYS_NAMESPACE)
...@@ -22,6 +47,7 @@ ...@@ -22,6 +47,7 @@
#define KWSYS_STL_HAS_WSTRING @KWSYS_NAMESPACE@_STL_HAS_WSTRING #define KWSYS_STL_HAS_WSTRING @KWSYS_NAMESPACE@_STL_HAS_WSTRING
#define KWSYS_CXX_HAS_EXT_STDIO_FILEBUF_H \ #define KWSYS_CXX_HAS_EXT_STDIO_FILEBUF_H \
@KWSYS_NAMESPACE@_CXX_HAS_EXT_STDIO_FILEBUF_H @KWSYS_NAMESPACE@_CXX_HAS_EXT_STDIO_FILEBUF_H
#define KWSYS_FALLTHROUGH @KWSYS_NAMESPACE@_FALLTHROUGH
#endif #endif
#endif #endif
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
file Copyright.txt or https://cmake.org/licensing#kwsys for details. */
#include "kwsysPrivate.h"
#include KWSYS_HEADER(Configure.hxx)
// Work-around CMake dependency scanning limitation. This must
// duplicate the above list of headers.
#if 0
#include "Configure.hxx.in"
#endif
static bool testFallthrough(int n)
{
int r = 0;
switch (n) {
case 1:
++r;
KWSYS_FALLTHROUGH;
default:
++r;
}
return r == 2;
}
int testConfigure(int, char* [])
{
bool res = true;
res = testFallthrough(1) && res;
return res ? 0 : 1;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment