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.
82 lines
3.6 KiB
CMake
82 lines
3.6 KiB
CMake
# ################################################################
|
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
# All rights reserved.
|
|
#
|
|
# This source code is licensed under both the BSD-style license (found in the
|
|
# LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
|
# in the COPYING file in the root directory of this source tree).
|
|
# ################################################################
|
|
|
|
cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Setup CMake environment
|
|
#-----------------------------------------------------------------------------
|
|
set(CMAKE_BUILD_WITH_INSTALL_RPATH ON)
|
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules")
|
|
|
|
# Define project paths
|
|
set(ZSTD_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../..")
|
|
set(LIBRARY_DIR ${ZSTD_SOURCE_DIR}/lib)
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Configure CMake policies and version
|
|
#-----------------------------------------------------------------------------
|
|
include(ZstdVersion)
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Project declaration
|
|
#-----------------------------------------------------------------------------
|
|
project(zstd
|
|
VERSION "${ZSTD_FULL_VERSION}"
|
|
LANGUAGES C ASM # Main library is in C and ASM
|
|
HOMEPAGE_URL "${zstd_HOMEPAGE_URL}"
|
|
DESCRIPTION "${zstd_DESCRIPTION}"
|
|
)
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Build type configuration
|
|
#-----------------------------------------------------------------------------
|
|
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
|
message(STATUS "Setting build type to 'Release' as none was specified.")
|
|
set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE)
|
|
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
|
|
endif()
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Include standard modules
|
|
#-----------------------------------------------------------------------------
|
|
include(GNUInstallDirs)
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Display installation information
|
|
#-----------------------------------------------------------------------------
|
|
message(STATUS "CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}")
|
|
message(STATUS "CMAKE_INSTALL_LIBDIR: ${CMAKE_INSTALL_LIBDIR}")
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Configure build options
|
|
#-----------------------------------------------------------------------------
|
|
include(ZstdOptions)
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Configure compilation flags
|
|
#-----------------------------------------------------------------------------
|
|
include(AddZstdCompilationFlags)
|
|
ADD_ZSTD_COMPILATION_FLAGS(ON ZSTD_ENABLE_CXX ON)
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Configure dependencies
|
|
#-----------------------------------------------------------------------------
|
|
include(ZstdDependencies)
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Configure build targets
|
|
#-----------------------------------------------------------------------------
|
|
include(ZstdBuild)
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Configure package generation
|
|
#-----------------------------------------------------------------------------
|
|
include(ZstdPackage)
|