From 97b6e17c336f36556981e9371af78f08f4d304bb Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 29 Sep 2016 13:12:49 -0400 Subject: server-mode: Enable from bootstrapped CMake build CMake is frequently built from source via bootstrap. There is no reason we cannot support server mode. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8e1aaf5..5ce3af2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -696,7 +696,7 @@ CMAKE_SETUP_TESTING() # Check whether to build server mode or not: set(CMake_HAVE_SERVER_MODE 0) -if(NOT CMake_TEST_EXTERNAL_CMAKE AND NOT CMAKE_BOOTSTRAP AND CMAKE_USE_LIBUV) +if(NOT CMake_TEST_EXTERNAL_CMAKE AND CMAKE_USE_LIBUV) 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) -- cgit v0.12 From a8334961997767ecc31333b52537aa5e5b6c561c Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 29 Sep 2016 13:18:47 -0400 Subject: server-mode: Rename variable CMake_{HAVE => ENABLE}_SERVER_MODE The latter is a better name for making it a public-facing option. --- CMakeLists.txt | 4 ++-- Source/CMakeLists.txt | 2 +- Tests/CMakeLists.txt | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5ce3af2..6a26858 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -695,13 +695,13 @@ endif() CMAKE_SETUP_TESTING() # Check whether to build server mode or not: -set(CMake_HAVE_SERVER_MODE 0) +set(CMake_ENABLE_SERVER_MODE 0) if(NOT CMake_TEST_EXTERNAL_CMAKE AND CMAKE_USE_LIBUV) 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) if(CMake_HAVE_CXX_MAKE_UNIQUE) - set(CMake_HAVE_SERVER_MODE 1) + set(CMake_ENABLE_SERVER_MODE 1) endif() endif() endif() diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index b8f02e3..2641381 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -778,7 +778,7 @@ add_executable(cmake cmakemain.cxx cmcmd.cxx cmcmd.h ${MANIFEST_FILE}) list(APPEND _tools cmake) target_link_libraries(cmake CMakeLib) -if(CMake_HAVE_SERVER_MODE) +if(CMake_ENABLE_SERVER_MODE) add_library(CMakeServerLib cmServer.cxx cmServer.h cmServerConnection.cxx cmServerConnection.h diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index c056fb8..484ea8a 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -2723,7 +2723,7 @@ ${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_HAVE_SERVER_MODE) + if(CMake_ENABLE_SERVER_MODE) # The cmake server-mode test requires python for a simple client. find_package(PythonInterp QUIET) if(PYTHON_EXECUTABLE) -- cgit v0.12 From 6b97a5efc6c41a440ed5d9eb5ba9aed834d0bd40 Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 29 Sep 2016 13:29:32 -0400 Subject: server-mode: Add option to enable/disable the mode explicitly Provide a way for scripts building CMake to enable server mode explicitly and assume the risk of a build failure if it is not supported. This will allow such scripts to ensure that server mode is available if the build succeeds. It also allows scripts to explicitly disable server mode even if it would be supported. --- CMakeLists.txt | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6a26858..f39ddf3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -695,15 +695,25 @@ endif() CMAKE_SETUP_TESTING() # Check whether to build server mode or not: -set(CMake_ENABLE_SERVER_MODE 0) -if(NOT CMake_TEST_EXTERNAL_CMAKE AND CMAKE_USE_LIBUV) - 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) - if(CMake_HAVE_CXX_MAKE_UNIQUE) +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_USE_LIBUV + AND CMake_HAVE_CXX_AUTO_TYPE + AND CMake_HAVE_CXX_MAKE_UNIQUE + AND CMake_HAVE_CXX_RANGE_FOR + ) set(CMake_ENABLE_SERVER_MODE 1) + else() + set(CMake_ENABLE_SERVER_MODE 0) endif() endif() + if(CMake_ENABLE_SERVER_MODE AND NOT CMAKE_USE_LIBUV) + message(FATAL_ERROR "The server mode requires libuv!") + endif() +else() + set(CMake_ENABLE_SERVER_MODE 0) endif() if(NOT CMake_TEST_EXTERNAL_CMAKE) -- cgit v0.12 From 523f8ec82c5fb62f5f67c962ff59886396abd8fd Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 29 Sep 2016 13:40:21 -0400 Subject: server-mode: Add option to enable/disable test case explicitly Add a `CMake_TEST_SERVER_MODE` option that can be set in testing builds to enable/disable server mode tests explicitly. This will allow testing in combination with `CMake_TEST_EXTERNAL_CMAKE` or for server mode to be built on systems that have a python version that cannot run the test. --- CMakeLists.txt | 3 +++ Tests/CMakeLists.txt | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f39ddf3..309e224 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -715,6 +715,9 @@ if(NOT CMake_TEST_EXTERNAL_CMAKE) 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) diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 484ea8a..31ed2eb 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -2723,7 +2723,7 @@ ${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_ENABLE_SERVER_MODE) + if(CMake_TEST_SERVER_MODE) # The cmake server-mode test requires python for a simple client. find_package(PythonInterp QUIET) if(PYTHON_EXECUTABLE) -- cgit v0.12 From ec0bf63823ff459d742a54fae4c8582b5b87d1dd Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 29 Sep 2016 13:53:33 -0400 Subject: bootstrap: Add options to enable/disable server mode explicitly --- bootstrap | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/bootstrap b/bootstrap index e22570e..889cc33 100755 --- a/bootstrap +++ b/bootstrap @@ -65,6 +65,7 @@ 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="" @@ -407,6 +408,9 @@ 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 @@ -641,6 +645,8 @@ 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" ;; @@ -1401,6 +1407,11 @@ 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 64934f20697e91a07221d1acc137a830d6e63132 Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 29 Sep 2016 13:45:43 -0400 Subject: Utilities/Release: Enable server mode in all binaries Add the CMake_ENABLE_SERVER_MODE option explicitly to the configuration of all binary builds. We want to know the mode is available if the build succeeds. --- Utilities/Release/linux64_release.cmake | 1 + Utilities/Release/osx_release.cmake | 1 + Utilities/Release/win32_release.cmake | 1 + Utilities/Release/win64_release.cmake | 1 + 4 files changed, 4 insertions(+) diff --git a/Utilities/Release/linux64_release.cmake b/Utilities/Release/linux64_release.cmake index e7e154e..cd55db8 100644 --- a/Utilities/Release/linux64_release.cmake +++ b/Utilities/Release/linux64_release.cmake @@ -33,6 +33,7 @@ OPENSSL_INCLUDE_DIR:PATH=/home/kitware/openssl-1.0.2h/include OPENSSL_SSL_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.2h/lib/libssl.a CPACK_SYSTEM_NAME:STRING=Linux-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_PREFIX_PATH:STRING=${qt_prefix} diff --git a/Utilities/Release/osx_release.cmake b/Utilities/Release/osx_release.cmake index 12b12d7..27c820f 100644 --- a/Utilities/Release/osx_release.cmake +++ b/Utilities/Release/osx_release.cmake @@ -20,6 +20,7 @@ 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 f54a4ca..df9fe27 100644 --- a/Utilities/Release/win32_release.cmake +++ b/Utilities/Release/win32_release.cmake @@ -15,6 +15,7 @@ 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 bd2690f..ab52d79 100644 --- a/Utilities/Release/win64_release.cmake +++ b/Utilities/Release/win64_release.cmake @@ -16,6 +16,7 @@ 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 -- cgit v0.12 From 957e72c0c5503130157f9ae1579860d1fd9caefa Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 29 Sep 2016 13:47:13 -0400 Subject: Utilities/Release: Use python 3 for server mode test on Linux binary The machine that builds the Linux binary has python 3 and 2.6, but the latter is too old for the server mode test script. --- Utilities/Release/linux64_release.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/Utilities/Release/linux64_release.cmake b/Utilities/Release/linux64_release.cmake index cd55db8..b72fc12 100644 --- a/Utilities/Release/linux64_release.cmake +++ b/Utilities/Release/linux64_release.cmake @@ -31,6 +31,7 @@ CMAKE_USE_OPENSSL:BOOL=ON OPENSSL_CRYPTO_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.2h/lib/libcrypto.a OPENSSL_INCLUDE_DIR:PATH=/home/kitware/openssl-1.0.2h/include OPENSSL_SSL_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.2h/lib/libssl.a +PYTHON_EXECUTABLE:FILEPATH=/usr/bin/python3 CPACK_SYSTEM_NAME:STRING=Linux-x86_64 BUILD_QtDialog:BOOL:=TRUE CMake_ENABLE_SERVER_MODE:BOOL=TRUE -- cgit v0.12