From 462ff702bfc2241df98cd564db01df68aa342d5a Mon Sep 17 00:00:00 2001 From: Ivan Zhakov Date: Wed, 7 Sep 2022 11:43:55 +0000 Subject: * CMakeLists.txt: Add APR_BUILD_SHARED and APR_BUILD_STATIC options to control which configurations to build. Both are enabled by default. git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@1903912 13f79535-47bb-0310-9956-ffa450edef68 --- CMakeLists.txt | 58 +++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 39 insertions(+), 19 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3aec5b561..1d5719ff4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,8 +73,18 @@ OPTION(APU_HAVE_ICONV "Xlate support" OFF) OPTION(APR_HAVE_IPV6 "IPv6 support" ON) OPTION(INSTALL_PDB "Install .pdb files (if generated)" ON) OPTION(APR_BUILD_TESTAPR "Build the test suite" ON) +OPTION(APR_BUILD_SHARED "Build shared libraries" ON) +OPTION(APR_BUILD_STATIC "Build static libraries." ON) OPTION(TEST_STATIC_LIBS "Test programs use APR static libraries instead of shared libraries?" OFF) +IF(NOT APR_BUILD_SHARED AND NOT APR_BUILD_STATIC) + MESSAGE(FATAL_ERROR "Both APR_BUILD_SHARED and APR_BUILD_STATIC have been disabled") +ENDIF() + +IF(NOT APR_BUILD_STATIC AND TEST_STATIC_LIBS) + MESSAGE(FATAL_ERROR "APR_BUILD_STATIC have been disabled, but TEST_STATIC_LIBS is enabled") +ENDIF() + IF(NOT APU_USE_EXPAT AND NOT APU_USE_LIBXML2 AND NOT APU_USE_XMLLITE) MESSAGE(FATAL_ERROR "Either Expat or LibXml2 or XmlLite must be selected") ENDIF() @@ -491,28 +501,36 @@ IF (MSVC) ENDIF() # libapr-2 is shared, apr-2 is static -ADD_LIBRARY(${apr_libname} SHARED ${APR_SOURCES} ${APR_PUBLIC_HEADERS_GENERATED} libapr.rc) -LIST(APPEND install_targets ${apr_libname}) -LIST(APPEND install_bin_pdb ${PROJECT_BINARY_DIR}/${apr_libname}.pdb) -TARGET_LINK_LIBRARIES(${apr_libname} ${XMLLIB_LIBRARIES} ${XLATE_LIBRARIES} ${APR_SYSTEM_LIBS}) -SET_TARGET_PROPERTIES(${apr_libname} PROPERTIES COMPILE_DEFINITIONS "APR_DECLARE_EXPORT;APR_HAVE_MODULAR_DSO=1") -ADD_DEPENDENCIES(${apr_libname} test_char_header) - -ADD_LIBRARY(${apr_name} STATIC ${APR_SOURCES} ${APR_PUBLIC_HEADERS_GENERATED}) -LIST(APPEND install_targets ${apr_name}) -# no .pdb file generated for static libraries -TARGET_LINK_LIBRARIES(${apr_name} ${XMLLIB_LIBRARIES} ${XLATE_LIBRARIES} ${APR_SYSTEM_LIBS}) -SET_TARGET_PROPERTIES(${apr_name} PROPERTIES COMPILE_DEFINITIONS "APR_DECLARE_STATIC;APR_HAVE_MODULAR_DSO=1") -ADD_DEPENDENCIES(${apr_name} test_char_header) +IF (APR_BUILD_SHARED) + ADD_LIBRARY(${apr_libname} SHARED ${APR_SOURCES} ${APR_PUBLIC_HEADERS_GENERATED} libapr.rc) + LIST(APPEND install_targets ${apr_libname}) + LIST(APPEND install_bin_pdb ${PROJECT_BINARY_DIR}/${apr_libname}.pdb) + TARGET_LINK_LIBRARIES(${apr_libname} ${XMLLIB_LIBRARIES} ${XLATE_LIBRARIES} ${APR_SYSTEM_LIBS}) + SET_TARGET_PROPERTIES(${apr_libname} PROPERTIES COMPILE_DEFINITIONS "APR_DECLARE_EXPORT;APR_HAVE_MODULAR_DSO=1") + ADD_DEPENDENCIES(${apr_libname} test_char_header) +ENDIF() + +IF (APR_BUILD_STATIC) + ADD_LIBRARY(${apr_name} STATIC ${APR_SOURCES} ${APR_PUBLIC_HEADERS_GENERATED}) + LIST(APPEND install_targets ${apr_name}) + # no .pdb file generated for static libraries + TARGET_LINK_LIBRARIES(${apr_name} ${XMLLIB_LIBRARIES} ${XLATE_LIBRARIES} ${APR_SYSTEM_LIBS}) + SET_TARGET_PROPERTIES(${apr_name} PROPERTIES COMPILE_DEFINITIONS "APR_DECLARE_STATIC;APR_HAVE_MODULAR_DSO=1") + ADD_DEPENDENCIES(${apr_name} test_char_header) +ENDIF() # libaprapp-2 and aprapp-2 are static -ADD_LIBRARY(libaprapp-2 STATIC misc/win32/apr_app.c misc/win32/internal.c ${APR_PUBLIC_HEADERS_GENERATED}) -LIST(APPEND install_targets libaprapp-2) -SET_TARGET_PROPERTIES(libaprapp-2 PROPERTIES COMPILE_DEFINITIONS APR_APP) +IF (APR_BUILD_SHARED) + ADD_LIBRARY(libaprapp-2 STATIC misc/win32/apr_app.c misc/win32/internal.c ${APR_PUBLIC_HEADERS_GENERATED}) + LIST(APPEND install_targets libaprapp-2) + SET_TARGET_PROPERTIES(libaprapp-2 PROPERTIES COMPILE_DEFINITIONS APR_APP) +ENDIF() -ADD_LIBRARY(aprapp-2 STATIC misc/win32/apr_app.c misc/win32/internal.c ${APR_PUBLIC_HEADERS_GENERATED}) -LIST(APPEND install_targets aprapp-2) -SET_TARGET_PROPERTIES(aprapp-2 PROPERTIES COMPILE_DEFINITIONS "APR_DECLARE_STATIC;APR_APP") +IF (APR_BUILD_STATIC) + ADD_LIBRARY(aprapp-2 STATIC misc/win32/apr_app.c misc/win32/internal.c ${APR_PUBLIC_HEADERS_GENERATED}) + LIST(APPEND install_targets aprapp-2) + SET_TARGET_PROPERTIES(aprapp-2 PROPERTIES COMPILE_DEFINITIONS "APR_DECLARE_STATIC;APR_APP") +ENDIF() IF(APU_HAVE_CRYPTO) IF(NOT OPENSSL_FOUND) @@ -730,6 +748,8 @@ MESSAGE(STATUS " Use XmlLite ..................... : ${APU_USE_XMLLITE}") MESSAGE(STATUS " Have Crypto ..................... : ${APU_HAVE_CRYPTO}") MESSAGE(STATUS " Have Iconv ...................... : ${APU_HAVE_ICONV}") MESSAGE(STATUS " Library files for XML ........... : ${XMLLIB_LIBRARIES}") +MESSAGE(STATUS " Build shared libs ............... : ${APR_BUILD_SHARED}") +MESSAGE(STATUS " Build static libs ............... : ${APR_BUILD_STATIC}") MESSAGE(STATUS " Build test suite ................ : ${APR_BUILD_TESTAPR}") IF(TEST_STATIC_LIBS) MESSAGE(STATUS " (testing static libraries)") -- cgit v1.2.1