From 379305e2a8d93e2e04028d68ab8848c68ada5b86 Mon Sep 17 00:00:00 2001 From: redtide Date: Thu, 4 Jan 2024 09:57:29 +0100 Subject: [PATCH] Fixed Git build version in the about dialog previously the library build version was displayed instead, which is no more the same after the library and plugins repository split. --- plugins/CMakeLists.txt | 13 +++++++++++++ plugins/editor/CMakeLists.txt | 20 ++++++++++++-------- plugins/editor/src/editor/DlgAbout.cpp | 6 +++--- plugins/git-build-id/PluginGitBuildId.h | 21 +++++++++++++++++++++ plugins/puredata/CMakeLists.txt | 13 +++++++------ plugins/puredata/sfizz_puredata.c | 6 +++--- 6 files changed, 59 insertions(+), 20 deletions(-) create mode 100644 plugins/git-build-id/PluginGitBuildId.h diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index eaf41fb2..b8ef987b 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -38,6 +38,19 @@ target_link_libraries(plugins-common PRIVATE sfizz::internal sfizz::sfizz) add_library(sfizz::plugins-common ALIAS plugins-common) +include(GitBuildID) +make_git_build_id( + SOURCE_DIR "${PROJECT_SOURCE_DIR}" + OUTPUT_FILE "${PROJECT_BINARY_DIR}/git-build-id/PluginGitBuildId.c" + PREFIX "Plugin" +) +add_library(plugins_git_build_id STATIC EXCLUDE_FROM_ALL + "${PROJECT_SOURCE_DIR}/plugins/git-build-id/PluginGitBuildId.h" + "${PROJECT_BINARY_DIR}/git-build-id/PluginGitBuildId.c" +) +target_include_directories(plugins_git_build_id PUBLIC "${PROJECT_SOURCE_DIR}/plugins/git-build-id") +add_library(plugins::git_build_id ALIAS plugins_git_build_id) + # Link system dependencies if(WIN32) elseif(ANDROID) diff --git a/plugins/editor/CMakeLists.txt b/plugins/editor/CMakeLists.txt index 555658d0..23dd8de0 100644 --- a/plugins/editor/CMakeLists.txt +++ b/plugins/editor/CMakeLists.txt @@ -99,9 +99,12 @@ add_library(sfizz_editor STATIC EXCLUDE_FROM_ALL ) add_library(sfizz::editor ALIAS sfizz_editor) -target_include_directories(sfizz_editor PUBLIC "src") +target_include_directories(sfizz_editor PUBLIC src) target_link_libraries(sfizz_editor PUBLIC sfizz::messaging sfizz::plugins-common) -target_link_libraries(sfizz_editor PRIVATE sfizz::vstgui) +target_link_libraries(sfizz_editor PRIVATE + sfizz::vstgui + plugins::git_build_id +) target_compile_definitions(sfizz_editor PRIVATE "SFIZZ_VERSION=\"${CMAKE_PROJECT_VERSION}\"") if(APPLE) @@ -137,9 +140,13 @@ else() target_include_directories(sfizz_editor PRIVATE ${sfizz-gio_INCLUDE_DIRS}) target_link_libraries(sfizz_editor PRIVATE ${sfizz-gio_LIBRARIES}) endif() -target_link_libraries(sfizz_editor PRIVATE sfizz::colorspaces sfizz::stb_image - sfizz::bit_array sfizz::filesystem sfizz::pugixml) - +target_link_libraries(sfizz_editor PRIVATE + sfizz::colorspaces + sfizz::stb_image + sfizz::bit_array + sfizz::filesystem + sfizz::pugixml +) # layout tool if(NOT CMAKE_CROSSCOMPILING) set(LAYOUTMAKER_SOURCES @@ -161,6 +168,3 @@ if(NOT CMAKE_CROSSCOMPILING) DEPENDS layout-maker "${CMAKE_CURRENT_SOURCE_DIR}/layout/${_layout}.fl") endforeach() endif() - -# Git build identifier -target_link_libraries(sfizz_editor PRIVATE sfizz-git-build-id) diff --git a/plugins/editor/src/editor/DlgAbout.cpp b/plugins/editor/src/editor/DlgAbout.cpp index a80cd193..610df6da 100644 --- a/plugins/editor/src/editor/DlgAbout.cpp +++ b/plugins/editor/src/editor/DlgAbout.cpp @@ -7,7 +7,7 @@ #include "DlgAbout.h" #include "GUIComponents.h" #include "GUIDefs.h" -#include "GitBuildId.h" +#include "PluginGitBuildId.h" #include "NativeHelpers.h" #include "utility/vstgui_before.h" @@ -53,8 +53,8 @@ SAboutDialog::SAboutDialog(const CRect& bounds) const char* version = SFIZZ_VERSION; std::string versionBuf; - if (GitBuildId[0]) { - versionBuf = absl::StrCat(SFIZZ_VERSION ".", GitBuildId); + if (PluginGitBuildId[0]) { + versionBuf = absl::StrCat(SFIZZ_VERSION ".", PluginGitBuildId); version = versionBuf.c_str(); } #if 0 diff --git a/plugins/git-build-id/PluginGitBuildId.h b/plugins/git-build-id/PluginGitBuildId.h new file mode 100644 index 00000000..66a73526 --- /dev/null +++ b/plugins/git-build-id/PluginGitBuildId.h @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: BSD-2-Clause + +// This code is part of the sfizz library and is licensed under a BSD 2-clause +// license. You should have receive a LICENSE.md file along with the code. +// If not, contact the sfizz maintainers at https://github.com/sfztools/sfizz + +#pragma once + +#if defined(__cplusplus) +extern "C" { +#endif + +/** + * @brief Short identifier of the current head commit. + * This generated identifier is empty if the build is not from a Git repository. + */ +extern const char* PluginGitBuildId; + +#if defined(__cplusplus) +} // extern "C" +#endif diff --git a/plugins/puredata/CMakeLists.txt b/plugins/puredata/CMakeLists.txt index f0150f03..2e4eb35e 100644 --- a/plugins/puredata/CMakeLists.txt +++ b/plugins/puredata/CMakeLists.txt @@ -26,9 +26,13 @@ endfunction() add_pd_external(sfizz_puredata "sfizz_puredata.c") target_compile_definitions(sfizz_puredata PRIVATE "MIDI_CC_COUNT=${MIDI_CC_COUNT}" - "SFIZZ_VERSION=\"${CMAKE_PROJECT_VERSION}\"") -target_link_libraries(sfizz_puredata PRIVATE sfizz::import sfizz::sfizz) - + "SFIZZ_VERSION=\"${CMAKE_PROJECT_VERSION}\"" +) +target_link_libraries(sfizz_puredata PRIVATE + sfizz::import + sfizz::sfizz + plugins::git_build_id +) set_target_properties(sfizz_puredata PROPERTIES OUTPUT_NAME "sfizz" LIBRARY_OUTPUT_DIRECTORY "${PUREDATA_BINARY_DIR}/$<0:>") @@ -38,9 +42,6 @@ if(MINGW) PROPERTY LINK_FLAGS " -static") endif() -# Git build identifier -target_link_libraries(sfizz_puredata PRIVATE sfizz-git-build-id) - # Copy resources copy_puredata_resources(sfizz_puredata "${CMAKE_CURRENT_SOURCE_DIR}" diff --git a/plugins/puredata/sfizz_puredata.c b/plugins/puredata/sfizz_puredata.c index e664627f..ab101583 100644 --- a/plugins/puredata/sfizz_puredata.c +++ b/plugins/puredata/sfizz_puredata.c @@ -4,7 +4,7 @@ // license. You should have receive a LICENSE.md file along with the code. // If not, contact the sfizz maintainers at https://github.com/sfztools/sfizz -#include "GitBuildId.h" +#include "PluginGitBuildId.h" #include #include #include @@ -294,8 +294,8 @@ __attribute__((visibility("default"))) #endif void sfizz_setup() { - if (GitBuildId[0]) - post("sfizz external for Puredata, version '%s.%s'", SFIZZ_VERSION, GitBuildId); + if (PluginGitBuildId[0]) + post("sfizz external for Puredata, version '%s.%s'", SFIZZ_VERSION, PluginGitBuildId); else post("sfizz external for Puredata, version '%s'", SFIZZ_VERSION);