From e3e8b3d2d83e66a11c5a54f5589276dce406b18f Mon Sep 17 00:00:00 2001 From: Georg Hagen Date: Sun, 2 Jun 2024 20:51:10 +0200 Subject: [PATCH] Move libarchive build code and use mirrors --- 3rdParty/CMakeLists.txt | 42 +------ 3rdParty/libarchive/CMakeLists.txt | 127 +++++++--------------- 3rdParty/libarchive/ext/CMakeLists.txt | 93 ++++++++++++++++ 3rdParty/libjpeg-turbo/CMakeLists.txt | 3 +- 3rdParty/libjpeg-turbo/ext/CMakeLists.txt | 2 +- CMakeLists.txt | 2 +- 6 files changed, 134 insertions(+), 135 deletions(-) create mode 100644 3rdParty/libarchive/ext/CMakeLists.txt diff --git a/3rdParty/CMakeLists.txt b/3rdParty/CMakeLists.txt index 8807047..cc7e174 100644 --- a/3rdParty/CMakeLists.txt +++ b/3rdParty/CMakeLists.txt @@ -18,45 +18,5 @@ add_subdirectory(imgui) add_subdirectory(tracy) add_subdirectory(libstud-uuid) add_subdirectory(rapidyaml) +add_subdirectory(libarchive) add_subdirectory(libjpeg-turbo) - - -#TODO move into a different file -find_package(LibArchive QUIET) -if (NOT DEFINED LibArchive_LIBRARIES) - file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/deps) - execute_process( - COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} -DTOOLCHAIN_FILE=${TOOLCHAIN_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/libarchive - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/deps - ) - execute_process( - COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR}/deps - RESULT_VARIABLE build_result - ) - if (NOT ${build_result} EQUAL "0") - message(FATAL_ERROR "Failed to build lib archive!") - endif() - - list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/deps/INSTALL) -else () - message("Using system LibArchive") - set(USING_SYSTEM_LIBARCHIVE ON PARENT_SCOPE) -endif () - -function(LinkLibArchive TARGET) - find_package(LibArchive REQUIRED) - set(ZLIB_USE_STATIC_LIBS ON) - find_package(ZLIB REQUIRED) - find_package(LZ4 QUIET) - find_package(zstd QUIET) - find_package(BZip2 QUIET) - find_package(LibLZMA QUIET) - target_include_directories(${TARGET} PRIVATE ${LibArchive_INCLUDE_DIR}) - target_link_libraries(${TARGET} PRIVATE ${LibArchive_LIBRARIES} ${ZLIB_LIBRARIES} ${zstd_LIBRARIES} ${LZ4_LIBRARIES}) - if (BZIP2_LIBRARIES) - target_link_libraries(${TARGET} PRIVATE ${BZIP2_LIBRARIES}) - endif() - if (LIBLZMA_LIBRARIES) - target_link_libraries(${TARGET} PRIVATE ${LIBLZMA_LIBRARIES}) - endif() -endfunction() \ No newline at end of file diff --git a/3rdParty/libarchive/CMakeLists.txt b/3rdParty/libarchive/CMakeLists.txt index bcdb3f5..397b1d9 100644 --- a/3rdParty/libarchive/CMakeLists.txt +++ b/3rdParty/libarchive/CMakeLists.txt @@ -1,93 +1,40 @@ -cmake_minimum_required(VERSION 3.16) -project(build_libarchive) -include(ExternalProject) +include(../../cmake/Utils.cmake) -if(NOT DEFINED ZLIB_REPO) - set(ZLIB_REPO https://github.com/madler/zlib.git) -endif () -if(NOT DEFINED ZSTD_REPO) - set(ZSTD_REPO https://github.com/facebook/zstd) -endif () -if(NOT DEFINED LZ4_REPO) - set(LZ4_REPO https://github.com/lz4/lz4) -endif () -if(NOT DEFINED LIBARCHIVE_REPO) - set(LIBARCHIVE_REPO https://github.com/libarchive/libarchive.git) +find_package(LibArchive QUIET) +if (NOT DEFINED LibArchive_LIBRARIES) + file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/deps) + execute_process( + COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} -DTOOLCHAIN_FILE=${TOOLCHAIN_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/ext -DZLIB_REPO=${ZLIB_REPO} -DZSTD_REPO=${ZSTD_REPO} -DLZ4_REPO=${LZ4_REPO} -DLIBARCHIVE_REPO=${LIBARCHIVE_REPO} + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/deps + ) + execute_process( + COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR}/deps + RESULT_VARIABLE build_result + ) + if (NOT ${build_result} EQUAL "0") + message(FATAL_ERROR "Failed to build lib archive!") + endif() + + list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/deps/INSTALL) +else () + message("Using system LibArchive") + set(USING_SYSTEM_LIBARCHIVE ON PARENT_SCOPE) endif () -ExternalProject_Add(zlib - GIT_REPOSITORY ${ZLIB_REPO} - GIT_TAG v1.3.1 - GIT_SHALLOW TRUE - SOURCE_DIR zlib - BINARY_DIR zlib-build - CMAKE_GENERATOR ${CMAKE_GENERATOR} - CMAKE_ARGS - -DBUILD_SHARED_LIBS:BOOL=OFF - -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE} - -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL - -DCMAKE_BUILD_TYPE:STRING=Release - ) - -ExternalProject_Add(zstd - GIT_REPOSITORY ${ZSTD_REPO} - GIT_TAG v1.5.5 - GIT_SHALLOW TRUE - SOURCE_DIR zstd - SOURCE_SUBDIR build/cmake - BINARY_DIR zstd-build - CMAKE_GENERATOR ${CMAKE_GENERATOR} - CMAKE_ARGS - -DZSTD_BUILD_PROGRAMS:BOOL=OFF - -DZSTD_BUILD_SHARED:BOOL=OFF - -DBUILD_SHARED_LIBS:BOOL=OFF - -DZSTD_BUILD_STATIC:BOOL=ON - -DCMAKE_BUILD_TYPE:STRING=Release - -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE} - -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL - ) - -ExternalProject_Add(lz4 - GIT_REPOSITORY ${LZ4_REPO} - GIT_TAG v1.9.4 - GIT_SHALLOW TRUE - SOURCE_DIR lz4 - BINARY_DIR lz4-build - SOURCE_SUBDIR build/cmake - CMAKE_GENERATOR ${CMAKE_GENERATOR} - CMAKE_ARGS - -DBUILD_SHARED_LIBS:BOOL=OFF - -DLZ4_BUILD_CLI:BOOL=OFF - -DLZ4_BUILD_LEGACY_LZ4C:BOOL=OFF - -DLZ4_BUNDLE_MODE:BOOL=ON - -DCMAKE_BUILD_TYPE:STRING=Release - -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE} - -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL - ) - -ExternalProject_Add( - libarchive - DEPENDS zlib zstd lz4 - GIT_REPOSITORY ${LIBARCHIVE_REPO} - GIT_TAG v3.7.4 - GIT_SHALLOW TRUE - SOURCE_DIR libarchive - BINARY_DIR libarchive-build - CMAKE_GENERATOR ${CMAKE_GENERATOR} - CMAKE_ARGS - -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE} - -DCMAKE_BUILD_TYPE:STRING=Release - -DBUILD_SHARED_LIBS:BOOL=OFF - -DENABLE_TEST:BOOL=OFF - -DENABLE_TAR:BOOL=OFF - -DENABLE_CPIO:BOOL=OFF - -DENABLE_CAT:BOOL=OFF - -DENABLE_OPENSSL:BOOL=OFF - -DENABLE_ACL:BOOL=OFF - -DENABLE_ICONV:BOOL=OFF - -DENABLE_LIBB2:BOOL=OFF - -DENABLE_LIBXML2:BOOL=OFF - -DZLIB_USE_STATIC_LIBS:BOOL=ON - -DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/INSTALL - -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL -) \ No newline at end of file +function(LinkLibArchive TARGET) + find_package(LibArchive REQUIRED) + set(ZLIB_USE_STATIC_LIBS ON) + find_package(ZLIB REQUIRED) + find_package(LZ4 QUIET) + find_package(zstd QUIET) + find_package(BZip2 QUIET) + find_package(LibLZMA QUIET) + target_include_directories(${TARGET} PRIVATE ${LibArchive_INCLUDE_DIR}) + target_link_libraries(${TARGET} PRIVATE ${LibArchive_LIBRARIES} ${ZLIB_LIBRARIES} ${zstd_LIBRARIES} ${LZ4_LIBRARIES}) + if (BZIP2_LIBRARIES) + target_link_libraries(${TARGET} PRIVATE ${BZIP2_LIBRARIES}) + endif() + if (LIBLZMA_LIBRARIES) + target_link_libraries(${TARGET} PRIVATE ${LIBLZMA_LIBRARIES}) + endif() +endfunction() \ No newline at end of file diff --git a/3rdParty/libarchive/ext/CMakeLists.txt b/3rdParty/libarchive/ext/CMakeLists.txt new file mode 100644 index 0000000..bcdb3f5 --- /dev/null +++ b/3rdParty/libarchive/ext/CMakeLists.txt @@ -0,0 +1,93 @@ +cmake_minimum_required(VERSION 3.16) +project(build_libarchive) +include(ExternalProject) + +if(NOT DEFINED ZLIB_REPO) + set(ZLIB_REPO https://github.com/madler/zlib.git) +endif () +if(NOT DEFINED ZSTD_REPO) + set(ZSTD_REPO https://github.com/facebook/zstd) +endif () +if(NOT DEFINED LZ4_REPO) + set(LZ4_REPO https://github.com/lz4/lz4) +endif () +if(NOT DEFINED LIBARCHIVE_REPO) + set(LIBARCHIVE_REPO https://github.com/libarchive/libarchive.git) +endif () + +ExternalProject_Add(zlib + GIT_REPOSITORY ${ZLIB_REPO} + GIT_TAG v1.3.1 + GIT_SHALLOW TRUE + SOURCE_DIR zlib + BINARY_DIR zlib-build + CMAKE_GENERATOR ${CMAKE_GENERATOR} + CMAKE_ARGS + -DBUILD_SHARED_LIBS:BOOL=OFF + -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE} + -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL + -DCMAKE_BUILD_TYPE:STRING=Release + ) + +ExternalProject_Add(zstd + GIT_REPOSITORY ${ZSTD_REPO} + GIT_TAG v1.5.5 + GIT_SHALLOW TRUE + SOURCE_DIR zstd + SOURCE_SUBDIR build/cmake + BINARY_DIR zstd-build + CMAKE_GENERATOR ${CMAKE_GENERATOR} + CMAKE_ARGS + -DZSTD_BUILD_PROGRAMS:BOOL=OFF + -DZSTD_BUILD_SHARED:BOOL=OFF + -DBUILD_SHARED_LIBS:BOOL=OFF + -DZSTD_BUILD_STATIC:BOOL=ON + -DCMAKE_BUILD_TYPE:STRING=Release + -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE} + -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL + ) + +ExternalProject_Add(lz4 + GIT_REPOSITORY ${LZ4_REPO} + GIT_TAG v1.9.4 + GIT_SHALLOW TRUE + SOURCE_DIR lz4 + BINARY_DIR lz4-build + SOURCE_SUBDIR build/cmake + CMAKE_GENERATOR ${CMAKE_GENERATOR} + CMAKE_ARGS + -DBUILD_SHARED_LIBS:BOOL=OFF + -DLZ4_BUILD_CLI:BOOL=OFF + -DLZ4_BUILD_LEGACY_LZ4C:BOOL=OFF + -DLZ4_BUNDLE_MODE:BOOL=ON + -DCMAKE_BUILD_TYPE:STRING=Release + -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE} + -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL + ) + +ExternalProject_Add( + libarchive + DEPENDS zlib zstd lz4 + GIT_REPOSITORY ${LIBARCHIVE_REPO} + GIT_TAG v3.7.4 + GIT_SHALLOW TRUE + SOURCE_DIR libarchive + BINARY_DIR libarchive-build + CMAKE_GENERATOR ${CMAKE_GENERATOR} + CMAKE_ARGS + -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE} + -DCMAKE_BUILD_TYPE:STRING=Release + -DBUILD_SHARED_LIBS:BOOL=OFF + -DENABLE_TEST:BOOL=OFF + -DENABLE_TAR:BOOL=OFF + -DENABLE_CPIO:BOOL=OFF + -DENABLE_CAT:BOOL=OFF + -DENABLE_OPENSSL:BOOL=OFF + -DENABLE_ACL:BOOL=OFF + -DENABLE_ICONV:BOOL=OFF + -DENABLE_LIBB2:BOOL=OFF + -DENABLE_LIBXML2:BOOL=OFF + -DZLIB_USE_STATIC_LIBS:BOOL=ON + -DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/INSTALL + -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL +) \ No newline at end of file diff --git a/3rdParty/libjpeg-turbo/CMakeLists.txt b/3rdParty/libjpeg-turbo/CMakeLists.txt index 4b6d661..750edee 100644 --- a/3rdParty/libjpeg-turbo/CMakeLists.txt +++ b/3rdParty/libjpeg-turbo/CMakeLists.txt @@ -1,4 +1,3 @@ -include(FetchContent) include(../../cmake/Utils.cmake) Find_Package(libjpeg-turbo QUIET) @@ -7,7 +6,7 @@ if (libjpeg-turbo_FOUND) else () file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/deps_ljt) execute_process( - COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} -DTOOLCHAIN_FILE=${TOOLCHAIN_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/ext + COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} -DTOOLCHAIN_FILE=${TOOLCHAIN_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/ext -DLIBJPEGTURBO_REPO=${LIBJPEGTURBO_REPO} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/deps_ljt ) execute_process( diff --git a/3rdParty/libjpeg-turbo/ext/CMakeLists.txt b/3rdParty/libjpeg-turbo/ext/CMakeLists.txt index 8e97fab..792314a 100644 --- a/3rdParty/libjpeg-turbo/ext/CMakeLists.txt +++ b/3rdParty/libjpeg-turbo/ext/CMakeLists.txt @@ -15,7 +15,7 @@ ExternalProject_Add(libjpegturbo CMAKE_GENERATOR ${CMAKE_GENERATOR} CMAKE_ARGS -DBUILD_SHARED_LIBS:BOOL=OFF - -DENABLE_SHARED:BOOL=OFF + -DENABLE_SHARED:BOOL=OFF -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE} -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL -DCMAKE_BUILD_TYPE:STRING=Release diff --git a/CMakeLists.txt b/CMakeLists.txt index 29f607e..1905437 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ include(cmake/VarsFromFile.cmake) include(cmake/SetCompilerSettings.cmake) include(cmake/SetupVulkan.cmake) include(cmake/Filter.cmake) -include(OpenVulkano/cmake/AppleHelper.cmake) +include(cmake/AppleHelper.cmake) set(DEPENDENCY_MIRROR_FILE "DependencyMirrors.txt" CACHE STRING "Dependency mirror") VarsFromFile("${DEPENDENCY_MIRROR_FILE}") # Load mirror list (for CICD)