xref: /aosp_15_r20/external/lz4/build/cmake/CMakeLists.txt (revision 27162e4e17433d5aa7cb38e7b6a433a09405fc7f)
1*27162e4eSAndroid Build Coastguard Worker# CMake support for LZ4
2*27162e4eSAndroid Build Coastguard Worker#
3*27162e4eSAndroid Build Coastguard Worker# To the extent possible under law, the author(s) have dedicated all
4*27162e4eSAndroid Build Coastguard Worker# copyright and related and neighboring rights to this software to
5*27162e4eSAndroid Build Coastguard Worker# the public domain worldwide. This software is distributed without
6*27162e4eSAndroid Build Coastguard Worker# any warranty.
7*27162e4eSAndroid Build Coastguard Worker#
8*27162e4eSAndroid Build Coastguard Worker# For details, see <http://creativecommons.org/publicdomain/zero/1.0/>.
9*27162e4eSAndroid Build Coastguard Worker
10*27162e4eSAndroid Build Coastguard Worker
11*27162e4eSAndroid Build Coastguard Workercmake_minimum_required(VERSION 3.5)
12*27162e4eSAndroid Build Coastguard Worker
13*27162e4eSAndroid Build Coastguard Workerset(LZ4_TOP_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../..")
14*27162e4eSAndroid Build Coastguard Worker
15*27162e4eSAndroid Build Coastguard Worker# Parse version information
16*27162e4eSAndroid Build Coastguard Workerfunction(parse_lz4_version VERSION_TYPE)
17*27162e4eSAndroid Build Coastguard Worker    file(STRINGS "${LZ4_TOP_SOURCE_DIR}/lib/lz4.h" version_line REGEX "^#define LZ4_VERSION_${VERSION_TYPE} +([0-9]+).*$")
18*27162e4eSAndroid Build Coastguard Worker    string(REGEX REPLACE "^#define LZ4_VERSION_${VERSION_TYPE} +([0-9]+).*$" "\\1" version_number "${version_line}")
19*27162e4eSAndroid Build Coastguard Worker    set(LZ4_VERSION_${VERSION_TYPE} ${version_number} PARENT_SCOPE)
20*27162e4eSAndroid Build Coastguard Workerendfunction()
21*27162e4eSAndroid Build Coastguard Worker
22*27162e4eSAndroid Build Coastguard Workerforeach(version_type IN ITEMS MAJOR MINOR RELEASE)
23*27162e4eSAndroid Build Coastguard Worker    parse_lz4_version(${version_type})
24*27162e4eSAndroid Build Coastguard Workerendforeach()
25*27162e4eSAndroid Build Coastguard Worker
26*27162e4eSAndroid Build Coastguard Workerset(LZ4_VERSION_STRING "${LZ4_VERSION_MAJOR}.${LZ4_VERSION_MINOR}.${LZ4_VERSION_RELEASE}")
27*27162e4eSAndroid Build Coastguard Workermark_as_advanced(LZ4_VERSION_STRING LZ4_VERSION_MAJOR LZ4_VERSION_MINOR LZ4_VERSION_RELEASE)
28*27162e4eSAndroid Build Coastguard Worker
29*27162e4eSAndroid Build Coastguard Workermessage(STATUS "Creating build script for LZ4 version: ${LZ4_VERSION_STRING}")
30*27162e4eSAndroid Build Coastguard Worker
31*27162e4eSAndroid Build Coastguard Workerproject(LZ4 VERSION ${LZ4_VERSION_STRING} LANGUAGES C)
32*27162e4eSAndroid Build Coastguard Worker
33*27162e4eSAndroid Build Coastguard Worker
34*27162e4eSAndroid Build Coastguard Workeroption(LZ4_BUILD_CLI "Build lz4 program" ON)
35*27162e4eSAndroid Build Coastguard Worker
36*27162e4eSAndroid Build Coastguard Worker
37*27162e4eSAndroid Build Coastguard Worker# Determine if LZ4 is being built as part of another project.
38*27162e4eSAndroid Build Coastguard Worker# If LZ4 is bundled in another project, we don't want to install anything.
39*27162e4eSAndroid Build Coastguard Worker# Default behavior can be overridden by setting the LZ4_BUNDLED_MODE variable.
40*27162e4eSAndroid Build Coastguard Workerif(NOT DEFINED LZ4_BUNDLED_MODE)
41*27162e4eSAndroid Build Coastguard Worker  get_directory_property(LZ4_IS_SUBPROJECT PARENT_DIRECTORY)
42*27162e4eSAndroid Build Coastguard Worker  if(LZ4_IS_SUBPROJECT)
43*27162e4eSAndroid Build Coastguard Worker    set(LZ4_BUNDLED_MODE ON)
44*27162e4eSAndroid Build Coastguard Worker  else()
45*27162e4eSAndroid Build Coastguard Worker    set(LZ4_BUNDLED_MODE OFF)
46*27162e4eSAndroid Build Coastguard Worker  endif()
47*27162e4eSAndroid Build Coastguard Workerendif()
48*27162e4eSAndroid Build Coastguard Workermark_as_advanced(LZ4_BUNDLED_MODE)
49*27162e4eSAndroid Build Coastguard Worker
50*27162e4eSAndroid Build Coastguard Worker# CPack
51*27162e4eSAndroid Build Coastguard Workerif(NOT LZ4_BUNDLED_MODE AND NOT CPack_CMake_INCLUDED)
52*27162e4eSAndroid Build Coastguard Worker  set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "LZ4 compression library")
53*27162e4eSAndroid Build Coastguard Worker  set(CPACK_PACKAGE_DESCRIPTION_FILE "${LZ4_TOP_SOURCE_DIR}/README.md")
54*27162e4eSAndroid Build Coastguard Worker  set(CPACK_RESOURCE_FILE_LICENSE "${LZ4_TOP_SOURCE_DIR}/LICENSE")
55*27162e4eSAndroid Build Coastguard Worker  set(CPACK_PACKAGE_VERSION_MAJOR ${LZ4_VERSION_MAJOR})
56*27162e4eSAndroid Build Coastguard Worker  set(CPACK_PACKAGE_VERSION_MINOR ${LZ4_VERSION_MINOR})
57*27162e4eSAndroid Build Coastguard Worker  set(CPACK_PACKAGE_VERSION_PATCH ${LZ4_VERSION_RELEASE})
58*27162e4eSAndroid Build Coastguard Worker  include(CPack)
59*27162e4eSAndroid Build Coastguard Workerendif(NOT LZ4_BUNDLED_MODE AND NOT CPack_CMake_INCLUDED)
60*27162e4eSAndroid Build Coastguard Worker
61*27162e4eSAndroid Build Coastguard Worker# Allow people to choose whether to build shared or static libraries
62*27162e4eSAndroid Build Coastguard Worker# via the BUILD_SHARED_LIBS option unless we are in bundled mode, in
63*27162e4eSAndroid Build Coastguard Worker# which case we always use static libraries.
64*27162e4eSAndroid Build Coastguard Workerinclude(CMakeDependentOption)
65*27162e4eSAndroid Build Coastguard WorkerCMAKE_DEPENDENT_OPTION(BUILD_SHARED_LIBS "Build shared libraries" ON "NOT LZ4_BUNDLED_MODE" OFF)
66*27162e4eSAndroid Build Coastguard WorkerCMAKE_DEPENDENT_OPTION(BUILD_STATIC_LIBS "Build static libraries" OFF "BUILD_SHARED_LIBS" ON)
67*27162e4eSAndroid Build Coastguard Worker
68*27162e4eSAndroid Build Coastguard Workerif(NOT BUILD_SHARED_LIBS AND NOT BUILD_STATIC_LIBS)
69*27162e4eSAndroid Build Coastguard Worker  message(FATAL_ERROR "Both BUILD_SHARED_LIBS and BUILD_STATIC_LIBS have been disabled")
70*27162e4eSAndroid Build Coastguard Workerendif()
71*27162e4eSAndroid Build Coastguard Worker
72*27162e4eSAndroid Build Coastguard Workerset(LZ4_LIB_SOURCE_DIR "${LZ4_TOP_SOURCE_DIR}/lib")
73*27162e4eSAndroid Build Coastguard Workerset(LZ4_PROG_SOURCE_DIR "${LZ4_TOP_SOURCE_DIR}/programs")
74*27162e4eSAndroid Build Coastguard Worker
75*27162e4eSAndroid Build Coastguard Workerinclude_directories("${LZ4_LIB_SOURCE_DIR}")
76*27162e4eSAndroid Build Coastguard Worker
77*27162e4eSAndroid Build Coastguard Worker# CLI sources
78*27162e4eSAndroid Build Coastguard Workerfile(GLOB LZ4_SOURCES
79*27162e4eSAndroid Build Coastguard Worker     "${LZ4_LIB_SOURCE_DIR}/*.c")
80*27162e4eSAndroid Build Coastguard Workerfile(GLOB LZ4_CLI_SOURCES
81*27162e4eSAndroid Build Coastguard Worker     "${LZ4_PROG_SOURCE_DIR}/*.c")
82*27162e4eSAndroid Build Coastguard Workerlist(APPEND LZ4_CLI_SOURCES ${LZ4_SOURCES}) # LZ4_CLI always use liblz4 sources directly.
83*27162e4eSAndroid Build Coastguard Worker
84*27162e4eSAndroid Build Coastguard Worker# Whether to use position independent code for the static library.  If
85*27162e4eSAndroid Build Coastguard Worker# we're building a shared library this is ignored and PIC is always
86*27162e4eSAndroid Build Coastguard Worker# used.
87*27162e4eSAndroid Build Coastguard Workeroption(LZ4_POSITION_INDEPENDENT_LIB "Use position independent code for static library (if applicable)" ON)
88*27162e4eSAndroid Build Coastguard Worker
89*27162e4eSAndroid Build Coastguard Worker# liblz4
90*27162e4eSAndroid Build Coastguard Workerinclude(GNUInstallDirs)
91*27162e4eSAndroid Build Coastguard Workerset(LZ4_LIBRARIES_BUILT)
92*27162e4eSAndroid Build Coastguard Workerif(BUILD_SHARED_LIBS)
93*27162e4eSAndroid Build Coastguard Worker  add_library(lz4_shared SHARED ${LZ4_SOURCES})
94*27162e4eSAndroid Build Coastguard Worker  target_include_directories(lz4_shared
95*27162e4eSAndroid Build Coastguard Worker    PUBLIC $<BUILD_INTERFACE:${LZ4_LIB_SOURCE_DIR}>
96*27162e4eSAndroid Build Coastguard Worker    INTERFACE $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
97*27162e4eSAndroid Build Coastguard Worker  set_target_properties(lz4_shared PROPERTIES
98*27162e4eSAndroid Build Coastguard Worker    OUTPUT_NAME lz4
99*27162e4eSAndroid Build Coastguard Worker    SOVERSION "${LZ4_VERSION_MAJOR}"
100*27162e4eSAndroid Build Coastguard Worker    VERSION "${LZ4_VERSION_STRING}")
101*27162e4eSAndroid Build Coastguard Worker  if(MSVC)
102*27162e4eSAndroid Build Coastguard Worker    target_compile_definitions(lz4_shared PRIVATE
103*27162e4eSAndroid Build Coastguard Worker      LZ4_DLL_EXPORT=1)
104*27162e4eSAndroid Build Coastguard Worker  endif()
105*27162e4eSAndroid Build Coastguard Worker  list(APPEND LZ4_LIBRARIES_BUILT lz4_shared)
106*27162e4eSAndroid Build Coastguard Workerendif()
107*27162e4eSAndroid Build Coastguard Workerif(BUILD_STATIC_LIBS)
108*27162e4eSAndroid Build Coastguard Worker  set(STATIC_LIB_NAME lz4)
109*27162e4eSAndroid Build Coastguard Worker  if (MSVC AND BUILD_SHARED_LIBS)
110*27162e4eSAndroid Build Coastguard Worker    set(STATIC_LIB_NAME lz4_static)
111*27162e4eSAndroid Build Coastguard Worker  endif()
112*27162e4eSAndroid Build Coastguard Worker  add_library(lz4_static STATIC ${LZ4_SOURCES})
113*27162e4eSAndroid Build Coastguard Worker  target_include_directories(lz4_static
114*27162e4eSAndroid Build Coastguard Worker    PUBLIC $<BUILD_INTERFACE:${LZ4_LIB_SOURCE_DIR}>
115*27162e4eSAndroid Build Coastguard Worker    INTERFACE $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
116*27162e4eSAndroid Build Coastguard Worker  set_target_properties(lz4_static PROPERTIES
117*27162e4eSAndroid Build Coastguard Worker    OUTPUT_NAME ${STATIC_LIB_NAME}
118*27162e4eSAndroid Build Coastguard Worker    POSITION_INDEPENDENT_CODE ${LZ4_POSITION_INDEPENDENT_LIB})
119*27162e4eSAndroid Build Coastguard Worker  list(APPEND LZ4_LIBRARIES_BUILT lz4_static)
120*27162e4eSAndroid Build Coastguard Workerendif()
121*27162e4eSAndroid Build Coastguard Worker# Add unified target.
122*27162e4eSAndroid Build Coastguard Workeradd_library(lz4 INTERFACE)
123*27162e4eSAndroid Build Coastguard Workerlist(APPEND LZ4_LIBRARIES_BUILT lz4)
124*27162e4eSAndroid Build Coastguard Workerif(BUILD_SHARED_LIBS)
125*27162e4eSAndroid Build Coastguard Worker  target_link_libraries(lz4 INTERFACE lz4_shared)
126*27162e4eSAndroid Build Coastguard Workerelse()
127*27162e4eSAndroid Build Coastguard Worker  target_link_libraries(lz4 INTERFACE lz4_static)
128*27162e4eSAndroid Build Coastguard Workerendif()
129*27162e4eSAndroid Build Coastguard Worker
130*27162e4eSAndroid Build Coastguard Worker# xxhash namespace
131*27162e4eSAndroid Build Coastguard Workerif(BUILD_SHARED_LIBS)
132*27162e4eSAndroid Build Coastguard Worker  target_compile_definitions(lz4_shared PRIVATE
133*27162e4eSAndroid Build Coastguard Worker    XXH_NAMESPACE=LZ4_)
134*27162e4eSAndroid Build Coastguard Workerendif()
135*27162e4eSAndroid Build Coastguard Workerif(BUILD_STATIC_LIBS)
136*27162e4eSAndroid Build Coastguard Worker  target_compile_definitions(lz4_static PRIVATE
137*27162e4eSAndroid Build Coastguard Worker    XXH_NAMESPACE=LZ4_)
138*27162e4eSAndroid Build Coastguard Workerendif()
139*27162e4eSAndroid Build Coastguard Worker
140*27162e4eSAndroid Build Coastguard Worker# lz4
141*27162e4eSAndroid Build Coastguard Workerif (LZ4_BUILD_CLI)
142*27162e4eSAndroid Build Coastguard Worker  set(LZ4_PROGRAMS_BUILT lz4cli)
143*27162e4eSAndroid Build Coastguard Worker  add_executable(lz4cli ${LZ4_CLI_SOURCES})
144*27162e4eSAndroid Build Coastguard Worker  set_target_properties(lz4cli PROPERTIES OUTPUT_NAME lz4)
145*27162e4eSAndroid Build Coastguard Workerendif()
146*27162e4eSAndroid Build Coastguard Worker
147*27162e4eSAndroid Build Coastguard Worker# Extra warning flags
148*27162e4eSAndroid Build Coastguard Workerif(MSVC)
149*27162e4eSAndroid Build Coastguard Worker  set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /W4")
150*27162e4eSAndroid Build Coastguard Workerelse()
151*27162e4eSAndroid Build Coastguard Worker  include (CheckCCompilerFlag)
152*27162e4eSAndroid Build Coastguard Worker  foreach (flag
153*27162e4eSAndroid Build Coastguard Worker      # GCC-style
154*27162e4eSAndroid Build Coastguard Worker      -pedantic-errors
155*27162e4eSAndroid Build Coastguard Worker      -Wall
156*27162e4eSAndroid Build Coastguard Worker      -Wextra
157*27162e4eSAndroid Build Coastguard Worker      -Wundef
158*27162e4eSAndroid Build Coastguard Worker      -Wcast-qual
159*27162e4eSAndroid Build Coastguard Worker      -Wcast-align
160*27162e4eSAndroid Build Coastguard Worker      -Wshadow
161*27162e4eSAndroid Build Coastguard Worker      -Wswitch-enum
162*27162e4eSAndroid Build Coastguard Worker      -Wdeclaration-after-statement
163*27162e4eSAndroid Build Coastguard Worker      -Wstrict-prototypes
164*27162e4eSAndroid Build Coastguard Worker      -Wpointer-arith)
165*27162e4eSAndroid Build Coastguard Worker
166*27162e4eSAndroid Build Coastguard Worker    # Because https://gcc.gnu.org/wiki/FAQ#wnowarning
167*27162e4eSAndroid Build Coastguard Worker    string(REGEX REPLACE "\\-Wno\\-(.+)" "-W\\1" flag_to_test "${flag}")
168*27162e4eSAndroid Build Coastguard Worker    string(REGEX REPLACE "[^a-zA-Z0-9]+" "_" test_name "CFLAG_${flag_to_test}")
169*27162e4eSAndroid Build Coastguard Worker
170*27162e4eSAndroid Build Coastguard Worker    check_c_compiler_flag("${ADD_COMPILER_FLAGS_PREPEND} ${flag_to_test}" ${test_name})
171*27162e4eSAndroid Build Coastguard Worker
172*27162e4eSAndroid Build Coastguard Worker    if(${test_name})
173*27162e4eSAndroid Build Coastguard Worker      set(CMAKE_C_FLAGS_DEBUG "${flag} ${CMAKE_C_FLAGS_DEBUG}")
174*27162e4eSAndroid Build Coastguard Worker    endif()
175*27162e4eSAndroid Build Coastguard Worker
176*27162e4eSAndroid Build Coastguard Worker    unset(test_name)
177*27162e4eSAndroid Build Coastguard Worker    unset(flag_to_test)
178*27162e4eSAndroid Build Coastguard Worker  endforeach (flag)
179*27162e4eSAndroid Build Coastguard Workerendif()
180*27162e4eSAndroid Build Coastguard Worker
181*27162e4eSAndroid Build Coastguard Worker
182*27162e4eSAndroid Build Coastguard Workerif(NOT LZ4_BUNDLED_MODE)
183*27162e4eSAndroid Build Coastguard Worker  install(TARGETS ${LZ4_PROGRAMS_BUILT}
184*27162e4eSAndroid Build Coastguard Worker    BUNDLE	DESTINATION "${CMAKE_INSTALL_BINDIR}"
185*27162e4eSAndroid Build Coastguard Worker    RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
186*27162e4eSAndroid Build Coastguard Worker  install(TARGETS ${LZ4_LIBRARIES_BUILT}
187*27162e4eSAndroid Build Coastguard Worker    EXPORT lz4Targets
188*27162e4eSAndroid Build Coastguard Worker    LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
189*27162e4eSAndroid Build Coastguard Worker    ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
190*27162e4eSAndroid Build Coastguard Worker    RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
191*27162e4eSAndroid Build Coastguard Worker  install(FILES
192*27162e4eSAndroid Build Coastguard Worker    "${LZ4_LIB_SOURCE_DIR}/lz4.h"
193*27162e4eSAndroid Build Coastguard Worker    "${LZ4_LIB_SOURCE_DIR}/lz4hc.h"
194*27162e4eSAndroid Build Coastguard Worker    "${LZ4_LIB_SOURCE_DIR}/lz4frame.h"
195*27162e4eSAndroid Build Coastguard Worker    "${LZ4_LIB_SOURCE_DIR}/lz4file.h"
196*27162e4eSAndroid Build Coastguard Worker    DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
197*27162e4eSAndroid Build Coastguard Worker  install(FILES "${LZ4_PROG_SOURCE_DIR}/lz4.1"
198*27162e4eSAndroid Build Coastguard Worker    DESTINATION "${CMAKE_INSTALL_MANDIR}/man1")
199*27162e4eSAndroid Build Coastguard Worker  install(FILES "${CMAKE_CURRENT_BINARY_DIR}/liblz4.pc"
200*27162e4eSAndroid Build Coastguard Worker    DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
201*27162e4eSAndroid Build Coastguard Worker
202*27162e4eSAndroid Build Coastguard Worker  include(CMakePackageConfigHelpers)
203*27162e4eSAndroid Build Coastguard Worker  write_basic_package_version_file(
204*27162e4eSAndroid Build Coastguard Worker    "${CMAKE_CURRENT_BINARY_DIR}/lz4ConfigVersion.cmake"
205*27162e4eSAndroid Build Coastguard Worker    VERSION ${LZ4_VERSION_STRING}
206*27162e4eSAndroid Build Coastguard Worker    COMPATIBILITY SameMajorVersion)
207*27162e4eSAndroid Build Coastguard Worker
208*27162e4eSAndroid Build Coastguard Worker  set(LZ4_PKG_INSTALLDIR "${CMAKE_INSTALL_LIBDIR}/cmake/lz4")
209*27162e4eSAndroid Build Coastguard Worker  configure_package_config_file(
210*27162e4eSAndroid Build Coastguard Worker    "${CMAKE_CURRENT_LIST_DIR}/lz4Config.cmake.in"
211*27162e4eSAndroid Build Coastguard Worker    "${CMAKE_CURRENT_BINARY_DIR}/lz4Config.cmake"
212*27162e4eSAndroid Build Coastguard Worker    INSTALL_DESTINATION ${LZ4_PKG_INSTALLDIR})
213*27162e4eSAndroid Build Coastguard Worker  export(EXPORT lz4Targets
214*27162e4eSAndroid Build Coastguard Worker    FILE ${CMAKE_CURRENT_BINARY_DIR}/lz4Targets.cmake
215*27162e4eSAndroid Build Coastguard Worker    NAMESPACE LZ4::)
216*27162e4eSAndroid Build Coastguard Worker
217*27162e4eSAndroid Build Coastguard Worker  install(EXPORT lz4Targets
218*27162e4eSAndroid Build Coastguard Worker    FILE lz4Targets.cmake
219*27162e4eSAndroid Build Coastguard Worker    NAMESPACE LZ4::
220*27162e4eSAndroid Build Coastguard Worker    DESTINATION ${LZ4_PKG_INSTALLDIR})
221*27162e4eSAndroid Build Coastguard Worker  install(FILES
222*27162e4eSAndroid Build Coastguard Worker      ${CMAKE_CURRENT_BINARY_DIR}/lz4Config.cmake
223*27162e4eSAndroid Build Coastguard Worker      ${CMAKE_CURRENT_BINARY_DIR}/lz4ConfigVersion.cmake
224*27162e4eSAndroid Build Coastguard Worker    DESTINATION ${LZ4_PKG_INSTALLDIR})
225*27162e4eSAndroid Build Coastguard Worker
226*27162e4eSAndroid Build Coastguard Worker  # Install lz4cat and unlz4 symlinks on Unix systems
227*27162e4eSAndroid Build Coastguard Worker  if(UNIX AND LZ4_BUILD_CLI)
228*27162e4eSAndroid Build Coastguard Worker    foreach(cli_tool IN ITEMS lz4cat unlz4)
229*27162e4eSAndroid Build Coastguard Worker      # Create a custom target for the symlink creation
230*27162e4eSAndroid Build Coastguard Worker      add_custom_target("create_${cli_tool}_symlink" ALL
231*27162e4eSAndroid Build Coastguard Worker        COMMAND ${CMAKE_COMMAND} -E create_symlink
232*27162e4eSAndroid Build Coastguard Worker          $<TARGET_FILE_NAME:lz4cli> ${cli_tool}
233*27162e4eSAndroid Build Coastguard Worker        COMMENT "Creating symlink for ${cli_tool}"
234*27162e4eSAndroid Build Coastguard Worker        VERBATIM)
235*27162e4eSAndroid Build Coastguard Worker
236*27162e4eSAndroid Build Coastguard Worker      # Install the symlink into the binary installation directory
237*27162e4eSAndroid Build Coastguard Worker      install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${cli_tool}"
238*27162e4eSAndroid Build Coastguard Worker        DESTINATION ${CMAKE_INSTALL_BINDIR}
239*27162e4eSAndroid Build Coastguard Worker        RENAME ${cli_tool})
240*27162e4eSAndroid Build Coastguard Worker    endforeach()
241*27162e4eSAndroid Build Coastguard Worker
242*27162e4eSAndroid Build Coastguard Worker    # create manpage aliases
243*27162e4eSAndroid Build Coastguard Worker    foreach(f lz4cat unlz4)
244*27162e4eSAndroid Build Coastguard Worker      file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/${f}.1" ".so man1/lz4.1\n")
245*27162e4eSAndroid Build Coastguard Worker      install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${f}.1"
246*27162e4eSAndroid Build Coastguard Worker        DESTINATION "${CMAKE_INSTALL_MANDIR}/man1")
247*27162e4eSAndroid Build Coastguard Worker    endforeach()
248*27162e4eSAndroid Build Coastguard Worker  endif(UNIX AND LZ4_BUILD_CLI)
249*27162e4eSAndroid Build Coastguard Workerendif(NOT LZ4_BUNDLED_MODE)
250*27162e4eSAndroid Build Coastguard Worker
251*27162e4eSAndroid Build Coastguard Worker# pkg-config
252*27162e4eSAndroid Build Coastguard Workerset(PREFIX "${CMAKE_INSTALL_PREFIX}")
253*27162e4eSAndroid Build Coastguard Worker
254*27162e4eSAndroid Build Coastguard Workerif("${CMAKE_INSTALL_FULL_LIBDIR}" STREQUAL "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
255*27162e4eSAndroid Build Coastguard Worker  set(LIBDIR "\${prefix}/${CMAKE_INSTALL_LIBDIR}")
256*27162e4eSAndroid Build Coastguard Workerelse()
257*27162e4eSAndroid Build Coastguard Worker  set(LIBDIR "${CMAKE_INSTALL_FULL_LIBDIR}")
258*27162e4eSAndroid Build Coastguard Workerendif()
259*27162e4eSAndroid Build Coastguard Worker
260*27162e4eSAndroid Build Coastguard Workerif("${CMAKE_INSTALL_FULL_INCLUDEDIR}" STREQUAL "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}")
261*27162e4eSAndroid Build Coastguard Worker  set(INCLUDEDIR "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
262*27162e4eSAndroid Build Coastguard Workerelse()
263*27162e4eSAndroid Build Coastguard Worker  set(INCLUDEDIR "${CMAKE_INSTALL_FULL_INCLUDEDIR}")
264*27162e4eSAndroid Build Coastguard Workerendif()
265*27162e4eSAndroid Build Coastguard Worker
266*27162e4eSAndroid Build Coastguard Worker# for liblz4.pc substitution
267*27162e4eSAndroid Build Coastguard Workerset(VERSION ${LZ4_VERSION_STRING})
268*27162e4eSAndroid Build Coastguard Workerconfigure_file(${LZ4_LIB_SOURCE_DIR}/liblz4.pc.in liblz4.pc @ONLY)
269