mirror of
https://github.com/facebook/zstd.git
synced 2025-07-30 22:23:13 +03:00
- Split monolithic 235-line CMakeLists.txt into focused modules - Main file reduced to 78 lines with clear section organization - Created 5 specialized modules: * ZstdVersion.cmake - CMake policies and version management * ZstdOptions.cmake - Build options and platform configuration * ZstdDependencies.cmake - External dependency management * ZstdBuild.cmake - Build targets and validation * ZstdPackage.cmake - Package configuration generation Benefits: - Improved readability and maintainability - Better separation of concerns - Easier debugging and modification - Preserved 100% backward compatibility - All existing build options and targets unchanged The refactored build system passes all tests and maintains identical functionality while being much easier to understand and maintain.
69 lines
2.1 KiB
CMake
69 lines
2.1 KiB
CMake
# ################################################################
|
|
# ZSTD Build Options Configuration
|
|
# ################################################################
|
|
|
|
# Legacy support configuration
|
|
option(ZSTD_LEGACY_SUPPORT "Enable legacy format support" ON)
|
|
|
|
if(ZSTD_LEGACY_SUPPORT)
|
|
message(STATUS "ZSTD_LEGACY_SUPPORT enabled")
|
|
set(ZSTD_LEGACY_LEVEL 5 CACHE STRING "Legacy support level")
|
|
add_definitions(-DZSTD_LEGACY_SUPPORT=${ZSTD_LEGACY_LEVEL})
|
|
else()
|
|
message(STATUS "ZSTD_LEGACY_SUPPORT disabled")
|
|
add_definitions(-DZSTD_LEGACY_SUPPORT=0)
|
|
endif()
|
|
|
|
# Platform-specific options
|
|
if(APPLE)
|
|
option(ZSTD_FRAMEWORK "Build as Apple Framework" OFF)
|
|
endif()
|
|
|
|
# Android-specific configuration
|
|
if(ANDROID)
|
|
set(ZSTD_MULTITHREAD_SUPPORT_DEFAULT OFF)
|
|
# Handle old Android API levels
|
|
if((NOT ANDROID_PLATFORM_LEVEL) OR (ANDROID_PLATFORM_LEVEL VERSION_LESS 24))
|
|
message(STATUS "Configuring for old Android API - disabling fseeko/ftello")
|
|
add_compile_definitions(LIBC_NO_FSEEKO)
|
|
endif()
|
|
else()
|
|
set(ZSTD_MULTITHREAD_SUPPORT_DEFAULT ON)
|
|
endif()
|
|
|
|
# Multi-threading support
|
|
option(ZSTD_MULTITHREAD_SUPPORT "Enable multi-threading support" ${ZSTD_MULTITHREAD_SUPPORT_DEFAULT})
|
|
|
|
if(ZSTD_MULTITHREAD_SUPPORT)
|
|
message(STATUS "Multi-threading support enabled")
|
|
else()
|
|
message(STATUS "Multi-threading support disabled")
|
|
endif()
|
|
|
|
# Build component options
|
|
option(ZSTD_BUILD_PROGRAMS "Build command-line programs" ON)
|
|
option(ZSTD_BUILD_CONTRIB "Build contrib utilities" OFF)
|
|
option(ZSTD_PROGRAMS_LINK_SHARED "Link programs against shared library" OFF)
|
|
|
|
# Test configuration
|
|
if(BUILD_TESTING)
|
|
set(ZSTD_BUILD_TESTS_default ON)
|
|
else()
|
|
set(ZSTD_BUILD_TESTS_default OFF)
|
|
endif()
|
|
option(ZSTD_BUILD_TESTS "Build test suite" ${ZSTD_BUILD_TESTS_default})
|
|
|
|
# MSVC-specific options
|
|
if(MSVC)
|
|
option(ZSTD_USE_STATIC_RUNTIME "Link to static runtime libraries" OFF)
|
|
endif()
|
|
|
|
# C++ support (needed for tests)
|
|
set(ZSTD_ENABLE_CXX ${ZSTD_BUILD_TESTS})
|
|
if(ZSTD_ENABLE_CXX)
|
|
enable_language(CXX)
|
|
endif()
|
|
|
|
# Set global definitions
|
|
add_definitions(-DXXH_NAMESPACE=ZSTD_)
|