diff options
Diffstat (limited to 'contrib/cmake_unofficial')
-rw-r--r-- | contrib/cmake_unofficial/.gitignore | 7 | ||||
-rw-r--r-- | contrib/cmake_unofficial/CMakeLists.txt | 110 |
2 files changed, 117 insertions, 0 deletions
diff --git a/contrib/cmake_unofficial/.gitignore b/contrib/cmake_unofficial/.gitignore new file mode 100644 index 0000000..0f81929 --- /dev/null +++ b/contrib/cmake_unofficial/.gitignore @@ -0,0 +1,7 @@ +# cmake artefact + +CMakeCache.txt +CMakeFiles +*.cmake +Makefile +liblz4.pc diff --git a/contrib/cmake_unofficial/CMakeLists.txt b/contrib/cmake_unofficial/CMakeLists.txt new file mode 100644 index 0000000..6edec98 --- /dev/null +++ b/contrib/cmake_unofficial/CMakeLists.txt @@ -0,0 +1,110 @@ +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 2) +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}) |