respect WITH_<OPTION> directives

add static lib target

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
pull/2045/head
Rachel Powers 2023-03-28 02:49:13 -07:00
parent f3e7e9cf9c
commit 9b82f9f42d
2 changed files with 166 additions and 137 deletions

View File

@ -52,30 +52,31 @@ if(WIN32)
endif()
endif()
option(WITH_LIBUV "Build with libuv" off)
option(WITH_APPLETLS "Build with appletls" on)
option(WITH_WINTLS "Build with wintls" on)
option(WITH_GNUTLS "Build with gnutls" on)
option(WITH_LIBNETTLE "Build with libnettle" on)
option(WITH_LIBGMP "Build with libgmp" on)
option(WITH_LIBGCRYPT "Build with libgcrypt" on)
option(WITH_OPENSSL "Build with openssl" on)
option(WITH_SQLITE3 "Build with SQLite3" on)
option(WITH_LIBXML2 "Build with libxml2" on)
option(WITH_LIBEXPAT "Build with libexpat" on)
option(WITH_LIBCARES "Build with libcares" on)
option(WITH_LIBZ "Build with libz" on)
option(WITH_TCMALLOC "Build with tcmalloc" off)
option(WITH_JEMALLOC "Build with jemalloc" off)
option(WITH_LIBSSH2 "Build with libssh2" on)
option(WITH_LIBUV "Build aria2 with libuv" off)
option(WITH_APPLETLS "Build aria2 with appletls" on)
option(WITH_WINTLS "Build aria2 with wintls" on)
option(WITH_GNUTLS "Build aria2 with gnutls" on)
option(WITH_LIBNETTLE "Build aria2 with libnettle" on)
option(WITH_LIBGMP "Build aria2 with libgmp" on)
option(WITH_LIBGCRYPT "Build aria2 with libgcrypt" on)
option(WITH_OPENSSL "Build aria2 with openssl" on)
option(WITH_SQLITE3 "Build aria2 with SQLite3" on)
option(WITH_LIBXML2 "Build aria2 with libxml2" on)
option(WITH_LIBEXPAT "Build aria2 with libexpat" on)
option(WITH_LIBCARES "Build aria2 with libcares" on)
option(WITH_LIBZ "Build with aria2 libz" on)
option(WITH_TCMALLOC "Build aria2 with tcmalloc" off)
option(WITH_JEMALLOC "Build aria2 with jemalloc" off)
option(WITH_LIBSSH2 "Build aria2 with libssh2" on)
option(ENABLE_SSL "Build with ssl support" on)
option(ENABLE_BITTORRENT "Build with bittorrent support" on)
option(ENABLE_METALINK "Build with metalink support" on)
option(ENABLE_WEBSOCKET "Build with websocket support" on)
option(ENABLE_EPOLL "Build with epoll support" on)
option(ENABLE_LIBARIA2 "Build the libaria2 shared library" off)
option(ENABLE_WERROR "Builld with werror" off)
option(ENABLE_SSL "Build aria2 with ssl support" on)
option(ENABLE_BITTORRENT "Build aria2 with bittorrent support" on)
option(ENABLE_METALINK "Build aria2 with metalink support" on)
option(ENABLE_WEBSOCKET "Build aria2 with websocket support" on)
option(ENABLE_EPOLL "Build aria2 with epoll support" on)
option(ENABLE_LIBARIA2 "Build aria2 the libaria2 shared library" off)
option(ENABLE_WERROR "Builld aria2 with werror" off)
option(ENABLE_XML_RPC "Builld aria2 with XML RPC support" on)
set(CA_BUNDLE "" CACHE FILEPATH "Define to choose default CA bundle.[Use FILE as default CA bundle.")
set(DISK_CACHE "" CACHE STRING "Define to choose default disk-cache size")
@ -184,6 +185,8 @@ else()
set(HAVE_CPPUNIT no CACHE BOOL "Define if you have CPPUNIT" FORCE)
endif()
set(HAVE_ZLIB no CACHE BOOL "Define if you have zlib" FORCE)
if(WITH_LIBZ)
find_package(ZLIB 1.2.3)
if(ZLIB_FOUND)
@ -213,10 +216,11 @@ if(ZLIB_FOUND)
set(CMAKE_REQUIRED_INCLUDES ${save_CMAKE_REQUIRED_INCLUDES})
set(aria2_LIBS ${ZLIB_LIBRARIES} ${aria2_LIBS})
else()
set(HAVE_ZLIB no CACHE BOOL "Define if you have zlib" FORCE)
endif()
endif()
set(HAVE_LIBUV no CACHE BOOL "Define if you have libuv" FORCE)
if(WITH_LIBUV)
find_package(LibUV 1.13)
if(LIBUV_FOUND)
@ -224,10 +228,11 @@ if(LIBUV_FOUND)
set(LIBUV_CFLAGS "")
set(LIBUV_LIBS ${LIBUV_LIBRARIES})
config_h_add_compile_definitions(HAVE_LIBUV=1)
else()
set(HAVE_LIBUV no CACHE BOOL "Define if you have libuv" FORCE)
endif()
endif()
set(HAVE_LIBXML2 no CACHE BOOL "Define if you have libxml2" FORCE)
if(WITH_LIBXML2)
find_package(LibXml2)
if(LibXml2_FOUND)
@ -235,10 +240,12 @@ if(LibXml2_FOUND)
set(LIBXML2_CFLAGS "")
set(LIBXML2_LIBS ${LIBXML2_LIBRARIES})
config_h_add_compile_definitions(HAVE_LIBXML2=1)
else()
set(HAVE_LIBXML2 no CACHE BOOL "Define if you have libxml2" FORCE)
endif()
endif()
set(HAVE_LIBEXPAT no CACHE BOOL "Define if you have libexpat" FORCE)
if(WITH_LIBEXPAT)
find_package(EXPAT)
if(EXPAT_FOUND AND NOT HAVE_LIBXML2)
@ -246,10 +253,11 @@ if(EXPAT_FOUND AND NOT HAVE_LIBXML2)
set(LIBEXPAT_CFLAGS "")
set(LIBEXPAT_LIBS ${EXPAT_LIBRARIES})
config_h_add_compile_definitions(HAVE_LIBEXPAT=1)
else()
set(HAVE_LIBEXPAT no CACHE BOOL "Define if you have libexpat" FORCE)
endif()
endif()
set(HAVE_SQLITE3 no CACHE BOOL "Define if you have sqlite3" FORCE)
if(WITH_SQLITE3)
find_package(SQLite3)
if(SQLite3_FOUND)
@ -271,8 +279,7 @@ if(SQLite3_FOUND)
set(CMAKE_REQUIRED_LIBRARIES ${save_CMAKE_REQUIRED_LIBRARIES})
set(CMAKE_REQUIRED_INCLUDES ${save_CMAKE_REQUIRED_INCLUDES})
else()
set(HAVE_SQLITE3 no CACHE BOOL "Define if you have sqlite3" FORCE)
endif()
endif()
if(APPLE)
@ -281,7 +288,6 @@ else()
set(HAVE_OSX no CACHE BOOL "On Mac OS X" FORCE)
endif()
set(a2_found_headers)
if(WIN32)

View File

@ -1275,22 +1275,29 @@ if(ENABLE_LIBARIA2)
KeepRunningCommand.h
)
set(LIBARIA2_BUILD_MODE SHARED)
set(ARIA2C_LINK_STATIC true)
if(WIN_BUILD AND NOT MSVC)
set(EXTRALDFLAGS ${EXTRALDFLAGS} -no-undefined)
endif()
else()
set(LIBARIA2_BUILD_MODE STATIC)
set(ARIA2C_LINK_SHARED false)
endif()
if(MSVC)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
endif()
add_library(aria2 ${LIBARIA2_BUILD_MODE} ${aria2_SRCS})
add_library(aria2 SHARED ${aria2_SRCS})
add_library(aria2static STATIC ${aria2_SRCS})
set_target_properties(aria2 aria2static PROPERTIES OUTPUT_NAME aria2)
if(ARIA2C_LINK_SHARED)
set(ARIA2C_LINK_TARGET aria2)
else()
set(ARIA2C_LINK_TARGET aria2static)
endif()
target_include_directories(aria2 PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/includes)
target_include_directories(aria2 PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
@ -1304,93 +1311,109 @@ endif()
if(HAVE_ZLIB)
target_include_directories(aria2 PUBLIC ${ZLIB_INCLUDE_DIRS})
target_include_directories(aria2c PUBLIC ${ZLIB_INCLUDE_DIRS})
target_link_libraries(aria2 ZLIB::ZLIB)
target_include_directories(aria2static PUBLIC ${ZLIB_INCLUDE_DIRS})
target_link_libraries(aria2 PUBLIC ZLIB::ZLIB)
target_link_libraries(aria2static PUBLIC ZLIB::ZLIB)
endif()
if(HAVE_LIBUV)
target_include_directories(aria2 PUBLIC ${LIBUV_INCLUDE_DIRS})
target_include_directories(aria2c PUBLIC ${LIBUV_INCLUDE_DIRS})
target_link_libraries(aria2 LIBUV::LIBUV)
target_include_directories(aria2static PUBLIC ${LIBUV_INCLUDE_DIRS})
target_link_libraries(aria2 PUBLIC LIBUV::LIBUV)
target_link_libraries(aria2static PUBLIC LIBUV::LIBUV)
endif()
if(HAVE_LIBXML2)
target_include_directories(aria2 PUBLIC ${LIBXML2_INCLUDE_DIR})
target_include_directories(aria2c PUBLIC ${LIBXML2_INCLUDE_DIR})
target_link_libraries(aria2 LibXml2::LibXml2)
target_include_directories(aria2static PUBLIC ${LIBXML2_INCLUDE_DIR})
target_link_libraries(aria2 PUBLIC LibXml2::LibXml2)
target_link_libraries(aria2static PUBLIC LibXml2::LibXml2)
endif()
if(HAVE_LIBEXPAT)
target_include_directories(aria2 PUBLIC ${EXPAT_INCLUDE_DIRS})
target_include_directories(aria2c PUBLIC ${EXPAT_INCLUDE_DIRS})
target_link_libraries(aria2 EXPAT::EXPAT)
target_include_directories(aria2static PUBLIC ${EXPAT_INCLUDE_DIRS})
target_link_libraries(aria2 PUBLIC EXPAT::EXPAT)
target_link_libraries(aria2static PUBLIC EXPAT::EXPAT)
endif()
if(HAVE_SQLITE3)
target_include_directories(aria2 PUBLIC ${SQLite3_INCLUDE_DIRS})
target_include_directories(aria2c PUBLIC ${SQLite3_INCLUDE_DIRS})
target_link_libraries(aria2 SQLite::SQLite3)
target_include_directories(aria2static PUBLIC ${SQLite3_INCLUDE_DIRS})
target_link_libraries(aria2 PUBLIC SQLite::SQLite3)
target_link_libraries(aria2static PUBLIC SQLite::SQLite3)
endif()
if(HAVE_APPLETLS)
target_link_libraries(aria2 ${APPLETLS_LD_FLAGS})
target_link_libraries(aria2 PUBLIC ${APPLETLS_LD_FLAGS})
target_link_libraries(aria2static PUBLIC ${APPLETLS_LD_FLAGS})
endif()
if(HAVE_WINTLS)
target_link_libraries(aria2 ${WINTLS_LIBS})
target_link_libraries(aria2 PUBLIC ${WINTLS_LIBS})
target_link_libraries(aria2static PUBLIC ${WINTLS_LIBS})
endif()
if(HAVE_LIBGNUTLS)
target_include_directories(aria2 PUBLIC ${GNUTLS_INCLUDE_DIR})
target_compile_definitions(aria2 PUBLIC ${LIBGNUTLS_CFLAGS})
target_include_directories(aria2c PUBLIC ${GNUTLS_INCLUDE_DIR})
target_compile_definitions(aria2c PUBLIC ${LIBGNUTLS_CFLAGS})
target_link_libraries(aria2 GnuTLS::GnuTLS)
target_compile_definitions(aria2static PUBLIC ${LIBGNUTLS_CFLAGS})
target_include_directories(aria2 PUBLIC ${GNUTLS_INCLUDE_DIR})
target_compile_definitions(aria2static PUBLIC ${LIBGNUTLS_CFLAGS})
target_link_libraries(aria2 PUBLIC GnuTLS::GnuTLS)
target_link_libraries(aria2static PUBLIC GnuTLS::GnuTLS)
endif()
if(HAVE_OPENSSL)
target_include_directories(aria2 PUBLIC ${OPENSSL_INCLUDE_DIR})
target_include_directories(aria2c PUBLIC ${OPENSSL_INCLUDE_DIR})
target_include_directories(aria2static PUBLIC ${OPENSSL_INCLUDE_DIR})
target_link_libraries(aria2 OpenSSL::SSL)
# target_link_libraries(aria2 INTERFACE OpenSSL::Crypto)
target_link_libraries(aria2 PUBLIC OpenSSL::SSL)
target_link_libraries(aria2static PUBLIC OpenSSL::SSL)
endif()
if(HAVE_LIBNETTLE)
target_include_directories(aria2 PUBLIC ${NETTLE_INCLUDE_DIR})
target_include_directories(aria2c PUBLIC ${NETTLE_INCLUDE_DIR})
target_link_libraries(aria2 Nettle::Nettle)
target_include_directories(aria2static PUBLIC ${NETTLE_INCLUDE_DIR})
target_link_libraries(aria2 PUBLIC Nettle::Nettle)
target_link_libraries(aria2static PUBLIC Nettle::Nettle)
endif()
if(HAVE_LIBGMP)
target_include_directories(aria2 PUBLIC ${GMP_INCLUDE_DIR})
target_include_directories(aria2c PUBLIC ${GMP_INCLUDE_DIR})
target_link_libraries(aria2 GMP::GMP)
target_include_directories(aria2static PUBLIC ${GMP_INCLUDE_DIR})
target_link_libraries(aria2 PUBLIC GMP::GMP)
target_link_libraries(aria2static PUBLIC GMP::GMP)
endif()
if(HAVE_LIBGCRYPT)
target_include_directories(aria2 PUBLIC ${LibGcrypt_INCLUDE_DIR})
target_include_directories(aria2c PUBLIC ${LibGcrypt_INCLUDE_DIR})
target_link_libraries(aria2 LibGcrypt::LibGcrypt)
target_include_directories(aria2static PUBLIC ${LibGcrypt_INCLUDE_DIR})
target_link_libraries(aria2 PUBLIC LibGcrypt::LibGcrypt)
target_link_libraries(aria2static PUBLIC LibGcrypt::LibGcrypt)
endif()
if(HAVE_LIBSSH2)
target_include_directories(aria2 PUBLIC ${LIBSSH2_INCLUDE_DIR})
target_include_directories(aria2c PUBLIC ${LIBSSH2_INCLUDE_DIR})
target_link_libraries(aria2 LibSSH2::LibSSH2)
target_include_directories(aria2static PUBLIC ${LIBSSH2_INCLUDE_DIR})
target_link_libraries(aria2 PUBLIC LibSSH2::LibSSH2)
target_link_libraries(aria2static PUBLIC LibSSH2::LibSSH2)
endif()
if(HAVE_LIBCARES)
target_include_directories(aria2 PUBLIC ${LIBCARES_INCLUDE_DIR})
target_include_directories(aria2c PUBLIC ${LIBCARES_INCLUDE_DIR})
target_link_libraries(aria2 Libcares::Libcares)
target_include_directories(aria2static PUBLIC ${LIBCARES_INCLUDE_DIR})
target_link_libraries(aria2 PUBLIC Libcares::Libcares)
target_link_libraries(aria2static PUBLIC Libcares::Libcares)
endif()
if(ENABLE_WEBSOCKET)
target_include_directories(aria2 PUBLIC ${WSLAY_INCLUDE_DIR})
target_include_directories(aria2c PUBLIC ${WSLAY_INCLUDE_DIR})
target_link_libraries(aria2 wslay)
target_include_directories(aria2static PUBLIC ${WSLAY_INCLUDE_DIR})
target_link_libraries(aria2 PUBLIC wslay)
target_link_libraries(aria2static PUBLIC wslay)
endif()
if(ARIA2_STATIC)
@ -1406,7 +1429,7 @@ set_target_properties(aria2 PROPERTIES VERSION 0.0.0 SOVERSION 1)
target_link_options(aria2 PUBLIC ${EXTRALDFLAGS})
install(TARGETS aria2 ${INSTALL_TARGETS_DEFAULT_ARGS})
target_link_libraries(aria2c aria2)
target_link_libraries(aria2c PRIVATE ${ARIA2C_LINK_TARGET})
target_link_options(aria2c PUBLIC ${EXTRALDFLAGS})
# ########## next target ###############