Search for system libarchive before vendoring

This commit is contained in:
Mo Morsi
2019-10-29 13:43:18 -04:00
committed by Nik Bougalis
parent 194fb2b86d
commit b728bf0d09
3 changed files with 132 additions and 92 deletions

View File

@@ -0,0 +1,23 @@
find_package (PkgConfig REQUIRED)
pkg_search_module (libarchive_PC QUIET libarchive>=3.3.3)
if(static)
set(LIBARCHIVE_LIB libarchive.a)
else()
set(LIBARCHIVE_LIB archive)
endif()
find_library (archive
NAMES ${LIBARCHIVE_LIB}
HINTS
${libarchive_PC_LIBDIR}
${libarchive_PC_LIBRARY_DIRS}
NO_DEFAULT_PATH)
find_path (LIBARCHIVE_INCLUDE_DIR
NAMES archive.h
HINTS
${libarchive_PC_INCLUDEDIR}
${libarchive_PC_INCLUDEDIRS}
NO_DEFAULT_PATH)

View File

@@ -4,7 +4,7 @@ pkg_search_module (lz4_PC QUIET liblz4>=1.8)
if(static) if(static)
set(LZ4_LIB liblz4.a) set(LZ4_LIB liblz4.a)
else() else()
set(LZ4_LIB lz4) set(LZ4_LIB lz4.so)
endif() endif()
find_library (lz4 find_library (lz4

View File

@@ -2,11 +2,27 @@
NIH dep: libarchive NIH dep: libarchive
#]===================================================================] #]===================================================================]
set (lib_post "") add_library (archive_lib STATIC IMPORTED GLOBAL)
if (MSVC)
if (NOT WIN32)
find_package(libarchive REQUIRED)
endif()
if(libarchive)
set_target_properties (archive_lib PROPERTIES
IMPORTED_LOCATION_DEBUG
${archive}
IMPORTED_LOCATION_RELEASE
${archive}
INTERFACE_INCLUDE_DIRECTORIES
${LIBARCHIVE_INCLUDE_DIR})
else()
set (lib_post "")
if (MSVC)
set (lib_post "_static") set (lib_post "_static")
endif () endif ()
ExternalProject_Add (libarchive ExternalProject_Add (libarchive
PREFIX ${nih_cache_path} PREFIX ${nih_cache_path}
GIT_REPOSITORY https://github.com/libarchive/libarchive.git GIT_REPOSITORY https://github.com/libarchive/libarchive.git
GIT_TAG v3.3.3 GIT_TAG v3.3.3
@@ -77,15 +93,14 @@ ExternalProject_Add (libarchive
BUILD_BYPRODUCTS BUILD_BYPRODUCTS
<BINARY_DIR>/libarchive/${ep_lib_prefix}archive${lib_post}${ep_lib_suffix} <BINARY_DIR>/libarchive/${ep_lib_prefix}archive${lib_post}${ep_lib_suffix}
<BINARY_DIR>/libarchive/${ep_lib_prefix}archive${lib_post}_d${ep_lib_suffix} <BINARY_DIR>/libarchive/${ep_lib_prefix}archive${lib_post}_d${ep_lib_suffix}
) )
ExternalProject_Get_Property (libarchive BINARY_DIR) ExternalProject_Get_Property (libarchive BINARY_DIR)
ExternalProject_Get_Property (libarchive SOURCE_DIR) ExternalProject_Get_Property (libarchive SOURCE_DIR)
if (CMAKE_VERBOSE_MAKEFILE) if (CMAKE_VERBOSE_MAKEFILE)
print_ep_logs (libarchive) print_ep_logs (libarchive)
endif () endif ()
add_library (archive_lib STATIC IMPORTED GLOBAL) file (MAKE_DIRECTORY ${SOURCE_DIR}/libarchive)
file (MAKE_DIRECTORY ${SOURCE_DIR}/libarchive) set_target_properties (archive_lib PROPERTIES
set_target_properties (archive_lib PROPERTIES
IMPORTED_LOCATION_DEBUG IMPORTED_LOCATION_DEBUG
${BINARY_DIR}/libarchive/${ep_lib_prefix}archive${lib_post}_d${ep_lib_suffix} ${BINARY_DIR}/libarchive/${ep_lib_prefix}archive${lib_post}_d${ep_lib_suffix}
IMPORTED_LOCATION_RELEASE IMPORTED_LOCATION_RELEASE
@@ -94,6 +109,8 @@ set_target_properties (archive_lib PROPERTIES
${SOURCE_DIR}/libarchive ${SOURCE_DIR}/libarchive
INTERFACE_COMPILE_DEFINITIONS INTERFACE_COMPILE_DEFINITIONS
LIBARCHIVE_STATIC) LIBARCHIVE_STATIC)
endif()
add_dependencies (archive_lib libarchive) add_dependencies (archive_lib libarchive)
target_link_libraries (archive_lib INTERFACE lz4_lib) target_link_libraries (archive_lib INTERFACE lz4_lib)
target_link_libraries (ripple_libs INTERFACE archive_lib) target_link_libraries (ripple_libs INTERFACE archive_lib)