Versioning rework

This commit is contained in:
Chlumsky 2022-11-06 12:41:11 +01:00
parent 496b656d8a
commit 3f917b8019
3 changed files with 35 additions and 15 deletions

View File

@ -1,5 +1,6 @@
cmake_minimum_required(VERSION 3.15) 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_CORE_ONLY "Only build the core library with no dependencies" OFF)
option(MSDFGEN_BUILD_STANDALONE "Build the msdfgen standalone executable" ON) option(MSDFGEN_BUILD_STANDALONE "Build the msdfgen standalone executable" ON)
@ -39,13 +40,7 @@ if(MSDFGEN_USE_VCPKG)
endif() endif()
endif() endif()
# Version is specified in vcpkg.json
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")
project(msdfgen VERSION ${MSDFGEN_VERSION} LANGUAGES CXX) project(msdfgen VERSION ${MSDFGEN_VERSION} LANGUAGES CXX)
file(GLOB_RECURSE MSDFGEN_CORE_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "core/*.h" "core/*.hpp") file(GLOB_RECURSE MSDFGEN_CORE_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "core/*.h" "core/*.hpp")
@ -131,6 +126,7 @@ if(MSDFGEN_BUILD_STANDALONE)
endif() endif()
add_executable(msdfgen ${MSDFGEN_STANDALONE_SOURCES}) add_executable(msdfgen ${MSDFGEN_STANDALONE_SOURCES})
target_compile_definitions(msdfgen PUBLIC MSDFGEN_STANDALONE) 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$<$<CONFIG:Debug>:Debug>") set_property(TARGET msdfgen PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
target_link_libraries(msdfgen PRIVATE msdfgen::msdfgen) target_link_libraries(msdfgen PRIVATE msdfgen::msdfgen)
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT msdfgen) set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT msdfgen)

19
cmake/version.cmake Normal file
View File

@ -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)

View File

@ -279,25 +279,30 @@ static const char * writeOutput(const BitmapConstRef<float, N> &bitmap, const ch
#define STRINGIZE_(x) #x #define STRINGIZE_(x) #x
#define STRINGIZE(x) STRINGIZE_(x) #define STRINGIZE(x) STRINGIZE_(x)
#define MSDFGEN_VERSION_STRING STRINGIZE(MSDFGEN_VERSION) #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) #if defined(MSDFGEN_USE_SKIA) && defined(MSDFGEN_USE_OPENMP)
#define TITLE_SUFFIX " with Skia & OpenMP" #define TITLE_SUFFIX " with Skia & OpenMP"
#define EXTRA_UNDERLINE "-------------------" #define SUFFIX_UNDERLINE "-------------------"
#elif defined(MSDFGEN_USE_SKIA) #elif defined(MSDFGEN_USE_SKIA)
#define TITLE_SUFFIX " with Skia" #define TITLE_SUFFIX " with Skia"
#define EXTRA_UNDERLINE "----------" #define SUFFIX_UNDERLINE "----------"
#elif defined(MSDFGEN_USE_OPENMP) #elif defined(MSDFGEN_USE_OPENMP)
#define TITLE_SUFFIX " with OpenMP" #define TITLE_SUFFIX " with OpenMP"
#define EXTRA_UNDERLINE "------------" #define SUFFIX_UNDERLINE "------------"
#else #else
#define TITLE_SUFFIX #define TITLE_SUFFIX
#define EXTRA_UNDERLINE #define SUFFIX_UNDERLINE
#endif #endif
static const char *helpText = static const char *helpText =
"\n" "\n"
"Multi-channel signed distance field generator by Viktor Chlumsky v" MSDFGEN_VERSION_STRING TITLE_SUFFIX "\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" " Usage: msdfgen"
#ifdef _WIN32 #ifdef _WIN32
".exe" ".exe"