|
|
@@ -1,22 +1,15 @@ |
|
|
cmake_minimum_required(VERSION 3.0) |
|
|
project(liblzma) |
|
|
project(LibLZMA) |
|
|
|
|
|
add_definitions(-DHAVE_CONFIG_H) |
|
|
if(BUILD_SHARED_LIBS) |
|
|
add_definitions(-DLIBLZMADLL_EXPORTS) |
|
|
add_definitions(-DDLL_EXPORT) |
|
|
endif() |
|
|
|
|
|
if(NOT MSVC) |
|
|
add_definitions(-DHAVE_VISIBILITY=1) |
|
|
endif() |
|
|
set(INSTALL_BIN_DIR "bin" CACHE PATH "Path where exe and dll will be installed") |
|
|
set(INSTALL_LIB_DIR "lib" CACHE PATH "Path where lib will be installed") |
|
|
set(INSTALL_INCLUDE_DIR "include" CACHE PATH "Path where headers will be installed") |
|
|
set(INSTALL_CMAKE_DIR "share/liblzma" CACHE PATH "Path where cmake configs will be installed") |
|
|
set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Append a suffix to debug libraries") |
|
|
|
|
|
if(WIN32) |
|
|
include_directories(windows/vs2017) |
|
|
else() |
|
|
include_directories(${CMAKE_CURRENT_BINARY_DIR}) |
|
|
if(NOT WIN32) |
|
|
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/config.h |
|
|
""" |
|
|
" |
|
|
#define TUKLIB_SYMBOL_PREFIX lzma_ |
|
|
#define ASSUME_RAM 128 |
|
|
#define HAVE_CHECK_CRC32 1 |
|
|
@@ -58,19 +51,10 @@ else() |
|
|
#define PACKAGE_NAME \"XZ Utils\" |
|
|
#define PACKAGE_URL \"http://tukaani.org/xz/\" |
|
|
#define SIZEOF_SIZE_T (sizeof(size_t)) |
|
|
""") |
|
|
") |
|
|
endif() |
|
|
include_directories(src/liblzma/common) |
|
|
include_directories(src/common) |
|
|
include_directories(src/liblzma/api) |
|
|
include_directories(src/liblzma/check) |
|
|
include_directories(src/liblzma/delta) |
|
|
include_directories(src/liblzma/lz) |
|
|
include_directories(src/liblzma/lzma) |
|
|
include_directories(src/liblzma/rangecoder) |
|
|
include_directories(src/liblzma/simple) |
|
|
|
|
|
add_library(lzma |
|
|
add_library(LibLZMA |
|
|
src/common/tuklib_cpucores.c |
|
|
src/common/tuklib_physmem.c |
|
|
src/liblzma/check/check.c |
|
|
@@ -143,14 +127,56 @@ add_library(lzma |
|
|
src/liblzma/simple/simple_decoder.c |
|
|
src/liblzma/simple/simple_encoder.c |
|
|
src/liblzma/simple/sparc.c |
|
|
src/liblzma/simple/x86.c) |
|
|
src/liblzma/simple/x86.c |
|
|
) |
|
|
|
|
|
install(TARGETS lzma |
|
|
RUNTIME DESTINATION bin |
|
|
ARCHIVE DESTINATION lib |
|
|
LIBRARY DESTINATION lib) |
|
|
if(MSVC) |
|
|
target_include_directories(LibLZMA PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/windows/vs2017>) |
|
|
else() |
|
|
target_compile_definitions(LibLZMA PRIVATE -DHAVE_VISIBILITY=1) |
|
|
endif() |
|
|
|
|
|
if(NOT LIBLZMA_SKIP_HEADERS) |
|
|
install(DIRECTORY ${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma DESTINATION include) |
|
|
install(FILES ${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma.h DESTINATION include) |
|
|
if(BUILD_SHARED_LIBS) |
|
|
target_compile_definitions(LibLZMA PRIVATE -DDLL_EXPORT) |
|
|
target_compile_definitions(LibLZMA PUBLIC -DLIBLZMADLL_EXPORTS) |
|
|
else() |
|
|
target_compile_definitions(LibLZMA PUBLIC -DLZMA_API_STATIC) |
|
|
endif() |
|
|
target_compile_definitions(LibLZMA PUBLIC -DHAVE_CONFIG_H) |
|
|
|
|
|
target_include_directories(LibLZMA PUBLIC |
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}> |
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src/liblzma/common> |
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src/common> |
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src/liblzma/check> |
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src/liblzma/delta> |
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src/liblzma/lz> |
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src/liblzma/rangecoder> |
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src/liblzma/simple> |
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src/liblzma/lzma> |
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src/liblzma/api> |
|
|
$<INSTALL_INTERFACE:${INSTALL_INCLUDE_DIR}> |
|
|
) |
|
|
|
|
|
set_target_properties(LibLZMA PROPERTIES OUTPUT_NAME "lzma") |
|
|
|
|
|
set_target_properties(LibLZMA PROPERTIES PUBLIC_HEADER |
|
|
"${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/base.h;${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/bcj.h;${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/block.h;${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/check.h;${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/container.h;${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/delta.h;${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/filter.h;${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/hardware.h;${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/index.h;${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/index_hash.h;${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/lzma12.h;${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/stream_flags.h;${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/version.h;${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma/vli.h" |
|
|
) |
|
|
|
|
|
install(TARGETS LibLZMA EXPORT LibLZMATargets |
|
|
RUNTIME DESTINATION "${INSTALL_BIN_DIR}" |
|
|
ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" |
|
|
LIBRARY DESTINATION "${INSTALL_LIB_DIR}" |
|
|
PUBLIC_HEADER DESTINATION "${INSTALL_INCLUDE_DIR}/lzma" |
|
|
) |
|
|
|
|
|
install(FILES "${PROJECT_SOURCE_DIR}/src/liblzma/api/lzma.h" |
|
|
DESTINATION "${INSTALL_INCLUDE_DIR}" |
|
|
) |
|
|
|
|
|
install(EXPORT LibLZMATargets |
|
|
FILE LibLZMAConfig.cmake |
|
|
NAMESPACE LibLZMA:: |
|
|
DESTINATION "${INSTALL_CMAKE_DIR}" |
|
|
) |