51 lines
1.5 KiB
CMake
51 lines
1.5 KiB
CMake
cmake_minimum_required(VERSION 3.21 FATAL_ERROR)
|
|
|
|
include("project-meta-info.in")
|
|
|
|
project(waitui
|
|
VERSION ${project_version}
|
|
DESCRIPTION ${project_description}
|
|
HOMEPAGE_URL ${project_homepage}
|
|
LANGUAGES C
|
|
)
|
|
|
|
add_executable(waitui)
|
|
|
|
target_sources(waitui
|
|
PRIVATE
|
|
"src/main.c"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/include/waitui/version.h"
|
|
)
|
|
|
|
target_include_directories(waitui PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/include")
|
|
|
|
target_link_libraries(waitui PRIVATE log)
|
|
|
|
find_package(Git)
|
|
if (GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
|
|
include(GetGitRevisionDescription)
|
|
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD OUTPUT_VARIABLE SHORT_SHA OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
|
|
set(REVISION ${SHORT_SHA} CACHE STRING "git short sha" FORCE)
|
|
|
|
# only use the plugin to tie the configure state to the sha to force rebuilds
|
|
# of files that depend on version.h
|
|
include(GetGitRevisionDescription)
|
|
get_git_head_revision(REFSPEC COMMITHASH)
|
|
else ()
|
|
message(WARNING "Git not found, cannot set version info")
|
|
set(REVISION "unknown")
|
|
endif ()
|
|
|
|
if (NOT project_prerelease STREQUAL "")
|
|
set(WAITUI_VERSION_IS_PRERELEASE ON)
|
|
endif ()
|
|
|
|
math(EXPR PROJECT_VERSION_LONG "${PROJECT_VERSION_MAJOR} * 10000 + ${PROJECT_VERSION_MINOR} * 100 + ${PROJECT_VERSION_PATCH}")
|
|
|
|
configure_file(
|
|
"include/waitui/version.h.in"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/include/waitui/version.h"
|
|
@ONLY
|
|
)
|