127 lines
4.8 KiB
CMake
127 lines
4.8 KiB
CMake
cmake_minimum_required(VERSION 3.24)
|
|
|
|
cmake_policy(SET CMP0135 NEW)
|
|
cmake_policy(SET CMP0144 NEW)
|
|
|
|
include(project_name.cmake)
|
|
project(${PROJECT_NAME})
|
|
|
|
include(CheckIncludeFileCXX)
|
|
include(CheckIncludeFiles)
|
|
include(ExternalProject)
|
|
|
|
include(cmake/versions.cmake)
|
|
include(cmake/arch.cmake)
|
|
include(cmake/os.cmake)
|
|
include(cmake/options.cmake)
|
|
include(cmake/settings.cmake)
|
|
|
|
include(cmake/flags.cmake)
|
|
include(cmake/functions.cmake)
|
|
|
|
include(cmake/libraries.cmake)
|
|
|
|
if(PROJECT_BUILD)
|
|
unset(PROJECT_GIT_REV CACHE)
|
|
unset(PROJECT_VERSION CACHE)
|
|
|
|
execute_process(
|
|
COMMAND git rev-parse --short HEAD
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
|
OUTPUT_VARIABLE PROJECT_GIT_REV
|
|
ERROR_QUIET
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/version.cpp "")
|
|
|
|
file(GLOB_RECURSE ADDITIONAL_SOURCES
|
|
${PROJECT_3RD_PARTY_DIR}/src/*.c
|
|
${PROJECT_3RD_PARTY_DIR}/src/*.cpp
|
|
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/version.cpp
|
|
)
|
|
|
|
list(APPEND PROJECT_ADDITIONAL_SOURCES
|
|
${ADDITIONAL_SOURCES}
|
|
)
|
|
|
|
include(project.cmake)
|
|
|
|
configure_file(
|
|
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/version.cpp.in
|
|
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/version.cpp
|
|
@ONLY
|
|
)
|
|
|
|
file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/build/version.sh "export PROJECT_VERSION=${PROJECT_VERSION}")
|
|
file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/build/git_rev.sh "export PROJECT_GIT_REV=${PROJECT_GIT_REV}")
|
|
else()
|
|
message(STATUS "-=[CMake Settings]=-")
|
|
message(STATUS " C standard: ${CMAKE_C_STANDARD}")
|
|
message(STATUS " C++ standard: ${CMAKE_CXX_STANDARD}")
|
|
message(STATUS " CPU architecture: ${PROJECT_MARCH}")
|
|
if(PROJECT_ENABLE_FUSE)
|
|
message(STATUS " FUSE version: ${PROJECT_FUSE}")
|
|
endif()
|
|
|
|
add_custom_target(project ALL
|
|
DEPENDS ${PROJECT_DEPENDENCIES}
|
|
COMMAND cd build && cmake
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
-DCMAKE_GENERATOR=${CMAKE_GENERATOR}
|
|
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
|
|
-DPROJECT_3RD_PARTY_DIR=${PROJECT_3RD_PARTY_DIR}
|
|
-DPROJECT_BUILD=ON
|
|
-DPROJECT_BUILD_ARCH=${PROJECT_BUILD_ARCH}
|
|
-DPROJECT_BUILD_DIR=${PROJECT_BUILD_DIR}
|
|
-DPROJECT_BUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
|
-DPROJECT_CMAKE_BUILD_TYPE=${PROJECT_CMAKE_BUILD_TYPE}
|
|
-DPROJECT_DIST_DIR=${PROJECT_DIST_DIR}
|
|
-DPROJECT_ENABLE_BOOST=${PROJECT_ENABLE_BOOST}
|
|
-DPROJECT_ENABLE_CLI11=${PROJECT_ENABLE_CLI11}
|
|
-DPROJECT_ENABLE_CPP_HTTPLIB=${PROJECT_ENABLE_CPP_HTTPLIB}
|
|
-DPROJECT_ENABLE_CURL=${PROJECT_ENABLE_CURL}
|
|
-DPROJECT_ENABLE_DTL=${PROJECT_ENABLE_DTL}
|
|
-DPROJECT_ENABLE_FLAC=${PROJECT_ENABLE_FLAC}
|
|
-DPROJECT_ENABLE_FMT=${PROJECT_ENABLE_FMT}
|
|
-DPROJECT_ENABLE_FONTCONFIG=${PROJECT_ENABLE_FONTCONFIG}
|
|
-DPROJECT_ENABLE_FREETYPE2=${PROJECT_ENABLE_FREETYPE2}
|
|
-DPROJECT_ENABLE_FUSE=${PROJECT_ENABLE_FUSE}
|
|
-DPROJECT_ENABLE_FZF=${PROJECT_ENABLE_FZF}
|
|
-DPROJECT_ENABLE_GTKMM=${PROJECT_ENABLE_GTKMM}
|
|
-DPROJECT_ENABLE_JSON=${PROJECT_ENABLE_JSON}
|
|
-DPROJECT_ENABLE_LIBBITCOIN_SYSTEM=${PROJECT_ENABLE_LIBBITCOIN_SYSTEM}
|
|
-DPROJECT_ENABLE_LIBEVENT=${PROJECT_ENABLE_LIBEVENT}
|
|
-DPROJECT_ENABLE_LIBSODIUM=${PROJECT_ENABLE_LIBSODIUM}
|
|
-DPROJECT_ENABLE_NUSPELL=${PROJECT_ENABLE_NUSPELL}
|
|
-DPROJECT_ENABLE_OGG=${PROJECT_ENABLE_OGG}
|
|
-DPROJECT_ENABLE_OPENAL=${PROJECT_ENABLE_OPENAL}
|
|
-DPROJECT_ENABLE_OPENSSL=${PROJECT_ENABLE_OPENSSL}
|
|
-DPROJECT_ENABLE_PUGIXML=${PROJECT_ENABLE_PUGIXML}
|
|
-DPROJECT_ENABLE_ROCKSDB=${PROJECT_ENABLE_ROCKSDB}
|
|
-DPROJECT_ENABLE_SAGO_PLATFORM_FOLDERS=${PROJECT_ENABLE_SAGO_PLATFORM_FOLDERS}
|
|
-DPROJECT_ENABLE_SECP256K1=${PROJECT_ENABLE_SECP256K1}
|
|
-DPROJECT_ENABLE_SFML=${PROJECT_ENABLE_SFML}
|
|
-DPROJECT_ENABLE_SPDLOG=${PROJECT_ENABLE_SPDLOG}
|
|
-DPROJECT_ENABLE_SQLITE=${PROJECT_ENABLE_SQLITE}
|
|
-DPROJECT_ENABLE_STDUUID=${PROJECT_ENABLE_STDUUID}
|
|
-DPROJECT_ENABLE_TESTING=${PROJECT_ENABLE_TESTING}
|
|
-DPROJECT_ENABLE_TPL=${PROJECT_ENABLE_TPL}
|
|
-DPROJECT_ENABLE_VORBIS=${PROJECT_ENABLE_VORBIS}
|
|
-DPROJECT_ENABLE_WINFSP=${PROJECT_ENABLE_WINFSP}
|
|
-DPROJECT_ENABLE_WXWIDGETS=${PROJECT_ENABLE_WXWIDGETS}
|
|
-DPROJECT_EXTERNAL_BUILD_ROOT=${PROJECT_EXTERNAL_BUILD_ROOT}
|
|
-DPROJECT_FUSE=${PROJECT_FUSE}
|
|
-DPROJECT_FUSE_INCLUDE_DIRS=${PROJECT_FUSE_INCLUDE_DIRS}
|
|
-DPROJECT_IS_ALPINE=${PROJECT_IS_ALPINE}
|
|
-DPROJECT_IS_ARM64=${PROJECT_IS_ARM64}
|
|
-DPROJECT_IS_MINGW=${PROJECT_IS_MINGW}
|
|
-DPROJECT_IS_MINGW_UNIX=${PROJECT_IS_MINGW_UNIX}
|
|
-DPROJECT_LINK_TYPE=${PROJECT_LINK_TYPE}
|
|
-DPROJECT_REQUIRE_ALPINE=${PROJECT_REQUIRE_ALPINE}
|
|
-DPROJECT_STATIC_LINK=${PROJECT_STATIC_LINK}
|
|
-DPROJECT_TOOLCHAIN_FILE_CMAKE=${PROJECT_TOOLCHAIN_FILE_CMAKE}
|
|
-DPROJECT_TOOLCHAIN_FILE_MESON=${PROJECT_TOOLCHAIN_FILE_MESON}
|
|
)
|
|
endif()
|