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) 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} ) unset(PROJECT_GIT_REV CACHE) unset(PROJECT_VERSION CACHE) 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_WXWIDGETS=${PROJECT_ENABLE_WXWIDGETS} -DPROJECT_ENABLE_WINFSP=${PROJECT_ENABLE_WINFSP} -DPROJECT_ENABLE_VORBIS=${PROJECT_ENABLE_VORBIS} -DPROJECT_ENABLE_TPL=${PROJECT_ENABLE_TPL} -DPROJECT_ENABLE_TESTING=${PROJECT_ENABLE_TESTING} -DPROJECT_ENABLE_STDUUID=${PROJECT_ENABLE_STDUUID} -DPROJECT_ENABLE_SQLITE=${PROJECT_ENABLE_SQLITE} -DPROJECT_ENABLE_SPDLOG=${PROJECT_ENABLE_SPDLOG} -DPROJECT_ENABLE_SFML=${PROJECT_ENABLE_SFML} -DPROJECT_ENABLE_SECP256K1=${PROJECT_ENABLE_SECP256K1} -DPROJECT_ENABLE_SAGO_PLATFORM_FOLDERS=${PROJECT_ENABLE_SAGO_PLATFORM_FOLDERS} -DPROJECT_ENABLE_ROCKSDB=${PROJECT_ENABLE_ROCKSDB} -DPROJECT_ENABLE_PUGIXML=${PROJECT_ENABLE_PUGIXML} -DPROJECT_ENABLE_OPENSSL=${PROJECT_ENABLE_OPENSSL} -DPROJECT_ENABLE_OPENAL=${PROJECT_ENABLE_OPENAL} -DPROJECT_ENABLE_OGG=${PROJECT_ENABLE_OGG} -DPROJECT_ENABLE_NUSPELL=${PROJECT_ENABLE_NUSPELL} -DPROJECT_ENABLE_LIBSODIUM=${PROJECT_ENABLE_LIBSODIUM} -DPROJECT_ENABLE_LIBEVENT=${PROJECT_ENABLE_LIBEVENT} -DPROJECT_ENABLE_LIBBITCOIN_SYSTEM=${PROJECT_ENABLE_LIBBITCOIN_SYSTEM} -DPROJECT_ENABLE_JSON=${PROJECT_ENABLE_JSON} -DPROJECT_ENABLE_GTKMM=${PROJECT_ENABLE_GTKMM} -DPROJECT_ENABLE_FZF=${PROJECT_ENABLE_FZF} -DPROJECT_ENABLE_FUSE=${PROJECT_ENABLE_FUSE} -DPROJECT_ENABLE_FREETYPE2=${PROJECT_ENABLE_FREETYPE2} -DPROJECT_ENABLE_FONTCONFIG=${PROJECT_ENABLE_FONTCONFIG} -DPROJECT_ENABLE_FMT=${PROJECT_ENABLE_FMT} -DPROJECT_ENABLE_FLAC=${PROJECT_ENABLE_FLAC} -DPROJECT_ENABLE_DTL=${PROJECT_ENABLE_DTL} -DPROJECT_ENABLE_CURL=${PROJECT_ENABLE_CURL} -DPROJECT_ENABLE_CPP_HTTPLIB=${PROJECT_ENABLE_CPP_HTTPLIB} -DPROJECT_ENABLE_CLI11=${PROJECT_ENABLE_CLI11} -DPROJECT_ENABLE_BOOST=${PROJECT_ENABLE_BOOST} -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()