Mercurial > irccd
changeset 513:928a40398dec
CMake: split options and conditions, closes #716
As described in the issue, the CMake process force off a cache variable
when a condition is not met. If the user installs the requirements and
re-run CMake it must also set the variable to on which is inconvenient.
The new process is to add a secondary variable and do not touch user
defined options.
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 23 Oct 2017 21:30:17 +0200 |
parents | b8da1d8c2a72 |
children | 16b9ebfd3f08 |
files | CMakeLists.txt cmake/IrccdOptions.cmake cmake/function/IrccdDefinePlugin.cmake cmake/function/IrccdVeraCheck.cmake cmake/internal/sysconfig.hpp.in doc/CMakeLists.txt doc/doxygen/CMakeLists.txt doc/doxygen/Doxyfile.in doc/html/CMakeLists.txt extern/libircclient/CMakeLists.txt irccd/CMakeLists.txt irccd/main.cpp irccdctl/main.cpp libcommon/CMakeLists.txt libirccd-test/CMakeLists.txt libirccd/irccd/config.cpp libirccd/irccd/server.cpp libirccd/irccd/transport.cpp libirccd/irccd/transport.hpp libirccdctl/irccd/client.cpp libirccdctl/irccd/client.hpp tests/CMakeLists.txt win32/CMakeLists.txt |
diffstat | 23 files changed, 100 insertions(+), 111 deletions(-) [+] |
line wrap: on
line diff
--- a/CMakeLists.txt Fri Oct 20 11:43:36 2017 +0200 +++ b/CMakeLists.txt Mon Oct 23 21:30:17 2017 +0200 @@ -82,7 +82,7 @@ add_subdirectory(libirccd) add_subdirectory(libirccdctl) -if (WITH_JS) +if (HAVE_JS) add_subdirectory(libirccd-js) endif () @@ -90,7 +90,7 @@ add_subdirectory(irccdctl) add_subdirectory(contrib) -if (WITH_JS) +if (HAVE_JS) add_subdirectory(plugins) endif ()
--- a/cmake/IrccdOptions.cmake Fri Oct 20 11:43:36 2017 +0200 +++ b/cmake/IrccdOptions.cmake Mon Oct 23 21:30:17 2017 +0200 @@ -105,6 +105,7 @@ if (WITH_JS) add_subdirectory(extern/duktape) + set(HAVE_JS On) set(WITH_JS_MSG "Yes") else () set(WITH_JS_MSG "No") @@ -134,10 +135,10 @@ if (WITH_SSL) if (OPENSSL_FOUND) + set(HAVE_SSL On) set(WITH_SSL_MSG "Yes") else () set(WITH_SSL_MSG "No (OpenSSL not found)") - set(WITH_SSL FALSE) endif () else() set(WITH_SSL_MSG "No (disabled by user)") @@ -145,10 +146,10 @@ if (WITH_DOXYGEN) if (DOXYGEN_FOUND) + set(HAVE_DOXYGEN On) set(WITH_DOXYGEN_MSG "Yes") else () set(WITH_DOXYGEN_MSG "No (doxygen not found)") - set(WITH_DOXYGEN FALSE) endif () else () set(WITH_DOXYGEN_MSG "No (disabled by user)") @@ -156,14 +157,13 @@ if (WITH_HTML) if (Pandoc_FOUND) + set(HAVE_HTML On) set(WITH_HTML_MSG "Yes") else () set(WITH_HTML_MSG "No (pandoc not found)") - set(WITH_HTML FALSE) endif () else () set(WITH_HTML_MSG "No (disabled by user)") - set(WITH_HTML FALSE) endif () find_program(VERA_EXECUTABLE vera++) @@ -175,18 +175,15 @@ OUTPUT_VARIABLE VERA_VERSION ) - if (${VERA_VERSION} VERSION_LESS "1.3.0") - set(WITH_VERA Off) + if (${VERA_VERSION} GREATER_EQUAL "1.3.0") + set(HAVE_VERA On) + else () set(WITH_VERA_MSG "No (1.3.0 or greater required)") - else () - set(WITH_VERA_MSG "Yes") endif () else () - set(WITH_VERA Off) set(WITH_VERA_MSG "No (disabled by user)") endif () else () - set(WITH_VERA Off) set(WITH_VERA_MSG "No (vera++ not found)") endif ()
--- a/cmake/function/IrccdDefinePlugin.cmake Fri Oct 20 11:43:36 2017 +0200 +++ b/cmake/function/IrccdDefinePlugin.cmake Mon Oct 23 21:30:17 2017 +0200 @@ -110,7 +110,7 @@ setg(WITH_PLUGIN_${PLG_UPPER_NAME}_MSG "Yes") # Optional documentation. - if (PLG_DOCS AND WITH_HTML) + if (PLG_DOCS AND HAVE_HTML) irccd_build_html( SOURCE ${PLG_DOCS} OUTPUT plugin/${PLG_NAME}
--- a/cmake/function/IrccdVeraCheck.cmake Fri Oct 20 11:43:36 2017 +0200 +++ b/cmake/function/IrccdVeraCheck.cmake Mon Oct 23 21:30:17 2017 +0200 @@ -24,14 +24,14 @@ # # Check the style source code using vera++. # -# No-op if WITH_VERA is Off. +# No-op if HAVE_VERA is Off. # # This macro add a post-build command to call vera++ program on the specified # sources file for the given target. # function(irccd_vera_check target sources) - if (WITH_VERA) + if (HAVE_VERA) set(valid ".cpp;.c;.hpp;.h") # Cleanup non relevant files.
--- a/cmake/internal/sysconfig.hpp.in Fri Oct 20 11:43:36 2017 +0200 +++ b/cmake/internal/sysconfig.hpp.in Mon Oct 23 21:30:17 2017 +0200 @@ -71,8 +71,8 @@ #define WITH_SYSCONFDIR "@WITH_SYSCONFDIR@" #define WITH_PLUGINDIR "@WITH_PLUGINDIR@" -#cmakedefine WITH_JS -#cmakedefine WITH_SSL +#cmakedefine HAVE_JS +#cmakedefine HAVE_SSL /* * Platform checks.
--- a/doc/CMakeLists.txt Fri Oct 20 11:43:36 2017 +0200 +++ b/doc/CMakeLists.txt Mon Oct 23 21:30:17 2017 +0200 @@ -18,13 +18,13 @@ project(doc) -if (WITH_DOXYGEN) +if (HAVE_DOXYGEN) add_subdirectory(doxygen) endif () add_subdirectory(examples) add_subdirectory(man) -if (WITH_HTML) +if (HAVE_HTML) add_subdirectory(html) endif ()
--- a/doc/doxygen/CMakeLists.txt Fri Oct 20 11:43:36 2017 +0200 +++ b/doc/doxygen/CMakeLists.txt Mon Oct 23 21:30:17 2017 +0200 @@ -16,9 +16,6 @@ project(doxygen) -set(DOXYGEN_INPUT ${CMAKE_SOURCE_DIR}/lib) -set(DOXYGEN_OUTPUT ${IRCCD_FAKEROOTDIR}/${WITH_DOCDIR}/doxygen) - if (NOT DOXYGEN_DOT_FOUND) set(DOXYGEN_HAVE_DOT "NO") set(DOXYGEN_DOT_PATH "") @@ -29,18 +26,17 @@ configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in - ${CMAKE_BINARY_DIR}/Doxyfile + ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile ) add_custom_target( - docs-doxygen + doxygen + ALL COMMENT "Generating doxygen documentation" COMMAND - ${CMAKE_COMMAND} -E make_directory ${IRCCD_FAKEROOTDIR}/${WITH_DOCDIR}/doxygen + ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR} COMMAND - ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile + ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ) - -add_dependencies(all-docs docs-doxygen)
--- a/doc/doxygen/Doxyfile.in Fri Oct 20 11:43:36 2017 +0200 +++ b/doc/doxygen/Doxyfile.in Mon Oct 23 21:30:17 2017 +0200 @@ -6,8 +6,6 @@ # The following variables are set by CMake: # # VERSION The project version -# DOXYGEN_INPUT The source directory -# DOXYGEN_OUTPUT The output directory # DOXYGEN_HAVE_DOT True if have dot # DOXYGEN_DOT_PATH The path to dot # @@ -57,7 +55,7 @@ # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = @DOXYGEN_OUTPUT@ +OUTPUT_DIRECTORY = @CMAKE_CURRENT_BINARY_DIR@ # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub- # directories (in 2 levels) under the output directory of each output format and @@ -131,7 +129,7 @@ # shortest path that makes the file name unique will be used # The default value is: YES. -FULL_PATH_NAMES = NO +FULL_PATH_NAMES = YES # The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. # Stripping is only done if one of the specified strings matches the left-hand @@ -143,7 +141,7 @@ # will be relative from the directory where doxygen is started. # This tag requires that the tag FULL_PATH_NAMES is set to YES. -STRIP_FROM_PATH = @DOXYGEN_INPUT@/lib +STRIP_FROM_PATH = libcommon libirccd libserver # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the # path mentioned in the documentation of a class, which tells the reader which @@ -742,7 +740,7 @@ # spaces. # Note: If this tag is empty the current directory is searched. -INPUT = @DOXYGEN_INPUT@ +INPUT = libcommon libirccd libirccdctl # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
--- a/doc/html/CMakeLists.txt Fri Oct 20 11:43:36 2017 +0200 +++ b/doc/html/CMakeLists.txt Mon Oct 23 21:30:17 2017 +0200 @@ -194,51 +194,49 @@ ${html_SOURCE_DIR}/resources/js/jquery.min.js ) -if (WITH_HTML) - foreach (file ${HTML_SOURCES}) - irccd_build_html( - SOURCE ${file} - OUTPUT_VAR output - ) - list(APPEND OUTPUTS ${output}) +foreach (file ${HTML_SOURCES}) + irccd_build_html( + SOURCE ${file} + OUTPUT_VAR output + ) + list(APPEND OUTPUTS ${output}) - # Install this file. - file(RELATIVE_PATH basename ${html_SOURCE_DIR} ${file}) - get_filename_component(dirname ${basename} DIRECTORY) - install( - FILES ${output} - COMPONENT docs - DESTINATION ${WITH_DOCDIR}/${dirname} - ) - endforeach () + # Install this file. + file(RELATIVE_PATH basename ${html_SOURCE_DIR} ${file}) + get_filename_component(dirname ${basename} DIRECTORY) + install( + FILES ${output} + COMPONENT docs + DESTINATION ${WITH_DOCDIR}/${dirname} + ) +endforeach () - add_custom_target( - html ALL - SOURCES - ${HTML_SOURCES} ${CSS} ${JS} ${OUTPUTS} - ${html_SOURCE_DIR}/resources/template.html - COMMAND - ${CMAKE_COMMAND} -E make_directory ${html_BINARY_DIR}/css - COMMAND - ${CMAKE_COMMAND} -E make_directory ${html_BINARY_DIR}/js - COMMAND - ${CMAKE_COMMAND} -E copy ${CSS} ${html_BINARY_DIR}/css - COMMAND - ${CMAKE_COMMAND} -E copy ${JS} ${html_BINARY_DIR}/js - ) +add_custom_target( + html ALL + SOURCES + ${HTML_SOURCES} ${CSS} ${JS} ${OUTPUTS} + ${html_SOURCE_DIR}/resources/template.html + COMMAND + ${CMAKE_COMMAND} -E make_directory ${html_BINARY_DIR}/css + COMMAND + ${CMAKE_COMMAND} -E make_directory ${html_BINARY_DIR}/js + COMMAND + ${CMAKE_COMMAND} -E copy ${CSS} ${html_BINARY_DIR}/css + COMMAND + ${CMAKE_COMMAND} -E copy ${JS} ${html_BINARY_DIR}/js +) - # Install resources files. - install( - FILES ${CSS} - COMPONENT docs - DESTINATION ${WITH_DOCDIR}/css - ) - install( - FILES ${JS} - COMPONENT docs - DESTINATION ${WITH_DOCDIR}/js - ) -endif () +# Install resources files. +install( + FILES ${CSS} + COMPONENT docs + DESTINATION ${WITH_DOCDIR}/css +) +install( + FILES ${JS} + COMPONENT docs + DESTINATION ${WITH_DOCDIR}/js +) setg(CPACK_COMPONENT_DOCS_DISPLAY_NAME "Documentation") setg(CPACK_COMPONENT_DOCS_DESCRIPTION "User guide and JavaScript API.")
--- a/extern/libircclient/CMakeLists.txt Fri Oct 20 11:43:36 2017 +0200 +++ b/extern/libircclient/CMakeLists.txt Mon Oct 23 21:30:17 2017 +0200 @@ -35,7 +35,7 @@ endif () # SSL is optional -if (WITH_SSL) +if (HAVE_SSL) list(APPEND INCLUDES ${OPENSSL_INCLUDE_DIR}) list(APPEND LIBRARIES ${OPENSSL_LIBRARIES}) list(APPEND FLAGS "ENABLE_SSL")
--- a/irccd/CMakeLists.txt Fri Oct 20 11:43:36 2017 +0200 +++ b/irccd/CMakeLists.txt Mon Oct 23 21:30:17 2017 +0200 @@ -25,7 +25,7 @@ INCLUDES ${irccd_SOURCE_DIR} LIBRARIES libirccd - $<$<BOOL:${WITH_JS}>:libirccd-js> + $<$<BOOL:${HAVE_JS}>:libirccd-js> $<$<BOOL:${UNIX}>:-pthread> )
--- a/irccd/main.cpp Fri Oct 20 11:43:36 2017 +0200 +++ b/irccd/main.cpp Mon Oct 23 21:30:17 2017 +0200 @@ -41,7 +41,7 @@ #include "config.hpp" #include "irccd.hpp" -#if defined(WITH_JS) +#if defined(HAVE_JS) # include <js_directory_module.hpp> # include <js_elapsed_timer_module.hpp> # include <js_file_module.hpp> @@ -82,10 +82,10 @@ bool ssl = false; bool js = false; -#if defined(WITH_SSL) +#if defined(HAVE_SSL) ssl = true; #endif -#if defined(WITH_JS) +#if defined(HAVE_JS) js = true; #endif @@ -327,7 +327,7 @@ instance->commands().add(std::make_unique<rule_remove_command>()); // Load Javascript API and plugin loader. -#if defined(WITH_JS) +#if defined(HAVE_JS) auto loader = std::make_unique<js_plugin_loader>(*instance); loader->add_module(std::make_unique<js_irccd_module>());
--- a/irccdctl/main.cpp Fri Oct 20 11:43:36 2017 +0200 +++ b/irccdctl/main.cpp Mon Oct 23 21:30:17 2017 +0200 @@ -143,7 +143,7 @@ address = net::resolveOne(host, port, domain, SOCK_STREAM); if ((it = sc.find("ssl")) != sc.end() && util::is_boolean(it->value())) -#if defined(WITH_SSL) +#if defined(HAVE_SSL) client = std::make_unique<TlsClient>(); #else throw std::runtime_error("SSL disabled");
--- a/libcommon/CMakeLists.txt Fri Oct 20 11:43:36 2017 +0200 +++ b/libcommon/CMakeLists.txt Mon Oct 23 21:30:17 2017 +0200 @@ -43,7 +43,7 @@ ${libcommon_SOURCE_DIR}/irccd/util.cpp ) -if (NOT WITH_SSL) +if (NOT HAVE_SSL) list(APPEND FLAGS NET_NO_SSL) endif () @@ -59,8 +59,8 @@ ${Boost_LIBRARIES} $<$<BOOL:${WIN32}>:shlwapi> $<$<BOOL:${WIN32}>:ws2_32> - $<$<BOOL:${WITH_SSL}>:OpenSSL::SSL> - $<$<BOOL:${WITH_SSL}>:OpenSSL::Crypto> + $<$<BOOL:${HAVE_SSL}>:OpenSSL::SSL> + $<$<BOOL:${HAVE_SSL}>:OpenSSL::Crypto> PUBLIC_INCLUDES ${Boost_INCLUDE_DIRS} $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
--- a/libirccd-test/CMakeLists.txt Fri Oct 20 11:43:36 2017 +0200 +++ b/libirccd-test/CMakeLists.txt Mon Oct 23 21:30:17 2017 +0200 @@ -25,16 +25,16 @@ ${libirccd-test_SOURCE_DIR}/irccd/command-tester.hpp ${libirccd-test_SOURCE_DIR}/irccd/journal_server.cpp ${libirccd-test_SOURCE_DIR}/irccd/journal_server.hpp - $<$<BOOL:${WITH_JS}>:${libirccd-test_SOURCE_DIR}/irccd/plugin-tester.cpp> - $<$<BOOL:${WITH_JS}>:${libirccd-test_SOURCE_DIR}/irccd/plugin-tester.hpp> - $<$<BOOL:${WITH_JS}>:${libirccd-test_SOURCE_DIR}/irccd/plugin_test.cpp> - $<$<BOOL:${WITH_JS}>:${libirccd-test_SOURCE_DIR}/irccd/plugin_test.hpp> - $<$<BOOL:${WITH_JS}>:${libirccd-test_SOURCE_DIR}/irccd/js_test.hpp> - $<$<BOOL:${WITH_JS}>:${libirccd-test_SOURCE_DIR}/irccd/plugin_test.js> + $<$<BOOL:${HAVE_JS}>:${libirccd-test_SOURCE_DIR}/irccd/plugin-tester.cpp> + $<$<BOOL:${HAVE_JS}>:${libirccd-test_SOURCE_DIR}/irccd/plugin-tester.hpp> + $<$<BOOL:${HAVE_JS}>:${libirccd-test_SOURCE_DIR}/irccd/plugin_test.cpp> + $<$<BOOL:${HAVE_JS}>:${libirccd-test_SOURCE_DIR}/irccd/plugin_test.hpp> + $<$<BOOL:${HAVE_JS}>:${libirccd-test_SOURCE_DIR}/irccd/js_test.hpp> + $<$<BOOL:${HAVE_JS}>:${libirccd-test_SOURCE_DIR}/irccd/plugin_test.js> ${libirccd-test_SOURCE_DIR}/irccd/server-tester.cpp ${libirccd-test_SOURCE_DIR}/irccd/server-tester.hpp LIBRARIES - $<$<BOOL:${WITH_JS}>:libirccd-js> + $<$<BOOL:${HAVE_JS}>:libirccd-js> libirccd libirccdctl extern-gtest
--- a/libirccd/irccd/config.cpp Fri Oct 20 11:43:36 2017 +0200 +++ b/libirccd/irccd/config.cpp Mon Oct 23 21:30:17 2017 +0200 @@ -207,7 +207,7 @@ if (pkey.empty()) return std::make_shared<transport_server_ip>(address, port, mode); -#if defined(WITH_SSL) +#if defined(HAVE_SSL) return std::make_shared<transport_server_tls>(pkey, cert, address, port, mode); #else throw std::invalid_argument("transport: SSL disabled");
--- a/libirccd/irccd/server.cpp Fri Oct 20 11:43:36 2017 +0200 +++ b/libirccd/irccd/server.cpp Mon Oct 23 21:30:17 2017 +0200 @@ -829,7 +829,7 @@ auto host = server.host_; // libircclient requires # for SSL connection. -#if defined(WITH_SSL) +#if defined(HAVE_SSL) if (server.flags_ & server::ssl) host.insert(0, 1, '#'); if (!(server.flags_ & server::ssl_verify))
--- a/libirccd/irccd/transport.cpp Fri Oct 20 11:43:36 2017 +0200 +++ b/libirccd/irccd/transport.cpp Mon Oct 23 21:30:17 2017 +0200 @@ -152,10 +152,10 @@ { "patch", IRCCD_VERSION_PATCH } }); -#if defined(WITH_JS) +#if defined(HAVE_JS) object.push_back({"javascript", true}); #endif -#if defined(WITH_SSL) +#if defined(HAVE_SSL) object.push_back({"ssl", true}); #endif @@ -270,7 +270,7 @@ * ------------------------------------------------------------------ */ -#if defined(WITH_SSL) +#if defined(HAVE_SSL) void transport_client_tls::handshake() { @@ -363,7 +363,7 @@ } } -#endif // !WITH_SSL +#endif // !HAVE_SSL /* * transport_server_ip @@ -411,7 +411,7 @@ * ------------------------------------------------------------------ */ -#if defined(WITH_SSL) +#if defined(HAVE_SSL) transport_server_tls::transport_server_tls(const std::string& pkey, const std::string& cert, @@ -429,7 +429,7 @@ return std::make_unique<transport_client_tls>(privatekey_, cert_, *this, socket_.accept()); } -#endif // !WITH_SSL +#endif // !HAVE_SSL /* * transport_server_local
--- a/libirccd/irccd/transport.hpp Fri Oct 20 11:43:36 2017 +0200 +++ b/libirccd/irccd/transport.hpp Mon Oct 23 21:30:17 2017 +0200 @@ -183,7 +183,7 @@ * ------------------------------------------------------------------ */ -#if defined(WITH_SSL) +#if defined(HAVE_SSL) /** * \brief TLS version of transport client. @@ -238,7 +238,7 @@ void sync(fd_set& in, fd_set& out) override; }; -#endif // !WITH_SSL +#endif // !HAVE_SSL /* * TransportServer @@ -360,7 +360,7 @@ std::uint16_t port() const; }; -#if defined(WITH_SSL) +#if defined(HAVE_SSL) /** * \brief TLS over IP transport. @@ -392,7 +392,7 @@ std::unique_ptr<transport_client> accept() override; }; -#endif // !WITH_SSL +#endif // !HAVE_SSL #if !defined(IRCCD_SYSTEM_WINDOWS)
--- a/libirccdctl/irccd/client.cpp Fri Oct 20 11:43:36 2017 +0200 +++ b/libirccdctl/irccd/client.cpp Mon Oct 23 21:30:17 2017 +0200 @@ -455,7 +455,7 @@ * ------------------------------------------------------------------ */ -#if defined(WITH_SSL) +#if defined(HAVE_SSL) void TlsClient::handshake() { @@ -547,6 +547,6 @@ Client::sync(in, out); } -#endif // !WITH_SSL +#endif // !HAVE_SSL } // !irccd
--- a/libirccdctl/irccd/client.hpp Fri Oct 20 11:43:36 2017 +0200 +++ b/libirccdctl/irccd/client.hpp Mon Oct 23 21:30:17 2017 +0200 @@ -271,7 +271,7 @@ virtual void sync(fd_set &in, fd_set &out); }; -#if defined(WITH_SSL) +#if defined(HAVE_SSL) /** * \brief TLS over IP connection. @@ -318,7 +318,7 @@ void sync(fd_set &in, fd_set &out) override; }; -#endif // !WITH_SSL +#endif // !HAVE_SSL } // !irccd
--- a/tests/CMakeLists.txt Fri Oct 20 11:43:36 2017 +0200 +++ b/tests/CMakeLists.txt Mon Oct 23 21:30:17 2017 +0200 @@ -60,7 +60,7 @@ add_subdirectory(service-plugin) # JS API - if (WITH_JS) + if (HAVE_JS) add_subdirectory(js) add_subdirectory(js-elapsedtimer) add_subdirectory(js-file)
--- a/win32/CMakeLists.txt Fri Oct 20 11:43:36 2017 +0200 +++ b/win32/CMakeLists.txt Mon Oct 23 21:30:17 2017 +0200 @@ -46,7 +46,7 @@ # ------------------------------------------------------------------- # -if (WITH_SSL) +if (HAVE_SSL) set(SSL_EAY_DLL libeay32.dll) set(SSL_LIB_DLL ssleay32.dll) list(APPEND DLLS SSL_EAY_DLL SSL_LIB_DLL)