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.2.11 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.1 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 -DBUILD_SHARED_LIBS:BOOL=OFF -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.3 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 -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.0 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 -DZLIB_USE_STATIC_LIBS:BOOL=ON -DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/INSTALL -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL )