@@ -11,6 +11,23 @@ else()
1111 string (JSON zlib_tag GET ${json} zlib2 tag)
1212endif ()
1313
14+ set (ZLIB_INCLUDE_DIRS ${CMAKE_INSTALL_FULL_INCLUDEDIR} )
15+
16+ if (BUILD_SHARED_LIBS )
17+ if (WIN32 )
18+ set (ZLIB_LIBRARIES ${CMAKE_INSTALL_FULL_BINDIR} /${CMAKE_SHARED_LIBRARY_PREFIX} zlib1${CMAKE_SHARED_LIBRARY_SUFFIX} )
19+ else ()
20+ set (ZLIB_LIBRARIES ${CMAKE_INSTALL_FULL_LIBDIR} /${CMAKE_SHARED_LIBRARY_PREFIX} z${CMAKE_SHARED_LIBRARY_SUFFIX} )
21+ endif ()
22+ else ()
23+ if (MSVC OR (WIN32 AND zlib_legacy))
24+ set (ZLIB_LIBRARIES ${CMAKE_INSTALL_FULL_LIBDIR} /${CMAKE_STATIC_LIBRARY_PREFIX} zlibstatic${CMAKE_STATIC_LIBRARY_SUFFIX} )
25+ else ()
26+ set (ZLIB_LIBRARIES ${CMAKE_INSTALL_FULL_LIBDIR} /${CMAKE_STATIC_LIBRARY_PREFIX} z${CMAKE_STATIC_LIBRARY_SUFFIX} )
27+ endif ()
28+ endif ()
29+
30+
1431set (zlib_cmake_args
1532-DCMAKE_INSTALL_PREFIX:PATH =${CMAKE_INSTALL_PREFIX}
1633-DBUILD_SHARED_LIBS:BOOL =${BUILD_SHARED_LIBS}
@@ -23,20 +40,39 @@ set(zlib_cmake_args
2340# NetCDF 4.9/4.6 needs fPIC
2441
2542if (zlib_legacy)
26- ExternalProject_Add(ZLIB
43+ set (zlib_download
2744URL ${zlib_url}
2845URL_HASH SHA256=${zlib_sha256}
29- CMAKE_ARGS ${zlib_cmake_args}
30- CONFIGURE_HANDLED_BY_BUILD ON
31- INACTIVITY_TIMEOUT 60
3246)
3347else ()
34- ExternalProject_Add(ZLIB
48+ set (zlib_download
3549GIT_REPOSITORY ${zlib_url}
3650GIT_TAG ${zlib_tag}
3751GIT_SHALLOW true
52+ )
53+ endif ()
54+
55+ ExternalProject_Add(ZLIB
56+ ${zlib_download}
3857CMAKE_ARGS ${zlib_cmake_args}
58+ BUILD_BYPRODUCTS ${ZLIB_LIBRARIES}
3959CONFIGURE_HANDLED_BY_BUILD ON
4060INACTIVITY_TIMEOUT 60
61+ USES_TERMINAL_DOWNLOAD true
62+ USES_TERMINAL_UPDATE true
63+ USES_TERMINAL_PATCH true
64+ USES_TERMINAL_CONFIGURE true
65+ USES_TERMINAL_BUILD true
66+ USES_TERMINAL_INSTALL true
67+ USES_TERMINAL_TEST true
4168)
42- endif ()
69+
70+ # --- imported target
71+
72+ file (MAKE_DIRECTORY ${ZLIB_INCLUDE_DIRS} )
73+ # avoid race condition
74+
75+ add_library (ZLIB::ZLIB INTERFACE IMPORTED GLOBAL )
76+ add_dependencies (ZLIB::ZLIB ZLIB) # to avoid include directory race condition
77+ target_link_libraries (ZLIB::ZLIB INTERFACE ${ZLIB_LIBRARIES} )
78+ target_include_directories (ZLIB::ZLIB INTERFACE ${ZLIB_INCLUDE_DIRS} )
0 commit comments