From 4614a3b287456fad12bcb91ad2936214da3237bf Mon Sep 17 00:00:00 2001 From: Daniel Pfeifer Date: Thu, 17 Aug 2017 00:41:18 +0200 Subject: server: backport to C++11 --- CMakeLists.txt | 5 +---- Source/cmAlgorithms.h | 19 +++++++++++++++++++ Source/cmServer.cxx | 3 ++- Source/cmServerProtocol.cxx | 2 +- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 67c4cdc..7b0a1d1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -723,10 +723,7 @@ if(NOT CMake_TEST_EXTERNAL_CMAKE) if(NOT DEFINED CMake_ENABLE_SERVER_MODE) list(FIND CMAKE_CXX_COMPILE_FEATURES cxx_auto_type CMake_HAVE_CXX_AUTO_TYPE) list(FIND CMAKE_CXX_COMPILE_FEATURES cxx_range_for CMake_HAVE_CXX_RANGE_FOR) - if(CMake_HAVE_CXX_AUTO_TYPE - AND CMake_HAVE_CXX_MAKE_UNIQUE - AND CMake_HAVE_CXX_RANGE_FOR - ) + if(CMake_HAVE_CXX_AUTO_TYPE AND CMake_HAVE_CXX_RANGE_FOR) set(CMake_ENABLE_SERVER_MODE 1) else() set(CMake_ENABLE_SERVER_MODE 0) diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h index 4adfe23..a4f66a9 100644 --- a/Source/cmAlgorithms.h +++ b/Source/cmAlgorithms.h @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -402,4 +403,22 @@ inline void cmStripSuffixIfExists(std::string& str, const std::string& suffix) } } +namespace cm { + +#if defined(CMake_HAVE_CXX_MAKE_UNIQUE) + +using std::make_unique; + +#else + +template +std::unique_ptr make_unique(Args&&... args) +{ + return std::unique_ptr(new T(std::forward(args)...)); +} + +#endif + +} // namespace cm + #endif diff --git a/Source/cmServer.cxx b/Source/cmServer.cxx index 04810c6..d3aeb0b 100644 --- a/Source/cmServer.cxx +++ b/Source/cmServer.cxx @@ -2,6 +2,7 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmServer.h" +#include "cmAlgorithms.h" #include "cmConnection.h" #include "cmFileMonitor.h" #include "cmServerDictionary.h" @@ -78,7 +79,7 @@ void cmServer::ProcessRequest(cmConnection* connection, std::unique_ptr debug; Json::Value debugValue = value["debug"]; if (!debugValue.isNull()) { - debug = std::make_unique(); + debug = cm::make_unique(); debug->OutputFile = debugValue["dumpToFile"].asString(); debug->PrintStatistics = debugValue["showStats"].asBool(); } diff --git a/Source/cmServerProtocol.cxx b/Source/cmServerProtocol.cxx index cb5e6ae..0b50deb 100644 --- a/Source/cmServerProtocol.cxx +++ b/Source/cmServerProtocol.cxx @@ -220,7 +220,7 @@ bool cmServerProtocol::Activate(cmServer* server, { assert(server); this->m_Server = server; - this->m_CMakeInstance = std::make_unique(cmake::RoleProject); + this->m_CMakeInstance = cm::make_unique(cmake::RoleProject); const bool result = this->DoActivate(request, errorMessage); if (!result) { this->m_CMakeInstance = nullptr; -- cgit v0.12 From 7f29bbe6f25211165fc188d3a823ecf3bc831f8d Mon Sep 17 00:00:00 2001 From: Daniel Pfeifer Date: Fri, 25 Aug 2017 22:07:43 +0200 Subject: server: always enable server --- CMakeLists.txt | 18 ------------------ Source/CMakeLists.txt | 24 ++++++++++-------------- Source/cmcmd.cxx | 11 ++++------- Tests/CMakeLists.txt | 12 +++++------- Utilities/Release/linux64_release.cmake | 1 - Utilities/Release/osx_release.cmake | 1 - Utilities/Release/win32_release.cmake | 1 - Utilities/Release/win64_release.cmake | 1 - bootstrap | 11 ----------- 9 files changed, 19 insertions(+), 61 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7b0a1d1..c9e632e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -718,24 +718,6 @@ endif() # setup some Testing support (a macro defined in this file) CMAKE_SETUP_TESTING() -# Check whether to build server mode or not: -if(NOT CMake_TEST_EXTERNAL_CMAKE) - if(NOT DEFINED CMake_ENABLE_SERVER_MODE) - list(FIND CMAKE_CXX_COMPILE_FEATURES cxx_auto_type CMake_HAVE_CXX_AUTO_TYPE) - list(FIND CMAKE_CXX_COMPILE_FEATURES cxx_range_for CMake_HAVE_CXX_RANGE_FOR) - if(CMake_HAVE_CXX_AUTO_TYPE AND CMake_HAVE_CXX_RANGE_FOR) - set(CMake_ENABLE_SERVER_MODE 1) - else() - set(CMake_ENABLE_SERVER_MODE 0) - endif() - endif() -else() - set(CMake_ENABLE_SERVER_MODE 0) -endif() -if(NOT DEFINED CMake_TEST_SERVER_MODE) - set(CMake_TEST_SERVER_MODE ${CMake_ENABLE_SERVER_MODE}) -endif() - if(NOT CMake_TEST_EXTERNAL_CMAKE) if(NOT CMake_VERSION_IS_RELEASE) if(CMAKE_C_COMPILER_ID STREQUAL "GNU" AND diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index d35b7fb..bcc3437 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -1010,20 +1010,16 @@ add_executable(cmake cmakemain.cxx cmcmd.cxx cmcmd.h ${MANIFEST_FILE}) list(APPEND _tools cmake) target_link_libraries(cmake CMakeLib) -if(CMake_ENABLE_SERVER_MODE) - add_library(CMakeServerLib - cmConnection.h cmConnection.cxx - cmFileMonitor.cxx cmFileMonitor.h - cmPipeConnection.cxx cmPipeConnection.h - cmServer.cxx cmServer.h - cmServerConnection.cxx cmServerConnection.h - cmServerProtocol.cxx cmServerProtocol.h - ) - target_link_libraries(CMakeServerLib CMakeLib) - set_property(SOURCE cmcmd.cxx APPEND PROPERTY COMPILE_DEFINITIONS HAVE_SERVER_MODE=1) - - target_link_libraries(cmake CMakeServerLib) -endif() +add_library(CMakeServerLib + cmConnection.h cmConnection.cxx + cmFileMonitor.cxx cmFileMonitor.h + cmPipeConnection.cxx cmPipeConnection.h + cmServer.cxx cmServer.h + cmServerConnection.cxx cmServerConnection.h + cmServerProtocol.cxx cmServerProtocol.h + ) +target_link_libraries(CMakeServerLib CMakeLib) +target_link_libraries(cmake CMakeServerLib) # Build CTest executable add_executable(ctest ctest.cxx ${MANIFEST_FILE}) diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx index 6b9a4a4..830a05c 100644 --- a/Source/cmcmd.cxx +++ b/Source/cmcmd.cxx @@ -15,13 +15,10 @@ #include "cm_auto_ptr.hxx" #include "cmake.h" -#if defined(HAVE_SERVER_MODE) && HAVE_SERVER_MODE -#include "cmServer.h" -#include "cmServerConnection.h" -#endif - #if defined(CMAKE_BUILD_WITH_CMAKE) #include "cmDependsFortran.h" // For -E cmake_copy_f90_mod callback. +#include "cmServer.h" +#include "cmServerConnection.h" #endif #if defined(CMAKE_BUILD_WITH_CMAKE) && defined(_WIN32) @@ -591,7 +588,7 @@ int cmcmd::ExecuteCMakeCommand(std::vector& args) return 1; } cmake cm(cmake::RoleInternal); -#if defined(HAVE_SERVER_MODE) && HAVE_SERVER_MODE +#if defined(CMAKE_BUILD_WITH_CMAKE) std::cout << cm.ReportCapabilities(true); #else std::cout << cm.ReportCapabilities(false); @@ -1023,7 +1020,7 @@ int cmcmd::ExecuteCMakeCommand(std::vector& args) return 1; } } -#if defined(HAVE_SERVER_MODE) && HAVE_SERVER_MODE +#if defined(CMAKE_BUILD_WITH_CMAKE) cmConnection* conn; if (isDebug) { conn = new cmServerStdIoConnection; diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 13d796e..f0e58ee 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -2818,13 +2818,11 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release ADD_TEST_MACRO(CMakeCommands.target_compile_definitions target_compile_definitions) ADD_TEST_MACRO(CMakeCommands.target_compile_options target_compile_options) - if(CMake_TEST_SERVER_MODE) - # The cmake server-mode test requires python for a simple client. - find_package(PythonInterp QUIET) - if(PYTHON_EXECUTABLE) - set(Server_BUILD_OPTIONS -DPYTHON_EXECUTABLE:FILEPATH=${PYTHON_EXECUTABLE}) - ADD_TEST_MACRO(Server Server) - endif() + # The cmake server-mode test requires python for a simple client. + find_package(PythonInterp QUIET) + if(PYTHON_EXECUTABLE) + set(Server_BUILD_OPTIONS -DPYTHON_EXECUTABLE:FILEPATH=${PYTHON_EXECUTABLE}) + ADD_TEST_MACRO(Server Server) endif() configure_file( diff --git a/Utilities/Release/linux64_release.cmake b/Utilities/Release/linux64_release.cmake index 3d8ddba..02742ad 100644 --- a/Utilities/Release/linux64_release.cmake +++ b/Utilities/Release/linux64_release.cmake @@ -36,7 +36,6 @@ PYTHON_EXECUTABLE:FILEPATH=/usr/bin/python3 CPACK_SYSTEM_NAME:STRING=Linux-x86_64 BUILD_QtDialog:BOOL:=TRUE CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE -CMake_ENABLE_SERVER_MODE:BOOL=TRUE CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:STRING=3 CMake_INSTALL_DEPENDENCIES:BOOL=ON CMAKE_PREFIX_PATH:STRING=${qt_prefix} diff --git a/Utilities/Release/osx_release.cmake b/Utilities/Release/osx_release.cmake index 36498a7..c69eb11 100644 --- a/Utilities/Release/osx_release.cmake +++ b/Utilities/Release/osx_release.cmake @@ -20,7 +20,6 @@ CMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.7 CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE CPACK_SYSTEM_NAME:STRING=Darwin-x86_64 BUILD_QtDialog:BOOL=TRUE -CMake_ENABLE_SERVER_MODE:BOOL=TRUE CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:STRING=3 CMake_INSTALL_DEPENDENCIES:BOOL=ON CMAKE_SKIP_RPATH:BOOL=TRUE diff --git a/Utilities/Release/win32_release.cmake b/Utilities/Release/win32_release.cmake index df9fe27..f54a4ca 100644 --- a/Utilities/Release/win32_release.cmake +++ b/Utilities/Release/win32_release.cmake @@ -15,7 +15,6 @@ CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE CMAKE_Fortran_COMPILER:FILEPATH=FALSE CMAKE_GENERATOR:INTERNAL=Ninja BUILD_QtDialog:BOOL:=TRUE -CMake_ENABLE_SERVER_MODE:BOOL=TRUE CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:STRING=3 CMake_INSTALL_DEPENDENCIES:BOOL=ON CMAKE_EXE_LINKER_FLAGS:STRING=-machine:x86 -subsystem:console,5.01 diff --git a/Utilities/Release/win64_release.cmake b/Utilities/Release/win64_release.cmake index ab52d79..bd2690f 100644 --- a/Utilities/Release/win64_release.cmake +++ b/Utilities/Release/win64_release.cmake @@ -16,7 +16,6 @@ CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE CMAKE_Fortran_COMPILER:FILEPATH=FALSE CMAKE_GENERATOR:INTERNAL=Ninja BUILD_QtDialog:BOOL:=TRUE -CMake_ENABLE_SERVER_MODE:BOOL=TRUE CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:STRING=3 CMake_INSTALL_DEPENDENCIES:BOOL=ON CMAKE_EXE_LINKER_FLAGS:STRING=-machine:x64 -subsystem:console,5.02 diff --git a/bootstrap b/bootstrap index ba33195..e543d62 100755 --- a/bootstrap +++ b/bootstrap @@ -72,7 +72,6 @@ cmake_init_file="" cmake_bootstrap_system_libs="" cmake_bootstrap_qt_gui="" cmake_bootstrap_qt_qmake="" -cmake_bootstrap_server="" cmake_sphinx_man="" cmake_sphinx_html="" cmake_sphinx_qthelp="" @@ -520,9 +519,6 @@ Configuration: --no-qt-gui do not build the Qt-based GUI (default) --qt-qmake= use as the qmake executable to find Qt - --server enable the server mode (default if supported) - --no-server disable the server mode - --sphinx-man build man pages with Sphinx --sphinx-html build html help with Sphinx --sphinx-qthelp build qch help with Sphinx @@ -755,8 +751,6 @@ while test $# != 0; do --qt-gui) cmake_bootstrap_qt_gui="1" ;; --no-qt-gui) cmake_bootstrap_qt_gui="0" ;; --qt-qmake=*) cmake_bootstrap_qt_qmake=`cmake_arg "$1"` ;; - --server) cmake_bootstrap_server="1" ;; - --no-server) cmake_bootstrap_server="0" ;; --sphinx-man) cmake_sphinx_man="1" ;; --sphinx-html) cmake_sphinx_html="1" ;; --sphinx-qthelp) cmake_sphinx_qthelp="1" ;; @@ -1338,11 +1332,6 @@ if [ "x${cmake_bootstrap_qt_qmake}" != "x" ]; then set (QT_QMAKE_EXECUTABLE "'"${cmake_bootstrap_qt_qmake}"'" CACHE FILEPATH "Location of Qt qmake" FORCE) ' >> "${cmake_bootstrap_dir}/InitialCacheFlags.cmake" fi -if [ "x${cmake_bootstrap_server}" != "x" ]; then - echo ' -set (CMake_ENABLE_SERVER_MODE '"${cmake_bootstrap_server}"' CACHE BOOL "Enable server mode" FORCE) -' >> "${cmake_bootstrap_dir}/InitialCacheFlags.cmake" -fi if [ "x${cmake_sphinx_man}" != "x" ]; then echo ' set (SPHINX_MAN "'"${cmake_sphinx_man}"'" CACHE BOOL "Build man pages with Sphinx" FORCE) -- cgit v0.12 From 27d87fbd04839e868ae7ef3c27ddfcb9379e80a0 Mon Sep 17 00:00:00 2001 From: Daniel Pfeifer Date: Sat, 26 Aug 2017 20:38:07 +0200 Subject: CTestCustom: Suppress exception loosening warning --- CTestCustom.cmake.in | 1 + 1 file changed, 1 insertion(+) diff --git a/CTestCustom.cmake.in b/CTestCustom.cmake.in index 6a37275..e005643 100644 --- a/CTestCustom.cmake.in +++ b/CTestCustom.cmake.in @@ -44,6 +44,7 @@ list(APPEND CTEST_CUSTOM_WARNING_EXCEPTION "Warning: LINN32: Last line.*is less.*" "Warning: Olimit was exceeded on function.*" "Warning: To override Olimit for all functions in file.*" + "Warning: Function .* can throw only the exceptions thrown by the function .* it overrides\\." "WarningMessagesDialog\\.cxx" "warning.*directory name.*CMake-Xcode.*/bin/.*does not exist.*" "stl_deque.h:1051" -- cgit v0.12