From 1951bcad1155aafa43fd3ecf15990b69929c755f Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Tue, 23 Dec 2025 10:03:32 +0100 Subject: [PATCH] corregit makefile de windows --- .claude/settings.local.json | 13 ++++++ CMakeLists.txt | 10 ++++- Makefile | 84 +++++++++++++++++------------------- release/orni.res | Bin 0 -> 114000 bytes 4 files changed, 60 insertions(+), 47 deletions(-) create mode 100644 .claude/settings.local.json create mode 100644 release/orni.res diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100644 index 0000000..d43c929 --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,13 @@ +{ + "permissions": { + "allow": [ + "Bash(dir \"C:\\mingw\\gitea\\orni_attack\\release\\dll\")", + "Bash(make:*)", + "Bash(echo:*)", + "Bash(objdump:*)", + "Bash(unzip:*)" + ], + "deny": [], + "ask": [] + } +} diff --git a/CMakeLists.txt b/CMakeLists.txt index c1c5b98..e9fd4c1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,10 +1,10 @@ # CMakeLists.txt cmake_minimum_required(VERSION 3.10) -project(orni VERSION 0.7.1) +project(diskito VERSION 0.7.1) # Info del proyecto -set(PROJECT_LONG_NAME "Orni Attack") +set(PROJECT_LONG_NAME "diskito") set(PROJECT_COPYRIGHT_ORIGINAL "© 1999 Visente i Sergi") set(PROJECT_COPYRIGHT_PORT "© 2025 JailDesigner") set(PROJECT_COPYRIGHT "${PROJECT_COPYRIGHT_ORIGINAL}, ${PROJECT_COPYRIGHT_PORT}") @@ -84,6 +84,12 @@ endif() if(WIN32) target_compile_definitions(${PROJECT_NAME} PRIVATE WINDOWS_BUILD) target_link_libraries(${PROJECT_NAME} PRIVATE mingw32) + # Static linking for libgcc and libstdc++ (avoid DLL dependencies for distribution) + target_link_options(${PROJECT_NAME} PRIVATE + -static-libgcc + -static-libstdc++ + -static + ) # Añadir icono en Windows (se configurará desde el Makefile con windres) elseif(APPLE) target_compile_definitions(${PROJECT_NAME} PRIVATE MACOS_BUILD) diff --git a/Makefile b/Makefile index 3f6956d..132ac51 100644 --- a/Makefile +++ b/Makefile @@ -9,8 +9,8 @@ DIR_BIN := $(DIR_ROOT) # TARGET NAMES # ============================================================================== ifeq ($(OS),Windows_NT) - TARGET_NAME := $(shell powershell -Command "$$line = Get-Content CMakeLists.txt | Where-Object {$$_ -match '^project'}; if ($$line -match 'project\s*\x28(\w+)') { $$matches[1] }") - LONG_NAME := $(shell powershell -Command "$$line = Get-Content CMakeLists.txt | Where-Object {$$_ -match 'PROJECT_LONG_NAME'}; if ($$line -match '\"(.+)\"') { $$matches[1] }") + TARGET_NAME := $(shell powershell -Command "(Select-String -Path 'CMakeLists.txt' -Pattern 'project\s*\x28(\w+)').Matches.Groups[1].Value") + LONG_NAME := $(shell powershell -Command "(Select-String -Path 'CMakeLists.txt' -Pattern 'PROJECT_LONG_NAME\s+\x22(.+?)\x22').Matches.Groups[1].Value") else TARGET_NAME := $(shell awk '/^project/ {gsub(/[)(]/, " "); print $$2}' CMakeLists.txt) LONG_NAME := $(shell grep 'PROJECT_LONG_NAME' CMakeLists.txt | sed 's/.*"\(.*\)".*/\1/') @@ -21,7 +21,11 @@ RELEASE_FOLDER := $(TARGET_NAME)_release RELEASE_FILE := $(RELEASE_FOLDER)/$(TARGET_NAME) # Release file names -RAW_VERSION := $(shell echo $(VERSION) | sed 's/^v//') +ifeq ($(OS),Windows_NT) + RAW_VERSION := $(shell powershell -Command "\"$(VERSION)\" -replace '^v', ''") +else + RAW_VERSION := $(shell echo $(VERSION) | sed 's/^v//') +endif WINDOWS_RELEASE := $(TARGET_NAME)-$(VERSION)-windows-x64.zip MACOS_ARM_RELEASE := $(TARGET_NAME)-$(VERSION)-macos-arm64.dmg MACOS_INTEL_RELEASE := $(TARGET_NAME)-$(VERSION)-macos-x64.dmg @@ -33,7 +37,7 @@ APP_NAME := $(LONG_NAME) # VERSION # ============================================================================== ifeq ($(OS),Windows_NT) - VERSION := v$(shell powershell -Command "$$line = Get-Content CMakeLists.txt | Where-Object {$$_ -match '^project'}; if ($$line -match 'VERSION\s+([0-9.]+)') { $$matches[1] }") + VERSION := v$(shell powershell -Command "(Select-String -Path 'CMakeLists.txt' -Pattern 'project.*VERSION\s+([0-9.]+)').Matches.Groups[1].Value") else VERSION := v$(shell grep "^project" CMakeLists.txt | tr -cd 0-9.) endif @@ -47,14 +51,16 @@ endif # ============================================================================== # PLATFORM-SPECIFIC UTILITIES # ============================================================================== +# Use Unix commands always (MinGW Make uses bash even on Windows) +RMFILE := rm -f +RMDIR := rm -rf +MKDIR := mkdir -p + ifeq ($(OS),Windows_NT) - RMFILE := del /Q - RMDIR := rmdir /S /Q - MKDIR := mkdir + # Windows-specific: Force cmd.exe shell for PowerShell commands + SHELL := cmd.exe else - RMFILE := rm -f - RMDIR := rm -rf - MKDIR := mkdir -p + # Unix-specific UNAME_S := $(shell uname -s) endif @@ -71,7 +77,7 @@ PACK_TOOL := tools/pack_resources/pack_resources .PHONY: pack_tool resources.pack pack_tool: - @$(MAKE) -C tools/pack_resources + @make -C tools/pack_resources resources.pack: pack_tool @echo "Creating resources.pack..." @@ -214,37 +220,25 @@ linux_release: pack_tool resources.pack # Windows Release (requires MinGW on Windows or cross-compiler on Linux) .PHONY: windows_release -windows_release: - @echo "Creating Windows release - Version: $(VERSION)" - @echo "Note: This target should be run on Windows with MinGW or use windows_cross on Linux" - - # Clean previous - @$(RMDIR) "$(RELEASE_FOLDER)" - @$(RMFILE) "$(WINDOWS_RELEASE)" - - # Create folder - @$(MKDIR) "$(RELEASE_FOLDER)" - - # Copy resources - @cp -r resources "$(RELEASE_FOLDER)/" - @cp release/dll/*.dll "$(RELEASE_FOLDER)/" 2>/dev/null || echo "Warning: DLLs not found" - @cp LICENSE "$(RELEASE_FOLDER)/" 2>/dev/null || echo "Warning: LICENSE not found" - @cp README.md "$(RELEASE_FOLDER)/" 2>/dev/null || echo "Warning: README.md not found" - - # Compile resource file - @windres release/$(TARGET_NAME).rc -O coff -o release/$(TARGET_NAME).res 2>/dev/null || echo "Warning: windres failed" - - # Compile with CMake - @cmake -B build -DCMAKE_BUILD_TYPE=Release +windows_release: pack_tool resources.pack + @echo off + @echo Creating Windows release - Version: $(VERSION) + @powershell if (Test-Path "$(RELEASE_FOLDER)") {Remove-Item "$(RELEASE_FOLDER)" -Recurse -Force} + @powershell if (Test-Path "$(WINDOWS_RELEASE)") {Remove-Item "$(WINDOWS_RELEASE)"} + @powershell if (-not (Test-Path "$(RELEASE_FOLDER)")) {New-Item "$(RELEASE_FOLDER)" -ItemType Directory} + @powershell Copy-Item -Path "resources.pack" -Destination "$(RELEASE_FOLDER)" + @powershell Copy-Item "release\dll\SDL3.dll" -Destination "$(RELEASE_FOLDER)" + @powershell Copy-Item "release\dll\libwinpthread-1.dll" -Destination "$(RELEASE_FOLDER)" + @powershell if (Test-Path "LICENSE") {Copy-Item "LICENSE" -Destination "$(RELEASE_FOLDER)"} + @powershell if (Test-Path "README.md") {Copy-Item "README.md" -Destination "$(RELEASE_FOLDER)"} + @windres release/$(TARGET_NAME).rc -O coff -o release/$(TARGET_NAME).res 2>nul || echo Warning: windres failed + @cmake -B build -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release @cmake --build build - @cp $(TARGET_FILE).exe "$(RELEASE_FILE).exe" || cp $(TARGET_FILE) "$(RELEASE_FILE).exe" - - # Package - @cd "$(RELEASE_FOLDER)" && zip -r ../$(WINDOWS_RELEASE) * - @echo "✓ Windows release created: $(WINDOWS_RELEASE)" - - # Cleanup - @$(RMDIR) "$(RELEASE_FOLDER)" + @powershell if (Test-Path "$(TARGET_FILE).exe") {Copy-Item "$(TARGET_FILE).exe" -Destination "$(RELEASE_FILE).exe"} else {Copy-Item "$(TARGET_FILE)" -Destination "$(RELEASE_FILE).exe"} + @strip "$(RELEASE_FILE).exe" 2>nul || echo Warning: strip not available + @powershell Compress-Archive -Path "$(RELEASE_FOLDER)\*" -DestinationPath "$(WINDOWS_RELEASE)" -Force + @echo Release created: $(WINDOWS_RELEASE) + @powershell if (Test-Path "$(RELEASE_FOLDER)") {Remove-Item "$(RELEASE_FOLDER)" -Recurse -Force} # Raspberry Pi Release (cross-compilation from Linux/macOS) .PHONY: rpi_release @@ -263,7 +257,7 @@ rpi_release: @$(MKDIR) "$(RELEASE_FOLDER)" # Copy resources - @cp -r resources "$(RELEASE_FOLDER)/" + @cp resources.pack "$(RELEASE_FOLDER)/" @cp LICENSE "$(RELEASE_FOLDER)/" 2>/dev/null || echo "Warning: LICENSE not found" @cp README.md "$(RELEASE_FOLDER)/" 2>/dev/null || echo "Warning: README.md not found" @@ -299,8 +293,8 @@ windows_cross: @$(MKDIR) "$(RELEASE_FOLDER)" # Copy resources - @cp -r resources "$(RELEASE_FOLDER)/" - @cp release/dll/*.dll "$(RELEASE_FOLDER)/" 2>/dev/null || echo "Warning: DLLs not found in release/dll/" + @cp resources.pack "$(RELEASE_FOLDER)/" + @cp release/dll/SDL3.dll release/dll/libwinpthread-1.dll "$(RELEASE_FOLDER)/" @cp LICENSE "$(RELEASE_FOLDER)/" 2>/dev/null || echo "Warning: LICENSE not found" @cp README.md "$(RELEASE_FOLDER)/" 2>/dev/null || echo "Warning: README.md not found" @@ -336,7 +330,7 @@ else @$(RMDIR) build $(RELEASE_FOLDER) @$(RMFILE) *.dmg *.zip *.tar.gz 2>/dev/null || true @$(RMFILE) resources.pack 2>/dev/null || true - @$(MAKE) -C tools/pack_resources clean 2>/dev/null || true + @make -C tools/pack_resources clean 2>/dev/null || true endif @echo "Clean complete" diff --git a/release/orni.res b/release/orni.res new file mode 100644 index 0000000000000000000000000000000000000000..bb96112b7423a327145cf4273c84ec434ee905da GIT binary patch literal 114000 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