mirror of
https://github.com/ultravideo/uvg266.git
synced 2024-11-23 18:14:06 +00:00
[build] Add better version info to the binary for debugging purposes
This commit is contained in:
parent
6b3dd245f6
commit
dc83d15ea7
|
@ -6,10 +6,6 @@ HOMEPAGE_URL https://github.com/ultravideo/uvg266
|
|||
DESCRIPTION "An open-source VVC encoder licensed under 3-clause BSD"
|
||||
VERSION 0.2.3 )
|
||||
|
||||
# Apply dynamic info to the config files
|
||||
configure_file("${PROJECT_SOURCE_DIR}/src/uvg266.pc.in" "${PROJECT_SOURCE_DIR}/src/uvg266.pc" @ONLY)
|
||||
configure_file("${PROJECT_SOURCE_DIR}/src/version.h.in" "${PROJECT_SOURCE_DIR}/src/version.h" @ONLY)
|
||||
|
||||
option(BUILD_SHARED_LIBS "Build using shared uvg266 library" ON)
|
||||
|
||||
option(BUILD_TESTS "Build tests" ON)
|
||||
|
@ -17,7 +13,7 @@ option(BUILD_TESTS "Build tests" ON)
|
|||
|
||||
find_package(Git QUIET)
|
||||
if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
|
||||
# Update submodules as needed
|
||||
# Update submodules as needed
|
||||
option(GIT_SUBMODULE "Check submodules during build" ON)
|
||||
if(GIT_SUBMODULE)
|
||||
message(STATUS "Submodule update")
|
||||
|
@ -28,12 +24,61 @@ if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
|
|||
message(WARNING "git submodule update --init --recursive failed with ${GIT_SUBMOD_RESULT}, please checkout submodules")
|
||||
endif()
|
||||
endif()
|
||||
# Check git hash and fetch tag
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
RESULT_VARIABLE GIT_HEAD_OK
|
||||
OUTPUT_VARIABLE GIT_HEAD)
|
||||
if(GIT_HEAD_OK EQUAL "0")
|
||||
string(SUBSTRING ${GIT_HEAD} 0 30 GIT_TAG_LONG)
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} name-rev --tags --name-only ${GIT_TAG_LONG}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
RESULT_VARIABLE GIT_TAG_OK
|
||||
OUTPUT_VARIABLE GIT_TAG)
|
||||
string(SUBSTRING ${GIT_TAG} 0 9 GIT_TAG_STRIP)
|
||||
|
||||
# If tag is not defined, add part of the commit hash to the version
|
||||
if(GIT_TAG_OK EQUAL "0" AND GIT_TAG_STRIP STREQUAL "undefined")
|
||||
string(SUBSTRING ${GIT_HEAD} 0 7 GIT_TAG_SHORT)
|
||||
set(PROJECT_VERSION ${PROJECT_VERSION}-${GIT_TAG_SHORT})
|
||||
message(INFO " No tag detected, version changed to ${PROJECT_VERSION}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS "${PROJECT_SOURCE_DIR}/greatest/greatest.h")
|
||||
message(WARNING "The submodule greatest was not loaded, some tests may fail")
|
||||
endif()
|
||||
|
||||
# Grab <year>-<month>-<day> timestamp for debug purposes
|
||||
string(TIMESTAMP CMAKE_BUILD_DATE %Y-%m-%d)
|
||||
|
||||
# Format compiler info based on platform
|
||||
set(UVG_COMPILER_VERSION "${CMAKE_C_COMPILER_ID} ${CMAKE_C_COMPILER_VERSION}")
|
||||
|
||||
if(MSVC)
|
||||
if(MSVC_VERSION LESS 1800)
|
||||
set(UVG_COMPILER_VERSION "VS")
|
||||
elseif(MSVC_VERSION LESS 1900)
|
||||
set(UVG_COMPILER_VERSION "VS2013")
|
||||
elseif(MSVC_VERSION LESS 1910)
|
||||
set(UVG_COMPILER_VERSION "VS2015")
|
||||
elseif(MSVC_VERSION LESS 1920)
|
||||
set(UVG_COMPILER_VERSION "VS2017")
|
||||
elseif(MSVC_VERSION LESS 1930)
|
||||
set(UVG_COMPILER_VERSION "VS2019")
|
||||
else()
|
||||
set(UVG_COMPILER_VERSION "VS2022")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Set compiler info to print at runtime
|
||||
set(UVG_COMPILER_STRING "${UVG_COMPILER_VERSION}")
|
||||
|
||||
# Apply dynamic info to the config files
|
||||
configure_file("${PROJECT_SOURCE_DIR}/src/uvg266.pc.in" "${PROJECT_SOURCE_DIR}/src/uvg266.pc" @ONLY)
|
||||
configure_file("${PROJECT_SOURCE_DIR}/src/version.h.in" "${PROJECT_SOURCE_DIR}/src/version.h" @ONLY)
|
||||
|
||||
# Add all sources in src/ base
|
||||
file(GLOB LIB_SOURCES RELATIVE ${PROJECT_SOURCE_DIR} "src/*.h" "src/*.c")
|
||||
|
||||
|
|
|
@ -385,8 +385,9 @@ void cmdline_opts_free(const uvg_api *const api, cmdline_opts_t *opts)
|
|||
|
||||
void print_usage(void)
|
||||
{
|
||||
print_version();
|
||||
fprintf(stdout,
|
||||
"uvg266 usage: -i and --input-res to set input, -o to set output\n"
|
||||
"usage: -i and --input-res to set input, -o to set output\n"
|
||||
" --help for more information\n");
|
||||
}
|
||||
|
||||
|
@ -394,13 +395,13 @@ void print_usage(void)
|
|||
void print_version(void)
|
||||
{
|
||||
fprintf(stdout,
|
||||
"uvg266 " VERSION_STRING "\n"
|
||||
"uvg266 license: 3-clause BSD\n");
|
||||
"uvg266 " VERSION_STRING " [" UVG_COMPILER_STRING "] " UVG_COMPILE_DATE "\n");
|
||||
}
|
||||
|
||||
|
||||
void print_help(void)
|
||||
{
|
||||
print_version();
|
||||
fprintf(stdout,
|
||||
"Usage:\n"
|
||||
"uvg266 -i <input> --input-res <width>x<height> -o <output>\n"
|
||||
|
|
|
@ -34,4 +34,6 @@
|
|||
#ifndef UVG_VERSION
|
||||
#define UVG_VERSION @PROJECT_VERSION@
|
||||
#endif
|
||||
#define UVG_COMPILER_STRING "@UVG_COMPILER_STRING@"
|
||||
#define UVG_COMPILE_DATE "@CMAKE_BUILD_DATE@"
|
||||
#define VERSION_STRING QUOTE_EXPAND(UVG_VERSION)
|
||||
|
|
Loading…
Reference in a new issue