diff --git a/CMakeLists.txt b/CMakeLists.txt index 82173c9..21ceb87 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,6 +13,30 @@ set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED True) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) +# --- GENERACIÓN DE VERSIÓN AUTOMÁTICA --- +# Si GIT_HASH se ha pasado desde fuera (p.ej. desde el Makefile via -DGIT_HASH=xxx), +# lo usamos tal cual. Esto evita problemas con Docker/emscripten, donde git aborta por +# "dubious ownership" en el volumen montado. En builds locales sin -DGIT_HASH, se +# resuelve aquí ejecutando git directamente. +if(NOT DEFINED GIT_HASH OR GIT_HASH STREQUAL "") + find_package(Git QUIET) + if(GIT_FOUND) + execute_process( + COMMAND ${GIT_EXECUTABLE} rev-parse --short=7 HEAD + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE GIT_HASH + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET + ) + endif() + if(NOT DEFINED GIT_HASH OR GIT_HASH STREQUAL "") + set(GIT_HASH "unknown") + endif() +endif() + +# Configurar archivo de versión +configure_file(${CMAKE_SOURCE_DIR}/source/version.h.in ${CMAKE_BINARY_DIR}/version.h @ONLY) + # Define el directorio de los archivos fuente set(DIR_SOURCES "${CMAKE_SOURCE_DIR}/source") @@ -166,7 +190,8 @@ if(NOT APPLE AND NOT EMSCRIPTEN AND GLSLC_EXE) endif() # Includes relatius a source/ (p.e. `#include "core/rendering/texture.h"`) -target_include_directories(${PROJECT_NAME} PRIVATE ${DIR_SOURCES}) +# ${CMAKE_BINARY_DIR} per al version.h generat per configure_file. +target_include_directories(${PROJECT_NAME} PRIVATE ${DIR_SOURCES} ${CMAKE_BINARY_DIR}) # Flags de compilació per-target target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra -Wpedantic) diff --git a/source/version.h.in b/source/version.h.in new file mode 100644 index 0000000..5eddb94 --- /dev/null +++ b/source/version.h.in @@ -0,0 +1,6 @@ +#pragma once + +namespace Version { +constexpr const char* GIT_HASH = "@GIT_HASH@"; +constexpr const char* APP_NAME = "Coffee Crisis"; +} // namespace Version diff --git a/tools/pack_resources/pack_resources.cpp b/tools/pack_resources/pack_resources.cpp index 50e0d09..6c2bec5 100644 --- a/tools/pack_resources/pack_resources.cpp +++ b/tools/pack_resources/pack_resources.cpp @@ -3,13 +3,12 @@ #include #include "core/resources/resource_pack.h" +#include "../../build/version.h" // Version::APP_NAME namespace { - constexpr const char* APP_NAME = "Coffee Crisis"; - void showHelp() { - std::cout << APP_NAME << " - Resource Packer\n"; + std::cout << Version::APP_NAME << " - Resource Packer\n"; std::cout << "===============================\n"; std::cout << "Usage: pack_resources [options] [input_dir] [output_file]\n\n"; std::cout << "Options:\n"; @@ -66,7 +65,7 @@ int main(int argc, char* argv[]) { return 0; } - std::cout << APP_NAME << " - Resource Packer\n"; + std::cout << Version::APP_NAME << " - Resource Packer\n"; std::cout << "===============================\n"; std::cout << "Input directory: " << data_dir << '\n'; std::cout << "Output file: " << output_file << '\n';