3fa60044e7
because it is substituted before if() is executed cf. the last section of e.g.: https://cmake.org/cmake/help/v3.1/command/if.html
115 lines
3.4 KiB
CMake
115 lines
3.4 KiB
CMake
PROJECT(LZ4 C)
|
|
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "LZ4 compression library")
|
|
set(CPACK_PACKAGE_VERSION_MAJOR 1)
|
|
set(CPACK_PACKAGE_VERSION_MINOR 7)
|
|
set(CPACK_PACKAGE_VERSION_PATCH r132)
|
|
set(VERSION_STRING " \"${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}\" ")
|
|
include(CPack)
|
|
|
|
cmake_minimum_required (VERSION 2.6)
|
|
INCLUDE (CheckTypeSize)
|
|
check_type_size("void *" SIZEOF_VOID_P)
|
|
IF(SIZEOF_VOID_P STREQUAL "8")
|
|
set (CMAKE_SYSTEM_PROCESSOR "64bit")
|
|
MESSAGE( STATUS "64 bit architecture detected size of void * is " ${SIZEOF_VOID_P})
|
|
ENDIF()
|
|
|
|
option(BUILD_TOOLS "Build the command line tools" ON)
|
|
option(BUILD_LIBS "Build the libraries in addition to the tools" ON)
|
|
option(LINK_TOOLS_WITH_LIB "Link the command line tools with the (shared) library" OFF)
|
|
|
|
IF(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR
|
|
CMAKE_C_COMPILER_ID STREQUAL "Clang")
|
|
SET(GNU_COMPATIBLE_COMPILER 1)
|
|
ENDIF()
|
|
|
|
|
|
set(LZ4_DIR ../lib/)
|
|
set(PRG_DIR ../programs/)
|
|
set(LZ4_SRCS_LIB ${LZ4_DIR}lz4.c ${LZ4_DIR}lz4hc.c ${LZ4_DIR}lz4.h ${LZ4_DIR}lz4hc.h ${LZ4_DIR}lz4frame.c ${LZ4_DIR}lz4frame.h ${LZ4_DIR}xxhash.c)
|
|
set(LZ4_SRCS ${LZ4_DIR}lz4frame.c ${LZ4_DIR}xxhash.c ${PRG_DIR}bench.c ${PRG_DIR}lz4cli.c ${PRG_DIR}lz4io.c)
|
|
|
|
if(BUILD_TOOLS AND NOT (LINK_TOOLS_WITH_LIB AND BUILD_LIBS))
|
|
set(LZ4_SRCS ${LZ4_SRCS} ${LZ4_SRCS_LIB})
|
|
endif()
|
|
|
|
if(BUILD_TOOLS)
|
|
add_executable(lz4 ${LZ4_SRCS})
|
|
install(TARGETS lz4 RUNTIME DESTINATION "bin/")
|
|
endif()
|
|
|
|
if(BUILD_LIBS)
|
|
|
|
|
|
SET(LIBS_TARGETS "")
|
|
IF(WIN32)
|
|
add_library(liblz4 STATIC ${LZ4_SRCS_LIB})
|
|
SET(LIBS_TARGETS liblz4)
|
|
ELSE(WIN32)
|
|
add_library(liblz4 SHARED ${LZ4_SRCS_LIB})
|
|
add_library(liblz4_static STATIC ${LZ4_SRCS_LIB})
|
|
SET_TARGET_PROPERTIES(liblz4_static PROPERTIES OUTPUT_NAME lz4)
|
|
SET(LIBS_TARGETS liblz4 liblz4_static)
|
|
ENDIF(WIN32)
|
|
|
|
set_target_properties(liblz4 PROPERTIES
|
|
OUTPUT_NAME lz4
|
|
SOVERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}"
|
|
)
|
|
|
|
install(TARGETS ${LIBS_TARGETS}
|
|
RUNTIME DESTINATION lib #on Windows: cmake considers dlls as runtime component
|
|
LIBRARY DESTINATION lib
|
|
ARCHIVE DESTINATION lib
|
|
)
|
|
|
|
install(FILES
|
|
${LZ4_DIR}/lz4.h
|
|
${LZ4_DIR}/lz4hc.h
|
|
${LZ4_DIR}/lz4frame.h
|
|
DESTINATION include
|
|
)
|
|
|
|
set(PREFIX ${CMAKE_INSTALL_PREFIX})
|
|
set(LIBDIR ${CMAKE_INSTALL_PREFIX}/lib)
|
|
set(INCLUDEDIR ${CMAKE_INSTALL_PREFIX}/include)
|
|
string(SUBSTRING ${CPACK_PACKAGE_VERSION_PATCH} 1 -1 VERSION)
|
|
configure_file(${LZ4_DIR}/liblz4.pc.in liblz4.pc @ONLY)
|
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/liblz4.pc
|
|
DESTINATION "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/pkgconfig"
|
|
)
|
|
|
|
if(BUILD_TOOLS AND LINK_TOOLS_WITH_LIB)
|
|
target_link_libraries(lz4 liblz4)
|
|
endif()
|
|
endif()
|
|
|
|
|
|
#warnings
|
|
|
|
if(MSVC)
|
|
ADD_DEFINITIONS("-W4")
|
|
endif()
|
|
if(GNU_COMPATIBLE_COMPILER)
|
|
ADD_DEFINITIONS("-Wall")
|
|
endif()
|
|
if(CMAKE_COMPILER_IS_GNUCXX)
|
|
ADD_DEFINITIONS("-Wextra")
|
|
ADD_DEFINITIONS("-Wundef")
|
|
ADD_DEFINITIONS("-Wshadow")
|
|
ADD_DEFINITIONS("-Wcast-align")
|
|
ADD_DEFINITIONS("-Wstrict-prototypes")
|
|
endif(CMAKE_COMPILER_IS_GNUCXX)
|
|
if(GNU_COMPATIBLE_COMPILER)
|
|
# we need gnu99 instead of c99 on Linux and Solaris
|
|
# to get C99 and POSIX definitions
|
|
# an alternative with cmake >= 3.1/3.2 is the C_STANDARD property
|
|
ADD_DEFINITIONS("-std=gnu99")
|
|
endif()
|
|
ADD_DEFINITIONS("-DLZ4_VERSION=\"${CPACK_PACKAGE_VERSION_PATCH}\"")
|
|
INCLUDE_DIRECTORIES (${LZ4_DIR})
|
|
|
|
|
|
|
|
|