File: src.cmake

package info (click to toggle)
libmatio 1.5.29-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 34,648 kB
  • sloc: sh: 126,066; ansic: 22,606; makefile: 646; python: 215
file content (119 lines) | stat: -rw-r--r-- 4,371 bytes parent folder | download
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
configure_file(
    "${PROJECT_SOURCE_DIR}/cmake/matio_pubconf.cmake.in"
    "${PROJECT_BINARY_DIR}/src/matio_pubconf.h"
    ESCAPE_QUOTES @ONLY
)

configure_file(
    "${PROJECT_SOURCE_DIR}/cmake/matioConfig.cmake.in"
    "${PROJECT_BINARY_DIR}/src/matioConfig.h"
    ESCAPE_QUOTES @ONLY
)

set(MATIO_SOURCES
    ${PROJECT_SOURCE_DIR}/src/endian.c
    ${PROJECT_SOURCE_DIR}/src/mat.c
    ${PROJECT_SOURCE_DIR}/src/io.c
    ${PROJECT_SOURCE_DIR}/src/inflate.c
    ${PROJECT_SOURCE_DIR}/src/mat73.c
    ${PROJECT_SOURCE_DIR}/src/matvar_cell.c
    ${PROJECT_SOURCE_DIR}/src/matvar_struct.c
    ${PROJECT_SOURCE_DIR}/src/mat4.c
    ${PROJECT_SOURCE_DIR}/src/mat5.c
    ${PROJECT_SOURCE_DIR}/src/read_data.c
    ${PROJECT_SOURCE_DIR}/snprintf/snprintf.c
    ${PROJECT_SOURCE_DIR}/src/mat5.h
    ${PROJECT_SOURCE_DIR}/src/mat73.h
    ${PROJECT_SOURCE_DIR}/src/matio_private.h
    ${PROJECT_SOURCE_DIR}/src/mat4.h
    ${PROJECT_SOURCE_DIR}/src/matio.h
    ${PROJECT_SOURCE_DIR}/visual_studio/matio.rc
    ${PROJECT_SOURCE_DIR}/visual_studio/matio.def
    ${PROJECT_SOURCE_DIR}/src/read_data_impl.h
    ${PROJECT_SOURCE_DIR}/src/safe-math.h
    ${PROJECT_BINARY_DIR}/src/matio_pubconf.h
    ${PROJECT_BINARY_DIR}/src/matioConfig.h
)

if(STDINT_MSVC)
    set(MATIO_SOURCES ${MATIO_SOURCES} ${PROJECT_SOURCE_DIR}/visual_studio/stdint_msvc.h)
endif()

if(USE_GNU_LINK_FLAGS OR USE_LLVM_MACOS_LINK_FLAGS)
    file(COPY "${PROJECT_SOURCE_DIR}/src/matio.sym" DESTINATION "${PROJECT_BINARY_DIR}/src")
    if(USE_GNU_LINK_FLAGS)
        set(MATIO_LINKER_FLAGS " -Wl,--no-undefined -Wl,--retain-symbols-file,${PROJECT_BINARY_DIR}/src/matio.sym")
    else()
        file(READ "${PROJECT_BINARY_DIR}/src/matio.sym" SYM_CONTENTS)
        string(REPLACE "Mat_" "_Mat_" SYM_CONTENTS ${SYM_CONTENTS})
        file(WRITE "${PROJECT_BINARY_DIR}/src/matio.sym" ${SYM_CONTENTS})
        set(MATIO_LINKER_FLAGS " -Wl,-undefined,error -Wl,-exported_symbols_list,${PROJECT_BINARY_DIR}/src/matio.sym")
    endif()
    string(APPEND CMAKE_SHARED_LINKER_FLAGS ${MATIO_LINKER_FLAGS})
endif()

if(MATIO_SHARED)
    add_library(${PROJECT_NAME} SHARED ${MATIO_SOURCES})
else()
    add_library(${PROJECT_NAME} STATIC ${MATIO_SOURCES})
endif()
add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})

target_include_directories(${PROJECT_NAME}
    INTERFACE ${PROJECT_SOURCE_DIR}/src
    PUBLIC    ${PROJECT_BINARY_DIR}/src
)
if(STDINT_MSVC)
    target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_SOURCE_DIR}/visual_studio)
endif()

if(HAVE_LIBM)
    target_link_libraries(${PROJECT_NAME} PUBLIC m)
endif()

if(MSVC)
    add_definitions(-D_CRT_SECURE_NO_WARNINGS /wd4267)
    set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME lib${PROJECT_NAME})
endif()

if(MATIO_WITH_HDF5 AND HDF5_FOUND)
    target_link_libraries(${PROJECT_NAME} PUBLIC MATIO::HDF5)
endif()

if(MATIO_WITH_ZLIB AND ZLIB_FOUND)
    target_link_libraries(${PROJECT_NAME} PUBLIC MATIO::ZLIB)
endif()

if(REQUIRE_EXPLICIT_LIBC_LINK)
    target_link_libraries(${PROJECT_NAME} PUBLIC c)
endif()

set_target_properties(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ${MATIO_PIC})
# Convert matio_LIB_VERSIONINFO libtool version format into SOVERSION
# Convert from ":" separated into CMake list format using ";"
string(REPLACE ":" ";" matio_LIB_VERSIONINFO ${matio_LIB_VERSIONINFO})
list(GET matio_LIB_VERSIONINFO 0 matio_LIB_VERSION_CURRENT)
list(GET matio_LIB_VERSIONINFO 2 matio_LIB_VERSION_AGE)
math(EXPR matio_SOVERSION "${matio_LIB_VERSION_CURRENT} - ${matio_LIB_VERSION_AGE}")
set_target_properties(${PROJECT_NAME} PROPERTIES
    SOVERSION ${matio_SOVERSION}
    VERSION ${PROJECT_VERSION}
)

# specify the public headers
set(MATIO_PUBLIC_HEADERS
    ${PROJECT_SOURCE_DIR}/src/matio.h
    ${PROJECT_BINARY_DIR}/src/matio_pubconf.h
)
if(STDINT_MSVC)
    set(MATIO_PUBLIC_HEADERS ${MATIO_PUBLIC_HEADERS} ${PROJECT_SOURCE_DIR}/visual_studio/stdint_msvc.h)
endif()
set_target_properties(${PROJECT_NAME} PROPERTIES PUBLIC_HEADER "${MATIO_PUBLIC_HEADERS}")

# 'make install' to the correct locations (provided by GNUInstallDirs).
install(TARGETS ${PROJECT_NAME} EXPORT lib${PROJECT_NAME}
        PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
)