HPCW 3.0
Loading...
Searching...
No Matches
zlib.cmake
Go to the documentation of this file.
1# Copyright (c) 2019 - 2024 David Guibert
2# Copyright (c) 2024 Antoine Morvan
3# All rights reserved.
4#
5# SPDX-License-Identifier: Apache-2.0
6
7set_property(GLOBAL PROPERTY zlib_can_use_system TRUE)
8
9set(zlib_configure_args "" CACHE STRING "Custom configure arguments for zlib")
10set(zlib_build_args "" CACHE STRING "Custom Make arguments for zlib")
11
12if(zlib_enabled)
13 if(USE_SYSTEM_zlib)
14 message(STATUS "ZLIB: enabled (system installed)")
15 set(FIND_ZLIB_DEBUG ON)
16 find_package(ZLIB REQUIRED)
17
18 set_if_not_present(ENV{CPATH} "$ENV{CPATH}" "${ZLIB_INCLUDE_DIR}")
19
20 get_filename_component(ZLIB_DIR "${ZLIB_LIBRARIES}" PATH)
21 get_filename_component(ZLIB_DIR "${ZLIB_DIR}" PATH)
22 set_if_not_present(ENV{LIBRARY_PATH} "$ENV{LIBRARY_PATH}" "${ZLIB_DIR}/lib")
23 set_if_not_present(ENV{LD_LIBRARY_PATH} "$ENV{LD_LIBRARY_PATH}"
24 "${ZLIB_DIR}/lib")
25 else()
26 if(NOT TARGET zlib)
27 message(STATUS "ZLIB: enabled (internally built)")
28
29 ExternalProject_Data_Add(
30 zlib
31 ${zlib_revision}
32 CONFIGURE_COMMAND
33 env
34 CPATH=$ENV{CPATH} C_INCLUDE_PATH=$ENV{C_INCLUDE_PATH}
35 LD_LIBRARY_PATH=$ENV{LD_LIBRARY_PATH} LIBRARY_PATH=$ENV{LIBRARY_PATH}
36 CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER}
37 FC=${CMAKE_Fortran_COMPILER} CFLAGS=-fPIC
38 "CFLAGS=-fPIC $ENV{CFLAGS}" "FCFLAGS=-fPIC $ENV{FCFLAGS}"
39 "LDFLAGS=$ENV{LDFLAGS}" ./configure
40 --prefix=<INSTALL_DIR> ${zlib_configure_args}
41 BUILD_COMMAND env
42 CPATH=$ENV{CPATH} C_INCLUDE_PATH=$ENV{C_INCLUDE_PATH}
43 LD_LIBRARY_PATH=$ENV{LD_LIBRARY_PATH} LIBRARY_PATH=$ENV{LIBRARY_PATH}
44 ${CMAKE_MAKE_PROGRAM} -j${BUILD_PARALLEL_LEVEL} ${default_build_args} ${zlib_build_args})
45
46 ExternalProject_Get_Property(zlib INSTALL_DIR)
47 set(ZLIB_DIR ${INSTALL_DIR})
48
49 set(ZLIB_LIBRARIES ${ZLIB_DIR}/lib/libz.so)
50 set(ZLIB_INCLUDE_DIRS ${ZLIB_DIR}/include)
51 if(NOT TARGET ZLIB::ZLIB)
52 add_library(ZLIB::ZLIB UNKNOWN IMPORTED)
53 set_target_properties(
54 ZLIB::ZLIB PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
55 ${ZLIB_INCLUDE_DIRS})
56 if(ZLIB_VERSION)
57 set_target_properties(ZLIB::ZLIB PROPERTIES VERSION "${ZLIB_VERSION}")
58 endif()
59 # if(ZLIB_LIBRARY_RELEASE)
60 set_target_properties(
61 ZLIB::ZLIB PROPERTIES IMPORTED_LOCATION ${ZLIB_LIBRARIES}
62 LINK_LIBRARIES ${ZLIB_LIBRARIES})
63 # endif() if(ZLIB_LIBRARY_DEBUG) # libsz_d libszip_d
64 # set_target_properties(ZLIB::ZLIB PROPERTIES IMPORTED_LOCATION_DEBUG
65 # ${ZLIB_LIBRARY_DEBUG}) endif()
66 add_dependencies(ZLIB::ZLIB zlib)
67 endif()
68
69 set_if_not_present(ENV{CPATH} "$ENV{CPATH}" "${ZLIB_DIR}/include")
70 set_if_not_present(ENV{LIBRARY_PATH} "$ENV{LIBRARY_PATH}"
71 "${ZLIB_DIR}/lib")
72 set_if_not_present(ENV{LD_LIBRARY_PATH} "$ENV{LD_LIBRARY_PATH}"
73 "${ZLIB_DIR}/lib")
74
75 endif()
76 endif()
77endif()