diff options
author | Daniel Pfeifer <daniel@pfeifer-mail.de> | 2017-04-22 08:09:41 (GMT) |
---|---|---|
committer | Daniel Pfeifer <daniel@pfeifer-mail.de> | 2017-04-22 08:09:41 (GMT) |
commit | 5d1671324bbcf0826b32c4c1691ae0f1041430ed (patch) | |
tree | 6f48e4257e0682770a83a5707efbe4fed65c3d2a | |
parent | e9d1ca782ec8668681e2e88a6112af40409e5b50 (diff) | |
download | CMake-5d1671324bbcf0826b32c4c1691ae0f1041430ed.zip CMake-5d1671324bbcf0826b32c4c1691ae0f1041430ed.tar.gz CMake-5d1671324bbcf0826b32c4c1691ae0f1041430ed.tar.bz2 |
cmConfigure: provide macros CM_EQ_DELETE and CM_DISABLE_COPY
-rw-r--r-- | Source/Checks/cm_cxx_eq_delete.cxx | 14 | ||||
-rw-r--r-- | Source/Checks/cm_cxx_features.cmake | 1 | ||||
-rw-r--r-- | Source/cmConfigure.cmake.h.in | 11 | ||||
-rwxr-xr-x | bootstrap | 2 |
4 files changed, 28 insertions, 0 deletions
diff --git a/Source/Checks/cm_cxx_eq_delete.cxx b/Source/Checks/cm_cxx_eq_delete.cxx new file mode 100644 index 0000000..809e4cf --- /dev/null +++ b/Source/Checks/cm_cxx_eq_delete.cxx @@ -0,0 +1,14 @@ +struct Foo +{ + Foo() {} + ~Foo() {} + Foo(Foo const&) = delete; + Foo& operator=(Foo const&) = delete; + int test() const { return 0; } +}; + +int main() +{ + Foo const foo; + return foo.test(); +} diff --git a/Source/Checks/cm_cxx_features.cmake b/Source/Checks/cm_cxx_features.cmake index 80c9f3b..cd58539 100644 --- a/Source/Checks/cm_cxx_features.cmake +++ b/Source/Checks/cm_cxx_features.cmake @@ -33,6 +33,7 @@ endfunction() if(CMAKE_CXX_STANDARD) cm_check_cxx_feature(auto_ptr) + cm_check_cxx_feature(eq_delete) cm_check_cxx_feature(make_unique) if(CMake_HAVE_CXX_MAKE_UNIQUE) set(CMake_HAVE_CXX_UNIQUE_PTR 1) diff --git a/Source/cmConfigure.cmake.h.in b/Source/cmConfigure.cmake.h.in index e30b43f..970fde5 100644 --- a/Source/cmConfigure.cmake.h.in +++ b/Source/cmConfigure.cmake.h.in @@ -21,6 +21,7 @@ #cmakedefine CMAKE_USE_MACH_PARSER #cmakedefine CMAKE_USE_LIBUV #cmakedefine CMake_HAVE_CXX_AUTO_PTR +#cmakedefine CMake_HAVE_CXX_EQ_DELETE #cmakedefine CMake_HAVE_CXX_MAKE_UNIQUE #cmakedefine CMake_HAVE_CXX_NULLPTR #cmakedefine CMake_HAVE_CXX_OVERRIDE @@ -30,6 +31,12 @@ #define CMAKE_BIN_DIR "/@CMAKE_BIN_DIR@" #define CMAKE_DATA_DIR "/@CMAKE_DATA_DIR@" +#ifdef CMake_HAVE_CXX_EQ_DELETE +#define CM_EQ_DELETE = delete +#else +#define CM_EQ_DELETE +#endif + #ifdef CMake_HAVE_CXX_NULLPTR #define CM_NULLPTR nullptr #else @@ -42,4 +49,8 @@ #define CM_OVERRIDE #endif +#define CM_DISABLE_COPY(Class) \ + Class(Class const&) CM_EQ_DELETE; \ + Class& operator=(Class const&) CM_EQ_DELETE; + #endif @@ -1369,8 +1369,10 @@ cmake_report cmConfigure.h${_tmp} "#define CMAKE_BOOTSTRAP_BINARY_DIR \"${CMAKE_ cmake_report cmConfigure.h${_tmp} "#define CMAKE_BIN_DIR \"/bootstrap-not-insalled\"" cmake_report cmConfigure.h${_tmp} "#define CMAKE_DATA_DIR \"/bootstrap-not-insalled\"" cmake_report cmConfigure.h${_tmp} "#define CMAKE_BOOTSTRAP" +cmake_report cmConfigure.h${_tmp} "#define CM_EQ_DELETE" cmake_report cmConfigure.h${_tmp} "#define CM_NULLPTR 0" cmake_report cmConfigure.h${_tmp} "#define CM_OVERRIDE" +cmake_report cmConfigure.h${_tmp} "#define CM_DISABLE_COPY(Class)" # Regenerate configured headers for h in Configure VersionConfig; do |