From 3af2c7df06d3a3ed0ae24cf10a5308a5fc90a55c Mon Sep 17 00:00:00 2001 From: Wagner Bruna Date: Tue, 25 Nov 2025 18:26:45 -0300 Subject: [PATCH 1/2] feat: embed version string and git commit hash --- CMakeLists.txt | 32 ++++++++++++++++++++++++++++++++ examples/cli/main.cpp | 19 +++++++++++++++++++ stable-diffusion.h | 4 ++++ version.cpp | 22 ++++++++++++++++++++++ 4 files changed, 77 insertions(+) create mode 100644 version.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 7dc36f0fd..8ea1c47b7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -87,6 +87,38 @@ file(GLOB SD_LIB_SOURCES "*.hpp" ) +find_program(GIT_EXE NAMES git git.exe NO_CMAKE_FIND_ROOT_PATH) +if(GIT_EXE) + execute_process(COMMAND ${GIT_EXE} describe --tags --abbrev=7 --dirty=+ + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + OUTPUT_VARIABLE SDCPP_BUILD_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET + ) + execute_process(COMMAND ${GIT_EXE} rev-parse --short HEAD + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + OUTPUT_VARIABLE SDCPP_BUILD_COMMIT + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET + ) +endif() + +if(NOT SDCPP_BUILD_VERSION) + set(SDCPP_BUILD_VERSION unknown) +endif() +message(STATUS "stable-diffusion.cpp version ${SDCPP_BUILD_VERSION}") + +if(NOT SDCPP_BUILD_COMMIT) + set(SDCPP_BUILD_COMMIT unknown) +endif() +message(STATUS "stable-diffusion.cpp commit ${SDCPP_BUILD_COMMIT}") + +set_property( + SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/version.cpp + APPEND PROPERTY COMPILE_DEFINITIONS + SDCPP_BUILD_COMMIT=${SDCPP_BUILD_COMMIT} SDCPP_BUILD_VERSION=${SDCPP_BUILD_VERSION} +) + if(SD_BUILD_SHARED_LIBS) message("-- Build shared library") message(${SD_LIB_SOURCES}) diff --git a/examples/cli/main.cpp b/examples/cli/main.cpp index acb198161..299c3e144 100644 --- a/examples/cli/main.cpp +++ b/examples/cli/main.cpp @@ -324,6 +324,7 @@ struct SDCliParams { std::string output_path = "output.png"; bool verbose = false; + bool version = false; bool canny_preprocess = false; preview_t preview_method = PREVIEW_NONE; @@ -366,6 +367,10 @@ struct SDCliParams { "--verbose", "print extra info", true, &verbose}, + {"", + "--version", + "print stable-diffusion.cpp version", + true, &version}, {"", "--color", "colors the logging tags according to level", @@ -1598,7 +1603,12 @@ struct SDGenerationParams { } }; +static std::string version_string() { + return std::string("stable-diffusion.cpp version ") + sd_version() + ", commit " + sd_commit(); +} + void print_usage(int argc, const char* argv[], const std::vector& options_list) { + std::cout << version_string() << "\n"; std::cout << "Usage: " << argv[0] << " [options]\n\n"; std::cout << "CLI Options:\n"; options_list[0].print(); @@ -1881,11 +1891,20 @@ void step_callback(int step, int frame_count, sd_image_t* image, bool is_noisy, } int main(int argc, const char* argv[]) { + + if (argc > 1 && std::string(argv[1]) == "--version") { + std::cout << version_string() << "\n"; + return EXIT_SUCCESS; + } + SDCliParams cli_params; SDContextParams ctx_params; SDGenerationParams gen_params; parse_args(argc, argv, cli_params, ctx_params, gen_params); + if (cli_params.verbose || cli_params.version) { + std::cout << version_string() << "\n"; + } if (gen_params.video_frames > 4) { size_t last_dot_pos = cli_params.preview_path.find_last_of("."); std::string base_path = cli_params.preview_path; diff --git a/stable-diffusion.h b/stable-diffusion.h index 7c72c70a7..1350947e5 100644 --- a/stable-diffusion.h +++ b/stable-diffusion.h @@ -359,6 +359,10 @@ SD_API bool preprocess_canny(sd_image_t image, float strong, bool inverse); +SD_API const char * sd_commit(void); +SD_API const char * sd_version(void); + + #ifdef __cplusplus } #endif diff --git a/version.cpp b/version.cpp new file mode 100644 index 000000000..8ac1d7f11 --- /dev/null +++ b/version.cpp @@ -0,0 +1,22 @@ +#include "stable-diffusion.h" + +#ifndef SDCPP_BUILD_COMMIT +#define SDCPP_BUILD_COMMIT unknown +#endif + +#ifndef SDCPP_BUILD_VERSION +#define SDCPP_BUILD_VERSION unknown +#endif + +#define STRINGIZE2(x) #x +#define STRINGIZE(x) STRINGIZE2(x) + +const char * sd_commit(void) { + return STRINGIZE(SDCPP_BUILD_COMMIT); +} + +const char * sd_version(void) { + return STRINGIZE(SDCPP_BUILD_VERSION); +} + + From a8db46f029722db2495b8aa222aa268eed38e182 Mon Sep 17 00:00:00 2001 From: leejet Date: Tue, 9 Dec 2025 22:35:48 +0800 Subject: [PATCH 2/2] format code --- examples/cli/main.cpp | 1 - stable-diffusion.h | 5 ++--- version.cpp | 6 ++---- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/examples/cli/main.cpp b/examples/cli/main.cpp index 299c3e144..2829f4dfd 100644 --- a/examples/cli/main.cpp +++ b/examples/cli/main.cpp @@ -1891,7 +1891,6 @@ void step_callback(int step, int frame_count, sd_image_t* image, bool is_noisy, } int main(int argc, const char* argv[]) { - if (argc > 1 && std::string(argv[1]) == "--version") { std::cout << version_string() << "\n"; return EXIT_SUCCESS; diff --git a/stable-diffusion.h b/stable-diffusion.h index 1350947e5..cc5f4fa76 100644 --- a/stable-diffusion.h +++ b/stable-diffusion.h @@ -359,9 +359,8 @@ SD_API bool preprocess_canny(sd_image_t image, float strong, bool inverse); -SD_API const char * sd_commit(void); -SD_API const char * sd_version(void); - +SD_API const char* sd_commit(void); +SD_API const char* sd_version(void); #ifdef __cplusplus } diff --git a/version.cpp b/version.cpp index 8ac1d7f11..97dc8426b 100644 --- a/version.cpp +++ b/version.cpp @@ -11,12 +11,10 @@ #define STRINGIZE2(x) #x #define STRINGIZE(x) STRINGIZE2(x) -const char * sd_commit(void) { +const char* sd_commit(void) { return STRINGIZE(SDCPP_BUILD_COMMIT); } -const char * sd_version(void) { +const char* sd_version(void) { return STRINGIZE(SDCPP_BUILD_VERSION); } - -