mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
Add libarchive
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -22,6 +22,7 @@ bin/project-cache.jam
|
||||
# Ignore object files.
|
||||
*.o
|
||||
build
|
||||
.nih_c
|
||||
tags
|
||||
TAGS
|
||||
bin/rippled
|
||||
|
||||
@@ -3,6 +3,7 @@ cmake_minimum_required (VERSION 3.9.0)
|
||||
set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Builds/CMake ${CMAKE_MODULE_PATH})
|
||||
include (CMakeFuncs)
|
||||
include (CheckCXXCompilerFlag)
|
||||
include (ExternalProject)
|
||||
if (target)
|
||||
message (WARNING
|
||||
"The target option is deprecated and will be removed in a future release")
|
||||
@@ -655,6 +656,101 @@ add_custom_command (TARGET lz4 POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
$<TARGET_FILE:lz4> ${CMAKE_BINARY_DIR}/lz4/lib)
|
||||
|
||||
#[===================================================================[
|
||||
NIH dep: libarchive (via external project)
|
||||
#]===================================================================]
|
||||
set (la_root_suffix)
|
||||
if (MSVC)
|
||||
set(la_root_suffix "_static")
|
||||
endif ()
|
||||
string(REGEX REPLACE "[ \\/%]+" "_" gen_for_path ${CMAKE_GENERATOR})
|
||||
string(TOLOWER ${gen_for_path} gen_for_path)
|
||||
# hack: trying to shorten paths for windows CI (hits 260 MAXPATH easily)
|
||||
string(REPLACE "visual_studio" "vs" gen_for_path ${gen_for_path})
|
||||
ExternalProject_Add (libarchive
|
||||
PREFIX ${CMAKE_SOURCE_DIR}/.nih_c/${gen_for_path}/${CMAKE_CXX_COMPILER_ID}_${CMAKE_CXX_COMPILER_VERSION}
|
||||
# TODO: switch back to official repo once they allow ENABLE_WERROR option in
|
||||
# mainline -- see https://github.com/libarchive/libarchive/pull/1033
|
||||
#GIT_REPOSITORY https://github.com/libarchive/libarchive.git
|
||||
#GIT_TAG v3.3.1
|
||||
GIT_REPOSITORY https://github.com/mellery451/libarchive.git
|
||||
GIT_TAG e78e48ea4e102fef7f379bc8f10afbfbf25633a6
|
||||
CMAKE_ARGS
|
||||
# passing the compiler seems to be needed for windows CI, sadly
|
||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||
$<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:-DCMAKE_VERBOSE_MAKEFILE=ON>
|
||||
-DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/lz4
|
||||
-DCMAKE_DEBUG_POSTFIX=_d
|
||||
-DCMAKE_BUILD_TYPE=$<IF:$<STREQUAL:${CMAKE_BUILD_TYPE},Debug>,Debug,Release>
|
||||
-DENABLE_LZ4=ON
|
||||
-ULZ4_*
|
||||
-DENABLE_WERROR=OFF
|
||||
-DENABLE_TAR=OFF
|
||||
-DENABLE_TAR_SHARED=OFF
|
||||
-DENABLE_INSTALL=ON
|
||||
-DENABLE_NETTLE=OFF
|
||||
-DENABLE_OPENSSL=OFF
|
||||
-DENABLE_LZO=OFF
|
||||
-DENABLE_LZMA=OFF
|
||||
-DENABLE_ZLIB=OFF
|
||||
-DENABLE_BZip2=OFF
|
||||
-DENABLE_LIBXML2=OFF
|
||||
-DENABLE_EXPAT=OFF
|
||||
-DENABLE_PCREPOSIX=OFF
|
||||
-DENABLE_LibGCC=OFF
|
||||
-DENABLE_CNG=OFF
|
||||
-DENABLE_CPIO=OFF
|
||||
-DENABLE_CPIO_SHARED=OFF
|
||||
-DENABLE_CAT=OFF
|
||||
-DENABLE_CAT_SHARED=OFF
|
||||
-DENABLE_XATTR=OFF
|
||||
-DENABLE_ACL=OFF
|
||||
-DENABLE_ICONV=OFF
|
||||
-DENABLE_TEST=OFF
|
||||
-DENABLE_COVERAGE=OFF
|
||||
$<$<BOOL:${MSVC}>:
|
||||
"-DCMAKE_C_FLAGS=-GR -Gd -fp:precise -FS -MP"
|
||||
"-DCMAKE_C_FLAGS_DEBUG=-MTd"
|
||||
"-DCMAKE_C_FLAGS_RELEASE=-MT"
|
||||
"-DCMAKE_C_FLAGS_RELWITHDEBINFO=-MT"
|
||||
"-DCMAKE_C_FLAGS_MINSIZEREL=-MT"
|
||||
>
|
||||
LOG_BUILD ON
|
||||
LOG_CONFIGURE ON
|
||||
BUILD_COMMAND
|
||||
${CMAKE_COMMAND}
|
||||
--build .
|
||||
--config $<CONFIG>
|
||||
--target archive_static
|
||||
$<$<BOOL:${is_multiconfig}>:
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E copy
|
||||
<BINARY_DIR>/libarchive/$<CONFIG>/${CMAKE_STATIC_LIBRARY_PREFIX}archive${la_root_suffix}$<$<OR:$<CONFIG:Debug>,$<CONFIG:DebugClassic>>:_d>${CMAKE_STATIC_LIBRARY_SUFFIX}
|
||||
<BINARY_DIR>/libarchive
|
||||
>
|
||||
TEST_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
DEPENDS lz4
|
||||
BUILD_BYPRODUCTS
|
||||
<BINARY_DIR>/libarchive/${CMAKE_STATIC_LIBRARY_PREFIX}archive${la_root_suffix}${CMAKE_STATIC_LIBRARY_SUFFIX}
|
||||
<BINARY_DIR>/libarchive/${CMAKE_STATIC_LIBRARY_PREFIX}archive${la_root_suffix}_d${CMAKE_STATIC_LIBRARY_SUFFIX}
|
||||
)
|
||||
ExternalProject_Get_Property (libarchive BINARY_DIR)
|
||||
ExternalProject_Get_Property (libarchive SOURCE_DIR)
|
||||
add_library (archive_lib STATIC IMPORTED GLOBAL)
|
||||
file (MAKE_DIRECTORY ${SOURCE_DIR}/libarchive)
|
||||
set_target_properties (archive_lib PROPERTIES
|
||||
IMPORTED_LOCATION_DEBUG
|
||||
${BINARY_DIR}/libarchive/${CMAKE_STATIC_LIBRARY_PREFIX}archive${la_root_suffix}_d${CMAKE_STATIC_LIBRARY_SUFFIX}
|
||||
IMPORTED_LOCATION_RELEASE
|
||||
${BINARY_DIR}/libarchive/${CMAKE_STATIC_LIBRARY_PREFIX}archive${la_root_suffix}${CMAKE_STATIC_LIBRARY_SUFFIX}
|
||||
INTERFACE_INCLUDE_DIRECTORIES ${SOURCE_DIR}/libarchive
|
||||
INTERFACE_COMPILE_DEFINITIONS LIBARCHIVE_STATIC)
|
||||
add_dependencies (archive_lib libarchive)
|
||||
target_link_libraries (archive_lib INTERFACE NIH::lz4)
|
||||
target_link_libraries (ripple_libs INTERFACE archive_lib)
|
||||
|
||||
#[===================================================================[
|
||||
NIH dep: sqlite
|
||||
#]===================================================================]
|
||||
@@ -2022,4 +2118,3 @@ if (TARGET Doxygen::doxygen)
|
||||
else ()
|
||||
message (STATUS "doxygen executable not found -- skipping docs target")
|
||||
endif ()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user