From 3f917b801905f5810dd90acc8d61e1a3d63fa023 Mon Sep 17 00:00:00 2001 From: Chlumsky Date: Sun, 6 Nov 2022 12:41:11 +0100 Subject: [PATCH] Versioning rework --- CMakeLists.txt | 10 +++------- cmake/version.cmake | 19 +++++++++++++++++++ main.cpp | 21 +++++++++++++-------- 3 files changed, 35 insertions(+), 15 deletions(-) create mode 100644 cmake/version.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index fa72df9..3295d2b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,6 @@ cmake_minimum_required(VERSION 3.15) +include(cmake/version.cmake) option(MSDFGEN_CORE_ONLY "Only build the core library with no dependencies" OFF) option(MSDFGEN_BUILD_STANDALONE "Build the msdfgen standalone executable" ON) @@ -39,13 +40,7 @@ if(MSDFGEN_USE_VCPKG) endif() endif() - -set(MSDFGEN_VERSION_MAJOR 1) -set(MSDFGEN_VERSION_MINOR 10) -set(MSDFGEN_VERSION_REVISION 0) -set(MSDFGEN_VERSION 1.10) -string(TIMESTAMP MSDFGEN_COPYRIGHT_YEAR "%Y") - +# Version is specified in vcpkg.json project(msdfgen VERSION ${MSDFGEN_VERSION} LANGUAGES CXX) file(GLOB_RECURSE MSDFGEN_CORE_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "core/*.h" "core/*.hpp") @@ -131,6 +126,7 @@ if(MSDFGEN_BUILD_STANDALONE) endif() add_executable(msdfgen ${MSDFGEN_STANDALONE_SOURCES}) target_compile_definitions(msdfgen PUBLIC MSDFGEN_STANDALONE) + target_compile_definitions(msdfgen PRIVATE MSDFGEN_VERSION_UNDERLINE=${MSDFGEN_VERSION_UNDERLINE}) set_property(TARGET msdfgen PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") target_link_libraries(msdfgen PRIVATE msdfgen::msdfgen) set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT msdfgen) diff --git a/cmake/version.cmake b/cmake/version.cmake new file mode 100644 index 0000000..279ace3 --- /dev/null +++ b/cmake/version.cmake @@ -0,0 +1,19 @@ + +# This script reads version from vcpkg.json and sets it to ${MSDFGEN_VERSION} etc. + +cmake_minimum_required(VERSION 3.15) + +file(STRINGS "${CMAKE_CURRENT_LIST_DIR}/../vcpkg.json" MSDFGEN_VCPKG_JSON) + +string(REGEX MATCH "\"version\"[ \t\n\r]*:[ \t\n\r]*\"[^\"]*\"" MSDFGEN_TMP_VERSION_PAIR ${MSDFGEN_VCPKG_JSON}) +string(REGEX REPLACE "\"version\"[ \t\n\r]*:[ \t\n\r]*\"([^\"]*)\"" "\\1" MSDFGEN_VERSION ${MSDFGEN_TMP_VERSION_PAIR}) +string(REGEX REPLACE "^([0-9]*)\\.([0-9]*)\\.([0-9]*)" "\\1" MSDFGEN_VERSION_MAJOR ${MSDFGEN_VERSION}) +string(REGEX REPLACE "^([0-9]*)\\.([0-9]*)\\.([0-9]*)" "\\2" MSDFGEN_VERSION_MINOR ${MSDFGEN_VERSION}) +string(REGEX REPLACE "^([0-9]*)\\.([0-9]*)\\.([0-9]*)" "\\3" MSDFGEN_VERSION_REVISION ${MSDFGEN_VERSION}) +string(LENGTH ${MSDFGEN_VERSION} MSDFGEN_VERSION_LENGTH) +string(REPEAT "-" ${MSDFGEN_VERSION_LENGTH} MSDFGEN_VERSION_UNDERLINE) +string(TIMESTAMP MSDFGEN_COPYRIGHT_YEAR "%Y") + +unset(MSDFGEN_TMP_VERSION_PAIR) +unset(MSDFGEN_VERSION_LENGTH) +unset(MSDFGEN_VCPKG_JSON) diff --git a/main.cpp b/main.cpp index 03797df..3eee08c 100644 --- a/main.cpp +++ b/main.cpp @@ -279,25 +279,30 @@ static const char * writeOutput(const BitmapConstRef &bitmap, const ch #define STRINGIZE_(x) #x #define STRINGIZE(x) STRINGIZE_(x) #define MSDFGEN_VERSION_STRING STRINGIZE(MSDFGEN_VERSION) +#ifdef MSDFGEN_VERSION_UNDERLINE + #define VERSION_UNDERLINE STRINGIZE(MSDFGEN_VERSION_UNDERLINE) +#else + #define VERSION_UNDERLINE "--------" +#endif #if defined(MSDFGEN_USE_SKIA) && defined(MSDFGEN_USE_OPENMP) - #define TITLE_SUFFIX " with Skia & OpenMP" - #define EXTRA_UNDERLINE "-------------------" + #define TITLE_SUFFIX " with Skia & OpenMP" + #define SUFFIX_UNDERLINE "-------------------" #elif defined(MSDFGEN_USE_SKIA) - #define TITLE_SUFFIX " with Skia" - #define EXTRA_UNDERLINE "----------" + #define TITLE_SUFFIX " with Skia" + #define SUFFIX_UNDERLINE "----------" #elif defined(MSDFGEN_USE_OPENMP) - #define TITLE_SUFFIX " with OpenMP" - #define EXTRA_UNDERLINE "------------" + #define TITLE_SUFFIX " with OpenMP" + #define SUFFIX_UNDERLINE "------------" #else #define TITLE_SUFFIX - #define EXTRA_UNDERLINE + #define SUFFIX_UNDERLINE #endif static const char *helpText = "\n" "Multi-channel signed distance field generator by Viktor Chlumsky v" MSDFGEN_VERSION_STRING TITLE_SUFFIX "\n" - "---------------------------------------------------------------------" EXTRA_UNDERLINE "\n" + "------------------------------------------------------------------" VERSION_UNDERLINE SUFFIX_UNDERLINE "\n" " Usage: msdfgen" #ifdef _WIN32 ".exe"