Fossil SCM

fossil-scm / compat / zlib / contrib / puff / CMakeLists.txt
Blame History Raw 155 lines
1
cmake_minimum_required(VERSION 3.12...3.31)
2
3
project(
4
puff
5
VERSION 2.3.0
6
LANGUAGES C
7
DESCRIPTION "A library for decompressing deflate with very little footprint"
8
HOMEPAGE_URL "https://www.zlib.net")
9
10
option(ZLIB_PUFF_BUILD_SHARED "Enable building blast shared library" ON)
11
option(ZLIB_PUFF_BUILD_STATIC "Enable building blast static library" ON)
12
option(ZLIB_PUFF_BUILD_TESTING "Enable building tests for blast" ON)
13
option(ZLIB_PUFF_INSTALL "Enable installation of puff" ON)
14
15
include(GNUInstallDirs)
16
include(CMakePackageConfigHelpers)
17
18
if(NOT DEFINED ZLIB_BUILD_PUFF)
19
if(ZLIB_PUFF_BUILD_SHARED)
20
list(APPEND REQUIRED_COMPONENTS "shared")
21
endif(ZLIB_PUFF_BUILD_SHARED)
22
23
if(ZLIB_PUFF_BUILD_STATIC)
24
list(APPEND REQUIRED_COMPONENTS "static")
25
endif(ZLIB_PUFF_BUILD_STATIC)
26
27
find_package(ZLIB REQUIRED COMPONENTS ${REQUIRED_COMPONENTS} CONFIG)
28
endif(NOT DEFINED ZLIB_BUILD_PUFF)
29
30
if(WIN32 OR CYGWIN)
31
set(zlibpuff_static_suffix "s")
32
set(CMAKE_DEBUG_POSTFIX "d")
33
endif(WIN32 OR CYGWIN)
34
35
if(ZLIB_PUFF_BUILD_TESTING)
36
add_executable(zlib_puff_bin-writer bin-writer.c)
37
38
if(${CMAKE_C_COMPILER_ID} STREQUAL "GNU" OR
39
${CMAKE_C_COMPILER_ID} STREQUAL "Clang")
40
set(CFLAGS_OLD ${CMAKE_C_FLAGS})
41
set(CMAKE_C_FLAGS
42
""
43
CACHE STRING "" FORCE)
44
45
if(${CMAKE_C_COMPILER_ID} STREQUAL "GNU")
46
find_program(GCOV_EXECUTABLE gcov)
47
endif(${CMAKE_C_COMPILER_ID} STREQUAL "GNU")
48
49
if(${CMAKE_C_COMPILER_ID} STREQUAL "Clang")
50
set(llvm_names llvm_cov)
51
list(APPEND llvm_names llvm-cov)
52
53
foreach(ver RANGE 11 99)
54
list(APPEND llvm_names llvm-cov-${ver})
55
endforeach(ver RANGE 11 99)
56
57
find_program(GCOV_EXECUTABLE NAMES ${llvm_names})
58
set(llvm_option "gcov")
59
endif(${CMAKE_C_COMPILER_ID} STREQUAL "Clang")
60
endif(${CMAKE_C_COMPILER_ID} STREQUAL "GNU" OR
61
${CMAKE_C_COMPILER_ID} STREQUAL "Clang")
62
63
add_subdirectory(test)
64
endif(ZLIB_PUFF_BUILD_TESTING)
65
66
if(ZLIB_PUFF_BUILD_SHARED)
67
add_library(zlib_puff_puff SHARED
68
puff.c
69
puff.h)
70
71
add_library(PUFF::PUFF ALIAS zlib_puff_puff)
72
73
if(NOT CYGWIN)
74
set_target_properties(zlib_puff_puff
75
PROPERTIES
76
SOVERSION ${puff_VERSION_MAJOR}
77
VERSION ${puff_VERSION})
78
endif(NOT CYGWIN)
79
80
set_target_properties(
81
zlib_puff_puff
82
PROPERTIES
83
EXPORT_NAME PUFF
84
OUTPUT_NAME puff)
85
endif(ZLIB_PUFF_BUILD_SHARED)
86
87
if(ZLIB_PUFF_BUILD_STATIC)
88
add_library(zlib_puff_puffStatic STATIC
89
puff.c
90
puff.h)
91
92
add_library(PUFF::PUFFSTATIC ALIAS zlib_puff_puffStatic)
93
94
set_target_properties(zlib_puff_puffStatic
95
PROPERTIES
96
EXPORT_NAME PUFFSTATIC
97
OUTPUT_NAME puff${zlib_puff_static_suffix})
98
endif(ZLIB_PUFF_BUILD_STATIC)
99
100
if(ZLIB_PUFF_INSTALL)
101
if(ZLIB_PUFF_BUILD_SHARED)
102
install(
103
TARGETS zlib_puff_puff
104
COMPONENT Runtime
105
EXPORT puffSharedExport
106
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
107
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}")
108
install(
109
EXPORT puffSharedExport
110
FILE puff-shared.cmake
111
NAMESPACE PUFF::
112
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/puff)
113
114
if(MSVC)
115
install(
116
FILES $<TARGET_PDB_FILE:zlib_puff_puff>
117
COMPONENT Development
118
DESTINATION ${CMAKE_INSTALL_BINDIR}
119
CONFIGURATIONS Debug OR RelWithDebInfo
120
OPTIONAL)
121
endif(MSVC)
122
endif(ZLIB_PUFF_BUILD_SHARED)
123
124
if(ZLIB_PUFF_BUILD_STATIC)
125
install(
126
TARGETS zlib_puff_puffStatic
127
COMPONENT Development
128
EXPORT puffStaticExport
129
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}")
130
install(
131
EXPORT puffStaticExport
132
FILE puff-static.cmake
133
NAMESPACE PUFF::
134
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/puff)
135
endif(ZLIB_PUFF_BUILD_STATIC)
136
137
configure_package_config_file(
138
${puff_SOURCE_DIR}/puffConfig.cmake.in
139
${puff_BINARY_DIR}/puffConfig.cmake
140
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/puff)
141
142
write_basic_package_version_file(
143
"${puff_BINARY_DIR}/puffConfigVersion.cmake"
144
VERSION "${puff_VERSION}"
145
COMPATIBILITY AnyNewerVersion)
146
147
install(FILES ${puff_BINARY_DIR}/puffConfig.cmake
148
${puff_BINARY_DIR}/puffConfigVersion.cmake
149
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/puff)
150
install(
151
FILES puff.h
152
COMPONENT Development
153
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
154
endif(ZLIB_PUFF_INSTALL)
155

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button