This is an automated email from the ASF dual-hosted git repository. lordgamez pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git
commit 4851fd276e7d8717a3fa0ec66de442a52de3f0d9 Author: Ferenc Gerlits <[email protected]> AuthorDate: Mon Sep 12 17:53:54 2022 +0200 MINIFICPP-1834 Add VERSIONINFO resource file Signed-off-by: Gabor Gyimesi <[email protected]> This closes #1417 --- CMakeLists.txt | 8 +++++++- Windows.md | 6 ++++++ controller/CMakeLists.txt | 10 +++++++++- encrypt-config/CMakeLists.txt | 6 ++++++ libminifi/CMakeLists.txt | 2 +- minifi_main/CMakeLists.txt | 5 +++++ versioninfo.rc.in | 44 +++++++++++++++++++++++++++++++++++++++++++ win_build_vs.bat | 2 +- 8 files changed, 79 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 23d07b5d9..7d25f9a4a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,7 +20,7 @@ cmake_minimum_required(VERSION 3.17) cmake_policy(SET CMP0096 NEW) # policy to preserve the leading zeros in PROJECT_VERSION_{MAJOR,MINOR,PATCH,TWEAK} cmake_policy(SET CMP0065 OLD) # default export policy, required for self-dlopen -project(nifi-minifi-cpp VERSION 0.12.0) +project(nifi-minifi-cpp VERSION 0.13.0) set(PROJECT_NAME "nifi-minifi-cpp") # Optional build number for linux distribution targets' tar.gz output @@ -54,6 +54,12 @@ endif() message("BUILD_IDENTIFIER is ${BUILD_IDENTIFIER}") +if (WIN32) + set(LEGAL_COPYRIGHT "Apache License v2.0" CACHE STRING "Used in Windows versioninfo.rc") + set(COMPANY_NAME "Apache Software Foundation" CACHE STRING "Used in Windows versioninfo.rc") + set(PRODUCT_NAME "MiNiFi C++" CACHE STRING "Used in Windows versioninfo.rc") +endif() + if (${FORCE_COLORED_OUTPUT}) message("CMAKE_CXX_COMPILER_ID is ${CMAKE_CXX_COMPILER_ID}") if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") diff --git a/Windows.md b/Windows.md index 0c374ade6..87be64da4 100644 --- a/Windows.md +++ b/Windows.md @@ -82,6 +82,12 @@ Examples: `win_build_vs.bat` requires a Visual Studio 2019 build environment to be set up. Use the `x86 Native Tools Command Prompt for VS 2019`, or the `x64 Native Tools Command Prompt for VS 2019` for 32-bit and 64-bit builds respectively. +You can specify additional CMake arguments by setting the EXTRA_CMAKE_ARGUMENTS variable: +``` +> set EXTRA_CMAKE_ARGUMENTS=-DCOMPANY_NAME="Acme Inc" -DPRODUCT_NAME="Roadrunner Stopper" +> win_build_vs.bat ... +``` + ## Building directly with CMake The project can also be built manually using CMake. It requires the same environment the build script does (the proper Native Tools Command Prompt). diff --git a/controller/CMakeLists.txt b/controller/CMakeLists.txt index eaff1b8b4..f3e70d45a 100644 --- a/controller/CMakeLists.txt +++ b/controller/CMakeLists.txt @@ -30,7 +30,15 @@ endif() include(CppVersion) set_cpp_version() -add_executable(minificontroller MiNiFiController.cpp ../minifi_main/MainHelper.cpp) +set(MINIFI_CONTROLLER_SOURCES MiNiFiController.cpp ../minifi_main/MainHelper.cpp) +if (WIN32) + set(EXECUTABLE_FILE_NAME "minificontroller.exe") + set(EXECUTABLE_FILE_DESCRIPTION "${PRODUCT_NAME} controller") + configure_file(${CMAKE_SOURCE_DIR}/versioninfo.rc.in ${CMAKE_CURRENT_BINARY_DIR}/versioninfo.rc @ONLY) + list(APPEND MINIFI_CONTROLLER_SOURCES "${CMAKE_CURRENT_BINARY_DIR}/versioninfo.rc") +endif() + +add_executable(minificontroller ${MINIFI_CONTROLLER_SOURCES}) target_link_libraries(minificontroller ${LIBMINIFI} cxxopts Threads::Threads) set_target_properties(minificontroller PROPERTIES diff --git a/encrypt-config/CMakeLists.txt b/encrypt-config/CMakeLists.txt index 7be46f8f4..5c4005b3a 100644 --- a/encrypt-config/CMakeLists.txt +++ b/encrypt-config/CMakeLists.txt @@ -17,6 +17,12 @@ # under the License. file(GLOB ENCRYPT_CONFIG_FILES "*.cpp") +if (WIN32) + set(EXECUTABLE_FILE_NAME "encrypt-config.exe") + set(EXECUTABLE_FILE_DESCRIPTION "${PRODUCT_NAME} encrypt-config tool") + configure_file(${CMAKE_SOURCE_DIR}/versioninfo.rc.in ${CMAKE_CURRENT_BINARY_DIR}/versioninfo.rc @ONLY) + list(APPEND ENCRYPT_CONFIG_FILES "${CMAKE_CURRENT_BINARY_DIR}/versioninfo.rc") +endif() add_executable(encrypt-config "${ENCRYPT_CONFIG_FILES}") target_include_directories(encrypt-config PRIVATE ../libminifi/include) target_link_libraries(encrypt-config libsodium ${LIBMINIFI}) diff --git a/libminifi/CMakeLists.txt b/libminifi/CMakeLists.txt index 9bcfd218d..27d1c4f50 100644 --- a/libminifi/CMakeLists.txt +++ b/libminifi/CMakeLists.txt @@ -19,7 +19,7 @@ cmake_minimum_required (VERSION 3.16) cmake_policy(SET CMP0096 NEW) # policy to preserve the leading zeros in PROJECT_VERSION_{MAJOR,MINOR,PATCH,TWEAK} -project(nifi-libcore-minifi VERSION 0.12.0) +project(nifi-libcore-minifi VERSION 0.13.0) set(PROJECT_NAME "nifi-libcore-minifi") if (WIN32) diff --git a/minifi_main/CMakeLists.txt b/minifi_main/CMakeLists.txt index ebde70042..ea7c9e381 100644 --- a/minifi_main/CMakeLists.txt +++ b/minifi_main/CMakeLists.txt @@ -36,6 +36,11 @@ set(MINIFIEXE_SOURCES MiNiFiMain.cpp MainHelper.cpp MiNiFiWindowsService.cpp Age if(WIN32) set_source_files_properties("${CMAKE_BINARY_DIR}/libminifi/src/core/logging/WindowsMessageTextFile.rc" PROPERTIES GENERATED TRUE) list(APPEND MINIFIEXE_SOURCES "${CMAKE_BINARY_DIR}/libminifi/src/core/logging/WindowsMessageTextFile.rc") + + set(EXECUTABLE_FILE_NAME "minifi.exe") + set(EXECUTABLE_FILE_DESCRIPTION "${PRODUCT_NAME} agent") + configure_file(${CMAKE_SOURCE_DIR}/versioninfo.rc.in ${CMAKE_CURRENT_BINARY_DIR}/versioninfo.rc @ONLY) + list(APPEND MINIFIEXE_SOURCES "${CMAKE_CURRENT_BINARY_DIR}/versioninfo.rc") endif() add_executable(minifiexe ${MINIFIEXE_SOURCES}) diff --git a/versioninfo.rc.in b/versioninfo.rc.in new file mode 100644 index 000000000..3f42108d3 --- /dev/null +++ b/versioninfo.rc.in @@ -0,0 +1,44 @@ +#include <windows.h> + +#define VER_FILEVERSION @PROJECT_VERSION_MAJOR@,@PROJECT_VERSION_MINOR@,@PROJECT_VERSION_PATCH@,0 +#define VER_FILEVERSION_STR "@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@\0" + +#define VER_PRODUCTVERSION @PROJECT_VERSION_MAJOR@,@PROJECT_VERSION_MINOR@,@PROJECT_VERSION_PATCH@,0 +#define VER_PRODUCTVERSION_STR "@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@\0" + +#ifndef DEBUG +#define VER_DEBUG 0 +#else +#define VER_DEBUG VS_FF_DEBUG +#endif + +VS_VERSION_INFO VERSIONINFO +FILEVERSION VER_FILEVERSION +PRODUCTVERSION VER_PRODUCTVERSION +FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +FILEFLAGS VER_DEBUG +FILEOS VOS__WINDOWS32 +FILETYPE VFT_APP +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "0409FDE9" + BEGIN + VALUE "LegalCopyright", "@LEGAL_COPYRIGHT@" + VALUE "CompanyName", "@COMPANY_NAME@" + VALUE "ProductName", "@PRODUCT_NAME@" + VALUE "ProductVersion", VER_PRODUCTVERSION_STR + VALUE "OriginalFilename", "@EXECUTABLE_FILE_NAME@" + VALUE "FileDescription", "@EXECUTABLE_FILE_DESCRIPTION@" + VALUE "FileVersion", VER_FILEVERSION_STR + END + END + + BLOCK "VarFileInfo" + BEGIN + /* 0x409 == US English, 65001 = UTF-8 */ + /* this corresponds to the BLOCK statement under StringFileInfo: 65001 == 0xFDE9 */ + VALUE "Translation", 0x409, 65001 + /* more translations could be added here, with more corresponding StringFileInfo blocks */ + END +END diff --git a/win_build_vs.bat b/win_build_vs.bat index 13619fe6c..88572536d 100755 --- a/win_build_vs.bat +++ b/win_build_vs.bat @@ -121,7 +121,7 @@ cmake -G %generator% -A %build_platform% -DINSTALLER_MERGE_MODULES=%installer_me -DENABLE_MQTT=%enable_mqtt% -DENABLE_OPC=%enable_opc% -DENABLE_OPENWSMAN=%enable_openwsman% -DENABLE_OPS=%enable_ops% -DENABLE_PCAP=%enable_pcap% ^ -DENABLE_SCRIPTING=%enable_scripting% -DENABLE_SENSORS=%enable_sensors% -DENABLE_TENSORFLOW=%enable_tensorflow% -DENABLE_USB_CAMERA=%enable_usb_camera% ^ -DBUILD_ROCKSDB=ON -DFORCE_WINDOWS=ON -DUSE_SYSTEM_UUID=OFF -DDISABLE_LIBARCHIVE=OFF -DEXCLUDE_BOOST=ON -DENABLE_WEL=ON -DFAIL_ON_WARNINGS=OFF -DSKIP_TESTS=%skiptests% ^ - %strict_gsl_checks% %redist% -DENABLE_LINTER=%build_linter% "%scriptdir%" && %buildcmd% + %strict_gsl_checks% %redist% -DENABLE_LINTER=%build_linter% %EXTRA_CMAKE_ARGUMENTS% "%scriptdir%" && %buildcmd% IF %ERRORLEVEL% NEQ 0 EXIT /b %ERRORLEVEL% if [%cpack%] EQU [ON] ( cpack -C %cmake_build_type%
