From d0591858f4fcd3430f293f88a014051ee5872753 Mon Sep 17 00:00:00 2001 From: Farzon Lotfi <1802579+farzonl@users.noreply.github.com> Date: Wed, 14 Sep 2022 01:40:59 -0400 Subject: [PATCH] make cmake fetch version number and embed it into the binary (#17) * make cmake fetch version number and embed it into the binary * update the icon, include resource file into cli app --- src/cli/CMakeLists.txt | 7 ++ src/cli/main.cpp | 3 +- src/lib/CMakeLists.txt | 4 +- src/lib/Version/CMakeLists.txt | 74 ++++++++++++ src/lib/Version/CMakeListsVersion.cmake | 19 ++++ src/lib/Version/VersionInfo.in | 82 ++++++++++++++ src/lib/Version/VersionResource.rc | 52 +++++++++ .../Version/generate_product_version.cmake | 107 ++++++++++++++++++ src/lib/Version/icon.ico | Bin 0 -> 410598 bytes src/lib/Version/version.cpp.in | 23 ++++ src/lib/Version/version.h | 34 ++++++ src/lib/Version/version.txt | 2 +- 12 files changed, 404 insertions(+), 3 deletions(-) create mode 100644 src/lib/Version/CMakeLists.txt create mode 100644 src/lib/Version/CMakeListsVersion.cmake create mode 100644 src/lib/Version/VersionInfo.in create mode 100644 src/lib/Version/VersionResource.rc create mode 100644 src/lib/Version/generate_product_version.cmake create mode 100644 src/lib/Version/icon.ico create mode 100644 src/lib/Version/version.cpp.in create mode 100644 src/lib/Version/version.h diff --git a/src/cli/CMakeLists.txt b/src/cli/CMakeLists.txt index cd66952..a16d37c 100644 --- a/src/cli/CMakeLists.txt +++ b/src/cli/CMakeLists.txt @@ -4,6 +4,13 @@ set(SOURCE_FILES # add files here main.cpp) +if(WIN32) +list(APPEND SOURCE_FILES + ${CMAKE_CURRENT_BINARY_DIR}/../lib/Version/VersionResource.rc + ${CMAKE_CURRENT_BINARY_DIR}/../lib/Version/VersionInfo.h +) +endif() + include_directories(${CMAKE_SOURCE_DIR}/src/lib) add_executable(${PROJECT_NAME} ${SOURCE_FILES}) diff --git a/src/cli/main.cpp b/src/cli/main.cpp index 29a81a3..ac2e415 100644 --- a/src/cli/main.cpp +++ b/src/cli/main.cpp @@ -6,6 +6,7 @@ #include "Evaluator.h" #include "Symbol/SymbolTableMgr.h" #include "Syntax/SyntaxTree.h" +#include "Version/version.h" #include #include @@ -96,7 +97,7 @@ void evaluate(std::string &line, bool showTree) { } void startRepl(bool showTree) { - std::cout << "warfLang 1.0" << std::endl; + WarfHelper::printVersion(); while (true) { try { std::string line = ""; diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index d5ffd87..fbed7d0 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -26,6 +26,7 @@ add_library (${PROJECT_NAME} STATIC $ $ $ + $ ) target_include_directories(${PROJECT_NAME} @@ -39,4 +40,5 @@ target_include_directories(${PROJECT_NAME} add_subdirectory(Syntax) add_subdirectory(Binding) add_subdirectory(Symbol) -add_subdirectory(Error) \ No newline at end of file +add_subdirectory(Error) +add_subdirectory(Version) \ No newline at end of file diff --git a/src/lib/Version/CMakeLists.txt b/src/lib/Version/CMakeLists.txt new file mode 100644 index 0000000..202fcd0 --- /dev/null +++ b/src/lib/Version/CMakeLists.txt @@ -0,0 +1,74 @@ + + +include ("CMakeListsVersion.cmake") + +set(GIT_EXECUTABLE git) +set(WARF_DESCRIPTION "Warf, An Interpreter for the Warf Language.") + +# the commit's SHA1, and whether the building workspace was dirty or not +execute_process(COMMAND + "${GIT_EXECUTABLE}" rev-parse --short HEAD + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + OUTPUT_VARIABLE GIT_SHA1 + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + +# the date of the commit +execute_process(COMMAND + "${GIT_EXECUTABLE}" log -1 --format=%ad --date=local + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + OUTPUT_VARIABLE GIT_DATE + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + +# the subject of the commit +execute_process(COMMAND + "${GIT_EXECUTABLE}" log -1 --format=%s + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + OUTPUT_VARIABLE GIT_COMMIT_SUBJECT + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + +# the branch of the commit +execute_process(COMMAND + "${GIT_EXECUTABLE}" branch --show-current + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + OUTPUT_VARIABLE GIT_COMMIT_BRANCH + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + + +# generate version.cpp +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/version.cpp.in" + "${CMAKE_CURRENT_BINARY_DIR}/version.cpp" @ONLY) + +set (SourceFiles + ${CMAKE_CURRENT_BINARY_DIR}/version.cpp +) + +if(WIN32) + include(generate_product_version.cmake) + file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/icon.ico + DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) + generate_product_version( + VersionFilesOutputVariable + NAME "${WARF_NAME}" + ICON ${CMAKE_CURRENT_BINARY_DIR}/icon.ico + VERSION_MAJOR ${WARF_MAJOR} + VERSION_MINOR ${WARF_MINOR} + VERSION_PATCH ${WARF_PATCH} + #VERSION_REVISION 0 #could hook this up with the cli + COMPANY_NAME ${WARF_NAME} + FILE_DESCRIPTION ${WARF_DESCRIPTION} + ) +endif() + + +set(HeaderFiles + version.h +) + +add_library (WarfCore.Version OBJECT + ${SourceFiles} ${HeaderFiles} +) +set_target_properties(WarfCore.Version PROPERTIES LINKER_LANGUAGE CXX) + +target_include_directories ( + WarfCore.Version PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} +) diff --git a/src/lib/Version/CMakeListsVersion.cmake b/src/lib/Version/CMakeListsVersion.cmake new file mode 100644 index 0000000..2fba1ad --- /dev/null +++ b/src/lib/Version/CMakeListsVersion.cmake @@ -0,0 +1,19 @@ +# this file is intended to be included by other project CMakeLists.txt files +# in order to make the following Warf version variables available +# WARF_MAJOR : Integer major number (e.g. 0, 1, 2) +# WARF_MINOR : Integer minor number (e.g. 0, 1, 2) +# WARF_PATCH : Integer patch number (e.g. 0, 1, 2) +# WARF_VERSION : Full WARF verion string as MAJOR.MINOR.PATCH+BUILD (e.g. 1.0.5+255) + +file (READ ${CMAKE_CURRENT_LIST_DIR}/version.txt VERSION NEWLINE_CONSUME) +string (REPLACE "." ";" VERSION "${VERSION}") +string (REPLACE "\n" ";" VERSION "${VERSION}") +string (REPLACE "\r" ";" VERSION "${VERSION}") +list (GET VERSION 0 WARF_MAJOR) +list (GET VERSION 1 WARF_MINOR) +list (GET VERSION 2 WARF_PATCH) + +file (READ ${CMAKE_CURRENT_LIST_DIR}/appName.txt WARF_NAME) + + +set (WARF_VERSION "${WARF_MAJOR}.${WARF_MINOR}.${WARF_PATCH}") \ No newline at end of file diff --git a/src/lib/Version/VersionInfo.in b/src/lib/Version/VersionInfo.in new file mode 100644 index 0000000..c77180f --- /dev/null +++ b/src/lib/Version/VersionInfo.in @@ -0,0 +1,82 @@ +#pragma once + +#ifndef PRODUCT_VERSION_MAJOR +#define PRODUCT_VERSION_MAJOR @PRODUCT_VERSION_MAJOR@ +#endif + +#ifndef PRODUCT_VERSION_MINOR +#define PRODUCT_VERSION_MINOR @PRODUCT_VERSION_MINOR@ +#endif + +#ifndef PRODUCT_VERSION_PATCH +#define PRODUCT_VERSION_PATCH @PRODUCT_VERSION_PATCH@ +#endif + +#ifndef PRODUCT_VERSION_BUILD +#define PRODUCT_VERSION_BUILD @PRODUCT_VERSION_REVISION@ +#endif + +#ifndef FILE_VERSION_MAJOR +#define FILE_VERSION_MAJOR @PRODUCT_VERSION_MAJOR@ +#endif + +#ifndef FILE_VERSION_MINOR +#define FILE_VERSION_MINOR @PRODUCT_VERSION_MINOR@ +#endif + +#ifndef FILE_VERSION_PATCH +#define FILE_VERSION_PATCH @PRODUCT_VERSION_PATCH@ +#endif + +#ifndef FILE_VERSION_BUILD +#define FILE_VERSION_BUILD @PRODUCT_VERSION_REVISION@ +#endif + +#ifndef __TO_STRING +#define __TO_STRING_IMPL(x) #x +#define __TO_STRING(x) __TO_STRING_IMPL(x) +#endif + +#define PRODUCT_VERSION_MAJOR_MINOR_STR __TO_STRING(PRODUCT_VERSION_MAJOR) "." __TO_STRING(PRODUCT_VERSION_MINOR) +#define PRODUCT_VERSION_MAJOR_MINOR_PATCH_STR PRODUCT_VERSION_MAJOR_MINOR_STR "." __TO_STRING(PRODUCT_VERSION_PATCH) +#define PRODUCT_VERSION_FULL_STR PRODUCT_VERSION_MAJOR_MINOR_PATCH_STR "." __TO_STRING(PRODUCT_VERSION_BUILD) +#define PRODUCT_VERSION_RESOURCE PRODUCT_VERSION_MAJOR,PRODUCT_VERSION_MINOR,PRODUCT_VERSION_PATCH,PRODUCT_VERSION_BUILD +#define PRODUCT_VERSION_RESOURCE_STR PRODUCT_VERSION_FULL_STR "\0" + +#define FILE_VERSION_MAJOR_MINOR_STR __TO_STRING(FILE_VERSION_MAJOR) "." __TO_STRING(FILE_VERSION_MINOR) +#define FILE_VERSION_MAJOR_MINOR_PATCH_STR FILE_VERSION_MAJOR_MINOR_STR "." __TO_STRING(FILE_VERSION_PATCH) +#define FILE_VERSION_FULL_STR FILE_VERSION_MAJOR_MINOR_PATCH_STR "." __TO_STRING(FILE_VERSION_BUILD) +#define FILE_VERSION_RESOURCE FILE_VERSION_MAJOR,FILE_VERSION_MINOR,FILE_VERSION_PATCH,FILE_VERSION_BUILD +#define FILE_VERSION_RESOURCE_STR FILE_VERSION_FULL_STR "\0" + +#ifndef PRODUCT_ICON +#define PRODUCT_ICON "@PRODUCT_ICON@" +#endif + +#ifndef PRODUCT_COMMENTS +#define PRODUCT_COMMENTS "@PRODUCT_COMMENTS@\0" +#endif + +#ifndef PRODUCT_COMPANY_NAME +#define PRODUCT_COMPANY_NAME "@PRODUCT_COMPANY_NAME@\0" +#endif + +#ifndef PRODUCT_COMPANY_COPYRIGHT +#define PRODUCT_COMPANY_COPYRIGHT "@PRODUCT_COMPANY_COPYRIGHT@\0" +#endif + +#ifndef PRODUCT_FILE_DESCRIPTION +#define PRODUCT_FILE_DESCRIPTION "@PRODUCT_FILE_DESCRIPTION@\0" +#endif + +#ifndef PRODUCT_INTERNAL_NAME +#define PRODUCT_INTERNAL_NAME "@PRODUCT_NAME@\0" +#endif + +#ifndef PRODUCT_ORIGINAL_FILENAME +#define PRODUCT_ORIGINAL_FILENAME "@PRODUCT_ORIGINAL_FILENAME@\0" +#endif + +#ifndef PRODUCT_BUNDLE +#define PRODUCT_BUNDLE "@PRODUCT_BUNDLE@\0" +#endif diff --git a/src/lib/Version/VersionResource.rc b/src/lib/Version/VersionResource.rc new file mode 100644 index 0000000..83147f3 --- /dev/null +++ b/src/lib/Version/VersionResource.rc @@ -0,0 +1,52 @@ +#include "VersionInfo.h" + +#if defined(__MINGW64__) || defined(__MINGW32__) + // MinGW-w64, MinGW + #if defined(__has_include) && __has_include() + #include + #else + #include + #include + #endif +#else + // MSVC, Windows SDK + #include +#endif + +IDI_ICON1 ICON PRODUCT_ICON + +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +VS_VERSION_INFO VERSIONINFO + FILEVERSION FILE_VERSION_RESOURCE + PRODUCTVERSION PRODUCT_VERSION_RESOURCE + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "000904b0" + BEGIN + VALUE "Comments", PRODUCT_COMMENTS + VALUE "CompanyName", PRODUCT_COMPANY_NAME + VALUE "FileDescription", PRODUCT_FILE_DESCRIPTION + VALUE "FileVersion", FILE_VERSION_RESOURCE_STR + VALUE "InternalName", PRODUCT_INTERNAL_NAME + VALUE "LegalCopyright", PRODUCT_COMPANY_COPYRIGHT + VALUE "OriginalFilename", PRODUCT_ORIGINAL_FILENAME + VALUE "ProductName", PRODUCT_BUNDLE + VALUE "ProductVersion", PRODUCT_VERSION_RESOURCE_STR + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x9, 1200 + END +END diff --git a/src/lib/Version/generate_product_version.cmake b/src/lib/Version/generate_product_version.cmake new file mode 100644 index 0000000..bc395d4 --- /dev/null +++ b/src/lib/Version/generate_product_version.cmake @@ -0,0 +1,107 @@ +include (CMakeParseArguments) + +set (GenerateProductVersionCurrentDir ${CMAKE_CURRENT_LIST_DIR}) + +# generate_product_version() function +# +# This function uses VersionInfo.in template file and VersionResource.rc file +# to generate WIN32 resource with version information and general resource strings. +# +# Usage: +# generate_product_version( +# SomeOutputResourceVariable +# NAME MyGreatProject +# ICON ${PATH_TO_APP_ICON} +# VERSION_MAJOR 2 +# VERSION_MINOR 3 +# VERSION_PATCH ${BUILD_COUNTER} +# VERSION_REVISION ${BUILD_REVISION} +# ) +# where BUILD_COUNTER and BUILD_REVISION could be values from your CI server. +# +# You can use generated resource for your executable targets: +# add_executable(target-name ${target-files} ${SomeOutputResourceVariable}) +# +# You can specify resource strings in arguments: +# NAME - name of executable (no defaults, ex: Microsoft Word) +# BUNDLE - bundle (${NAME} is default, ex: Microsoft Office) +# ICON - path to application icon (${CMAKE_SOURCE_DIR}/product.ico by default) +# VERSION_MAJOR - 1 is default +# VERSION_MINOR - 0 is default +# VERSION_PATCH - 0 is default +# VERSION_REVISION - 0 is default +# COMPANY_NAME - your company name (no defaults) +# COMPANY_COPYRIGHT - ${COMPANY_NAME} (C) Copyright ${CURRENT_YEAR} is default +# COMMENTS - ${NAME} v${VERSION_MAJOR}.${VERSION_MINOR} is default +# ORIGINAL_FILENAME - ${NAME} is default +# INTERNAL_NAME - ${NAME} is default +# FILE_DESCRIPTION - ${NAME} is default +function(generate_product_version outfiles) + set (options) + set (oneValueArgs + NAME + BUNDLE + ICON + VERSION_MAJOR + VERSION_MINOR + VERSION_PATCH + VERSION_REVISION + COMPANY_NAME + COMPANY_COPYRIGHT + COMMENTS + ORIGINAL_FILENAME + INTERNAL_NAME + FILE_DESCRIPTION) + set (multiValueArgs) + cmake_parse_arguments(PRODUCT "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + + if (NOT PRODUCT_BUNDLE OR "${PRODUCT_BUNDLE}" STREQUAL "") + set(PRODUCT_BUNDLE "${PRODUCT_NAME}") + endif() + if (NOT PRODUCT_ICON OR "${PRODUCT_ICON}" STREQUAL "") + set(PRODUCT_ICON "${CMAKE_SOURCE_DIR}/product.ico") + endif() + + if (NOT PRODUCT_VERSION_MAJOR EQUAL 0 AND (NOT PRODUCT_VERSION_MAJOR OR "${PRODUCT_VERSION_MAJOR}" STREQUAL "")) + set(PRODUCT_VERSION_MAJOR 1) + endif() + if (NOT PRODUCT_VERSION_MINOR EQUAL 0 AND (NOT PRODUCT_VERSION_MINOR OR "${PRODUCT_VERSION_MINOR}" STREQUAL "")) + set(PRODUCT_VERSION_MINOR 0) + endif() + if (NOT PRODUCT_VERSION_PATCH EQUAL 0 AND (NOT PRODUCT_VERSION_PATCH OR "${PRODUCT_VERSION_PATCH}" STREQUAL "")) + set(PRODUCT_VERSION_PATCH 0) + endif() + if (NOT PRODUCT_VERSION_REVISION EQUAL 0 AND (NOT PRODUCT_VERSION_REVISION OR "${PRODUCT_VERSION_REVISION}" STREQUAL "")) + set(PRODUCT_VERSION_REVISION 0) + endif() + + if (NOT PRODUCT_COMPANY_COPYRIGHT OR "${PRODUCT_COMPANY_COPYRIGHT}" STREQUAL "") + string(TIMESTAMP PRODUCT_CURRENT_YEAR "%Y") + set(PRODUCT_COMPANY_COPYRIGHT "${PRODUCT_COMPANY_NAME} (C) Copyright ${PRODUCT_CURRENT_YEAR}") + endif() + if (NOT PRODUCT_COMMENTS OR "${PRODUCT_COMMENTS}" STREQUAL "") + set(PRODUCT_COMMENTS "${PRODUCT_NAME} v${PRODUCT_VERSION_MAJOR}.${PRODUCT_VERSION_MINOR}") + endif() + if (NOT PRODUCT_ORIGINAL_FILENAME OR "${PRODUCT_ORIGINAL_FILENAME}" STREQUAL "") + set(PRODUCT_ORIGINAL_FILENAME "${PRODUCT_NAME}") + endif() + if (NOT PRODUCT_INTERNAL_NAME OR "${PRODUCT_INTERNAL_NAME}" STREQUAL "") + set(PRODUCT_INTERNAL_NAME "${PRODUCT_NAME}") + endif() + if (NOT PRODUCT_FILE_DESCRIPTION OR "${PRODUCT_FILE_DESCRIPTION}" STREQUAL "") + set(PRODUCT_FILE_DESCRIPTION "${PRODUCT_NAME}") + endif() + + set (_VersionInfoFile ${CMAKE_CURRENT_BINARY_DIR}/VersionInfo.h) + set (_VersionResourceFile ${CMAKE_CURRENT_BINARY_DIR}/VersionResource.rc) + configure_file( + ${GenerateProductVersionCurrentDir}/VersionInfo.in + ${_VersionInfoFile} + @ONLY) + configure_file( + ${GenerateProductVersionCurrentDir}/VersionResource.rc + ${_VersionResourceFile} + COPYONLY) + list(APPEND ${outfiles} ${_VersionInfoFile} ${_VersionResourceFile}) + set (${outfiles} ${${outfiles}} PARENT_SCOPE) +endfunction() diff --git a/src/lib/Version/icon.ico b/src/lib/Version/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..7793b368da3b40a711e6df13e42201035a6eab52 GIT binary patch literal 410598 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 Y36KB@kN^pg011!)36KB@+#>>i1Ht^LzW@LL literal 0 HcmV?d00001 diff --git a/src/lib/Version/version.cpp.in b/src/lib/Version/version.cpp.in new file mode 100644 index 0000000..198314a --- /dev/null +++ b/src/lib/Version/version.cpp.in @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2021 Farzon Lotfi All rights reserved. + * Use of this source code is governed by a BSD-style + * license that can be found in the LICENSE file. + */ + +#include "version.h" +#include + +const std::string WarfHelper::Version::number = "@WARF_VERSION@"; +const std::string WarfHelper::Version::name = "@WARF_NAME@"; + +const std::string WarfHelper::Git::sha1 = "@GIT_SHA1@"; +const std::string WarfHelper::Git::date = "@GIT_DATE@"; +const std::string WarfHelper::Git::subject = "@GIT_COMMIT_SUBJECT@"; +const std::string WarfHelper::Git::branch = "@GIT_COMMIT_BRANCH@"; + + +void WarfHelper::printVersion() { + std::cout << WarfHelper::Version::name << " version " << WarfHelper::Version::number + << "-" << WarfHelper::Git::branch << " commit " << WarfHelper::Git::sha1 + << std::endl; +} \ No newline at end of file diff --git a/src/lib/Version/version.h b/src/lib/Version/version.h new file mode 100644 index 0000000..9af6a5a --- /dev/null +++ b/src/lib/Version/version.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2021 Farzon Lotfi All rights reserved. + * Use of this source code is governed by a BSD-style + * license that can be found in the LICENSE file. + */ + +#ifndef __version_h__ +#define __version_h__ + +#include + +namespace WarfHelper { +struct Version { + static const std::string number; + static const std::string name; + +private: + Version() = delete; +}; +struct Git { + static const std::string sha1; + static const std::string date; + static const std::string subject; + static const std::string branch; + +private: + Git() = delete; +}; + +void printVersion(); + +} // namespace WarfHelper + +#endif //__version_h__ \ No newline at end of file diff --git a/src/lib/Version/version.txt b/src/lib/Version/version.txt index fa3de58..99d85ec 100644 --- a/src/lib/Version/version.txt +++ b/src/lib/Version/version.txt @@ -1 +1 @@ -0.0.5 \ No newline at end of file +0.0.6 \ No newline at end of file