mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-06 05:40:54 -06:00
KWSys 2017-11-30 (fa1ab7b8)
Code extracted from:
https://gitlab.kitware.com/utils/kwsys.git
at commit fa1ab7b8d790498359ab1b1bff522a7401a918fc (master).
Upstream Shortlog
-----------------
Brad King (1):
1b09cf0d Configure: Add KWSYS_FALLTHROUGH macro for C++ code
This commit is contained in:
committed by
Brad King
parent
e8d0b4312e
commit
5fa414594e
@@ -1033,6 +1033,7 @@ IF(KWSYS_STANDALONE OR CMake_SOURCE_DIR)
|
||||
)
|
||||
ENDIF()
|
||||
SET(KWSYS_CXX_TESTS ${KWSYS_CXX_TESTS}
|
||||
testConfigure
|
||||
testSystemTools
|
||||
testCommandLineArguments
|
||||
testCommandLineArguments1
|
||||
|
||||
@@ -12,6 +12,31 @@
|
||||
#define @KWSYS_NAMESPACE@_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
|
||||
access to the macros without a configured namespace. */
|
||||
#if defined(KWSYS_NAMESPACE)
|
||||
@@ -22,6 +47,7 @@
|
||||
#define KWSYS_STL_HAS_WSTRING @KWSYS_NAMESPACE@_STL_HAS_WSTRING
|
||||
#define KWSYS_CXX_HAS_EXT_STDIO_FILEBUF_H \
|
||||
@KWSYS_NAMESPACE@_CXX_HAS_EXT_STDIO_FILEBUF_H
|
||||
#define KWSYS_FALLTHROUGH @KWSYS_NAMESPACE@_FALLTHROUGH
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
30
testConfigure.cxx
Normal file
30
testConfigure.cxx
Normal file
@@ -0,0 +1,30 @@
|
||||
/* 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;
|
||||
}
|
||||
Reference in New Issue
Block a user