Update archiving libs and their linking
This commit is contained in:
10
3rdParty/CMakeLists.txt
vendored
10
3rdParty/CMakeLists.txt
vendored
@@ -29,3 +29,13 @@ execute_process(
|
|||||||
|
|
||||||
list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/deps/INSTALL)
|
list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/deps/INSTALL)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
function(LinkLibArchive TARGET)
|
||||||
|
find_package(LibArchive REQUIRED)
|
||||||
|
set(ZLIB_USE_STATIC_LIBS ON)
|
||||||
|
find_package(ZLIB REQUIRED)
|
||||||
|
find_package(LZ4 REQUIRED)
|
||||||
|
find_package(zstd REQUIRED)
|
||||||
|
target_include_directories(${TARGET} PRIVATE ${LibArchive_INCLUDE_DIR})
|
||||||
|
target_link_libraries(${TARGET} PRIVATE ${LibArchive_LIBRARIES} ${ZLIB_LIBRARIES} ${zstd_LIBRARIES} ${LZ4_LIBRARIES})
|
||||||
|
endfunction()
|
||||||
11
3rdParty/libarchive/CMakeLists.txt
vendored
11
3rdParty/libarchive/CMakeLists.txt
vendored
@@ -17,7 +17,7 @@ endif ()
|
|||||||
|
|
||||||
ExternalProject_Add(zlib
|
ExternalProject_Add(zlib
|
||||||
GIT_REPOSITORY ${ZLIB_REPO}
|
GIT_REPOSITORY ${ZLIB_REPO}
|
||||||
GIT_TAG v1.2.11
|
GIT_TAG v1.3.1
|
||||||
GIT_SHALLOW TRUE
|
GIT_SHALLOW TRUE
|
||||||
SOURCE_DIR zlib
|
SOURCE_DIR zlib
|
||||||
BINARY_DIR zlib-build
|
BINARY_DIR zlib-build
|
||||||
@@ -31,7 +31,7 @@ ExternalProject_Add(zlib
|
|||||||
|
|
||||||
ExternalProject_Add(zstd
|
ExternalProject_Add(zstd
|
||||||
GIT_REPOSITORY ${ZSTD_REPO}
|
GIT_REPOSITORY ${ZSTD_REPO}
|
||||||
GIT_TAG v1.5.1
|
GIT_TAG v1.5.6
|
||||||
GIT_SHALLOW TRUE
|
GIT_SHALLOW TRUE
|
||||||
SOURCE_DIR zstd
|
SOURCE_DIR zstd
|
||||||
SOURCE_SUBDIR build/cmake
|
SOURCE_SUBDIR build/cmake
|
||||||
@@ -47,7 +47,7 @@ ExternalProject_Add(zstd
|
|||||||
|
|
||||||
ExternalProject_Add(lz4
|
ExternalProject_Add(lz4
|
||||||
GIT_REPOSITORY ${LZ4_REPO}
|
GIT_REPOSITORY ${LZ4_REPO}
|
||||||
GIT_TAG v1.9.3
|
GIT_TAG v1.9.4
|
||||||
GIT_SHALLOW TRUE
|
GIT_SHALLOW TRUE
|
||||||
SOURCE_DIR lz4
|
SOURCE_DIR lz4
|
||||||
BINARY_DIR lz4-build
|
BINARY_DIR lz4-build
|
||||||
@@ -55,6 +55,9 @@ ExternalProject_Add(lz4
|
|||||||
CMAKE_GENERATOR ${CMAKE_GENERATOR}
|
CMAKE_GENERATOR ${CMAKE_GENERATOR}
|
||||||
CMAKE_ARGS
|
CMAKE_ARGS
|
||||||
-DBUILD_SHARED_LIBS:BOOL=OFF
|
-DBUILD_SHARED_LIBS:BOOL=OFF
|
||||||
|
-DLZ4_BUILD_CLI:BOOL=OFF
|
||||||
|
-DLZ4_BUILD_LEGACY_LZ4C:BOOL=OFF
|
||||||
|
-DLZ4_BUNDLE_MODE:BOOL=OFF
|
||||||
-DCMAKE_BUILD_TYPE:STRING=Release
|
-DCMAKE_BUILD_TYPE:STRING=Release
|
||||||
-DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE}
|
-DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE}
|
||||||
-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL
|
-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL
|
||||||
@@ -64,7 +67,7 @@ ExternalProject_Add(
|
|||||||
libarchive
|
libarchive
|
||||||
DEPENDS zlib zstd lz4
|
DEPENDS zlib zstd lz4
|
||||||
GIT_REPOSITORY ${LIBARCHIVE_REPO}
|
GIT_REPOSITORY ${LIBARCHIVE_REPO}
|
||||||
GIT_TAG v3.7.0
|
GIT_TAG v3.7.4
|
||||||
GIT_SHALLOW TRUE
|
GIT_SHALLOW TRUE
|
||||||
SOURCE_DIR libarchive
|
SOURCE_DIR libarchive
|
||||||
BINARY_DIR libarchive-build
|
BINARY_DIR libarchive-build
|
||||||
|
|||||||
@@ -97,11 +97,7 @@ if (IOS)
|
|||||||
target_include_directories(openVulkanoCpp PRIVATE "/opt/libjpeg-turbo-ios/include")
|
target_include_directories(openVulkanoCpp PRIVATE "/opt/libjpeg-turbo-ios/include")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
find_package(LibArchive REQUIRED)
|
target_link_libraries(openVulkanoCpp PRIVATE magic_enum yaml-cpp fmt spdlog glm pugixml stb eigen utf8cpp imgui_internal TracyClient stud-uuid)
|
||||||
set(ZLIB_USE_STATIC_LIBS ON)
|
|
||||||
find_package(ZLIB REQUIRED)
|
|
||||||
target_include_directories(openVulkanoCpp PRIVATE ${LibArchive_INCLUDE_DIR})
|
|
||||||
target_link_libraries(openVulkanoCpp PRIVATE magic_enum yaml-cpp fmt spdlog glm pugixml ${LibArchive_LIBRARIES} ${ZLIB_LIBRARIES} stb eigen utf8cpp imgui_internal TracyClient stud-uuid)
|
|
||||||
|
|
||||||
add_compile_definitions(LIBARCHIVE_STATIC)
|
add_compile_definitions(LIBARCHIVE_STATIC)
|
||||||
|
|
||||||
@@ -112,3 +108,7 @@ endif()
|
|||||||
SetGlmDefines(openVulkanoCpp)
|
SetGlmDefines(openVulkanoCpp)
|
||||||
|
|
||||||
LinkAssimp(openVulkanoCpp)
|
LinkAssimp(openVulkanoCpp)
|
||||||
|
LinkLibArchive(openVulkanoCpp)
|
||||||
|
|
||||||
|
|
||||||
|
set(VS_STARTUP_PROJECT openVulkanoCpp)
|
||||||
38
cmake/modules/FindLZ4.cmake
Normal file
38
cmake/modules/FindLZ4.cmake
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
find_path(LZ4_INCLUDE_DIR
|
||||||
|
NAMES lz4.h
|
||||||
|
DOC "lz4 include directory")
|
||||||
|
mark_as_advanced(LZ4_INCLUDE_DIR)
|
||||||
|
find_library(LZ4_LIBRARY
|
||||||
|
NAMES lz4 liblz4
|
||||||
|
DOC "lz4 library")
|
||||||
|
mark_as_advanced(LZ4_LIBRARY)
|
||||||
|
|
||||||
|
if (LZ4_INCLUDE_DIR)
|
||||||
|
file(STRINGS "${LZ4_INCLUDE_DIR}/lz4.h" _lz4_version_lines
|
||||||
|
REGEX "#define[ \t]+LZ4_VERSION_(MAJOR|MINOR|RELEASE)")
|
||||||
|
string(REGEX REPLACE ".*LZ4_VERSION_MAJOR *\([0-9]*\).*" "\\1" _lz4_version_major "${_lz4_version_lines}")
|
||||||
|
string(REGEX REPLACE ".*LZ4_VERSION_MINOR *\([0-9]*\).*" "\\1" _lz4_version_minor "${_lz4_version_lines}")
|
||||||
|
string(REGEX REPLACE ".*LZ4_VERSION_RELEASE *\([0-9]*\).*" "\\1" _lz4_version_release "${_lz4_version_lines}")
|
||||||
|
set(LZ4_VERSION "${_lz4_version_major}.${_lz4_version_minor}.${_lz4_version_release}")
|
||||||
|
unset(_lz4_version_major)
|
||||||
|
unset(_lz4_version_minor)
|
||||||
|
unset(_lz4_version_release)
|
||||||
|
unset(_lz4_version_lines)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args(LZ4
|
||||||
|
REQUIRED_VARS LZ4_LIBRARY LZ4_INCLUDE_DIR
|
||||||
|
VERSION_VAR LZ4_VERSION)
|
||||||
|
|
||||||
|
if (LZ4_FOUND)
|
||||||
|
set(LZ4_INCLUDE_DIRS "${LZ4_INCLUDE_DIR}")
|
||||||
|
set(LZ4_LIBRARIES "${LZ4_LIBRARY}")
|
||||||
|
|
||||||
|
if (NOT TARGET LZ4::LZ4)
|
||||||
|
add_library(LZ4::LZ4 UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(LZ4::LZ4 PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${LZ4_LIBRARY}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${LZ4_INCLUDE_DIR}")
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
194
cmake/modules/Findzstd.cmake
Normal file
194
cmake/modules/Findzstd.cmake
Normal file
@@ -0,0 +1,194 @@
|
|||||||
|
# Copyright (C) 2020 Dieter Baron and Thomas Klausner
|
||||||
|
#
|
||||||
|
# The authors can be contacted at <info@libzip.org>
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in
|
||||||
|
# the documentation and/or other materials provided with the
|
||||||
|
# distribution.
|
||||||
|
#
|
||||||
|
# 3. The names of the authors may not be used to endorse or promote
|
||||||
|
# products derived from this software without specific prior
|
||||||
|
# written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
|
||||||
|
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
|
||||||
|
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||||
|
# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
||||||
|
# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||||
|
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||||
|
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
#[=======================================================================[.rst:
|
||||||
|
Findzstd
|
||||||
|
-------
|
||||||
|
|
||||||
|
Finds the Zstandard (zstd) library.
|
||||||
|
|
||||||
|
Imported Targets
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This module provides the following imported targets, if found:
|
||||||
|
|
||||||
|
``zstd::libzstd_shared``
|
||||||
|
The shared Zstandard library
|
||||||
|
``zstd::libzstd_static``
|
||||||
|
The shared Zstandard library
|
||||||
|
|
||||||
|
Result Variables
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This will define the following variables:
|
||||||
|
|
||||||
|
``zstd_FOUND``
|
||||||
|
True if the system has the Zstandard library.
|
||||||
|
``zstd_VERSION``
|
||||||
|
The version of the Zstandard library which was found.
|
||||||
|
|
||||||
|
Cache Variables
|
||||||
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The following cache variables may also be set:
|
||||||
|
|
||||||
|
``zstd_INCLUDE_DIR``
|
||||||
|
The directory containing ``zstd.h``.
|
||||||
|
``zstd_STATIC_LIBRARY``
|
||||||
|
The path to the Zstandard static library.
|
||||||
|
``zstd_SHARED_LIBRARY``
|
||||||
|
The path to the Zstandard shared library.
|
||||||
|
``zstd_DLL``
|
||||||
|
The path to the Zstandard DLL.
|
||||||
|
|
||||||
|
#]=======================================================================]
|
||||||
|
|
||||||
|
find_package(PkgConfig)
|
||||||
|
pkg_check_modules(PC_zstd QUIET libzstd)
|
||||||
|
|
||||||
|
find_path(zstd_INCLUDE_DIR
|
||||||
|
NAMES zstd.h
|
||||||
|
HINTS ${PC_zstd_INCLUDE_DIRS}
|
||||||
|
)
|
||||||
|
|
||||||
|
find_file(zstd_DLL
|
||||||
|
NAMES libzstd.dll zstd.dll
|
||||||
|
PATH_SUFFIXES bin
|
||||||
|
HINTS ${PC_zstd_PREFIX}
|
||||||
|
)
|
||||||
|
|
||||||
|
# On Windows, we manually define the library names to avoid mistaking the
|
||||||
|
# implib for the static library
|
||||||
|
if(zstd_DLL)
|
||||||
|
set(_zstd_win_static_name zstd-static)
|
||||||
|
set(_zstd_win_shared_name zstd)
|
||||||
|
else()
|
||||||
|
# vcpkg removes the -static suffix in static builds
|
||||||
|
set(_zstd_win_static_name zstd zstd_static)
|
||||||
|
set(_zstd_win_shared_name)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(_previous_suffixes ${CMAKE_FIND_LIBRARY_SUFFIXES})
|
||||||
|
set(CMAKE_FIND_LIBRARY_SUFFIXES ".so" ".dylib" ".dll.a" ".lib")
|
||||||
|
find_library(zstd_SHARED_LIBRARY
|
||||||
|
NAMES zstd ${_zstd_win_shared_name}
|
||||||
|
HINTS ${PC_zstd_LIBDIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" ".lib")
|
||||||
|
find_library(zstd_STATIC_LIBRARY
|
||||||
|
NAMES zstd ${_zstd_win_static_name}
|
||||||
|
HINTS ${PC_zstd_LIBDIR}
|
||||||
|
)
|
||||||
|
set(CMAKE_FIND_LIBRARY_SUFFIXES ${_previous_suffixes})
|
||||||
|
|
||||||
|
# Set zstd_LIBRARY to the shared library or fall back to the static library
|
||||||
|
if(zstd_SHARED_LIBRARY)
|
||||||
|
set(_zstd_LIBRARY ${zstd_SHARED_LIBRARY})
|
||||||
|
else()
|
||||||
|
set(_zstd_LIBRARY ${zstd_STATIC_LIBRARY})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Extract version information from the header file
|
||||||
|
if(zstd_INCLUDE_DIR)
|
||||||
|
file(STRINGS ${zstd_INCLUDE_DIR}/zstd.h _ver_major_line
|
||||||
|
REGEX "^#define ZSTD_VERSION_MAJOR *[0-9]+"
|
||||||
|
LIMIT_COUNT 1)
|
||||||
|
string(REGEX MATCH "[0-9]+"
|
||||||
|
zstd_MAJOR_VERSION "${_ver_major_line}")
|
||||||
|
file(STRINGS ${zstd_INCLUDE_DIR}/zstd.h _ver_minor_line
|
||||||
|
REGEX "^#define ZSTD_VERSION_MINOR *[0-9]+"
|
||||||
|
LIMIT_COUNT 1)
|
||||||
|
string(REGEX MATCH "[0-9]+"
|
||||||
|
zstd_MINOR_VERSION "${_ver_minor_line}")
|
||||||
|
file(STRINGS ${zstd_INCLUDE_DIR}/zstd.h _ver_release_line
|
||||||
|
REGEX "^#define ZSTD_VERSION_RELEASE *[0-9]+"
|
||||||
|
LIMIT_COUNT 1)
|
||||||
|
string(REGEX MATCH "[0-9]+"
|
||||||
|
zstd_RELEASE_VERSION "${_ver_release_line}")
|
||||||
|
set(Zstd_VERSION "${zstd_MAJOR_VERSION}.${zstd_MINOR_VERSION}.${zstd_RELEASE_VERSION}")
|
||||||
|
unset(_ver_major_line)
|
||||||
|
unset(_ver_minor_line)
|
||||||
|
unset(_ver_release_line)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args(zstd
|
||||||
|
FOUND_VAR zstd_FOUND
|
||||||
|
REQUIRED_VARS
|
||||||
|
_zstd_LIBRARY
|
||||||
|
zstd_INCLUDE_DIR
|
||||||
|
VERSION_VAR zstd_VERSION
|
||||||
|
)
|
||||||
|
|
||||||
|
if(zstd_FOUND AND zstd_SHARED_LIBRARY AND NOT TARGET zstd::libzstd_shared)
|
||||||
|
add_library(zstd::libzstd_shared SHARED IMPORTED)
|
||||||
|
if(WIN32)
|
||||||
|
set_target_properties(zstd::libzstd_shared PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${zstd_DLL}"
|
||||||
|
IMPORTED_IMPLIB "${zstd_SHARED_LIBRARY}"
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
set_target_properties(zstd::libzstd_shared PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${zstd_SHARED_LIBRARY}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(zstd::libzstd_shared PROPERTIES
|
||||||
|
INTERFACE_COMPILE_OPTIONS "${PC_zstd_CFLAGS_OTHER}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${zstd_INCLUDE_DIR}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(zstd_FOUND AND zstd_STATIC_LIBRARY AND NOT TARGET zstd::libzstd_static)
|
||||||
|
add_library(zstd::libzstd_static STATIC IMPORTED)
|
||||||
|
set_target_properties(zstd::libzstd_static PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${zstd_STATIC_LIBRARY}"
|
||||||
|
INTERFACE_COMPILE_OPTIONS "${PC_zstd_CFLAGS_OTHER}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${zstd_INCLUDE_DIR}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
mark_as_advanced(
|
||||||
|
zstd_INCLUDE_DIR
|
||||||
|
zstd_DLL
|
||||||
|
zstd_SHARED_LIBRARY
|
||||||
|
zstd_STATIC_LIBRARY
|
||||||
|
)
|
||||||
|
|
||||||
|
if (zstd_FOUND)
|
||||||
|
if(zstd_STATIC_LIBRARY)
|
||||||
|
set(zstd_LIBRARIES "zstd::libzstd_static")
|
||||||
|
else ()
|
||||||
|
set(zstd_LIBRARIES "zstd::libzstd_shared")
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
Reference in New Issue
Block a user