diff --git a/Makefile b/Makefile index 014da08..5d346d2 100644 --- a/Makefile +++ b/Makefile @@ -1,56 +1,58 @@ # Directorios -DIR_ROOT := $(dir $(abspath $(MAKEFILE_LIST))) -DIR_SOURCES:= $(addsuffix /, $(DIR_ROOT)source) -DIR_BIN := $(addsuffix /, $(DIR_ROOT)) -DIR_BUILD := $(addsuffix /, $(DIR_ROOT)build) +DIR_ROOT := $(dir $(abspath $(MAKEFILE_LIST))) +DIR_SOURCES := $(addsuffix /, $(DIR_ROOT)source) +DIR_BIN := $(addsuffix /, $(DIR_ROOT)) +DIR_BUILD := $(addsuffix /, $(DIR_ROOT)build) # Variables -TARGET_NAME := coffee_crisis_arcade_edition -TARGET_FILE := $(DIR_BIN)$(TARGET_NAME) -APP_NAME := Coffee Crisis Arcade Edition -RELEASE_FOLDER:= ccae_release -RELEASE_FILE := $(RELEASE_FOLDER)/$(TARGET_NAME) -VERSION := v0.01 +TARGET_NAME := coffee_crisis_arcade_edition +TARGET_FILE := $(DIR_BIN)$(TARGET_NAME) +APP_NAME := Coffee Crisis Arcade Edition +RELEASE_FOLDER := ccae_release +RELEASE_FILE := $(RELEASE_FOLDER)/$(TARGET_NAME) +VERSION := 2024-12-30 # Nombres para los ficheros de lanzamiento -WINDOWS_RELEASE := $(TARGET_FILE)-$(VERSION)-win32-x64.zip -MACOS_INTEL_RELEASE := $(TARGET_FILE)-$(VERSION)-macos-intel.dmg -MACOS_APPLE_SILICON_RELEASE:= $(TARGET_FILE)-$(VERSION)-macos-apple-silicon.dmg -LINUX_RELEASE := $(TARGET_FILE)-$(VERSION)-linux.tar.gz +WINDOWS_RELEASE := $(TARGET_FILE)-$(VERSION)-win32-x64.zip +MACOS_INTEL_RELEASE := $(TARGET_FILE)-$(VERSION)-macos-intel.dmg +MACOS_APPLE_SILICON_RELEASE := $(TARGET_FILE)-$(VERSION)-macos-apple-silicon.dmg +LINUX_RELEASE := $(TARGET_FILE)-$(VERSION)-linux.tar.gz +RASPI_RELEASE := $(TARGET_FILE)-$(VERSION)-raspberry.tar.gz # Includes -INCLUDES:= -I$(DIR_SOURCES) +INCLUDES := -I$(DIR_SOURCES) # Variables según el sistema operativo ifeq ($(OS),Windows_NT) - FixPath = $(subst /,\,$1) - SOURCES := source/*.cpp - CXXFLAGS:= -std=c++20 -Wall -Os -ffunction-sections -fdata-sections -Wl,--gc-sections -static-libstdc++ -Wl,-subsystem,windows - CXXFLAGS_DEBUG:= -std=c++20 -Wall -g - LDFLAGS := -lmingw32 -lws2_32 -lSDL2main -lSDL2 -lopengl32 - RM = del /Q - MKD:= mkdir + FixPath = $(subst /,\\,$1) + SOURCES := source/*.cpp + CXXFLAGS := -std=c++20 -Wall -Os -ffunction-sections -fdata-sections -Wl,--gc-sections -static-libstdc++ -Wl,-subsystem,windows + CXXFLAGS_DEBUG := -std=c++20 -Wall -g + LDFLAGS := -lmingw32 -lws2_32 -lSDL2main -lSDL2 -lopengl32 + RM := del /Q + MKDIR := mkdir else - FixPath = $1 - SOURCES := $(shell find $(DIR_SOURCES) -name '*.cpp') - SOURCES := source/*.cpp - CXXFLAGS:= -std=c++20 -Wall -Os -ffunction-sections -fdata-sections - CXXFLAGS_DEBUG:= -std=c++20 -Wall -g - LDFLAGS := -lSDL2 - RM = rm -f - MKD:= mkdir -p - UNAME_S := $(shell uname -s) + FixPath = $1 + SOURCES := $(shell find $(DIR_SOURCES) -name '*.cpp') + SOURCES := source/*.cpp + CXXFLAGS := -std=c++20 -Wall -Os -ffunction-sections -fdata-sections + CXXFLAGS_DEBUG := -std=c++20 -Wall -g + LDFLAGS := -lSDL2 + RMFILE := rm -f + RMDIR := rm -rdf + MKDIR := mkdir -p + UNAME_S := $(shell uname -s) ifeq ($(UNAME_S),Linux) - LDFLAGS += -lGL + LDFLAGS += -lGL endif ifeq ($(UNAME_S),Darwin) - CXXFLAGS += -Wno-deprecated - CXXFLAGS_DEBUG += -Wno-deprecated - LDFLAGS += -framework OpenGL + CXXFLAGS += -Wno-deprecated + CXXFLAGS_DEBUG += -Wno-deprecated + LDFLAGS += -framework OpenGL endif endif -# Rules +# Reglas para compilación windows: @echo off $(CXX) $(SOURCES) $(CXXFLAGS) $(LDFLAGS) -o "$(TARGET_FILE).exe" @@ -81,11 +83,11 @@ windows_release: # Compila $(CXX) $(SOURCES) $(CXXFLAGS) $(LDFLAGS) -o "$(RELEASE_FILE).exe" - strip -s -R .comment -R .gnu.version "$(RELEASE_FOLDER)/$(TARGET_FILE).exe" --strip-unneeded + strip -s -R .comment -R .gnu.version "$(RELEASE_FILE).exe" --strip-unneeded # Crea el fichero .zip - powershell if (Test-Path $(WINDOWS_RELEASE)) {Remove-Item $(WINDOWS_RELEASE)} - powershell Compress-Archive -Path "$(RELEASE_FOLDER)"/* -DestinationPath $(WINDOWS_RELEASE) + powershell if (Test-Path "$(WINDOWS_RELEASE)") {Remove-Item "$(WINDOWS_RELEASE)"} + powershell Compress-Archive -Path "$(RELEASE_FOLDER)"/* -DestinationPath "$(WINDOWS_RELEASE)" # Elimina la carpeta temporal 'RELEASE_FOLDER' powershell if (Test-Path "$(RELEASE_FOLDER)") {Remove-Item "$(RELEASE_FOLDER)" -Recurse -Force} @@ -98,17 +100,17 @@ macos_debug: macos_release: # Elimina datos de compilaciones anteriores - rm -rdf "$(RELEASE_FOLDER)" - rm -rdf Frameworks - rm -f tmp.dmg - rm -f "$(MACOS_INTEL_RELEASE)" - rm -f "$(MACOS_APPLE_SILICON_RELEASE)" + $(RMDIR) "$(RELEASE_FOLDER)" + $(RMDIR) Frameworks + $(RMFILE) tmp.dmg + $(RMFILE) "$(MACOS_INTEL_RELEASE)" + $(RMFILE) "$(MACOS_APPLE_SILICON_RELEASE)" # Crea la carpeta temporal para hacer el trabajo y las carpetas obligatorias para crear una app de macos - mkdir -p "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/Frameworks" - mkdir -p "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/MacOS" - mkdir -p "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/Resources" - mkdir -p Frameworks + $(MKDIR) "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/Frameworks" + $(MKDIR) "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/MacOS" + $(MKDIR) "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/Resources" + $(MKDIR) Frameworks # Copia carpetas y ficheros cp -R data "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/Resources" @@ -123,24 +125,24 @@ macos_release: ln -s /Applications "$(RELEASE_FOLDER)"/Applications # Compila la versión para procesadores Intel - $(CXX) $(SOURCES) -D MACOS_BUNDLE $(CXXFLAGS) $(LDFLAGS) -o "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/MacOS/$(TARGET_FILE)" -rpath @executable_path/../Frameworks/ -target x86_64-apple-macos10.12 + $(CXX) $(SOURCES) -D MACOS_BUNDLE $(CXXFLAGS) $(LDFLAGS) -o "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/MacOS/$(TARGET_NAME)" -rpath @executable_path/../Frameworks/ -target x86_64-apple-macos10.12 # Empaqueta el .dmg de la versión Intel hdiutil create tmp.dmg -ov -volname "$(APP_NAME)" -fs HFS+ -srcfolder "$(RELEASE_FOLDER)" hdiutil convert tmp.dmg -format UDZO -o "$(MACOS_INTEL_RELEASE)" - rm -f tmp.dmg + $(RMFILE) tmp.dmg # Compila la versión para procesadores Apple Silicon - $(CXX) $(SOURCES) -D MACOS_BUNDLE $(CXXFLAGS) $(LDFLAGS) -o "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/MacOS/$(TARGET_FILE)" -rpath @executable_path/../Frameworks/ -target arm64-apple-macos11 + $(CXX) $(SOURCES) -D MACOS_BUNDLE -D SDL_DISABLE_IMMINTRIN_H $(CXXFLAGS) $(LDFLAGS) -o "$(RELEASE_FOLDER)/$(APP_NAME).app/Contents/MacOS/$(TARGET_NAME)" -rpath @executable_path/../Frameworks/ -target arm64-apple-macos11 # Empaqueta el .dmg de la versión Apple Silicon hdiutil create tmp.dmg -ov -volname "$(APP_NAME)" -fs HFS+ -srcfolder "$(RELEASE_FOLDER)" hdiutil convert tmp.dmg -format UDZO -o "$(MACOS_APPLE_SILICON_RELEASE)" - rm -f tmp.dmg + $(RMFILE) tmp.dmg # Elimina las carpetas temporales - $(RM) Frameworks - $(RM) "$(RELEASE_FOLDER)" + $(RMDIR) Frameworks + $(RMDIR) "$(RELEASE_FOLDER)" linux: $(CXX) $(SOURCES) $(CXXFLAGS) $(LDFLAGS) -o "$(TARGET_FILE)" @@ -151,10 +153,10 @@ linux_debug: linux_release: # Elimina carpetas previas - $(RM) "$(RELEASE_FOLDER)" + $(RMDIR) "$(RELEASE_FOLDER)" # Crea la carpeta temporal para realizar el lanzamiento - mkdir -p "$(RELEASE_FOLDER)" + $(MKDIR) "$(RELEASE_FOLDER)" # Copia ficheros cp -R data "$(RELEASE_FOLDER)" @@ -166,11 +168,11 @@ linux_release: strip -s -R .comment -R .gnu.version "$(RELEASE_FILE)" --strip-unneeded # Empaqueta ficheros - $(RM) "$(LINUX_RELEASE)" - cd "$(RELEASE_FOLDER)" && tar -czvf "../$(LINUX_RELEASE)" * + $(RMFILE) "$(LINUX_RELEASE)" + cd "$(RELEASE_FOLDER)" && tar -czvf "$(LINUX_RELEASE)" * # Elimina la carpeta temporal - $(RM) "$(RELEASE_FOLDER)" + $(RMDIR) "$(RELEASE_FOLDER)" raspi: $(CXX) $(SOURCES) -D ARCADE -D VERBOSE $(CXXFLAGS) $(LDFLAGS) -o $(TARGET_FILE) @@ -179,12 +181,35 @@ raspi: raspi_debug: $(CXX) $(SOURCES) -D ARCADE -D VERBOSE -D DEBUG $(CXXFLAGS_DEBUG) $(LDFLAGS) -o "$(TARGET_FILE)_debug" -anbernic: +raspi_release: # Elimina carpetas previas - $(RM) "$(RELEASE_FOLDER)"_anbernic + $(RMDIR) "$(RELEASE_FOLDER)" # Crea la carpeta temporal para realizar el lanzamiento - mkdir -p "$(RELEASE_FOLDER)"_anbernic + $(MKDIR) "$(RELEASE_FOLDER)" + +# Copia ficheros + cp -R data "$(RELEASE_FOLDER)" + cp LICENSE "$(RELEASE_FOLDER)" + cp README.md "$(RELEASE_FOLDER)" + +# Complia + $(CXX) $(SOURCES) -D ARCADE -D VERBOSE $(CXXFLAGS) $(LDFLAGS) -o "$(RELEASE_FILE)" + strip -s -R .comment -R .gnu.version "$(RELEASE_FILE)" --strip-unneeded + +# Empaqueta ficheros + $(RMFILE) "$(LINUX_RELEASE)" + cd "$(RELEASE_FOLDER)" && tar -czvf "$(RASPI_RELEASE)" * + +# Elimina la carpeta temporal + $(RMDIR) "$(RELEASE_FOLDER)" + +anbernic: +# Elimina carpetas previas + $(RMDIR) "$(RELEASE_FOLDER)"_anbernic + +# Crea la carpeta temporal para realizar el lanzamiento + $(MKDIR) "$(RELEASE_FOLDER)"_anbernic # Copia ficheros cp -R data "$(RELEASE_FOLDER)"_anbernic