From 99def35884706f88c82cbb6d568f40201ea59159 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Fri, 24 Mar 2023 15:57:48 -0700 Subject: [PATCH] finish up wslay configuration Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- CMakeLists.txt | 16 ++-- cmake/FindCUnit.cmake | 24 ++++++ cmake/FindSphinx.cmake | 25 +++++- deps/wslay/CMakeLists.txt | 139 ++++++++++++++++++++++++++++++- doc/CMakeLists.txt | 8 +- doc/manual-src/CMakeLists.txt | 2 - doc/manual-src/en/CMakeLists.txt | 2 - doc/manual-src/pt/CMakeLists.txt | 2 - doc/manual-src/ru/CMakeLists.txt | 2 - 9 files changed, 194 insertions(+), 26 deletions(-) create mode 100644 cmake/FindCUnit.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index ce6de861..94863fd3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,9 +27,9 @@ config_h_add_compile_definitions(PACKAGE_URL="${PROJECT_HOMEPAGE_URL}") config_h_add_compile_definitions(PACKAGE_BUGREPORT="https://github.com/aria2/aria2/issues") config_h_add_compile_definitions(PACKAGE_VERSION="${PROJECT_VERSION}") config_h_add_compile_definitions(VERSION="${PROJECT_VERSION}") -config_h_add_compile_definitions(HOST="${CMAKE_HOST_SYSTEM_PROCESSOR}") -config_h_add_compile_definitions(BUILD="${CMAKE_HOST_SYSTEM_PROCESSOR}") -config_h_add_compile_definitions(TARGET="${CMAKE_SYSTEM_PROCESSOR}") +config_h_add_compile_definitions(HOST="${CMAKE_HOST_SYSTEM_PROCESSOR}-${CMAKE_HOST_SYSTEM}") +config_h_add_compile_definitions(BUILD="${CMAKE_HOST_SYSTEM_PROCESSOR}-${CMAKE_HOST_SYSTEM}") +config_h_add_compile_definitions(TARGET="${CMAKE_SYSTEM_PROCESSOR}-${CMAKE_SYSTEM}-${CMAKE_CXX_COMPILER_TARGET}") if(WIN32) set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -D_POSIX_C_SOURCE=1) @@ -902,14 +902,14 @@ add_compile_definitions(HAVE_CONFIG_H) add_subdirectory(lib) add_subdirectory(deps) add_subdirectory(src) +add_subdirectory(doc) +add_subdirectory(test) -# add_subdirectory(doc) -# add_subdirectory(test) message(STATUS "summary of build options: \n\ -Build: ${CMAKE_HOST_SYSTEM_PROCESSOR} -Host: ${CMAKE_HOST_SYSTEM_PROCESSOR} -Target: ${CMAKE_SYSTEM_PROCESSOR} +Build: ${CMAKE_HOST_SYSTEM_PROCESSOR}-${CMAKE_HOST_SYSTEM}-${CMAKE_CXX_COMPILER_ID} +Host: ${CMAKE_HOST_SYSTEM_PROCESSOR}-${CMAKE_HOST_SYSTEM} +Target: ${CMAKE_SYSTEM_PROCESSOR}-${CMAKE_SYSTEM}-${CMAKE_CXX_COMPILER_TARGET} Install prefix: ${CMAKE_INSTALL_PREFIX} CC: ${CMAKE_C_COMPILER} CXX: ${CMAKE_CXX_COMPILER} diff --git a/cmake/FindCUnit.cmake b/cmake/FindCUnit.cmake new file mode 100644 index 00000000..b36fe5cf --- /dev/null +++ b/cmake/FindCUnit.cmake @@ -0,0 +1,24 @@ +# Find the CUnit headers and libraries +# +# CUNIT_INCLUDE_DIRS - The CUnit include directory (directory where CUnit/CUnit.h was found) +# CUNIT_LIBRARIES - The libraries needed to use CUnit +# CUNIT_FOUND - True if CUnit found in system + + +FIND_PATH(CUNIT_INCLUDE_DIR NAMES CUnit/CUnit.h) +MARK_AS_ADVANCED(CUNIT_INCLUDE_DIR) + +FIND_LIBRARY(CUNIT_LIBRARY NAMES + cunit + libcunit + cunitlib +) +MARK_AS_ADVANCED(CUNIT_LIBRARY) + +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(CUnit DEFAULT_MSG CUNIT_LIBRARY CUNIT_INCLUDE_DIR) + +IF(CUnit_FOUND) + SET(CUNIT_LIBRARIES ${CUNIT_LIBRARY}) + SET(CUNIT_INCLUDE_DIRS ${CUNIT_INCLUDE_DIR}) +ENDIF() \ No newline at end of file diff --git a/cmake/FindSphinx.cmake b/cmake/FindSphinx.cmake index d4fc2115..ac22f85f 100644 --- a/cmake/FindSphinx.cmake +++ b/cmake/FindSphinx.cmake @@ -17,4 +17,27 @@ find_program( HINTS ${_PYTHON_PATHS}) mark_as_advanced(SPHINX_EXECUTABLE) -find_package_handle_standard_args(Sphinx DEFAULT_MSG SPHINX_EXECUTABLE) +if(SPHINX_EXECUTABLE) + + if(WIN32 AND PYTHON_EXECUTABLE) + execute_process(COMMAND ${PYTHON_EXECUTABLE} ${SPHINX_EXECUTABLE} --version OUTPUT_VARIABLE SPHINX_VERSION_STR) + else() + execute_process(COMMAND ${SPHINX_EXECUTABLE} --version OUTPUT_VARIABLE SPHINX_VERSION_STR) + endif() + + if (NOT "${SPHINX_VERSION_STR}" STREQUAL "") + if (SPHINX_VERSION_STR MATCHES "sphinx-build ([0-9]+\\.[0-9]+(\\.|a?|b?)([0-9]*)(b?)([0-9]*))") + set (SPHINX_VERSION "${CMAKE_MATCH_1}") + elseif (_Sphinx_VERSION MATCHES "Sphinx v([0-9]+\\.[0-9]+(\\.|b?)([0-9]*)(b?)([0-9]*))") + set (SPHINX_VERSION "${CMAKE_MATCH_1}") + elseif (_Sphinx_VERSION MATCHES "Sphinx \\(sphinx-build\\) ([0-9]+\\.[0-9]+(\\.|a?|b?)([0-9]*)(b?)([0-9]*))") + set (SPHINX_VERSION "${CMAKE_MATCH_1}") + endif () + endif() +endif() + +find_package_handle_standard_args( + Sphinx + REQUIRED_VARS SPHINX_EXECUTABLE SPHINX_VERSION + VERSION_VAR SPHINX_VERSION +) diff --git a/deps/wslay/CMakeLists.txt b/deps/wslay/CMakeLists.txt index d9fa0c39..0c741a91 100644 --- a/deps/wslay/CMakeLists.txt +++ b/deps/wslay/CMakeLists.txt @@ -1,5 +1,13 @@ project(wslay LANGUAGES CXX C VERSION 1.1.1) +set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/../../cmake/") + +# ####### Set compiler flags ######## +set(CMAKE_CXX_STANDARD_REQUIRED true) +set(CMAKE_C_STANDARD_REQUIRED true) +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_C_STANDARD 11) + include(GenerateConfigH) config_h_add_compile_definitions(PACKAGE="${PROJECT_NAME}") @@ -10,11 +18,119 @@ config_h_add_compile_definitions(PACKAGE_URL="${PROJECT_HOMEPAGE_URL}") config_h_add_compile_definitions(PACKAGE_BUGREPORT="t-tujikawa@users.sourceforge.net") config_h_add_compile_definitions(PACKAGE_VERSION="${PROJECT_VERSION}") config_h_add_compile_definitions(VERSION="${PROJECT_VERSION}") -config_h_add_compile_definitions(HOST="${CMAKE_HOST_SYSTEM_PROCESSOR}") -config_h_add_compile_definitions(BUILD="${CMAKE_HOST_SYSTEM_PROCESSOR}") -config_h_add_compile_definitions(TARGET="${CMAKE_SYSTEM_PROCESSOR}") +config_h_add_compile_definitions(HOST="${CMAKE_HOST_SYSTEM_PROCESSOR}-${CMAKE_HOST_SYSTEM}") +config_h_add_compile_definitions(BUILD="${CMAKE_HOST_SYSTEM_PROCESSOR}-${CMAKE_HOST_SYSTEM}") +config_h_add_compile_definitions(TARGET="${CMAKE_SYSTEM_PROCESSOR}-${CMAKE_SYSTEM}-${CMAKE_CXX_COMPILER_TARGET}") +set(PACKAGE_VERSION ${PROJECT_VERSION}) + +option(ENABLE_WERROR "Builld with werror" off) + +# #### Check for Libraries ##### +include(CheckLibraryExists) +include(CheckSymbolExists) +include(CheckCXXSymbolExists) +include(CheckIncludeFiles) +include(CheckTypeSize) +include(CheckFunctionExists) + + +if(ENABLE_WERROR) + add_compile_options(-Wall -Werror -Wformat-security) +endif() + +find_package(Sphinx) +if(Sphinx_FOUND) + set(HAVE_SPHINX_BUILD true) +endif() + +if(NOT NETTLE_FOUND) + # may have already been found and imported by parent project + find_package(Nettle 2.4) +endif() + +if(NETTLE_FOUND) + set(HAVE_NETTLE true) +endif() + +find_package(CUnit) +if(CUnit_FOUND) + set(HAVE_CUNIT true) +endif() + +if(WIN32) + # Required for ntoh*/hton* functions. + add_link_options(-lws2_32) + set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} -lws2_32) +endif() + +set(_check_headers + arpa/inet.h + netinet/in.h + stddef.h + stdint.h + stdlib.h + string.h + unistd.h +) + +foreach(header ${_check_headers}) + string(TOUPPER ${header} header_var) + string(REPLACE "." "_" header_var ${header_var}) + string(REPLACE "/" "_" header_var ${header_var}) + set(header_var "HAVE_${header_var}") + set(${header_var}) + check_include_file(${header} ${header_var}) + + if(${header_var}) + config_h_add_compile_definitions(${header_var}) + endif() +endforeach() + +unset(_check_headers) + +if(WIN32) + # Need winsock2.h for ntoh*/hton* functions. + check_include_file(winsock2.h HAVE_WINSOCK2_H) + + if(HAVE_WINSOCK2_H) + config_h_add_compile_definitions(HAVE_WINSOCK2_H) + endif() +endif() + +check_type_size(ptrdiff_t PTRDIFF_T LANGUAGE CXX) +if(PTRDIFF_T) + set(HAVE_PTRDIFF_T true) + config_h_add_compile_definitions(HAVE_PTRDIFF_T) +endif() + +set(_check_funcs + memmove + memset + ntohl + ntohs + htons +) + +foreach(func ${_check_funcs}) + string(TOUPPER ${func} func_var) + set(func_var "HAVE_${func_var}") + set(${func_var}) + check_function_exists(${func} ${func_var}) + + if(${func_var}) + config_h_add_compile_definitions(${func_var}) + endif() +endforeach() + +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/lib/includes/wslay/wslayver.h.in ${CMAKE_CURRENT_SOURCE_DIR}/lib/includes/wslay/wslayver.h) + +unset(_check_funcs) + +if(HAVE_NETTLE AND UNIX) + set(BUILD_EXAMPLES true) + set(ENABLE_EXAMPLES true) +endif() -add_link_options(${EXTRALIBS}) config_h_generate_header(config) # pickup the generated config.h @@ -25,6 +141,21 @@ add_subdirectory(lib) add_subdirectory(tests) +message(STATUS "summary of build options: + + version: ${PROJECT_VERSION} shared $LT_CURRENT:$LT_REVISION:$LT_AGE + Host type: ${CMAKE_HOST_SYSTEM_PROCESSOR}-${CMAKE_HOST_SYSTEM} + Install prefix: ${CMAKE_INSTALL_PREFIX} + C compiler: ${CMAKE_CXX_COMPILER} + CFlags: ${CMAKE_C_FLAGS} + Library types: Shared=${enable_shared}, Static=${enable_static} + CUnit: ${HAVE_CUNIT} + Nettle: ${HAVE_NETTLE} + Build examples: ${BUILD_EXAMPLES} +") + + + ########### install files ############### diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 56cc85c4..505997d7 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -1,14 +1,12 @@ -include_directories(${KDE4_INCLUDES} ${KDE4_INCLUDE_DIR} ${QT_INCLUDES} ) - add_subdirectory(manual-src) ########### install files ############### -install(FILES xmlrpc/aria2mon xmlrpc/aria2rpc xmlrpc/README.txt DESTINATION ) -install(FILES bash_completion/README.txt DESTINATION ) -install(FILES bash_completion/aria2c DESTINATION ) +install(FILES xmlrpc/aria2mon xmlrpc/aria2rpc xmlrpc/README.txt DESTINATION ${CMAKE_INSTALL_DOCDIR}/xmlrpc) +install(FILES bash_completion/README.txt DESTINATION ${CMAKE_INSTALL_DOCDIR}/bash_completion) +install(FILES bash_completion/aria2c DESTINATION ${CMAKE_INSTALL_DOCDIR}/bash_completion) diff --git a/doc/manual-src/CMakeLists.txt b/doc/manual-src/CMakeLists.txt index 66e0c529..0c1ca1c3 100644 --- a/doc/manual-src/CMakeLists.txt +++ b/doc/manual-src/CMakeLists.txt @@ -1,6 +1,4 @@ -include_directories(${KDE4_INCLUDES} ${KDE4_INCLUDE_DIR} ${QT_INCLUDES} ) - add_subdirectory(en) add_subdirectory(ru) add_subdirectory(pt) diff --git a/doc/manual-src/en/CMakeLists.txt b/doc/manual-src/en/CMakeLists.txt index 36ab1f50..928457a2 100644 --- a/doc/manual-src/en/CMakeLists.txt +++ b/doc/manual-src/en/CMakeLists.txt @@ -1,6 +1,4 @@ -include_directories(${KDE4_INCLUDES} ${KDE4_INCLUDE_DIR} ${QT_INCLUDES} ) - ########### install files ############### diff --git a/doc/manual-src/pt/CMakeLists.txt b/doc/manual-src/pt/CMakeLists.txt index 20cad3b2..5786741b 100644 --- a/doc/manual-src/pt/CMakeLists.txt +++ b/doc/manual-src/pt/CMakeLists.txt @@ -1,6 +1,4 @@ -include_directories(${KDE4_INCLUDES} ${KDE4_INCLUDE_DIR} ${QT_INCLUDES} ) - ########### install files ############### diff --git a/doc/manual-src/ru/CMakeLists.txt b/doc/manual-src/ru/CMakeLists.txt index 1a46a1f3..9fffe653 100644 --- a/doc/manual-src/ru/CMakeLists.txt +++ b/doc/manual-src/ru/CMakeLists.txt @@ -1,6 +1,4 @@ -include_directories(${KDE4_INCLUDES} ${KDE4_INCLUDE_DIR} ${QT_INCLUDES} ) - ########### install files ###############