diff --git a/Makefile b/Makefile index 585206a..6ce1231 100644 --- a/Makefile +++ b/Makefile @@ -96,23 +96,42 @@ else endif # ============================================================================== -# CMAKE GENERATOR (Windows needs explicit MinGW Makefiles generator) +# CMAKE GENERATOR (usa Ninja si está disponible; si no, MinGW Makefiles en +# Windows / generador por defecto en Linux/macOS). Ninja paraleliza mejor. # ============================================================================== ifeq ($(OS),Windows_NT) - CMAKE_GEN := -G "MinGW Makefiles" + # Dins MSYS2/Git Bash/MinGW, $(shell ...) usa sh.exe i "NUL" NO és + # dispositiu — un redirect "2>NUL" crearia un fitxer literal anomenat + # NUL al cwd. Detectem MSYSTEM per usar /dev/null en aquests entorns. + ifneq ($(MSYSTEM),) + NULDEV := /dev/null + else + NULDEV := NUL + endif + HAS_NINJA := $(shell ninja --version 2>$(NULDEV)) + ifneq ($(HAS_NINJA),) + CMAKE_GEN := -G "Ninja" + else + CMAKE_GEN := -G "MinGW Makefiles" + endif else - CMAKE_GEN := + HAS_NINJA := $(shell ninja --version 2>/dev/null) + ifneq ($(HAS_NINJA),) + CMAKE_GEN := -G "Ninja" + else + CMAKE_GEN := + endif endif # ============================================================================== # COMPILACIÓN CON CMAKE # ============================================================================== all: - @cmake $(CMAKE_GEN) -S . -B build -DCMAKE_BUILD_TYPE=Release + @cmake $(CMAKE_GEN) -S . -B build -DCMAKE_BUILD_TYPE=Release -DGIT_HASH=$(GIT_HASH) @cmake --build build debug: - @cmake $(CMAKE_GEN) -S . -B build -DCMAKE_BUILD_TYPE=Debug + @cmake $(CMAKE_GEN) -S . -B build -DCMAKE_BUILD_TYPE=Debug -DGIT_HASH=$(GIT_HASH) @cmake --build build # ============================================================================== @@ -156,7 +175,7 @@ _windows_release: @echo Creando release para Windows - Version: $(VERSION) # Compila con cmake - @cmake $(CMAKE_GEN) -S . -B build -DCMAKE_BUILD_TYPE=Release + @cmake $(CMAKE_GEN) -S . -B build -DCMAKE_BUILD_TYPE=Release -DGIT_HASH=$(GIT_HASH) @cmake --build build # Crea carpeta de distribución y carpeta temporal 'RELEASE_FOLDER' @@ -251,6 +270,7 @@ _macos_release: -DCMAKE_OSX_ARCHITECTURES=x86_64 \ -DCMAKE_OSX_DEPLOYMENT_TARGET=10.15 \ -DMACOS_BUNDLE=ON \ + -DGIT_HASH=$(GIT_HASH) \ && cmake --build build/intel; then \ cp "$(TARGET_FILE)" "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/MacOS/$(TARGET_NAME)"; \ codesign --deep --force --sign - --timestamp=none "$(RELEASE_FOLDER)/$(APP_NAME).app"; \ @@ -284,7 +304,7 @@ _macos_release: @echo "============================================" @echo " Compilando version Apple Silicon (arm64)" @echo "============================================" - @cmake -S . -B build/arm -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=arm64 -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 -DMACOS_BUNDLE=ON + @cmake -S . -B build/arm -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=arm64 -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 -DMACOS_BUNDLE=ON -DGIT_HASH=$(GIT_HASH) @cmake --build build/arm cp "$(TARGET_FILE)" "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/MacOS/$(TARGET_NAME)" @@ -322,7 +342,7 @@ _linux_release: @echo "Creando release para Linux - Version: $(VERSION)" # Compila con cmake - @cmake $(CMAKE_GEN) -S . -B build -DCMAKE_BUILD_TYPE=Release + @cmake $(CMAKE_GEN) -S . -B build -DCMAKE_BUILD_TYPE=Release -DGIT_HASH=$(GIT_HASH) @cmake --build build # Elimina carpeta temporal previa y la recrea (crea dist/ si no existe) @@ -387,23 +407,23 @@ wasm_debug: # CODE QUALITY (delegados a cmake) # ============================================================================== format: - @cmake $(CMAKE_GEN) -S . -B build -DCMAKE_BUILD_TYPE=Release + @cmake $(CMAKE_GEN) -S . -B build -DCMAKE_BUILD_TYPE=Release -DGIT_HASH=$(GIT_HASH) @cmake --build build --target format format-check: - @cmake $(CMAKE_GEN) -S . -B build -DCMAKE_BUILD_TYPE=Release + @cmake $(CMAKE_GEN) -S . -B build -DCMAKE_BUILD_TYPE=Release -DGIT_HASH=$(GIT_HASH) @cmake --build build --target format-check tidy: - @cmake $(CMAKE_GEN) -S . -B build -DCMAKE_BUILD_TYPE=Release + @cmake $(CMAKE_GEN) -S . -B build -DCMAKE_BUILD_TYPE=Release -DGIT_HASH=$(GIT_HASH) @cmake --build build --target tidy tidy-fix: - @cmake $(CMAKE_GEN) -S . -B build -DCMAKE_BUILD_TYPE=Release + @cmake $(CMAKE_GEN) -S . -B build -DCMAKE_BUILD_TYPE=Release -DGIT_HASH=$(GIT_HASH) @cmake --build build --target tidy-fix cppcheck: - @cmake $(CMAKE_GEN) -S . -B build -DCMAKE_BUILD_TYPE=Release + @cmake $(CMAKE_GEN) -S . -B build -DCMAKE_BUILD_TYPE=Release -DGIT_HASH=$(GIT_HASH) @cmake --build build --target cppcheck # ==============================================================================