diff --git a/cmake/externals/zlib/CMakeLists.txt b/cmake/externals/zlib/CMakeLists.txt index 69dbca714d..0d279cc469 100644 --- a/cmake/externals/zlib/CMakeLists.txt +++ b/cmake/externals/zlib/CMakeLists.txt @@ -1,28 +1,31 @@ +set(EXTERNAL_NAME zlib) +string(TOUPPER ${EXTERNAL_NAME} EXTERNAL_NAME_UPPER) -if (WIN32) - set(EXTERNAL_NAME zlib) - string(TOUPPER ${EXTERNAL_NAME} EXTERNAL_NAME_UPPER) +include(ExternalProject) - include(ExternalProject) - ExternalProject_Add( - ${EXTERNAL_NAME} - URL http://zlib.net/zlib128.zip - URL_MD5 126f8676442ffbd97884eb4d6f32afb4 - INSTALL_COMMAND "" - LOG_DOWNLOAD 1 - ) +ExternalProject_Add( +${EXTERNAL_NAME} +URL http://zlib.net/zlib128.zip +CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= +BINARY_DIR ${EXTERNAL_PROJECT_PREFIX}/build +LOG_DOWNLOAD 1 +LOG_CONFIGURE 1 +LOG_BUILD 1 +) + +# Hide this external target (for ide users) +set_target_properties(${EXTERNAL_NAME} PROPERTIES FOLDER "hidden/externals") - # Hide this external target (for ide users) - set_target_properties(${EXTERNAL_NAME} PROPERTIES FOLDER "hidden/externals") +ExternalProject_Get_Property(${EXTERNAL_NAME} INSTALL_DIR) +set(${EXTERNAL_NAME_UPPER}_INCLUDE_DIR ${INSTALL_DIR}/include CACHE PATH "List of zlib include directories") +set(${EXTERNAL_NAME_UPPER}_INCLUDE_DIRS ${${EXTERNAL_NAME_UPPER}_INCLUDE_DIR} CACHE PATH "List of zlib include directories") +set(${EXTERNAL_NAME_UPPER}_DLL_PATH ${INSTALL_DIR}/bin CACHE FILEPATH "Location of ZLib DLL") +set(${EXTERNAL_NAME_UPPER}_LIBRARY_RELEASE ${INSTALL_DIR}/lib/zlib.lib CACHE FILEPATH "Location of zlib release library") +set(${EXTERNAL_NAME_UPPER}_LIBRARY_DEBUG ${INSTALL_DIR}/lib/zlibd.lib CACHE FILEPATH "Location of zlib debug library") - ExternalProject_Get_Property(${EXTERNAL_NAME} SOURCE_DIR) +include(SelectLibraryConfigurations) +select_library_configurations(${EXTERNAL_NAME_UPPER}) - set(${EXTERNAL_NAME_UPPER}_INCLUDE_DIRS ${SOURCE_DIR}/include CACHE PATH "List of zlib include directories") - - ExternalProject_Get_Property(${EXTERNAL_NAME} BINARY_DIR) - - set(${EXTERNAL_NAME_UPPER}_DLL_PATH ${BINARY_DIR}/Release CACHE FILEPATH "Location of GLEW DLL") - set(${EXTERNAL_NAME_UPPER}_LIBRARY_RELEASE ${BINARY_DIR}/Release/zlib.lib CACHE FILEPATH "Location of ZLib release library") - set(${EXTERNAL_NAME_UPPER}_LIBRARY_DEBUG "" CACHE FILEPATH "Location of ZLib debug library") - -endif () \ No newline at end of file +# Force selected libraries into the cache +set(${EXTERNAL_NAME_UPPER}_LIBRARY ${${EXTERNAL_NAME_UPPER}_LIBRARY} CACHE FILEPATH "Location of zlib libraries") +set(${EXTERNAL_NAME_UPPER}_LIBRARIES ${${EXTERNAL_NAME_UPPER}_LIBRARIES} CACHE FILEPATH "Location of zlib libraries") diff --git a/cmake/macros/TargetZlib.cmake b/cmake/macros/TargetZlib.cmake new file mode 100644 index 0000000000..11eb8c132e --- /dev/null +++ b/cmake/macros/TargetZlib.cmake @@ -0,0 +1,17 @@ +# +# Copyright 2015 High Fidelity, Inc. +# Created by Bradley Austin Davis on 2015/10/10 +# +# Distributed under the Apache License, Version 2.0. +# See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +# +macro(TARGET_ZLIB) + if (WIN32) + add_dependency_external_projects(zlib) + add_paths_to_fixup_libs(${ZLIB_DLL_PATH}) + else() + find_package(ZLIB REQUIRED) + endif() + target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${ZLIB_INCLUDE_DIRS}) + target_link_libraries(${TARGET_NAME} ${ZLIB_LIBRARIES}) +endmacro() diff --git a/libraries/shared/CMakeLists.txt b/libraries/shared/CMakeLists.txt index d9df5eba7f..2691c51128 100644 --- a/libraries/shared/CMakeLists.txt +++ b/libraries/shared/CMakeLists.txt @@ -3,14 +3,4 @@ set(TARGET_NAME shared) # TODO: there isn't really a good reason to have Script linked here - let's get what is requiring it out (RegisteredMetaTypes.cpp) setup_hifi_library(Gui Network Script Widgets) -find_package(ZLIB REQUIRED) -target_link_libraries(${TARGET_NAME} ${ZLIB_LIBRARIES}) -target_include_directories(${TARGET_NAME} PUBLIC ${ZLIB_INCLUDE_DIRS}) - -if (WIN32) - # Birarda will fix this when he finds it. - get_filename_component(ZLIB_LIB_DIR "${ZLIB_LIBRARIES}" DIRECTORY) - get_filename_component(ZLIB_DIR "${ZLIB_LIB_DIR}" DIRECTORY) - set(ZLIB_BIN_DIR "${ZLIB_DIR}/bin") - add_paths_to_fixup_libs(${ZLIB_BIN_DIR}) -endif () +target_zlib()