diff --git a/CMakeLists.txt b/CMakeLists.txt index 2c53a88..2570423 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -97,6 +97,8 @@ set(TMP_INCLUDE_DIR "${PROJECT_BINARY_DIR}/include.tmp") set(EXT_INCLUDE_DIRS "") set(EXT_LIBS "") set(EXT_LIBS_STATIC "") +set(EXT_DEPS "") +set(EXT_DEPS_STATIC "") if(${LIBARP_FEATURE_DEFLATE}) add_definitions("-DFEATURE_DEFLATE") @@ -107,19 +109,15 @@ if(${LIBARP_FEATURE_DEFLATE}) list(APPEND EXT_LIBS "${ZLIB_LIBRARIES}") list(APPEND EXT_LIBS_STATIC "${ZLIB_LIBRARIES}") else() - set(ZLIB_SOURCE_DIR "${PROJECT_SOURCE_DIR}/libs/zlib") - set(ZLIB_INCLUDE_DIRS "${ZLIB_SOURCE_DIR};${TMP_INCLUDE_DIR}/zlib") - set(ZLIB_INCLUDE_DIR "${ZLIB_INCLUDE_DIRS}") - configure_file("${ZLIB_SOURCE_DIR}/zconf.h.in" "${TMP_INCLUDE_DIR}/zlib/zconf.h") - set(ZLIB_LIBRARY "zlib") - set(ZLIB_LIBRARIES "${ZLIB_LIBRARY}") + set(ZLIB_TARGET "zlib") set(ZLIB_STATIC_TARGET "zlibstatic") - list(APPEND EXT_INCLUDE_DIRS "${ZLIB_INCLUDE_DIRS}") - list(APPEND EXT_LIBS "${ZLIB_LIBRARIES}") - list(APPEND EXT_LIBS_STATIC "${ZLIB_STATIC_TARGET}") + if(NOT TARGET "${ZLIB_TARGET}") + set(ZLIB_SOURCE_DIR "${PROJECT_SOURCE_DIR}/libs/zlib") + + set(ZLIB_INCLUDE_DIRS "${ZLIB_SOURCE_DIR};${TMP_INCLUDE_DIR}/zlib") + configure_file("${ZLIB_SOURCE_DIR}/zconf.h.in" "${TMP_INCLUDE_DIR}/zlib/zconf.h") - if(NOT TARGET "${ZLIB_LIBRARY}") set(ENABLE_EXAMPLES OFF CACHE BOOL "" FORCE) add_subdirectory("${ZLIB_SOURCE_DIR}") set_target_properties(minigzip example @@ -129,8 +127,12 @@ if(${LIBARP_FEATURE_DEFLATE}) PROPERTIES EXCLUDE_FROM_ALL 1 EXCLUDE_FROM_DEFAULT_BUILD 1) endif() - _arp_disable_warnings("${ZLIB_LIBRARY}") + _arp_disable_warnings("${ZLIB_TARGET}") endif() + + list(APPEND EXT_INCLUDE_DIRS "${ZLIB_INCLUDE_DIRS}") + list(APPEND EXT_DEPS "${ZLIB_TARGET}") + list(APPEND EXT_DEPS_STATIC "${ZLIB_STATIC_TARGET}") endif() endif() @@ -222,6 +224,13 @@ target_include_directories("${PROJECT_NAME}_static" PUBLIC "${EXT_INCLUDE_DIRS}" target_link_libraries("${PROJECT_NAME}" "${EXT_LIBS}") target_link_libraries("${PROJECT_NAME}_static" "${EXT_LIBS_STATIC}") +if(NOT "${EXT_DEPS}" STREQUAL "") + add_dependencies("${PROJECT_NAME}" "${EXT_DEPS}") +endif() +if(NOT "${EXT_DEPS_STATIC}" STREQUAL "") + add_dependencies("${PROJECT_NAME}_static" "${EXT_DEPS_STATIC}") +endif() + # set the C standard set_target_properties("${PROJECT_NAME}" PROPERTIES C_STANDARD 11) set_target_properties("${PROJECT_NAME}" PROPERTIES C_STANDARD_REQUIRED ON) @@ -303,5 +312,5 @@ function(copy_dep_output DEP_TARGET) endfunction() if(LIBARP_FEATURE_DEFLATE AND NOT USE_SYSTEM_ZLIB) - copy_dep_output("${ZLIB_LIBRARY}") + copy_dep_output("${ZLIB_TARGET}") endif()