File: thirdParties.cmake

package info (click to toggle)
libmatio 1.5.30-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 34,656 kB
  • sloc: sh: 126,066; ansic: 22,630; makefile: 647; python: 215
file content (128 lines) | stat: -rw-r--r-- 4,462 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
if(MATIO_USE_CONAN AND (MATIO_WITH_HDF5 OR MATIO_WITH_ZLIB))
    conan_add_remote(NAME conan-center URL https://center.conan.io VERIFY_SSL False)
endif()

if(MATIO_USE_CONAN)
    message(DEPRECATION
        "MATIO_USE_CONAN for Conan 1.X is deprecated. "
        "Please update your build configuration to Conan 2.X to avoid using this option."
    )
endif()

if(MATIO_WITH_HDF5)
    if(NOT DEFINED HDF5_USE_STATIC_LIBRARIES)
        if(MATIO_SHARED)
            set(HDF5_USE_STATIC_LIBRARIES FALSE)
        else()
            set(HDF5_USE_STATIC_LIBRARIES TRUE)
        endif()
    endif()

    if(MATIO_USE_CONAN)
        set(MATIO_CONAN_REQUIRES "hdf5/[>=1.8 <1.15]" "zlib/[>=1.2.3]")
        if(MATIO_ENABLE_CPPCHECK)
            list(APPEND MATIO_CONAN_REQUIRES "cppcheck/[>=2.16.0]")
        endif()
        if(HDF5_USE_STATIC_LIBRARIES)
            conan_cmake_run(
                REQUIRES ${MATIO_CONAN_REQUIRES}
                BASIC_SETUP CMAKE_TARGETS
                OPTIONS hdf5:shared=False zlib:shared=False
                BUILD missing
            )
        else()
            conan_cmake_run(
                REQUIRES ${MATIO_CONAN_REQUIRES}
                BASIC_SETUP CMAKE_TARGETS
                OPTIONS hdf5:shared=True zlib:shared=True
                BUILD missing
            )
        endif()
        set(HDF5_FOUND TRUE)
    else()
        find_package(HDF5)
        if(HDF5_FOUND)
            set(HDF_MIN_VER 1.8)
            if(HDF5_VERSION VERSION_LESS ${HDF_MIN_VER})
                message(FATAL_ERROR
                    "Could NOT find HDF5: Found unsuitable version ${HDF5_VERSION}, "
                    "but required is at least ${HDF_MIN_VER} (found ${HDF5_LIBRARIES})."
                )
            endif()
        endif()
    endif()
endif()

if(HDF5_FOUND)
    set(HAVE_HDF5 1)
    add_library(MATIO::HDF5 INTERFACE IMPORTED)
    if(MATIO_USE_CONAN AND TARGET CONAN_PKG::hdf5)
        # target from Conan
        target_link_libraries(MATIO::HDF5 INTERFACE CONAN_PKG::hdf5)
    elseif(HDF5_USE_STATIC_LIBRARIES AND TARGET hdf5::hdf5-static)
        # static target from hdf5 1.10 or 1.12 config
        target_link_libraries(MATIO::HDF5 INTERFACE hdf5::hdf5-static)
    elseif(NOT HDF5_USE_STATIC_LIBRARIES AND TARGET hdf5::hdf5-shared)
        # shared target from hdf5 1.10 or 1.12 config
        target_link_libraries(MATIO::HDF5 INTERFACE hdf5::hdf5-shared)
    elseif(TARGET hdf5)
        # target from hdf5 1.8 config
        target_link_libraries(MATIO::HDF5 INTERFACE hdf5)
    elseif(TARGET HDF5::HDF5)
        # target defined in CMake FindHDF5 (since 3.19)
        target_link_libraries(MATIO::HDF5 INTERFACE HDF5::HDF5)
    else()
        # results from CMake FindHDF5
        set_target_properties(MATIO::HDF5 PROPERTIES
            INTERFACE_INCLUDE_DIRECTORIES "${HDF5_INCLUDE_DIRS}"
            INTERFACE_LINK_LIBRARIES "${HDF5_LIBRARIES}"
        )
    endif()
    if(NOT HDF5_USE_STATIC_LIBRARIES)
        set_target_properties(MATIO::HDF5 PROPERTIES
            INTERFACE_COMPILE_DEFINITIONS "H5_BUILT_AS_DYNAMIC_LIB"
        )
    endif()
endif()

if(NOT HAVE_HDF5 AND MATIO_MAT73)
    message(FATAL_ERROR "MAT73 requires HDF5")
endif()

# Create the zlib target
macro(MATIO_CREATE_ZLIB target)
    add_library(MATIO::ZLIB INTERFACE IMPORTED)
    set_target_properties(MATIO::ZLIB PROPERTIES INTERFACE_LINK_LIBRARIES ${target})
    set(ZLIB_FOUND TRUE)
endmacro()

if(MATIO_WITH_ZLIB)
    if(MATIO_USE_CONAN AND NOT MATIO_WITH_HDF5)
        conan_cmake_run(REQUIRES "zlib/[>=1.2.3]" BASIC_SETUP CMAKE_TARGETS OPTIONS BUILD missing)
    endif()

    if(MATIO_USE_CONAN AND TARGET CONAN_PKG::zlib)
        MATIO_CREATE_ZLIB(CONAN_PKG::zlib)
    elseif(HDF5_USE_STATIC_LIBRARIES AND TARGET zlib-static)
        MATIO_CREATE_ZLIB(zlib-static)
    elseif(HDF5_USE_STATIC_LIBRARIES AND TARGET hdf5::zlib-static)
        MATIO_CREATE_ZLIB(hdf5::zlib-static)
    elseif(NOT HDF5_USE_STATIC_LIBRARIES AND TARGET zlib-shared)
        MATIO_CREATE_ZLIB(zlib-shared)
    elseif(NOT HDF5_USE_STATIC_LIBRARIES AND TARGET hdf5::zlib-shared)
        MATIO_CREATE_ZLIB(hdf5::zlib-shared)
    elseif(TARGET zlib)
        MATIO_CREATE_ZLIB(zlib)
    elseif(TARGET ZLIB::ZLIB)
        MATIO_CREATE_ZLIB(ZLIB::ZLIB)
    else()
        find_package(ZLIB 1.2.3)
        if(ZLIB_FOUND)
            MATIO_CREATE_ZLIB(ZLIB::ZLIB)
        endif()
    endif()

    if(ZLIB_FOUND)
        set(HAVE_ZLIB 1)
    endif()
endif()