fix typo that droped 3/4 of the srouce

generate config.h

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
pull/2045/head
Rachel Powers 2023-03-24 13:57:10 -07:00
parent 8f57b06689
commit fb7c8d2ee4
5 changed files with 822 additions and 704 deletions

View File

@ -1,9 +1,13 @@
cmake_minimum_required(VERSION 3.15)
project(aria2 LANGUAGES CXX C VERSION 1.36.0)
project(
aria2
VERSION 1.36.0
HOMEPAGE_URL https://aria2.github.io/
LANGUAGES CXX C
)
# include(ConfigureChecks.cmake)
set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/")
# ####### Set compiler flags ########
@ -11,17 +15,29 @@ set(CMAKE_CXX_STANDARD_REQUIRED true)
set(CMAKE_C_STANDARD_REQUIRED true)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_C_STANDARD 11)
include(GenerateExportHeader)
#include(GenerateExportHeader)
include(GenerateConfigH)
config_h_add_compile_definitions(PACKAGE="${PROJECT_NAME}")
config_h_add_compile_definitions(PACKAGE_NAME="${PROJECT_NAME}")
config_h_add_compile_definitions(PACKAGE_STRING="${PROJECT_NAME} ${PROJECT_VERSION}")
config_h_add_compile_definitions(PACKAGE_TARNAME="${PROJECT_NAME}")
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}")
if(WIN32)
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -D_POSIX_C_SOURCE=1)
set(CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS} -Wl,--dynamicbase -Wl,--nxcompat)
set(CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS} -Wl,--dynamicbase -Wl,--nxcompat)
set(CMAKE_STATIC_LINKER_FLAGS_LINKER_FLAGS ${CMAKE_STATIC_LINKER_FLAGS} -Wl,--dynamicbase -Wl,--nxcompat)
set(EXTRALIBS -lws2_32 -lwsock32 -lgdi32 -liphlpapi -lpsapi ${EXTRALIBS})
endif()
option(WITH_LIBUV "Build with libuv" off)
@ -92,11 +108,12 @@ try_compile(CXX11_OVERRIDE
SOURCE_FROM_VAR cx11_override.cc _tmp_src
)
unset(_tmp_src)
if(CXX11_OVERRIDE)
add_compile_definitions(CXX11_OVERRIDE=override)
config_h_add_compile_definitions(CXX11_OVERRIDE=override)
message(STATUS "Checking whether the C++ compiler supports `override` keyword - yes")
else()
add_compile_definitions(CXX11_OVERRIDE=)
config_h_add_compile_definitions(CXX11_OVERRIDE=)
message(STATUS "Checking whether the C++ compiler supports `override` keyword - no")
endif()
@ -109,12 +126,12 @@ if (ARIA2_STATIC)
endif()
option(ENABLE_GNUTIL_SYSTEM_CRYPTO_POLICY "Enable gnutls system wide crypto policy" off)
if(ENABLE_GNUTIL_SYSTEM_CRYPTO_POLICY)
set(USE_GNUTLS_SYSTEM_CRYPTO_POLICY yes CACHE BOOL "Define to 1 if using gnutls system wide crypto policy .")
endif()
# #### Check for Libraries #####
include(CheckLibraryExists)
include(CheckSymbolExists)
include(CheckCXXSymbolExists)
@ -123,6 +140,7 @@ include(CheckTypeSize)
include(CheckFunctionExists)
find_package(CPPUNIT)
if(CPPUNIT_FOUND)
set(HAVE_CPPUNIT yes CACHE BOOL "Define if you have CPPUNIT" FORCE)
else()
@ -130,11 +148,12 @@ else()
endif()
find_package(ZLIB 1.2.3)
if(ZLIB_FOUND)
set(HAVE_ZLIB yes CACHE BOOL "Define if you have zlib" FORCE)
set(ZLIB_CFLAGS "")
set(ZLIB_LIBS ${ZLIB_LIBRARIES})
add_compile_definitions(HAVE_ZLIB=1)
config_h_add_compile_definitions(HAVE_ZLIB=1)
set(save_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
set(save_CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES})
@ -142,13 +161,15 @@ if(ZLIB_FOUND)
set(CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIRS})
check_cxx_symbol_exists(gzbuffer zlib.h HAVE_GZBUFFER)
if(HAVE_GZBUFFER)
add_compile_definitions(HAVE_GZBUFFER)
config_h_add_compile_definitions(HAVE_GZBUFFER)
endif()
check_cxx_symbol_exists(gzsetparams zlib.h HAVE_GZSETPARAMS)
if(HAVE_GZSETPARAMS)
add_compile_definitions(HAVE_GZSETPARAMS)
config_h_add_compile_definitions(HAVE_GZSETPARAMS)
endif()
set(CMAKE_REQUIRED_LIBRARIES ${save_CMAKE_REQUIRED_LIBRARIES})
@ -160,41 +181,45 @@ else()
endif()
find_package(LibUV 1.13)
if(LIBUV_FOUND)
set(HAVE_LIBUV yes CACHE BOOL "Define if you have libuv" FORCE)
set(LIBUV_CFLAGS "")
set(LIBUV_LIBS ${LIBUV_LIBRARIES})
add_compile_definitions(HAVE_LIBUV=1)
config_h_add_compile_definitions(HAVE_LIBUV=1)
else()
set(HAVE_LIBUV no CACHE BOOL "Define if you have libuv" FORCE)
endif()
find_package(LibXml2)
if(LibXml2_FOUND)
set(HAVE_LIBXML2 yes CACHE BOOL "Define if you have libxml2" FORCE)
set(LIBXML2_CFLAGS "")
set(LIBXML2_LIBS ${LIBXML2_LIBRARIES})
add_compile_definitions(HAVE_LIBXML2=1)
config_h_add_compile_definitions(HAVE_LIBXML2=1)
else()
set(HAVE_LIBXML2 no CACHE BOOL "Define if you have libxml2" FORCE)
endif()
find_package(EXPAT)
if(EXPAT_FOUND)
if(EXPAT_FOUND AND NOT HAVE_LIBXML2)
set(HAVE_LIBEXPAT yes CACHE BOOL "Define if you have libexpat" FORCE)
set(LIBEXPAT_CFLAGS "")
set(LIBEXPAT_LIBS ${EXPAT_LIBRARIES})
add_compile_definitions(HAVE_LIBEXPAT=1)
config_h_add_compile_definitions(HAVE_LIBEXPAT=1)
else()
set(HAVE_LIBEXPAT no CACHE BOOL "Define if you have libexpat" FORCE)
endif()
find_package(SQLite3)
if(SQLite3_FOUND)
set(HAVE_SQLITE3 yes CACHE BOOL "Define if you have sqlite3" FORCE)
set(SQLITE3_CFLAGS "")
set(SQLITE3_LIBS ${SQLite3_LIBRARIES})
add_compile_definitions(HAVE_SQLITE3=1)
config_h_add_compile_definitions(HAVE_SQLITE3=1)
set(save_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
set(save_CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES})
@ -202,8 +227,9 @@ if(SQLite3_FOUND)
set(CMAKE_REQUIRED_INCLUDES ${SQLite3_INCLUDE_DIRS})
check_cxx_symbol_exists(sqlite3_open_v2 sqlite3.h HAVE_SQLITE3_OPEN_V2)
if(HAVE_SQLITE3_OPEN_V2)
add_compile_definitions(HAVE_SQLITE3_OPEN_V2)
config_h_add_compile_definitions(HAVE_SQLITE3_OPEN_V2)
endif()
set(CMAKE_REQUIRED_LIBRARIES ${save_CMAKE_REQUIRED_LIBRARIES})
@ -238,11 +264,13 @@ if(WIN32)
set(header_var "HAVE_${header_var}")
set(${header_var})
check_include_file(${header} ${header_var})
if(${header_var})
add_compile_definitions(${header_var})
config_h_add_compile_definitions(${header_var})
else()
endif()
endforeach()
unset(_check_headers)
else()
@ -250,10 +278,11 @@ else()
endif()
set(HAVE_APPLETLS no CACHE BOOL "Define if you have Apple TLS" FORCE)
if(WITH_APPLETLS)
if(HAVE_OSX)
set(HAVE_APPLETLS yes CACHE BOOL "Define if you have Apple TLS" FORCE)
add_compile_definitions(HAVE_APPLETLS=1)
config_h_add_compile_definitions(HAVE_APPLETLS=1)
set(APPLETLS_LD_FLAGS "-framework CoreFoundation" "-framework Security")
set(HAVE_SSL yes CACHE BOOL "Have SSL support" FORCE)
set(HAVE_NATIVETLS yes CACHE BOOL "Have Native TLS" FORCE)
@ -262,6 +291,7 @@ if(WITH_APPLETLS)
endif()
set(HAVE_WINTLS no CACHE BOOL "Define if you have Windows TLS support" FORCE)
if(WITH_WINTLS)
if(WIN32)
find_library(HAVE_WINTLS_LIBS crypt32)
@ -272,8 +302,8 @@ if(WITH_WINTLS)
if(HAVE_WINTLS_LIBS AND HAVE_WINTLS_HEADERS)
set(HAVE_WINTLS yes CACHE BOOL "Define if you have Windows TLS support" FORCE)
add_compile_definitions(HAVE_WINTLS=1)
add_compile_definitions(SECURITY_WIN32=1) # Use security.h in WIN32 mode
config_h_add_compile_definitions(HAVE_WINTLS=1)
config_h_add_compile_definitions(SECURITY_WIN32=1) # Use security.h in WIN32 mode
set(WINTLS_LIBS "-lcrypt32 -lsecur32 -ladvapi32")
set(HAVE_SSL yes CACHE BOOL "Have SSL support" FORCE)
set(HAVE_NATIVETLS yes CACHE BOOL "Have Native TLS" FORCE)
@ -283,13 +313,15 @@ if(WITH_WINTLS)
endif()
set(HAVE_LIBGNUTLS no CACHE BOOL "Define if you have libguntls" FORCE)
if(WITH_GNUTLS)
find_package(GnuTLS 2.2.0)
if(GNUTLS_FOUND AND NOT HAVE_SSL)
set(HAVE_LIBGNUTLS yes CACHE BOOL "Define if you have libguntls" FORCE)
set(LIBGNUTLS_CFLAGS "${GNUTLS_DEFINITIONS}")
set(LIBGNUTLS_LIBS ${GNUTLS_LIBRARIES})
add_compile_definitions(HAVE_LIBGNUTLS=1)
config_h_add_compile_definitions(HAVE_LIBGNUTLS=1)
set(HAVE_SSL yes CACHE BOOL "Have SSL support" FORCE)
set(save_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
@ -300,8 +332,9 @@ if(WITH_GNUTLS)
set(CMAKE_REQUIRED_DEFINITIONS ${GNUTLS_DEFINITIONS})
check_cxx_symbol_exists(gnutls_certificate_set_x509_system_trust gnutls/gnutls.h HAVE_GNUTLS_CERTIFICATE_SET_X509_SYSTEM_TRUST)
if(HAVE_GNUTLS_CERTIFICATE_SET_X509_SYSTEM_TRUST)
add_compile_definitions(HAVE_GNUTLS_CERTIFICATE_SET_X509_SYSTEM_TRUST)
config_h_add_compile_definitions(HAVE_GNUTLS_CERTIFICATE_SET_X509_SYSTEM_TRUST)
endif()
set(CMAKE_REQUIRED_LIBRARIES ${save_CMAKE_REQUIRED_LIBRARIES})
@ -311,11 +344,13 @@ if(WITH_GNUTLS)
endif()
set(HAVE_OPENSSL no CACHE BOOL "Define is you have openssl" FORCE)
if(WITH_OPENSSL)
find_package(OpenSSL)
if(OPENSSL_FOUND AND NOT HAVE_SSL)
set(HAVE_OPENSSL yes CACHE BOOL "Define is you have openssl" FORCE)
add_compile_definitions(HAVE_OPENSSL=1)
config_h_add_compile_definitions(HAVE_OPENSSL=1)
set(save_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
set(save_CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES})
@ -323,66 +358,75 @@ if(WITH_OPENSSL)
set(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR})
check_cxx_symbol_exists(EVP_DigestInit_ex evp.h HAVE_EVP_DIGESTINIT_EX)
if(HAVE_EVP_DIGESTINIT_EX)
set(HAVE_OLD_OPENSSL yes CACHE BOOL "Define if you have old openssl" FORCE)
add_compile_definitions(HAVE_OLD_OPENSSL=1)
config_h_add_compile_definitions(HAVE_OLD_OPENSSL=1)
endif()
check_cxx_symbol_exists(EVP_sha224 evp.h HAVE_EVP_SHA224)
if(HAVE_EVP_SHA224)
add_compile_definitions(HAVE_EVP_SHA224)
config_h_add_compile_definitions(HAVE_EVP_SHA224)
endif()
check_cxx_symbol_exists(EVP_sha256 evp.h HAVE_EVP_SHA256)
if(HAVE_EVP_SHA256)
add_compile_definitions(HAVE_EVP_SHA256)
config_h_add_compile_definitions(HAVE_EVP_SHA256)
endif()
check_cxx_symbol_exists(EVP_sha384 evp.h HAVE_EVP_SHA384)
if(HAVE_EVP_SHA384)
add_compile_definitions(HAVE_EVP_SHA384)
config_h_add_compile_definitions(HAVE_EVP_SHA384)
endif()
check_cxx_symbol_exists(EVP_sha512 evp.h HAVE_EVP_SHA512)
if(HAVE_EVP_SHA512)
add_compile_definitions(HAVE_EVP_SHA512)
config_h_add_compile_definitions(HAVE_EVP_SHA512)
endif()
set(CMAKE_REQUIRED_LIBRARIES ${save_CMAKE_REQUIRED_LIBRARIES})
set(CMAKE_REQUIRED_INCLUDES ${save_CMAKE_REQUIRED_INCLUDES})
endif()
endif()
set(HAVE_LIBNETTLE no CACHE BOOL "Define if you have libnettle" FORCE)
set(HAVE_LIBGMP no CACHE BOOL "Define if you have GNU Multiple Precision Arithmetis Library (GMP)" FORCE)
set(HAVE_LIBGCRYPT no CACHE BOOL "Define is you have LibGcrypt" FORCE)
if(NOT HAVE_OPENSSL)
if(WITH_LIBNETTLE)
find_package(Nettle)
if(NETTLE_FOUND AND NOT HAVE_NATIVETLS)
set(HAVE_LIBNETTLE yes CACHE BOOL "Define if you have libnettle" FORCE)
set(LIBNETTLE_CFLAGS "")
set(LIBNETTLE_LIBS ${NETTLE_LIBRARIES})
add_compile_definitions(HAVE_LIBNETTLE=1)
config_h_add_compile_definitions(HAVE_LIBNETTLE=1)
endif()
endif()
if(WITH_LIBGMP)
find_package(GMP)
if(GMP_FOUND AND(HAVE_LIBNETTLE OR HAVE_NATIVETLS) AND ENABLE_BITTORRENT)
set(LIBGMP_LIBS ${GMP_LIBRARIES})
set(LIBGMP_CFLAGS "")
set(HAVE_LIBGMP yes CACHE BOOL "Define if you have GNU Multiple Precision Arithmetis Library (GMP)" FORCE)
add_compile_definitions(HAVE_LIBGMP=1)
config_h_add_compile_definitions(HAVE_LIBGMP=1)
set(save_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
set(save_CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES})
set(CMAKE_REQUIRED_LIBRARIES ${GMP_LIBRARIES})
set(CMAKE_REQUIRED_INCLUDES ${GMP_INCLUDE_DIR})
check_cxx_symbol_exists(__gmpz_powm_sec gmp.h HAVE_MPZ_POWM_SEC)
if(HAVE_MPZ_POWM_SEC)
add_compile_definitions(HAVE_GMP_SEC=1)
config_h_add_compile_definitions(HAVE_GMP_SEC=1)
endif()
set(CMAKE_REQUIRED_LIBRARIES ${save_CMAKE_REQUIRED_LIBRARIES})
set(CMAKE_REQUIRED_INCLUDES ${save_CMAKE_REQUIRED_INCLUDES})
endif()
@ -390,35 +434,39 @@ if(NOT HAVE_OPENSSL)
if(WITH_LIBGCRYPT)
find_package(LibGcrypt)
if(LibGcrypt_FOUND AND NOT HAVE_NATIVETLS AND NOT HAVE_LIBNETTLE)
set(LIBGCRYPT_CFLAGS "")
set(LIBGCRYPT_LIBS ${LibGcrypt_LIBRARIES})
set(HAVE_LIBGCRYPT yes CACHE BOOL "Define is you have LibGcrypt" FORCE)
add_compile_definitions(HAVE_LIBGCRYPT=1)
config_h_add_compile_definitions(HAVE_LIBGCRYPT=1)
endif()
endif()
endif()
set(HAVE_LIBSSH2 no CACHE BOOL "Define if you have LibSSH2" FORCE)
if(WITH_LIBSSH2)
find_package(LibSSH2)
if(LIBSSH2_FOUND)
set(HAVE_LIBSSH2 yes CACHE BOOL "Define if you have LibSSH2" FORCE)
set(LIBSSH2_CFLAGS "")
set(LIBSSH2_LIBS ${LIBSSH2_LIBRARIES})
add_compile_definitions(HAVE_LIBSSH2=1)
config_h_add_compile_definitions(HAVE_LIBSSH2=1)
endif()
endif()
set(HAVE_LIBCARES no CACHE BOOL "Define if you hae libcares" FORCE)
if(WITH_LIBCARES)
find_package(Libcares)
if(LIBCARES_FOUND)
set(HAVE_LIBCARES yes CACHE BOOL "Define if you hae libcares" FORCE)
set(LIBCARES_CFLAGS "")
set(LIBCARES_LIBS ${LIBCARES_LIBRARIES})
add_compile_definitions(HAVE_LIBCARES=1)
config_h_add_compile_definitions(HAVE_LIBCARES=1)
set(save_CMAKE_EXTRA_INCLUDE_FILES ${CMAKE_EXTRA_INCLUDE_FILES})
set(save_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
@ -429,12 +477,15 @@ if(WITH_LIBCARES)
set(CMAKE_EXTRA_INCLUDE_FILES ares.h)
check_type_size(ares_addr_node ARES_ADDR_NODE LANGUAGE CXX)
check_type_size(ares_set_servers ARES_SET_SERVERS LANGUAGE C)
if(ARES_ADDR_NODE)
add_compile_definitions(HAVE_ARES_ADDR_NODE)
config_h_add_compile_definitions(HAVE_ARES_ADDR_NODE)
endif()
if(ARES_SET_SERVERS)
add_compile_definitions(HAVE_ARES_SET_SERVERS)
config_h_add_compile_definitions(HAVE_ARES_SET_SERVERS)
endif()
set(CMAKE_REQUIRED_LIBRARIES ${save_CMAKE_REQUIRED_LIBRARIES})
set(CMAKE_REQUIRED_INCLUDES ${save_CMAKE_REQUIRED_INCLUDES})
set(CMAKE_EXTRA_INCLUDE_FILES ${save_CMAKE_EXTRA_INCLUDE_FILES})
@ -442,21 +493,22 @@ if(WITH_LIBCARES)
endif()
set(USE_MD "" CACHE STRING "What message digest implementation to use")
if(HAVE_APPLETLS)
set(USE_MD "apple" CACHE STRING "What message digest implementation to use" FORCE)
add_compile_definitions(USE_APPLE_MD=1)
config_h_add_compile_definitions(USE_APPLE_MD=1)
elseif(HAVE_LIBNETTLE)
set(USE_MD "libnettle" CACHE STRING "What message digest implementation to use" FORCE)
add_compile_definitions(USE_LIBNETTLE_MD=1)
config_h_add_compile_definitions(USE_LIBNETTLE_MD=1)
elseif(HAVE_LIBGCRYPT)
set(USE_MD "libgcrypt" CACHE STRING "What message digest implementation to use" FORCE)
add_compile_definitions(USE_LIBGCRYPT_MD=1)
config_h_add_compile_definitions(USE_LIBGCRYPT_MD=1)
elseif(HAVE_OPENSSL)
set(USE_MD "openssl" CACHE STRING "What message digest implementation to use" FORCE)
add_compile_definitions(USE_OPEMSSL_MD=1)
config_h_add_compile_definitions(USE_OPEMSSL_MD=1)
else()
set(USE_MD "internal" CACHE STRING "What message digest implementation to use" FORCE)
add_compile_definitions(USE_INTERNAL_MD=1)
config_h_add_compile_definitions(USE_INTERNAL_MD=1)
endif()
if(HAVE_SSL)
@ -464,8 +516,9 @@ if(HAVE_SSL)
else()
set(ENABLE_SSL no CACHE BOOL "If SSL support is enabled" FORCE)
endif()
if(ENABLE_SSL)
add_compile_definitions(ENABLE_SSL=1)
config_h_add_compile_definitions(ENABLE_SSL=1)
endif()
if(HAVE_LIBGMP OR HAVE_LIBGCRYPT OR HAVE_OPENSSL)
@ -473,8 +526,9 @@ if(HAVE_LIBGMP OR HAVE_LIBGCRYPT OR HAVE_OPENSSL)
else()
set(USE_INTERNAL_BIGNUM yes)
endif()
if(USE_INTERNAL_BIGNUM)
add_compile_definitions(USE_INTERNAL_BIGNUM=1)
config_h_add_compile_definitions(USE_INTERNAL_BIGNUM=1)
endif()
if(HAVE_LIBNETTLE OR HAVE_LIBGCRYPT OR HAVE_OPENSSL)
@ -482,28 +536,30 @@ if(HAVE_LIBNETTLE OR HAVE_LIBGCRYPT OR HAVE_OPENSSL)
else()
set(USE_INTERNAL_ARC4 yes)
endif()
if(USE_INTERNAL_ARC4)
add_compile_definitions(USE_INTERNAL_ARC4)
config_h_add_compile_definitions(USE_INTERNAL_ARC4)
endif()
if(ENABLE_BITTORRENT)
add_compile_definitions(ENABLE_BITTORRENT=1)
config_h_add_compile_definitions(ENABLE_BITTORRENT=1)
endif()
if((HAVE_LIBXML2 OR HAVE_LIBEXPAT) AND ENABLE_METALINK)
add_compile_definitions(ENABLE_METALINK=1)
config_h_add_compile_definitions(ENABLE_METALINK=1)
endif()
if(HAVE_LIBXML2 OR HAVE_LIBEXPAT)
set(HAVE_SOME_XMLLIB yes CACHE BOOL "either libxml2 or libxpax present" FORCE)
add_compile_definitions(HAVE_SOME_XMLLIB=1)
config_h_add_compile_definitions(HAVE_SOME_XMLLIB=1)
set(ENABLE_XML_RPC yes CACHE BOOL "XML RPC Enabled")
else()
set(HAVE_SOME_XMLLIB no CACHE BOOL "either libxml2 or libxpax present" FORCE)
set(ENABLE_XML_RPC no CACHE BOOL "XML RPC Enabled" FORCE)
endif()
if(ENABLE_XML_RPC)
add_compile_definitions(ENABLE_XML_RPC=1)
config_h_add_compile_definitions(ENABLE_XML_RPC=1)
endif()
if(HAVE_LIBCARES)
@ -511,13 +567,15 @@ if(HAVE_LIBCARES)
else()
set(ENABLE_ASYNC_DNS no CACHE BOOL "Async DNS Enabled" FORCE)
endif()
if(ENABLE_ASYNC_DNS)
add_compile_definitions(ENABLE_ASYNC_DNS=1)
config_h_add_compile_definitions(ENABLE_ASYNC_DNS=1)
endif()
check_cxx_symbol_exists(alloca "alloca.h;stdlib.h;cstdlib;malloc.h" HAVE_ALLOCA_H)
if(HAVE_ALLOCA_H)
add_compile_definitions(HAVE_ALLOCA_H)
config_h_add_compile_definitions(HAVE_ALLOCA_H)
endif()
set(_check_headers
@ -567,16 +625,19 @@ foreach (header ${_check_headers})
set(header_var "HAVE_${header_var}")
set(${header_var})
check_include_file(${header} ${header_var})
if(${header_var})
add_compile_definitions(${header_var})
config_h_add_compile_definitions(${header_var})
else()
endif()
endforeach()
unset(_check_headers)
check_include_file(stdbool.h HAVE_STDBOOL_H)
if(HAVE_STDBOOL_H)
add_compile_definitions(HAVE_STDBOOL_H=1)
config_h_add_compile_definitions(HAVE_STDBOOL_H=1)
endif()
if(cxx_constexpr IN_LIST CMAKE_CXX_COMPILE_FEATURES)
@ -591,7 +652,8 @@ check_type_size("struct timespec" HAVE_A2_STRUCT_TIMESPEC LANGUAGE CXX)
set(CMAKE_EXTRA_INCLUDE_FILES ${save_CMAKE_EXTRA_INCLUDE_FILES})
if(HAVE_A2_STRUCT_TIMESPEC)
add_compile_definitions(HAVE_A2_STRUCT_TIMESPEC)
set(HAVE_A2_STRUCT_TIMESPEC true)
config_h_add_compile_definitions(HAVE_A2_STRUCT_TIMESPEC)
endif()
find_package(Gettext)
@ -649,11 +711,13 @@ foreach (func ${_check_funcs})
set(func_var "HAVE_${func_var}")
set(${func_var})
check_function_exists(${func} ${func_var})
if(${func_var})
add_compile_definitions(${func_var})
config_h_add_compile_definitions(${func_var})
else()
endif()
endforeach()
unset(_check_funcs)
if(WITH_TCMALLOC AND WITH_JEMALLOC)
@ -661,16 +725,20 @@ if(WITH_TCMALLOC AND WITH_JEMALLOC)
endif()
set(HAVE_TCMALLOC no CACHE BOOL "If you have tcmalloc" FORCE)
if(WITH_TCMALLOC)
find_package(Tcmalloc)
if(Tcmalloc_FOUND)
set(HAVE_TCMALLOC yes CACHE BOOL "If you have tcmalloc" FORCE)
endif()
endif()
set(HAVE_JEMALLOC no CACHE BOOL "if you have jemalloc" FORCE)
if(WITH_JEMALLOC)
find_package(Jemalloc)
if(Jemalloc_FOUND)
set(HAVE_JEMALLOC yes CACHE BOOL "if you have jemalloc" FORCE)
endif()
@ -678,27 +746,38 @@ endif()
if(ENABLE_EPOLL)
check_function_exists(epoll_create HAVE_EPOLL)
if(HAVE_EPOLL)
add_compile_definitions(HAVE_EPOLL=1)
config_h_add_compile_definitions(HAVE_EPOLL=1)
endif()
endif()
check_function_exists(posix_fallocate HAVE_POSIX_FALLOCATE)
if(HAVE_POSIX_FALLOCATE)
config_h_add_compile_definitions(HAVE_POSIX_FALLOCATE=1)
endif()
check_function_exists(fallocate HAVE_FALLOCATE)
if(HAVE_FALLOCATE)
config_h_add_compile_definitions(HAVE_FALLOCATE=1)
endif()
if(HAVE_POSIX_FALLOCATE OR HAVE_FALLOCATE OR HAVE_OSX OR WIN_BUILD)
set(HAVE_SOME_FALLOCATE yes CACHE BOOL "if there is some fallocate support" FORCE)
add_compile_definitions(HAVE_SOME_FALLOCATE=1)
config_h_add_compile_definitions(HAVE_SOME_FALLOCATE=1)
else()
set(HAVE_SOME_FALLOCATE no CACHE BOOL "if there is some fallocate support" FORCE)
endif()
check_cxx_symbol_exists(asctime_r time.h HAVE_ASCTIME_R)
if(HAVE_ASCTIME_R)
add_compile_definitions(HAVE_ASCTIME_R=1)
config_h_add_compile_definitions(HAVE_ASCTIME_R=1)
endif()
check_cxx_symbol_exists(localtime_r time.h HAVE_LOCALTIME_R)
if(HAVE_LOCALTIME_R)
add_compile_definitions(HAVE_LOCALTIME_R=1)
config_h_add_compile_definitions(HAVE_LOCALTIME_R=1)
endif()
set(_check_funcs
@ -718,11 +797,13 @@ foreach (func ${_check_funcs})
set(func_var "HAVE_${func_var}")
set(${func_var})
check_function_exists(${func} ${func_var})
if(${func_var})
add_compile_definitions(${func_var})
config_h_add_compile_definitions(${func_var})
else()
endif()
endforeach()
unset(_check_funcs)
if(HAVE_KQUEUE)
@ -742,9 +823,10 @@ int main(int argc, char* argv[]) {
SOURCE_FROM_VAR kevent_udata_intptr_t_src.c _tmp_src
)
unset(_tmp_src)
if(KEVENT_UDATA_INTPTR_T)
message(STATUS "Checking whether struct kevent.udata is intptr_t - yes")
add_compile_definitions(KEVENT_UDATA_INTPTR_T=1)
config_h_add_compile_definitions(KEVENT_UDATA_INTPTR_T=1)
else()
message(STATUS "Checking whether struct kevent.udata is intptr_t - no")
endif()
@ -753,13 +835,17 @@ endif()
set(save_CMAKE_EXTRA_INCLUDE_FILES ${CMAKE_EXTRA_INCLUDE_FILES})
set(CMAKE_EXTRA_INCLUDE_FILES sys/types.h sys/socket.h netinet/in.h)
check_type_size("struct sockaddr_in.sin_len" HAVE_SOCKADDR_IN_SIN_LEN)
if(HAVE_SOCKADDR_IN_SIN_LEN)
add_compile_definitions(HAVE_SOCKADDR_IN_SIN_LEN=1)
config_h_add_compile_definitions(HAVE_SOCKADDR_IN_SIN_LEN=1)
endif()
check_type_size("struct sockaddr_in6.sin6_len" HAVE_SOCKADDR_IN6_SIN6_LEN)
if(HAVE_SOCKADDR_IN6_SIN6_LEN)
add_compile_definitions(HAVE_SOCKADDR_IN6_SIN6_LEN=1)
config_h_add_compile_definitions(HAVE_SOCKADDR_IN6_SIN6_LEN=1)
endif()
set(CMAKE_EXTRA_INCLUDE_FILES ${save_CMAKE_EXTRA_INCLUDE_FILES})
message(STATUS "Checking whether struct option.name is assignable from const char*")
@ -778,15 +864,16 @@ try_compile(HAVE_OPTION_CONST_NAME
SOURCE_FROM_VAR option_const_name.c _tmp_src
)
unset(_tmp_src)
if(HAVE_OPTION_CONST_NAME)
message(STATUS "Checking whether struct option.name is assignable from const char* - yes")
add_compile_definitions(HAVE_OPTION_CONST_NAME=1)
config_h_add_compile_definitions(HAVE_OPTION_CONST_NAME=1)
else()
message(STATUS "Checking whether struct option.name is assignable from const char* - no")
endif()
if(ENABLE_WEBSOCKET)
add_compile_definitions(ENABLE_WEBSOCKET=1)
config_h_add_compile_definitions(ENABLE_WEBSOCKET=1)
endif()
if(ARIA2_STATIC)
@ -801,26 +888,31 @@ endif()
add_link_options(${EXTRALIBS})
config_h_generate_header(config)
# pickup the generated config.h
include_directories(${CMAKE_CURRENT_BINARY_DIR})
add_compile_definitions(HAVE_CONFIG_H)
# add_subdirectory(po)
add_subdirectory(lib)
add_subdirectory(deps)
add_subdirectory(src)
# add_subdirectory(doc)
# add_subdirectory(test)
message(STATUS "summary of build options: \n\
Build: ${BUILD}
Host: ${HOST}
Target: ${TARGET}
Install prefix: ${PREFIX}
CC: ${CC}
CXX: ${CXX}
CPP: ${CPP}
CXXFLAGS: ${CXXFLAGS}
CFLAGS: ${CFLAGS}
CPPFLAGS: ${CPPFLAGS}
LDFLAGS: ${LDFLAGS}
Build: ${CMAKE_HOST_SYSTEM_PROCESSOR}
Host: ${CMAKE_HOST_SYSTEM_PROCESSOR}
Target: ${CMAKE_SYSTEM_PROCESSOR}
Install prefix: ${CMAKE_INSTALL_PREFIX}
CC: ${CMAKE_C_COMPILER}
CXX: ${CMAKE_CXX_COMPILER}
CPP: ${CMAKE_CPP_COMPILER}
CXXFLAGS: ${CMAKE_CXX_FLAGS}
CFLAGS: ${CMAKE_C_FLAGS}
CPPFLAGS: ${CMAKE_CPP_FLAGS}
LDFLAGS: EXE: ${CMAKE_EXE_LINKER_FLAGS} SHARED: ${CMAKE_SHARED_LINKER_FLAGS}
LIBS: ${LIBS}
DEFS: ${DEFS}
CXX1XCXXFLAGS: ${CXX1XCXXFLAGS}
@ -859,10 +951,6 @@ bash_completion dir: ${BASHCOMPLETIONDIR}
Static build: ${ARIA2_STATIC}
")
# #### README Generation #####
find_package(Docutils)
@ -870,6 +958,7 @@ if (Docutils_FOUND)
if(WIN32)
find_package(PythonInterp)
endif()
add_custom_command(
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/README.html
COMMAND ${PYTHON_EXECUTABLE} ${RST2HTML_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/README.rst ${CMAKE_CURRENT_SOURCE_DIR}/README.html
@ -901,12 +990,9 @@ add_custom_target(clang-format
)
# ########## install files ###############
install(FILES README README.rst README.html DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
install(FILES LICENSE.OpenSSL DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
# original Makefile.am contents follow:
# SUBDIRS = po lib deps src doc test

View File

@ -0,0 +1,22 @@
function(config_h_add_compile_definitions definitions)
set(${PROJECT_NAME}_CONFIG_H_definitions ${${PROJECT_NAME}_CONFIG_H_definitions} ${definitions} PARENT_SCOPE)
endfunction()
function(config_h_generate_header name)
write_file(${CMAKE_CURRENT_BINARY_DIR}/${name}.h.cmake.in "/* config.h.in. Generated from cmake*/\n")
foreach(def ${${PROJECT_NAME}_CONFIG_H_definitions})
set(def_var ${def})
string(REPLACE "=" ";" def_var ${def_var})
list(POP_FRONT def_var def_name)
if(def_var)
set(${def_name}_config_h_val ${def_var})
else()
set(${def_name}_config_h_val "${${def_name}}")
string(REPLACE "yes" "1" ${def_name}_config_h_val ${${def_name}_config_h_val})
string(REPLACE "ON" "1" ${def_name}_config_h_val ${${def_name}_config_h_val})
string(REPLACE "TRUE" "1" ${def_name}_config_h_val ${${def_name}_config_h_val})
endif()
write_file(${CMAKE_CURRENT_BINARY_DIR}/${name}.h.cmake.in "#define ${def_name} @${def_name}_config_h_val@\n" APPEND)
endforeach()
configure_file(${CMAKE_CURRENT_BINARY_DIR}/${name}.h.cmake.in ${name}.h)
endfunction()

View File

@ -1,5 +1,26 @@
project(wslay LANGUAGES CXX C VERSION 1.1.1)
include(GenerateConfigH)
config_h_add_compile_definitions(PACKAGE="${PROJECT_NAME}")
config_h_add_compile_definitions(PACKAGE_NAME="${PROJECT_NAME}")
config_h_add_compile_definitions(PACKAGE_STRING="${PROJECT_NAME} ${PROJECT_VERSION}")
config_h_add_compile_definitions(PACKAGE_TARNAME="${PROJECT_NAME}")
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}")
add_link_options(${EXTRALIBS})
config_h_generate_header(config)
# pickup the generated config.h
include_directories(${CMAKE_CURRENT_BINARY_DIR})
add_compile_definitions(HAVE_CONFIG_H)
add_subdirectory(lib)
add_subdirectory(tests)

View File

@ -26,8 +26,7 @@ set(WSLAY_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/includes)
add_library(wslay STATIC ${wslay_STAT_SRCS})
target_compile_definitions(wslay PUBLIC PACKAGE_VERSION="${PROJECT_VERSION}")
target_compile_definitions(wslay PUBLIC PACKAGE="${PROJECT_NAME}")
target_include_directories(wslay PUBLIC ${WSLAY_INCLUDE_DIR})
target_include_directories(wslay INTERFACE ${WSLAY_INCLUDE_DIR})

View File

@ -2,23 +2,18 @@
add_subdirectory(includes)
# ########## next target ###############
set(aria2c_SRCS main.cc)
add_library(main OBJECT ${aria2c_SRCS})
target_compile_definitions(main PUBLIC PACKAGE_VERSION="${PROJECT_VERSION}")
target_compile_definitions(main PUBLIC PACKAGE="${PROJECT_NAME}")
target_include_directories(main PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/includes)
target_include_directories(main PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
add_executable(aria2c $<TARGET_OBJECTS:main>)
target_link_libraries(aria2c PUBLIC main)
target_link_libraries(aria2c main)
install(TARGETS aria2c ${INSTALL_TARGETS_DEFAULT_ARGS})
# ########## next target ###############
set(aria2_SRCS
a2algo.h
@ -513,7 +508,6 @@ else()
)
endif()
if(HAVE_SOME_XMLLIB)
set(aria2_SRCS
${aria2_SRCS}
@ -547,10 +541,7 @@ endif()
if(ENABLE_XML_RPC)
set(aria2_SRCS
${aria2_SRCS}
)
endif()
if(HAVE_SOME_FALLOCATE)
@ -560,7 +551,6 @@ if (HAVE_SOME_FALLOCATE)
FallocFileAllocationIterator.cc
FallocFileAllocationIterator.h
)
endif()
if(HAVE_EPOLL)
@ -570,7 +560,6 @@ if (HAVE_EPOLL)
EpollEventPoll.cc
EpollEventPoll.h
)
endif()
if(ENABLE_SSL)
@ -588,7 +577,6 @@ if (USE_APPLE_MD)
AppleMessageDigestImpl.cc
)
endif()
if(HAVE_APPLETLS)
@ -643,6 +631,7 @@ endif()
if(HAVE_LIBGNUTLS)
set(aria2_SRCS
${aria2_SRCS}
LibgnutlsTLSContext.cc
LibgnutlsTLSContext.h
@ -660,6 +649,7 @@ if (HAVE_LIBGCRYPT)
LibgcryptDHKeyExchange.cc
LibgcryptDHKeyExchange.h
)
if(USE_LIBGCRYPT_MD)
set(aria2_SRCS
${aria2_SRCS}
@ -676,6 +666,7 @@ if (HAVE_LIBNETTLE)
LibnettleARC4Encryptor.cc
LibnettleARC4Encryptor.h
)
if(USE_LIBNETTLE_MD)
set(aria2_SRCS
${aria2_SRCS}
@ -705,6 +696,7 @@ if (HAVE_OPENSSL)
LibsslDHKeyExchange.cc
LibsslDHKeyExchange.h
)
if(NOT HAVE_APPLETLS)
set(aria2_SRCS
${aria2_SRCS}
@ -715,6 +707,7 @@ if (HAVE_OPENSSL)
LibsslTLSSession.h
)
endif()
if(USE_OPENSSL_MD)
set(aria2_SRCS
${aria2_SRCS}
@ -1263,14 +1256,17 @@ if (ENABLE_LIBARIA2)
KeepRunningCommand.cc
KeepRunningCommand.h
)
add_library(aria2 SHARED ${aria2_SRCS})
set(LIBARIA2_BUILD_MODE SHARED)
# add_library(aria2 SHARED ${aria2_SRCS})
else()
add_library(aria2 STATIC ${aria2_SRCS})
set(LIBARIA2_BUILD_MODE STATIC)
# add_library(aria2 STATIC ${aria2_SRCS})
endif()
target_compile_definitions(aria2 PUBLIC PACKAGE_VERSION="${PROJECT_VERSION}")
target_compile_definitions(aria2 PUBLIC PACKAGE="${PROJECT_NAME}")
add_library(aria2 ${LIBARIA2_BUILD_MODE} ${aria2_SRCS})
target_include_directories(aria2 PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/includes)
target_include_directories(aria2 PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
@ -1278,96 +1274,92 @@ target_include_directories(aria2 INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/includes)
if(HAVE_ZLIB)
target_include_directories(aria2 PUBLIC ${ZLIB_INCLUDE_DIRS})
target_link_libraries(aria2 INTERFACE ZLIB::ZLIB)
target_link_libraries(aria2 ZLIB::ZLIB)
endif()
if(HAVE_LIBUV)
target_include_directories(aria2 PUBLIC ${LIBUV_INCLUDE_DIRS})
target_link_libraries(aria2 INTERFACE LIBUV::LIBUV)
target_link_libraries(aria2 LIBUV::LIBUV)
endif()
if(HAVE_LIBXML2)
target_include_directories(aria2 PUBLIC ${LIBXML2_INCLUDE_DIR})
target_link_libraries(aria2 INTERFACE LibXml2::LibXml2)
target_link_libraries(aria2 LibXml2::LibXml2)
endif()
if(HAVE_LIBEXPAT)
target_include_directories(aria2 PUBLIC ${EXPAT_INCLUDE_DIRS})
target_link_libraries(aria2 INTERFACE EXPAT::EXPAT)
target_link_libraries(aria2 EXPAT::EXPAT)
endif()
if(HAVE_SQLITE3)
target_include_directories(aria2 PUBLIC ${SQLite3_INCLUDE_DIRS})
target_link_libraries(aria2 INTERFACE SQLite::SQLite3)
target_link_libraries(aria2 SQLite::SQLite3)
endif()
if(HAVE_APPLETLS)
target_link_libraries(aria2 INTERFACE ${APPLETLS_LD_FLAGS})
target_link_libraries(aria2 ${APPLETLS_LD_FLAGS})
endif()
if(HAVE_WINTLS)
target_link_libraries(aria2 INTERFACE ${WINTLS_LIBS})
target_link_libraries(aria2 ${WINTLS_LIBS})
endif()
if(HAVE_LIBGNUTLS)
target_include_directories(aria2 PUBLIC ${GNUTLS_INCLUDE_DIR})
target_compile_definitions(aria2 PUBLIC ${LIBGNUTLS_CFLAGS})
target_link_libraries(aria2 INTERFACE GnuTLS::GnuTLS)
target_link_libraries(aria2 GnuTLS::GnuTLS)
endif()
if(HAVE_OPENSSL)
target_include_directories(aria2 PUBLIC ${OPENSSL_INCLUDE_DIR})
target_link_libraries(aria2 INTERFACE OpenSSL::SSL)
target_link_libraries(aria2 OpenSSL::SSL)
# target_link_libraries(aria2 INTERFACE OpenSSL::Crypto)
endif()
if(HAVE_LIBNETTLE)
target_include_directories(aria2 PUBLIC ${NETTLE_INCLUDE_DIR})
target_link_libraries(aria2 INTERFACE Nettle::Nettle)
target_link_libraries(aria2 Nettle::Nettle)
endif()
if(HAVE_LIBGMP)
target_include_directories(aria2 PUBLIC ${GMP_INCLUDE_DIR})
target_link_libraries(aria2 INTERFACE GMP::GMP)
target_link_libraries(aria2 GMP::GMP)
endif()
if(HAVE_LIBGCRYPT)
target_include_directories(aria2 PUBLIC ${LibGcrypt_INCLUDE_DIR})
target_link_libraries(aria2 INTERFACE LibGcrypt::LibGcrypt)
target_link_libraries(aria2 LibGcrypt::LibGcrypt)
endif()
if(HAVE_LIBSSH2)
target_include_directories(aria2 PUBLIC ${LIBSSH2_INCLUDE_DIR})
target_link_libraries(aria2 INTERFACE LibSSH2::LibSSH2)
target_link_libraries(aria2 LibSSH2::LibSSH2)
endif()
if(HAVE_LIBCARES)
target_include_directories(aria2 PUBLIC ${LIBCARES_INCLUDE_DIR})
target_link_libraries(aria2 INTERFACE Libcares::Libcares)
target_link_libraries(aria2 Libcares::Libcares)
endif()
if(ENABLE_WEBSOCKET)
target_include_directories(aria2 PUBLIC ${WSLAY_INCLUDE_DIR})
target_link_libraries(aria2 INTERFACE wslay)
target_link_libraries(aria2 wslay)
endif()
set_target_properties(aria2 PROPERTIES VERSION 0.0.0 SOVERSION 1)
install(TARGETS aria2 ${INSTALL_TARGETS_DEFAULT_ARGS})
target_link_libraries(aria2c PUBLIC aria2)
target_link_libraries(aria2c aria2)
# ########## next target ###############
# add_library(aria2_static STATIC ${aria2_SRCS})
# ########## install files ###############
install(FILES libaria2.pc DESTINATION lib)
# original Makefile.am contents follow:
# SUBDIRS = includes
@ -1375,8 +1367,6 @@ install(FILES libaria2.pc DESTINATION lib)
# aria2c_SOURCES = main.cc
#
# AR = @AR@
#
# if ENABLE_LIBARIA2