mirror of
https://github.com/mhx/dwarfs.git
synced 2025-08-03 09:47:01 -04:00
build: split build into libdwarfs/tools/driver
This commit is contained in:
parent
765699e05e
commit
e0a7a63518
@ -128,7 +128,7 @@ fi
|
||||
if [[ "-$BUILD_TYPE-" == *-static-* ]]; then
|
||||
CMAKE_ARGS_NONSTATIC="${CMAKE_ARGS}"
|
||||
export LDFLAGS="-L/opt/static-libs/$COMPILER/lib"
|
||||
CMAKE_ARGS="${CMAKE_ARGS} -DSTATIC_BUILD_DO_NOT_USE=1 -DUSE_PREFERRED_LIBS=1"
|
||||
CMAKE_ARGS="${CMAKE_ARGS} -DSTATIC_BUILD_DO_NOT_USE=1 -DWITH_UNIVERSAL_BINARY=1"
|
||||
CMAKE_ARGS="${CMAKE_ARGS} -DSTATIC_BUILD_EXTRA_PREFIX=/opt/static-libs/$COMPILER"
|
||||
fi
|
||||
|
||||
|
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@ -40,7 +40,7 @@ jobs:
|
||||
- name: Configure Build
|
||||
shell: cmd
|
||||
run: |
|
||||
cmake -B${{ runner.temp }}\build -S${{ runner.workspace }}\dwarfs -GNinja -DCMAKE_MAKE_PROGRAM=C:\bin\ninja.exe -DCMAKE_BUILD_TYPE=${{ matrix.build_mode }} -DWITH_TESTS=ON -DWITH_BENCHMARKS=ON -DCMAKE_TOOLCHAIN_FILE=C:\vcpkg\scripts\buildsystems\vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -DVCPKG_INSTALLED_DIR=${{ runner.workspace }}\vcpkg-install-dwarfs -DDWARFS_ARTIFACTS_DIR=Z:\artifacts\dwarfs -DWITH_PXATTR=ON
|
||||
cmake -B${{ runner.temp }}\build -S${{ runner.workspace }}\dwarfs -GNinja -DCMAKE_MAKE_PROGRAM=C:\bin\ninja.exe -DCMAKE_BUILD_TYPE=${{ matrix.build_mode }} -DWITH_UNIVERSAL_BINARY=ON -DWITH_TESTS=ON -DWITH_BENCHMARKS=ON -DCMAKE_TOOLCHAIN_FILE=C:\vcpkg\scripts\buildsystems\vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -DVCPKG_INSTALLED_DIR=${{ runner.workspace }}\vcpkg-install-dwarfs -DDWARFS_ARTIFACTS_DIR=Z:\artifacts\dwarfs -DWITH_PXATTR=ON
|
||||
|
||||
- name: Run Build
|
||||
shell: cmd
|
||||
|
434
CMakeLists.txt
434
CMakeLists.txt
@ -26,6 +26,9 @@ project(dwarfs)
|
||||
include(ExternalProject)
|
||||
include(CheckCXXSourceCompiles)
|
||||
|
||||
option(WITH_LIBDWARFS "build with libdwarfs" ON)
|
||||
option(WITH_TOOLS "build with tools" ON)
|
||||
option(WITH_FUSE_DRIVER "build with FUSE driver" ON)
|
||||
option(WITH_TESTS "build with tests" OFF)
|
||||
option(WITH_BENCHMARKS "build with benchmarks" OFF)
|
||||
option(WITH_FUZZ "build with fuzzing binaries" OFF)
|
||||
@ -33,7 +36,7 @@ option(WITH_MAN_OPTION "build with --man option" ON)
|
||||
option(ENABLE_PERFMON "enable performance monitor in all tools" ON)
|
||||
option(TRY_ENABLE_FLAC "build with FLAC support" ON)
|
||||
option(ENABLE_RICEPP "build with RICEPP compression support" ON)
|
||||
option(WITH_UNIVERSAL_BINARY "build with universal binary" ON)
|
||||
option(WITH_UNIVERSAL_BINARY "build with universal binary" OFF)
|
||||
option(WITH_PXATTR "build with pxattr binary" OFF)
|
||||
if(NOT (APPLE OR WIN32))
|
||||
option(ENABLE_STACKTRACE "build with symbolizer support" ON)
|
||||
@ -60,6 +63,10 @@ if(NOT WIN32)
|
||||
option(STATIC_BUILD_DO_NOT_USE "try static build (experimental)" OFF)
|
||||
endif()
|
||||
|
||||
if(STATIC_BUILD_DO_NOT_USE AND NOT(WITH_LIBDWARFS AND WITH_TOOLS AND WITH_FUSE_DRIVER))
|
||||
message(FATAL_ERROR "STATIC_BUILD_DO_NOT_USE requires WITH_LIBDWARFS, WITH_TOOLS and WITH_FUSE_DRIVER")
|
||||
endif()
|
||||
|
||||
# Libraries that we can fetch on demand if necessary
|
||||
#
|
||||
# All of these libraries are header-only and not strictly required once
|
||||
@ -153,80 +160,118 @@ endif()
|
||||
|
||||
if(WITH_MAN_PAGES)
|
||||
include("${CMAKE_SOURCE_DIR}/cmake/manpage.cmake")
|
||||
foreach(man dwarfs.1 mkdwarfs.1 dwarfsck.1 dwarfsextract.1 dwarfs-format.5)
|
||||
if(WITH_LIBDWARFS)
|
||||
list(APPEND DWARFS_MANPAGES dwarfs-format.5)
|
||||
endif()
|
||||
if(WITH_TOOLS)
|
||||
list(APPEND DWARFS_MANPAGES mkdwarfs.1 dwarfsck.1 dwarfsextract.1)
|
||||
endif()
|
||||
if(WITH_FUSE_DRIVER)
|
||||
list(APPEND DWARFS_MANPAGES dwarfs.1)
|
||||
endif()
|
||||
foreach(man ${DWARFS_MANPAGES})
|
||||
add_manpage(${man})
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
include(FetchContent)
|
||||
|
||||
include(${CMAKE_SOURCE_DIR}/cmake/need_fmt.cmake)
|
||||
include(${CMAKE_SOURCE_DIR}/cmake/need_range_v3.cmake)
|
||||
include(${CMAKE_SOURCE_DIR}/cmake/need_phmap.cmake)
|
||||
|
||||
if(WITH_TESTS)
|
||||
include(${CMAKE_SOURCE_DIR}/cmake/need_gtest.cmake)
|
||||
endif()
|
||||
|
||||
find_package(Boost ${BOOST_REQUIRED_VERSION} REQUIRED COMPONENTS chrono iostreams program_options)
|
||||
include(${CMAKE_SOURCE_DIR}/cmake/need_fmt.cmake)
|
||||
include(${CMAKE_SOURCE_DIR}/cmake/need_range_v3.cmake)
|
||||
|
||||
if(APPLE)
|
||||
if(USE_HOMEBREW_LIBARCHIVE)
|
||||
find_program(HOMEBREW_EXE brew)
|
||||
execute_process(
|
||||
COMMAND ${HOMEBREW_EXE} --prefix libarchive
|
||||
OUTPUT_VARIABLE LIBARCHIVE_PREFIX
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
list(PREPEND CMAKE_PREFIX_PATH ${LIBARCHIVE_PREFIX})
|
||||
if(WITH_LIBDWARFS)
|
||||
include(${CMAKE_SOURCE_DIR}/cmake/need_phmap.cmake)
|
||||
|
||||
find_package(Boost ${BOOST_REQUIRED_VERSION} REQUIRED COMPONENTS chrono iostreams program_options)
|
||||
|
||||
if(APPLE)
|
||||
if(USE_HOMEBREW_LIBARCHIVE)
|
||||
find_program(HOMEBREW_EXE brew)
|
||||
execute_process(
|
||||
COMMAND ${HOMEBREW_EXE} --prefix libarchive
|
||||
OUTPUT_VARIABLE LIBARCHIVE_PREFIX
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
list(PREPEND CMAKE_PREFIX_PATH ${LIBARCHIVE_PREFIX})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
pkg_check_modules(LIBCRYPTO REQUIRED IMPORTED_TARGET libcrypto>=${LIBCRYPTO_REQUIRED_VERSION})
|
||||
pkg_check_modules(LIBARCHIVE REQUIRED IMPORTED_TARGET libarchive>=${LIBARCHIVE_REQUIRED_VERSION})
|
||||
pkg_check_modules(XXHASH REQUIRED IMPORTED_TARGET libxxhash>=${XXHASH_REQUIRED_VERSION})
|
||||
pkg_check_modules(ZSTD REQUIRED IMPORTED_TARGET libzstd>=${ZSTD_REQUIRED_VERSION})
|
||||
pkg_check_modules(LIBLZ4 IMPORTED_TARGET liblz4>=${LIBLZ4_REQUIRED_VERSION})
|
||||
pkg_check_modules(LIBLZMA IMPORTED_TARGET liblzma>=${LIBLZMA_REQUIRED_VERSION})
|
||||
pkg_check_modules(LIBBROTLIDEC IMPORTED_TARGET libbrotlidec>=${LIBBROTLI_REQUIRED_VERSION})
|
||||
pkg_check_modules(LIBBROTLIENC IMPORTED_TARGET libbrotlienc>=${LIBBROTLI_REQUIRED_VERSION})
|
||||
# pkg_check_modules(LIBMAGIC IMPORTED_TARGET libmagic>=${LIBMAGIC_REQUIRED_VERSION})
|
||||
if(TRY_ENABLE_FLAC)
|
||||
pkg_check_modules(FLAC IMPORTED_TARGET flac++>=${FLAC_REQUIRED_VERSION})
|
||||
endif()
|
||||
|
||||
if(USE_JEMALLOC)
|
||||
pkg_check_modules(JEMALLOC IMPORTED_TARGET jemalloc>=${JEMALLOC_REQUIRED_VERSION})
|
||||
endif()
|
||||
|
||||
include(${CMAKE_SOURCE_DIR}/cmake/thrift_library.cmake)
|
||||
|
||||
include(${CMAKE_SOURCE_DIR}/cmake/folly.cmake)
|
||||
include(${CMAKE_SOURCE_DIR}/cmake/thrift.cmake)
|
||||
|
||||
if(ENABLE_RICEPP)
|
||||
# TODO: support FetchContent
|
||||
add_subdirectory(ricepp)
|
||||
endif()
|
||||
|
||||
include(${CMAKE_SOURCE_DIR}/cmake/libdwarfs.cmake)
|
||||
|
||||
set(DWARFS_HAVE_LIBZSTD ON)
|
||||
set(DWARFS_USE_JEMALLOC ${USE_JEMALLOC})
|
||||
set(DWARFS_HAVE_RICEPP ${ENABLE_RICEPP})
|
||||
set(DWARFS_HAVE_LIBMAGIC ${LIBMAGIC_FOUND})
|
||||
set(DWARFS_HAVE_LIBLZ4 ${LIBLZ4_FOUND})
|
||||
set(DWARFS_HAVE_LIBLZMA ${LIBLZMA_FOUND})
|
||||
set(DWARFS_HAVE_LIBBROTLI ${LIBBROTLIDEC_FOUND} AND ${LIBBROTLIENC_FOUND})
|
||||
set(DWARFS_HAVE_FLAC ${FLAC_FOUND})
|
||||
set(DWARFS_BUILTIN_MANPAGE ${WITH_MAN_OPTION})
|
||||
set(DWARFS_PERFMON_ENABLED ${ENABLE_PERFMON})
|
||||
set(DWARFS_STACKTRACE_ENABLED ${ENABLE_STACKTRACE})
|
||||
|
||||
configure_file(cmake/config.h.in include/dwarfs/config.h @ONLY)
|
||||
else()
|
||||
find_package(dwarfs ${PRJ_VERSION_MAJOR}.${PRJ_VERSION_MINOR}.${PRJ_VERSION_PATCH} EXACT REQUIRED CONFIG)
|
||||
endif()
|
||||
|
||||
pkg_check_modules(LIBCRYPTO REQUIRED IMPORTED_TARGET libcrypto>=${LIBCRYPTO_REQUIRED_VERSION})
|
||||
pkg_check_modules(LIBARCHIVE REQUIRED IMPORTED_TARGET libarchive>=${LIBARCHIVE_REQUIRED_VERSION})
|
||||
pkg_check_modules(XXHASH REQUIRED IMPORTED_TARGET libxxhash>=${XXHASH_REQUIRED_VERSION})
|
||||
pkg_check_modules(ZSTD REQUIRED IMPORTED_TARGET libzstd>=${ZSTD_REQUIRED_VERSION})
|
||||
pkg_check_modules(LIBLZ4 IMPORTED_TARGET liblz4>=${LIBLZ4_REQUIRED_VERSION})
|
||||
pkg_check_modules(LIBLZMA IMPORTED_TARGET liblzma>=${LIBLZMA_REQUIRED_VERSION})
|
||||
pkg_check_modules(LIBBROTLIDEC IMPORTED_TARGET libbrotlidec>=${LIBBROTLI_REQUIRED_VERSION})
|
||||
pkg_check_modules(LIBBROTLIENC IMPORTED_TARGET libbrotlienc>=${LIBBROTLI_REQUIRED_VERSION})
|
||||
# pkg_check_modules(LIBMAGIC IMPORTED_TARGET libmagic>=${LIBMAGIC_REQUIRED_VERSION})
|
||||
if(TRY_ENABLE_FLAC)
|
||||
pkg_check_modules(FLAC IMPORTED_TARGET flac++>=${FLAC_REQUIRED_VERSION})
|
||||
endif()
|
||||
if(WITH_TOOLS)
|
||||
foreach(tgt mkdwarfs dwarfsck dwarfsextract)
|
||||
add_library(${tgt}_main OBJECT tools/src/${tgt}_main.cpp)
|
||||
add_executable(${tgt} tools/src/${tgt}.cpp)
|
||||
|
||||
if(USE_JEMALLOC)
|
||||
pkg_check_modules(JEMALLOC IMPORTED_TARGET jemalloc>=${JEMALLOC_REQUIRED_VERSION})
|
||||
endif()
|
||||
target_link_libraries(${tgt} PRIVATE ${tgt}_main)
|
||||
|
||||
include(${CMAKE_SOURCE_DIR}/cmake/thrift_library.cmake)
|
||||
list(APPEND MAIN_TARGETS ${tgt}_main)
|
||||
list(APPEND BINARY_TARGETS ${tgt})
|
||||
|
||||
include(${CMAKE_SOURCE_DIR}/cmake/folly.cmake)
|
||||
include(${CMAKE_SOURCE_DIR}/cmake/thrift.cmake)
|
||||
install(TARGETS ${tgt} RUNTIME DESTINATION bin)
|
||||
endforeach()
|
||||
|
||||
if(ENABLE_RICEPP)
|
||||
# TODO: support FetchContent
|
||||
add_subdirectory(ricepp)
|
||||
endif()
|
||||
target_link_libraries(mkdwarfs_main PRIVATE dwarfs_reader dwarfs_writer dwarfs_rewrite)
|
||||
target_link_libraries(dwarfsck_main PRIVATE dwarfs_reader)
|
||||
target_link_libraries(dwarfsextract_main PRIVATE dwarfs_extractor)
|
||||
|
||||
include(${CMAKE_SOURCE_DIR}/cmake/libdwarfs.cmake)
|
||||
if(WITH_UNIVERSAL_BINARY)
|
||||
add_executable(dwarfsuniversal tools/src/universal.cpp)
|
||||
list(APPEND BINARY_TARGETS dwarfsuniversal)
|
||||
|
||||
foreach(tgt mkdwarfs dwarfsck dwarfsextract)
|
||||
add_library(${tgt}_main OBJECT tools/src/${tgt}_main.cpp)
|
||||
|
||||
add_executable(${tgt} tools/src/${tgt}.cpp)
|
||||
|
||||
list(APPEND BINARY_TARGETS ${tgt})
|
||||
endforeach()
|
||||
|
||||
if(WITH_UNIVERSAL_BINARY)
|
||||
add_executable(dwarfsuniversal tools/src/universal.cpp)
|
||||
list(APPEND BINARY_TARGETS dwarfsuniversal)
|
||||
|
||||
target_link_libraries(dwarfsuniversal PRIVATE
|
||||
mkdwarfs_main dwarfsck_main dwarfsextract_main)
|
||||
set_target_properties(dwarfsuniversal PROPERTIES
|
||||
RUNTIME_OUTPUT_DIRECTORY universal
|
||||
OUTPUT_NAME dwarfs-universal)
|
||||
target_link_libraries(dwarfsuniversal PRIVATE
|
||||
mkdwarfs_main dwarfsck_main dwarfsextract_main)
|
||||
set_target_properties(dwarfsuniversal PROPERTIES
|
||||
RUNTIME_OUTPUT_DIRECTORY universal
|
||||
OUTPUT_NAME dwarfs-universal)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(WITH_PXATTR)
|
||||
@ -234,72 +279,72 @@ if(WITH_PXATTR)
|
||||
list(APPEND BINARY_TARGETS pxattr)
|
||||
endif()
|
||||
|
||||
install(TARGETS mkdwarfs dwarfsck dwarfsextract RUNTIME DESTINATION bin)
|
||||
if(WITH_FUSE_DRIVER)
|
||||
include(${CMAKE_SOURCE_DIR}/cmake/need_fuse.cmake)
|
||||
|
||||
list(APPEND MAIN_TARGETS mkdwarfs_main dwarfsck_main dwarfsextract_main)
|
||||
|
||||
include(${CMAKE_SOURCE_DIR}/cmake/need_fuse.cmake)
|
||||
|
||||
if(FUSE3_FOUND OR WINFSP OR APPLE)
|
||||
add_library(dwarfs_main OBJECT tools/src/dwarfs_main.cpp)
|
||||
target_compile_definitions(dwarfs_main PRIVATE _FILE_OFFSET_BITS=64)
|
||||
add_executable(dwarfs-bin tools/src/dwarfs.cpp)
|
||||
target_link_libraries(dwarfs-bin PRIVATE dwarfs_main)
|
||||
set_target_properties(dwarfs-bin PROPERTIES OUTPUT_NAME dwarfs)
|
||||
if(WINFSP)
|
||||
target_compile_definitions(dwarfs_main PRIVATE FUSE_USE_VERSION=32
|
||||
DWARFS_FUSE_LOWLEVEL=0)
|
||||
target_include_directories(dwarfs_main SYSTEM PRIVATE "${WINFSP_PATH}/inc")
|
||||
target_link_libraries(dwarfs_main PRIVATE ${WINFSP})
|
||||
target_link_libraries(dwarfs-bin PRIVATE delayimp.lib)
|
||||
target_link_options(dwarfs-bin PRIVATE /DELAYLOAD:winfsp-x64.dll)
|
||||
if(WITH_UNIVERSAL_BINARY)
|
||||
target_link_libraries(dwarfsuniversal PRIVATE delayimp.lib)
|
||||
target_link_options(dwarfsuniversal PRIVATE /DELAYLOAD:winfsp-x64.dll)
|
||||
if(FUSE3_FOUND OR WINFSP OR APPLE)
|
||||
add_library(dwarfs_main OBJECT tools/src/dwarfs_main.cpp)
|
||||
target_compile_definitions(dwarfs_main PRIVATE _FILE_OFFSET_BITS=64)
|
||||
add_executable(dwarfs-bin tools/src/dwarfs.cpp)
|
||||
target_link_libraries(dwarfs-bin PRIVATE dwarfs_main)
|
||||
set_target_properties(dwarfs-bin PROPERTIES OUTPUT_NAME dwarfs)
|
||||
if(WINFSP)
|
||||
target_compile_definitions(dwarfs_main PRIVATE FUSE_USE_VERSION=32
|
||||
DWARFS_FUSE_LOWLEVEL=0)
|
||||
target_include_directories(dwarfs_main SYSTEM PRIVATE "${WINFSP_PATH}/inc")
|
||||
target_link_libraries(dwarfs_main PRIVATE ${WINFSP})
|
||||
target_link_libraries(dwarfs-bin PRIVATE delayimp.lib)
|
||||
target_link_options(dwarfs-bin PRIVATE /DELAYLOAD:winfsp-x64.dll)
|
||||
if(WITH_UNIVERSAL_BINARY)
|
||||
target_link_libraries(dwarfsuniversal PRIVATE delayimp.lib)
|
||||
target_link_options(dwarfsuniversal PRIVATE /DELAYLOAD:winfsp-x64.dll)
|
||||
endif()
|
||||
elseif(APPLE)
|
||||
target_compile_definitions(dwarfs_main PRIVATE FUSE_USE_VERSION=29)
|
||||
target_link_libraries(dwarfs_main PRIVATE PkgConfig::FUSE)
|
||||
else()
|
||||
target_compile_definitions(dwarfs_main PRIVATE FUSE_USE_VERSION=35)
|
||||
target_link_libraries(dwarfs_main PRIVATE PkgConfig::FUSE3)
|
||||
endif()
|
||||
elseif(APPLE)
|
||||
target_compile_definitions(dwarfs_main PRIVATE FUSE_USE_VERSION=29)
|
||||
target_link_libraries(dwarfs_main PRIVATE PkgConfig::FUSE)
|
||||
else()
|
||||
target_compile_definitions(dwarfs_main PRIVATE FUSE_USE_VERSION=35)
|
||||
target_link_libraries(dwarfs_main PRIVATE PkgConfig::FUSE3)
|
||||
if(WITH_UNIVERSAL_BINARY)
|
||||
target_link_libraries(dwarfsuniversal PRIVATE dwarfs_main)
|
||||
endif()
|
||||
if(WINFSP)
|
||||
install(TARGETS dwarfs-bin RUNTIME DESTINATION bin)
|
||||
else()
|
||||
add_custom_command(OUTPUT mount.dwarfs
|
||||
COMMAND ${CMAKE_COMMAND} -E create_symlink dwarfs mount.dwarfs
|
||||
DEPENDS dwarfs-bin)
|
||||
list(APPEND SYMLINKS mount.dwarfs)
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/mount.dwarfs DESTINATION sbin)
|
||||
install(TARGETS dwarfs-bin RUNTIME DESTINATION sbin)
|
||||
endif()
|
||||
list(APPEND BINARY_TARGETS dwarfs-bin)
|
||||
list(APPEND MAIN_TARGETS dwarfs_main)
|
||||
target_link_libraries(dwarfs_main PRIVATE dwarfs_reader)
|
||||
endif()
|
||||
if(WITH_UNIVERSAL_BINARY)
|
||||
target_link_libraries(dwarfsuniversal PRIVATE dwarfs_main)
|
||||
endif()
|
||||
if(WINFSP)
|
||||
install(TARGETS dwarfs-bin RUNTIME DESTINATION bin)
|
||||
else()
|
||||
add_custom_command(OUTPUT mount.dwarfs
|
||||
COMMAND ${CMAKE_COMMAND} -E create_symlink dwarfs mount.dwarfs
|
||||
DEPENDS dwarfs-bin)
|
||||
list(APPEND SYMLINKS mount.dwarfs)
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/mount.dwarfs DESTINATION sbin)
|
||||
install(TARGETS dwarfs-bin RUNTIME DESTINATION sbin)
|
||||
endif()
|
||||
list(APPEND BINARY_TARGETS dwarfs-bin)
|
||||
list(APPEND MAIN_TARGETS dwarfs_main)
|
||||
endif()
|
||||
|
||||
if(FUSE_FOUND AND (NOT APPLE) AND (WITH_LEGACY_FUSE OR NOT FUSE3_FOUND))
|
||||
add_library(dwarfs2_main tools/src/dwarfs_main.cpp)
|
||||
target_compile_definitions(dwarfs2_main PRIVATE _FILE_OFFSET_BITS=64
|
||||
FUSE_USE_VERSION=29)
|
||||
target_link_libraries(dwarfs2_main PRIVATE PkgConfig::FUSE)
|
||||
add_executable(dwarfs2-bin tools/src/dwarfs.cpp)
|
||||
target_link_libraries(dwarfs2-bin PRIVATE dwarfs2_main)
|
||||
if(WITH_UNIVERSAL_BINARY AND (NOT FUSE3_FOUND))
|
||||
target_link_libraries(dwarfsuniversal PRIVATE dwarfs2_main)
|
||||
if(FUSE_FOUND AND (NOT APPLE) AND (WITH_LEGACY_FUSE OR NOT FUSE3_FOUND))
|
||||
add_library(dwarfs2_main tools/src/dwarfs_main.cpp)
|
||||
target_compile_definitions(dwarfs2_main PRIVATE _FILE_OFFSET_BITS=64
|
||||
FUSE_USE_VERSION=29)
|
||||
target_link_libraries(dwarfs2_main PRIVATE PkgConfig::FUSE)
|
||||
add_executable(dwarfs2-bin tools/src/dwarfs.cpp)
|
||||
target_link_libraries(dwarfs2-bin PRIVATE dwarfs2_main)
|
||||
if(WITH_UNIVERSAL_BINARY AND (NOT FUSE3_FOUND))
|
||||
target_link_libraries(dwarfsuniversal PRIVATE dwarfs2_main)
|
||||
endif()
|
||||
set_target_properties(dwarfs2-bin PROPERTIES OUTPUT_NAME dwarfs2)
|
||||
add_custom_command(OUTPUT mount.dwarfs2
|
||||
COMMAND ${CMAKE_COMMAND} -E create_symlink dwarfs2 mount.dwarfs2
|
||||
DEPENDS dwarfs2-bin)
|
||||
list(APPEND SYMLINKS mount.dwarfs2)
|
||||
install(TARGETS dwarfs2-bin RUNTIME DESTINATION sbin)
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/mount.dwarfs2 DESTINATION sbin)
|
||||
list(APPEND BINARY_TARGETS dwarfs2-bin)
|
||||
list(APPEND MAIN_TARGETS dwarfs2_main)
|
||||
target_link_libraries(dwarfs2_main PRIVATE dwarfs_reader)
|
||||
endif()
|
||||
set_target_properties(dwarfs2-bin PROPERTIES OUTPUT_NAME dwarfs2)
|
||||
add_custom_command(OUTPUT mount.dwarfs2
|
||||
COMMAND ${CMAKE_COMMAND} -E create_symlink dwarfs2 mount.dwarfs2
|
||||
DEPENDS dwarfs2-bin)
|
||||
list(APPEND SYMLINKS mount.dwarfs2)
|
||||
install(TARGETS dwarfs2-bin RUNTIME DESTINATION sbin)
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/mount.dwarfs2 DESTINATION sbin)
|
||||
list(APPEND BINARY_TARGETS dwarfs2-bin)
|
||||
list(APPEND MAIN_TARGETS dwarfs2_main)
|
||||
endif()
|
||||
|
||||
if(WITH_MAN_OPTION)
|
||||
@ -344,46 +389,60 @@ if(WITH_TESTS OR WITH_BENCHMARKS OR WITH_FUZZ)
|
||||
endif()
|
||||
|
||||
if(WITH_TESTS)
|
||||
list(APPEND DWARFS_TESTS
|
||||
badfs_test
|
||||
block_cache_test
|
||||
block_merger_test
|
||||
checksum_test
|
||||
chmod_transformer_test
|
||||
compat_test
|
||||
dwarfs_test
|
||||
entry_test
|
||||
error_test
|
||||
file_access_test
|
||||
filesystem_test
|
||||
filesystem_writer_test
|
||||
fits_categorizer_test
|
||||
fragment_category_test
|
||||
incompressible_categorizer_test
|
||||
integral_value_parser_test
|
||||
lazy_value_test
|
||||
metadata_requirements_test
|
||||
options_test
|
||||
pcm_sample_transformer_test
|
||||
pcmaudio_categorizer_test
|
||||
speedometer_test
|
||||
terminal_test
|
||||
tool_main_test
|
||||
tools_test
|
||||
utils_test
|
||||
file_utils_test
|
||||
worker_group_test
|
||||
)
|
||||
if(WITH_LIBDWARFS)
|
||||
list(APPEND DWARFS_TESTS
|
||||
badfs_test
|
||||
block_merger_test
|
||||
checksum_test
|
||||
chmod_transformer_test
|
||||
compat_test
|
||||
dwarfs_test
|
||||
entry_test
|
||||
error_test
|
||||
file_access_test
|
||||
filesystem_test
|
||||
filesystem_writer_test
|
||||
fits_categorizer_test
|
||||
fragment_category_test
|
||||
incompressible_categorizer_test
|
||||
integral_value_parser_test
|
||||
lazy_value_test
|
||||
metadata_requirements_test
|
||||
options_test
|
||||
pcm_sample_transformer_test
|
||||
pcmaudio_categorizer_test
|
||||
speedometer_test
|
||||
terminal_test
|
||||
utils_test
|
||||
file_utils_test
|
||||
worker_group_test
|
||||
)
|
||||
|
||||
if(WITH_MAN_OPTION)
|
||||
if(FLAC_FOUND)
|
||||
list(APPEND DWARFS_TESTS
|
||||
flac_compressor_test
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(WITH_TOOLS)
|
||||
list(APPEND DWARFS_TESTS
|
||||
block_cache_test
|
||||
tool_main_test
|
||||
)
|
||||
endif()
|
||||
|
||||
if(WITH_TOOLS OR WITH_FUSE_DRIVER)
|
||||
list(APPEND DWARFS_TESTS
|
||||
tools_test
|
||||
)
|
||||
endif()
|
||||
|
||||
if(WITH_TOOLS AND WITH_MAN_OPTION)
|
||||
list(APPEND DWARFS_TESTS manpage_test)
|
||||
endif()
|
||||
|
||||
if(FLAC_FOUND)
|
||||
list(APPEND DWARFS_TESTS flac_compressor_test)
|
||||
endif()
|
||||
|
||||
if(ENABLE_RICEPP)
|
||||
if(WITH_LIBDWARFS AND ENABLE_RICEPP)
|
||||
list(APPEND DWARFS_TESTS ricepp_compressor_test)
|
||||
endif()
|
||||
|
||||
@ -403,23 +462,28 @@ if(WITH_TESTS)
|
||||
$<$<BOOL:${WITH_UNIVERSAL_BINARY}>:DWARFS_HAVE_UNIVERSAL_BINARY>
|
||||
)
|
||||
|
||||
target_link_libraries(tool_main_test PRIVATE
|
||||
mkdwarfs_main dwarfsck_main dwarfsextract_main)
|
||||
if(TARGET tool_main_test)
|
||||
target_link_libraries(tool_main_test PRIVATE mkdwarfs_main dwarfsck_main dwarfsextract_main)
|
||||
endif()
|
||||
|
||||
if(TARGET manpage_test)
|
||||
target_link_libraries(manpage_test PRIVATE mkdwarfs_main dwarfsck_main dwarfsextract_main)
|
||||
if (TARGET dwarfs_main)
|
||||
if(WITH_FUSE_DRIVER)
|
||||
target_link_libraries(manpage_test PRIVATE dwarfs_main)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
target_link_libraries(block_cache_test PRIVATE mkdwarfs_main)
|
||||
if(TARGET block_cache_test)
|
||||
target_link_libraries(block_cache_test PRIVATE mkdwarfs_main)
|
||||
endif()
|
||||
|
||||
foreach(tgt fits_categorizer_test
|
||||
incompressible_categorizer_test
|
||||
pcmaudio_categorizer_test
|
||||
tool_main_test)
|
||||
target_link_libraries(${tgt} PRIVATE dwarfs_writer)
|
||||
if(TARGET ${tgt})
|
||||
target_link_libraries(${tgt} PRIVATE dwarfs_writer)
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
foreach(tgt ${TEST_TARGETS})
|
||||
@ -430,15 +494,17 @@ if(WITH_TESTS)
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
if(WITH_BENCHMARKS)
|
||||
if(WITH_LIBDWARFS AND WITH_BENCHMARKS)
|
||||
find_package(benchmark 1.8)
|
||||
if(benchmark_FOUND)
|
||||
add_executable(dwarfs_benchmark test/dwarfs_benchmark.cpp)
|
||||
target_link_libraries(dwarfs_benchmark PRIVATE dwarfs_test_helpers benchmark::benchmark)
|
||||
target_link_libraries(dwarfs_benchmark PRIVATE dwarfs_reader dwarfs_writer)
|
||||
list(APPEND BINARY_TARGETS dwarfs_benchmark)
|
||||
|
||||
add_executable(multiversioning_benchmark test/multiversioning_benchmark.cpp)
|
||||
target_link_libraries(multiversioning_benchmark PRIVATE benchmark::benchmark)
|
||||
target_link_libraries(multiversioning_benchmark PRIVATE dwarfs_writer)
|
||||
list(APPEND BINARY_TARGETS multiversioning_benchmark)
|
||||
|
||||
add_executable(converter_benchmark test/converter_benchmark.cpp)
|
||||
@ -449,10 +515,11 @@ if(WITH_BENCHMARKS)
|
||||
# TODO: migrate to benchmark?
|
||||
add_executable(segmenter_benchmark test/segmenter_benchmark.cpp)
|
||||
target_link_libraries(segmenter_benchmark PRIVATE dwarfs_follybenchmark_lite dwarfs_test_helpers)
|
||||
target_link_libraries(segmenter_benchmark PRIVATE dwarfs_writer)
|
||||
list(APPEND BINARY_TARGETS segmenter_benchmark)
|
||||
endif()
|
||||
|
||||
if(WITH_FUZZ)
|
||||
if(WITH_LIBDWARFS AND WITH_FUZZ)
|
||||
add_executable(fuzz_categorizers test/fuzz_categorizers.cpp)
|
||||
target_link_libraries(fuzz_categorizers PRIVATE dwarfs_writer)
|
||||
list(APPEND BINARY_TARGETS fuzz_categorizers)
|
||||
@ -462,19 +529,6 @@ if(WITH_FUZZ)
|
||||
list(APPEND BINARY_TARGETS fuzz_mkdwarfs)
|
||||
endif()
|
||||
|
||||
set(DWARFS_HAVE_LIBZSTD ON)
|
||||
set(DWARFS_USE_JEMALLOC ${USE_JEMALLOC})
|
||||
set(DWARFS_HAVE_RICEPP ${ENABLE_RICEPP})
|
||||
set(DWARFS_HAVE_LIBMAGIC ${LIBMAGIC_FOUND})
|
||||
set(DWARFS_HAVE_LIBLZ4 ${LIBLZ4_FOUND})
|
||||
set(DWARFS_HAVE_LIBLZMA ${LIBLZMA_FOUND})
|
||||
set(DWARFS_HAVE_LIBBROTLI ${LIBBROTLIDEC_FOUND} AND ${LIBBROTLIENC_FOUND})
|
||||
set(DWARFS_HAVE_FLAC ${FLAC_FOUND})
|
||||
set(DWARFS_BUILTIN_MANPAGE ${WITH_MAN_OPTION})
|
||||
set(DWARFS_PERFMON_ENABLED ${ENABLE_PERFMON})
|
||||
set(DWARFS_STACKTRACE_ENABLED ${ENABLE_STACKTRACE})
|
||||
configure_file(cmake/config.h.in include/dwarfs/config.h @ONLY)
|
||||
|
||||
foreach(tgt ${BINARY_TARGETS} ${TEST_TARGETS} ${MAIN_TARGETS})
|
||||
target_include_directories(${tgt} PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/tools/include>)
|
||||
endforeach()
|
||||
@ -484,6 +538,7 @@ foreach(tgt ${LIBDWARFS_TARGETS} ${BINARY_TARGETS} ${TEST_TARGETS} ${MAIN_TARGET
|
||||
|
||||
target_link_libraries(${tgt} PUBLIC Boost::boost)
|
||||
|
||||
# TODO: need to get USE_JEMALLOC and others from imported libdwarfs
|
||||
if(USE_JEMALLOC)
|
||||
target_link_libraries(${tgt} PRIVATE PkgConfig::JEMALLOC)
|
||||
endif(USE_JEMALLOC)
|
||||
@ -514,8 +569,6 @@ foreach(tgt ${LIBDWARFS_TARGETS} ${BINARY_TARGETS} ${TEST_TARGETS} ${MAIN_TARGET
|
||||
set_property(TARGET ${tgt} PROPERTY CXX_STANDARD_REQUIRED ON)
|
||||
set_property(TARGET ${tgt} PROPERTY CXX_EXTENSIONS OFF)
|
||||
|
||||
add_dependencies(${tgt} dwarfs_metadata_thrift dwarfs_history_thrift)
|
||||
|
||||
if(ENABLE_COVERAGE)
|
||||
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||
target_compile_options(${tgt} PRIVATE --coverage -fno-omit-frame-pointer)
|
||||
@ -570,33 +623,6 @@ foreach(tgt ${MAIN_TARGETS} ${BINARY_TARGETS} ${TEST_TARGETS})
|
||||
target_link_libraries(${tgt} PRIVATE dwarfs_tool)
|
||||
endforeach()
|
||||
|
||||
target_link_libraries(mkdwarfs_main PRIVATE dwarfs_reader dwarfs_writer dwarfs_rewrite)
|
||||
target_link_libraries(dwarfsck_main PRIVATE dwarfs_reader)
|
||||
target_link_libraries(dwarfsextract_main PRIVATE dwarfs_extractor)
|
||||
|
||||
target_link_libraries(mkdwarfs PRIVATE mkdwarfs_main)
|
||||
target_link_libraries(dwarfsck PRIVATE dwarfsck_main)
|
||||
target_link_libraries(dwarfsextract PRIVATE dwarfsextract_main)
|
||||
|
||||
if(TARGET dwarfsuniversal)
|
||||
target_link_libraries(dwarfsuniversal PRIVATE dwarfs_writer dwarfs_extractor)
|
||||
endif()
|
||||
if(TARGET dwarfs_main)
|
||||
target_link_libraries(dwarfs_main PRIVATE dwarfs_reader)
|
||||
endif()
|
||||
if(TARGET dwarfs2_main)
|
||||
target_link_libraries(dwarfs2_main PRIVATE dwarfs_reader)
|
||||
endif()
|
||||
if(TARGET dwarfs_benchmark)
|
||||
target_link_libraries(dwarfs_benchmark PRIVATE dwarfs_reader dwarfs_writer)
|
||||
endif()
|
||||
if(TARGET multiversioning_benchmark)
|
||||
target_link_libraries(multiversioning_benchmark PRIVATE dwarfs_writer)
|
||||
endif()
|
||||
if(TARGET segmenter_benchmark)
|
||||
target_link_libraries(segmenter_benchmark PRIVATE dwarfs_writer)
|
||||
endif()
|
||||
|
||||
foreach(tgt ${TEST_TARGETS})
|
||||
target_link_libraries(${tgt} PRIVATE dwarfs_writer dwarfs_rewrite dwarfs_extractor)
|
||||
endforeach()
|
||||
@ -823,10 +849,8 @@ if(STATIC_BUILD_DO_NOT_USE OR WIN32)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(DWARFS_GIT_BUILD)
|
||||
configure_file("${PROJECT_SOURCE_DIR}/cmake/dwarfs_install.cmake.in" dwarfs_install.cmake @ONLY)
|
||||
set(CPACK_INSTALL_SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/dwarfs_install.cmake")
|
||||
endif()
|
||||
configure_file("${PROJECT_SOURCE_DIR}/cmake/dwarfs_install.cmake.in" dwarfs_install.cmake @ONLY)
|
||||
set(CPACK_INSTALL_SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/dwarfs_install.cmake")
|
||||
|
||||
if(WIN32)
|
||||
# set(CPACK_GENERATOR "NSIS;ZIP;7Z")
|
||||
|
@ -7,4 +7,4 @@ IF "%build_mode%"=="" (
|
||||
SET build_mode=Release
|
||||
)
|
||||
|
||||
cmake .. -GNinja -DCMAKE_BUILD_TYPE=%build_mode% -DWITH_TESTS=ON -DWITH_BENCHMARKS=ON -DWITH_PXATTR=ON -DCMAKE_TOOLCHAIN_FILE=%USERPROFILE%\git\vcpkg\scripts\buildsystems\vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -DVCPKG_INSTALLED_DIR=%USERPROFILE%\git\@vcpkg-install-dwarfs
|
||||
cmake .. -GNinja -DCMAKE_BUILD_TYPE=%build_mode% -DWITH_UNIVERSAL_BINARY=ON -DWITH_TESTS=ON -DWITH_BENCHMARKS=ON -DWITH_PXATTR=ON -DCMAKE_TOOLCHAIN_FILE=%USERPROFILE%\git\vcpkg\scripts\buildsystems\vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -DVCPKG_INSTALLED_DIR=%USERPROFILE%\git\@vcpkg-install-dwarfs
|
||||
|
Loading…
x
Reference in New Issue
Block a user