~mmach/netext73/lz4

« back to all changes in this revision

Viewing changes to build/cmake/CMakeLists.txt

  • Committer: mmach
  • Date: 2022-11-09 18:52:10 UTC
  • Revision ID: netbit73@gmail.com-20221109185210-w358idlhh0phq688
1.9.4

Show diffs side-by-side

added added

removed removed

Lines of Context:
10
10
# LZ4's CMake support is maintained by Evan Nemerson; when filing
11
11
# bugs please mention @nemequ to make sure I see it.
12
12
 
 
13
cmake_minimum_required(VERSION 2.8.12)
 
14
 
13
15
set(LZ4_TOP_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../..")
14
16
 
15
 
option(LZ4_BUILD_CLI "Build lz4 program" ON)
16
 
option(LZ4_BUILD_LEGACY_LZ4C "Build lz4c progam with legacy argument support" ON)
17
 
 
18
17
# Parse version information
19
18
file(STRINGS "${LZ4_TOP_SOURCE_DIR}/lib/lz4.h" LZ4_VERSION_MAJOR REGEX "^#define LZ4_VERSION_MAJOR +([0-9]+) +.*$")
20
19
string(REGEX REPLACE "^#define LZ4_VERSION_MAJOR +([0-9]+) +.*$" "\\1" LZ4_VERSION_MAJOR "${LZ4_VERSION_MAJOR}")
34
33
    LANGUAGES C)
35
34
endif()
36
35
 
37
 
cmake_minimum_required (VERSION 2.8.6)
 
36
option(LZ4_BUILD_CLI "Build lz4 program" ON)
 
37
option(LZ4_BUILD_LEGACY_LZ4C "Build lz4c program with legacy argument support" ON)
38
38
 
39
39
# If LZ4 is being bundled in another project, we don't want to
40
40
# install anything.  However, we want to let people override this, so
103
103
set(LZ4_LIBRARIES_BUILT)
104
104
if(BUILD_SHARED_LIBS)
105
105
  add_library(lz4_shared SHARED ${LZ4_SOURCES})
 
106
  target_include_directories(lz4_shared
 
107
    PUBLIC $<BUILD_INTERFACE:${LZ4_LIB_SOURCE_DIR}>
 
108
    INTERFACE $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
106
109
  set_target_properties(lz4_shared PROPERTIES
107
110
    OUTPUT_NAME lz4
108
111
    SOVERSION "${LZ4_VERSION_MAJOR}"
114
117
  list(APPEND LZ4_LIBRARIES_BUILT lz4_shared)
115
118
endif()
116
119
if(BUILD_STATIC_LIBS)
 
120
  set(STATIC_LIB_NAME lz4)
 
121
  if (MSVC AND BUILD_SHARED_LIBS)
 
122
    set(STATIC_LIB_NAME lz4_static)
 
123
  endif()
117
124
  add_library(lz4_static STATIC ${LZ4_SOURCES})
 
125
  target_include_directories(lz4_static
 
126
    PUBLIC $<BUILD_INTERFACE:${LZ4_LIB_SOURCE_DIR}>
 
127
    INTERFACE $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
118
128
  set_target_properties(lz4_static PROPERTIES
119
 
    OUTPUT_NAME lz4
 
129
    OUTPUT_NAME ${STATIC_LIB_NAME}
120
130
    POSITION_INDEPENDENT_CODE ${LZ4_POSITION_INDEPENDENT_LIB})
121
131
  list(APPEND LZ4_LIBRARIES_BUILT lz4_static)
122
132
endif()
123
133
 
124
 
# link to shared whenever possible, to static otherwise
125
 
if(BUILD_SHARED_LIBS)
126
 
  set(LZ4_LINK_LIBRARY lz4_shared)
127
 
else()
 
134
if(BUILD_STATIC_LIBS)
128
135
  set(LZ4_LINK_LIBRARY lz4_static)
 
136
else()
 
137
  list(APPEND LZ4_CLI_SOURCES ${LZ4_SOURCES})
129
138
endif()
130
139
 
131
140
# lz4
133
142
  set(LZ4_PROGRAMS_BUILT lz4cli)
134
143
  add_executable(lz4cli ${LZ4_CLI_SOURCES})
135
144
  set_target_properties(lz4cli PROPERTIES OUTPUT_NAME lz4)
136
 
  target_link_libraries(lz4cli ${LZ4_LINK_LIBRARY})
 
145
  if (BUILD_STATIC_LIBS)
 
146
    target_link_libraries(lz4cli ${LZ4_LINK_LIBRARY})
 
147
  endif()
137
148
endif()
138
149
 
139
150
# lz4c
141
152
  list(APPEND LZ4_PROGRAMS_BUILT lz4c)
142
153
  add_executable(lz4c ${LZ4_CLI_SOURCES})
143
154
  set_target_properties(lz4c PROPERTIES COMPILE_DEFINITIONS "ENABLE_LZ4C_LEGACY_OPTIONS")
144
 
  target_link_libraries(lz4c ${LZ4_LINK_LIBRARY})
 
155
  if (BUILD_STATIC_LIBS)
 
156
    target_link_libraries(lz4c ${LZ4_LINK_LIBRARY})
 
157
  endif()
145
158
endif()
146
159
 
147
160
# Extra warning flags
182
195
    BUNDLE      DESTINATION "${CMAKE_INSTALL_BINDIR}"
183
196
    RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
184
197
  install(TARGETS ${LZ4_LIBRARIES_BUILT}
 
198
    EXPORT lz4Targets
185
199
    LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
186
200
    ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
187
201
    RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
195
209
  install(FILES "${CMAKE_CURRENT_BINARY_DIR}/liblz4.pc"
196
210
    DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
197
211
 
 
212
  include(CMakePackageConfigHelpers)
 
213
  write_basic_package_version_file(
 
214
    "${CMAKE_CURRENT_BINARY_DIR}/lz4ConfigVersion.cmake"
 
215
    VERSION ${LZ4_VERSION_STRING}
 
216
    COMPATIBILITY SameMajorVersion)
 
217
 
 
218
  set(LZ4_PKG_INSTALLDIR "${CMAKE_INSTALL_LIBDIR}/cmake/lz4")
 
219
  configure_package_config_file(
 
220
    "${CMAKE_CURRENT_LIST_DIR}/lz4Config.cmake.in"
 
221
    "${CMAKE_CURRENT_BINARY_DIR}/lz4Config.cmake"
 
222
    INSTALL_DESTINATION ${LZ4_PKG_INSTALLDIR})
 
223
  export(EXPORT lz4Targets
 
224
    FILE ${CMAKE_CURRENT_BINARY_DIR}/lz4Targets.cmake
 
225
    NAMESPACE LZ4::)
 
226
 
 
227
  install(EXPORT lz4Targets
 
228
    FILE lz4Targets.cmake
 
229
    NAMESPACE LZ4::
 
230
    DESTINATION ${LZ4_PKG_INSTALLDIR})
 
231
  install(FILES
 
232
      ${CMAKE_CURRENT_BINARY_DIR}/lz4Config.cmake
 
233
      ${CMAKE_CURRENT_BINARY_DIR}/lz4ConfigVersion.cmake
 
234
    DESTINATION ${LZ4_PKG_INSTALLDIR})
 
235
 
198
236
  # install lz4cat and unlz4 symlinks on *nix
199
237
  if(UNIX AND LZ4_BUILD_CLI)
200
238
    install(CODE "