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