Browse Source

Versioning rework

Chlumsky 2 years ago
parent
commit
3f917b8019
3 changed files with 35 additions and 15 deletions
  1. 3 7
      CMakeLists.txt
  2. 19 0
      cmake/version.cmake
  3. 13 8
      main.cpp

+ 3 - 7
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$<$<CONFIG:Debug>:Debug>")
     target_link_libraries(msdfgen PRIVATE msdfgen::msdfgen)
     set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT msdfgen)

+ 19 - 0
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)

+ 13 - 8
main.cpp

@@ -279,25 +279,30 @@ static const char * writeOutput(const BitmapConstRef<float, N> &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"