|
1
|
cmake_minimum_required(VERSION 3.12...3.31) |
|
2
|
|
|
3
|
project( |
|
4
|
iostreamV3 |
|
5
|
VERSION 1.0.0 |
|
6
|
LANGUAGES CXX |
|
7
|
DESCRIPTION "A library for using C++ IOStreams with zlib V3" |
|
8
|
HOMEPAGE_URL "https://www.zlib.net") |
|
9
|
|
|
10
|
option(ZLIB_IOSTREAM3_BUILD_SHARED "Enable building blast shared library" ON) |
|
11
|
option(ZLIB_IOSTREAM3_BUILD_STATIC "Enable building blast static library" ON) |
|
12
|
option(ZLIB_IOSTREAM3_BUILD_TESTING "Enable building tests for blast" ON) |
|
13
|
option(ZLIB_IOSTREAM3_INSTALL "Enable installation of iostream" ON) |
|
14
|
|
|
15
|
include(GNUInstallDirs) |
|
16
|
include(CMakePackageConfigHelpers) |
|
17
|
|
|
18
|
if(NOT DEFINED ZLIB_BUILD_IOSTREAM3) |
|
19
|
if(ZLIB_IOSTREAM3_BUILD_SHARED) |
|
20
|
list(APPEND REQUIRED_COMPONENTS "shared") |
|
21
|
endif(ZLIB_IOSTREAM3_BUILD_SHARED) |
|
22
|
|
|
23
|
if(ZLIB_IOSTREAM3_BUILD_STATIC) |
|
24
|
list(APPEND REQUIRED_COMPONENTS "static") |
|
25
|
endif(ZLIB_IOSTREAM3_BUILD_STATIC) |
|
26
|
|
|
27
|
find_package(ZLIB REQUIRED COMPONENTS ${REQUIRED_COMPONENTS} CONFIG) |
|
28
|
endif(NOT DEFINED ZLIB_BUILD_IOSTREAM3) |
|
29
|
|
|
30
|
if(WIN32 OR CYGWIN) |
|
31
|
set(zlibIOStream3_static_suffix "s") |
|
32
|
set(CMAKE_DEBUG_POSTFIX "d") |
|
33
|
endif(WIN32 OR CYGWIN) |
|
34
|
|
|
35
|
|
|
36
|
function(iostreamv3_findTestEnv testName) |
|
37
|
set(testEnv "PATH=") |
|
38
|
|
|
39
|
if(MSVC OR MINGW) |
|
40
|
set(separator "\\\;") |
|
41
|
else() |
|
42
|
set(separator ":") |
|
43
|
endif() |
|
44
|
|
|
45
|
string(APPEND testEnv "$<TARGET_FILE_DIR:zlib_iostream3_iostreamv3>${separator}") |
|
46
|
string(APPEND testEnv "$<TARGET_FILE_DIR:ZLIB::ZLIB>${separator}") |
|
47
|
string(APPEND testEnv "$ENV{PATH}") |
|
48
|
|
|
49
|
set_tests_properties(${testName} PROPERTIES ENVIRONMENT "${testEnv}") |
|
50
|
endfunction(iostreamv3_findTestEnv testName) |
|
51
|
|
|
52
|
if(ZLIB_IOSTREAM3_BUILD_SHARED) |
|
53
|
add_library(zlib_iostream3_iostreamv3 SHARED |
|
54
|
zfstream.cc |
|
55
|
zfstream.h) |
|
56
|
|
|
57
|
add_library(IOSTREAMV3::IOSTREAMV3 ALIAS zlib_iostream3_iostreamv3) |
|
58
|
|
|
59
|
if(NOT CYGWIN) |
|
60
|
set_target_properties(zlib_iostream3_iostreamv3 |
|
61
|
PROPERTIES |
|
62
|
SOVERSION ${iostreamV3_VERSION_MAJOR} |
|
63
|
VERSION ${iostreamV3_VERSION}) |
|
64
|
endif(NOT CYGWIN) |
|
65
|
|
|
66
|
set_target_properties(zlib_iostream3_iostreamv3 |
|
67
|
PROPERTIES |
|
68
|
EXPORT_NAME IOSTREAMV3 |
|
69
|
OUTPUT_NAME iostream3) |
|
70
|
|
|
71
|
target_link_libraries(zlib_iostream3_iostreamv3 |
|
72
|
PUBLIC ZLIB::ZLIB) |
|
73
|
|
|
74
|
if(ZLIB_IOSTREAM3_BUILD_TESTING) |
|
75
|
enable_testing() |
|
76
|
|
|
77
|
add_executable(zlib_iostream3_test test.cc zfstream.h) |
|
78
|
|
|
79
|
target_link_libraries(zlib_iostream3_test |
|
80
|
PRIVATE zlib_iostream3_iostreamv3) |
|
81
|
|
|
82
|
add_test(NAME zlib_iostream3_test COMMAND zlib_iostream3_test) |
|
83
|
|
|
84
|
set_tests_properties(zlib_iostream3_test |
|
85
|
PROPERTIES |
|
86
|
FIXTURES_REQUIRED zlib_iostream3_cleanup) |
|
87
|
|
|
88
|
if(MSVC |
|
89
|
OR MSYS |
|
90
|
OR MINGW |
|
91
|
OR CYGWIN) |
|
92
|
iostreamv3_findtestenv(zlib_iostream3_test) |
|
93
|
endif( |
|
94
|
MSVC |
|
95
|
OR MSYS |
|
96
|
OR MINGW |
|
97
|
OR CYGWIN) |
|
98
|
endif(ZLIB_IOSTREAM3_BUILD_TESTING) |
|
99
|
endif(ZLIB_IOSTREAM3_BUILD_SHARED) |
|
100
|
|
|
101
|
if(ZLIB_IOSTREAM3_BUILD_STATIC) |
|
102
|
add_library(zlib_iostream3_iostreamv3Static STATIC |
|
103
|
zfstream.cc |
|
104
|
zfstream.h) |
|
105
|
|
|
106
|
add_library(IOSTREAMV3::IOSTREAMV3STATIC |
|
107
|
ALIAS zlib_iostream3_iostreamv3Static) |
|
108
|
|
|
109
|
target_link_libraries(zlib_iostream3_iostreamv3Static |
|
110
|
PUBLIC ZLIB::ZLIBSTATIC) |
|
111
|
|
|
112
|
set_target_properties(zlib_iostream3_iostreamv3Static |
|
113
|
PROPERTIES |
|
114
|
EXPORT_NAME IOSTREAMV3STATIC |
|
115
|
OUTPUT_NAME iostream3${zlib_IOStream3_static_suffix}) |
|
116
|
|
|
117
|
if(ZLIB_IOSTREAM3_BUILD_TESTING) |
|
118
|
enable_testing() |
|
119
|
|
|
120
|
add_executable(zlib_iostream3_testStatic test.cc zfstream.h) |
|
121
|
|
|
122
|
target_link_libraries(zlib_iostream3_testStatic |
|
123
|
PRIVATE zlib_iostream3_iostreamv3Static) |
|
124
|
|
|
125
|
add_test(NAME zlib_iostream3_testStatic |
|
126
|
COMMAND zlib_iostream3_testStatic) |
|
127
|
|
|
128
|
set_tests_properties(zlib_iostream3_testStatic |
|
129
|
PROPERTIES |
|
130
|
FIXTURES_REQUIRED zlib_iostream3_cleanup) |
|
131
|
endif(ZLIB_IOSTREAM3_BUILD_TESTING) |
|
132
|
endif(ZLIB_IOSTREAM3_BUILD_STATIC) |
|
133
|
|
|
134
|
if(ZLIB_IOSTREAM3_BUILD_TESTING) |
|
135
|
add_test(NAME zlib_iostream3_cleanup COMMAND ${CMAKE_COMMAND} -E rm |
|
136
|
${CMAKE_CURRENT_BINARY_DIR}/test1.txt.gz |
|
137
|
${CMAKE_CURRENT_BINARY_DIR}/test2.txt.gz) |
|
138
|
|
|
139
|
set_tests_properties(zlib_iostream3_cleanup |
|
140
|
PROPERTIES |
|
141
|
FIXTURES_CLEANUP zlib_iostream3_cleanup) |
|
142
|
|
|
143
|
add_subdirectory(test) |
|
144
|
endif(ZLIB_IOSTREAM3_BUILD_TESTING) |
|
145
|
|
|
146
|
if(ZLIB_IOSTREAM3_INSTALL) |
|
147
|
if(ZLIB_IOSTREAM3_BUILD_SHARED) |
|
148
|
install( |
|
149
|
TARGETS zlib_iostream3_iostreamv3 |
|
150
|
COMPONENT Runtime |
|
151
|
EXPORT zlibiostream3SharedExport |
|
152
|
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" |
|
153
|
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") |
|
154
|
install( |
|
155
|
EXPORT zlibiostream3SharedExport |
|
156
|
FILE iostreamv3-shared.cmake |
|
157
|
NAMESPACE IOSTREAMV3:: |
|
158
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/iostreamv3) |
|
159
|
|
|
160
|
if(MSVC) |
|
161
|
install( |
|
162
|
FILES $<TARGET_PDB_FILE:zlib_iostream3_iostreamv3> |
|
163
|
COMPONENT Development |
|
164
|
DESTINATION ${CMAKE_INSTALL_BINDIR} |
|
165
|
CONFIGURATIONS Debug OR RelWithDebInfo |
|
166
|
OPTIONAL) |
|
167
|
endif(MSVC) |
|
168
|
endif(ZLIB_IOSTREAM3_BUILD_SHARED) |
|
169
|
|
|
170
|
if(ZLIB_IOSTREAM3_BUILD_STATIC) |
|
171
|
install( |
|
172
|
TARGETS zlib_iostream3_iostreamv3Static |
|
173
|
COMPONENT Development |
|
174
|
EXPORT iostream3StaticExport |
|
175
|
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") |
|
176
|
install( |
|
177
|
EXPORT iostream3StaticExport |
|
178
|
FILE iostreamv3-static.cmake |
|
179
|
NAMESPACE IOSTREAMV3:: |
|
180
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/iostreamv3) |
|
181
|
endif(ZLIB_IOSTREAM3_BUILD_STATIC) |
|
182
|
|
|
183
|
configure_package_config_file( |
|
184
|
${iostreamV3_SOURCE_DIR}/iostream3Config.cmake.in |
|
185
|
${iostreamV3_BINARY_DIR}/iostreamv3Config.cmake |
|
186
|
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/iostreamv3) |
|
187
|
|
|
188
|
write_basic_package_version_file( |
|
189
|
"${iostreamV3_BINARY_DIR}/iostreamv3ConfigVersion.cmake" |
|
190
|
VERSION "${iostream3_VERSION}" |
|
191
|
COMPATIBILITY AnyNewerVersion) |
|
192
|
|
|
193
|
install(FILES ${iostreamV3_BINARY_DIR}/iostreamv3Config.cmake |
|
194
|
${iostreamV3_BINARY_DIR}/iostreamv3ConfigVersion.cmake |
|
195
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/iostreamv3) |
|
196
|
install( |
|
197
|
FILES zfstream.h |
|
198
|
COMPONENT Development |
|
199
|
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") |
|
200
|
endif(ZLIB_IOSTREAM3_INSTALL) |
|
201
|
|