snag/CMakeLists.txt

84 lines
2.5 KiB
CMake

cmake_minimum_required(VERSION 3.14)
project(snag)
set(PROJECT_VERSION_MAJOR 0)
set(PROJECT_VERSION_MINOR 1)
set(PROJECT_VERSION_PATCH 0)
string(TIMESTAMP PROJECT_VERSION_BUILD "%y%j.%H%M")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
include(snag_git)
include(snag_platforms)
set(PROJECT_VERSION_SUFFIX "-${GIT_VERSION_SUFFIX}")
# Overwrite suffix for Release or Release Candidate builds
set(PROJECT_VERSION_SUFFIX "-alpha.1")
set(CMAKE_BUILD_TYPE "Release")
if(CMAKE_BUILD_TYPE)
set(BUILD_TYPE ${CMAKE_BUILD_TYPE})
else()
set(BUILD_TYPE "Debug")
endif()
set(PROJECT_VERSION_CODENAME ${OS_RELEASE_VERSION_CODENAME})
set(PROJECT_VERSION_DISPLAY "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}.${PROJECT_VERSION_BUILD}")
message(STATUS "PROJECT_VERSION_CODENAME: ${PROJECT_VERSION_CODENAME}")
message(STATUS "PROJECT_VERSION_DISPLAY: ${PROJECT_VERSION_DISPLAY}")
message(STATUS "")
# Deb package
set(DEB_PACKAGE_VERSION "${PROJECT_VERSION_DISPLAY}${PROJECT_VERSION_SUFFIX}")
if(PROJECT_VERSION_CODENAME)
set(DEB_PACKAGE_VERSION "${DEB_PACKAGE_VERSION}-${PROJECT_VERSION_CODENAME}")
endif()
set(DEB_PACKAGE_NAME "${CMAKE_PROJECT_NAME}")
string(TIMESTAMP DEB_PACKAGE_CHANGELOG_DATE "%a, %d %b %Y %H:%M:%S +0000")
configure_file(
"${CMAKE_SOURCE_DIR}/debian/changelog.in"
"${CMAKE_SOURCE_DIR}/debian/changelog"
)
configure_file(
"${CMAKE_SOURCE_DIR}/source/snag/version_.d.in"
"${CMAKE_SOURCE_DIR}/source/snag/version_.d"
)
message(STATUS "DEB_PACKAGE_NAME: ${DEB_PACKAGE_NAME}")
message(STATUS "DEB_PACKAGE_VERSION: ${DEB_PACKAGE_VERSION}")
message(STATUS "")
file(MAKE_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")
add_custom_command(
OUTPUT "${CMAKE_SOURCE_DIR}/bin/${CMAKE_PROJECT_NAME}"
COMMAND build dlang ldc --output "${CMAKE_SOURCE_DIR}/bin" --project "${CMAKE_SOURCE_DIR}"
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
COMMENT "Building snag with dub"
)
add_custom_target(snag ALL
DEPENDS "${CMAKE_SOURCE_DIR}/bin/${CMAKE_PROJECT_NAME}"
)
include(snag_patch)
add_dependencies(snag apply_config_patch)
install(
FILES "${CMAKE_SOURCE_DIR}/bin/${CMAKE_PROJECT_NAME}"
DESTINATION bin
PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ
)
install(
FILES "${CMAKE_SOURCE_DIR}/files/snag.json.bak"
DESTINATION /etc/snag/
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
)
install(
FILES "${CMAKE_SOURCE_DIR}/files/snag.8"
DESTINATION /usr/share/man/ru/man8/
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
)