1529e55d25
Nuevo agente para crear y compilar aplicaciones Wails (Go + React). Soporta compilación cross-platform: Linux, Windows, macOS. Incluye script de creación de proyecto con DevFactory y frontend-lib integrados.
135 lines
4.6 KiB
Makefile
135 lines
4.6 KiB
Makefile
# Makefile para proyecto Wails
|
|
# Uso: make [target]
|
|
|
|
APP_NAME := $(shell basename $(CURDIR))
|
|
VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
|
|
BUILD_DIR := build/bin
|
|
LDFLAGS := -ldflags="-s -w -X main.Version=$(VERSION)"
|
|
|
|
# Colores
|
|
GREEN := \033[0;32m
|
|
YELLOW := \033[1;33m
|
|
NC := \033[0m
|
|
|
|
.PHONY: help dev build build-linux build-windows build-all clean install doctor
|
|
|
|
help: ## Mostrar esta ayuda
|
|
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "$(GREEN)%-20s$(NC) %s\n", $$1, $$2}'
|
|
|
|
# ============================================
|
|
# DESARROLLO
|
|
# ============================================
|
|
|
|
dev: ## Iniciar en modo desarrollo con hot reload
|
|
@echo "$(GREEN)Starting dev mode...$(NC)"
|
|
wails dev
|
|
|
|
dev-debug: ## Desarrollo con DevTools abiertos
|
|
@echo "$(GREEN)Starting dev mode with DevTools...$(NC)"
|
|
wails dev -devtools
|
|
|
|
generate: ## Generar bindings Go <-> TypeScript
|
|
@echo "$(GREEN)Generating bindings...$(NC)"
|
|
wails generate module
|
|
|
|
# ============================================
|
|
# BUILD
|
|
# ============================================
|
|
|
|
build: ## Build para la plataforma actual
|
|
@echo "$(GREEN)Building for current platform...$(NC)"
|
|
wails build $(LDFLAGS)
|
|
|
|
build-prod: ## Build optimizado para producción
|
|
@echo "$(GREEN)Building optimized for production...$(NC)"
|
|
wails build -clean -trimpath $(LDFLAGS)
|
|
|
|
build-linux: ## Build para Linux AMD64
|
|
@echo "$(GREEN)Building for Linux AMD64...$(NC)"
|
|
wails build -platform linux/amd64 -clean -trimpath $(LDFLAGS)
|
|
|
|
build-linux-arm: ## Build para Linux ARM64
|
|
@echo "$(GREEN)Building for Linux ARM64...$(NC)"
|
|
wails build -platform linux/arm64 -clean -trimpath $(LDFLAGS)
|
|
|
|
build-windows: ## Build para Windows AMD64 (cross-compile)
|
|
@echo "$(GREEN)Building for Windows AMD64...$(NC)"
|
|
@echo "$(YELLOW)Requires: gcc-mingw-w64-x86-64$(NC)"
|
|
wails build -platform windows/amd64 -clean -trimpath $(LDFLAGS)
|
|
|
|
build-windows-nsis: ## Build para Windows con instalador NSIS
|
|
@echo "$(GREEN)Building Windows installer...$(NC)"
|
|
@echo "$(YELLOW)Requires: nsis$(NC)"
|
|
wails build -platform windows/amd64 -nsis -clean -trimpath $(LDFLAGS)
|
|
|
|
build-all: build-linux build-windows ## Build para Linux y Windows
|
|
@echo "$(GREEN)All builds completed!$(NC)"
|
|
@ls -lah $(BUILD_DIR)/
|
|
|
|
build-upx: ## Build con compresión UPX
|
|
@echo "$(GREEN)Building with UPX compression...$(NC)"
|
|
@echo "$(YELLOW)Note: May trigger antivirus false positives$(NC)"
|
|
wails build -upx -clean -trimpath $(LDFLAGS)
|
|
|
|
# ============================================
|
|
# UTILIDADES
|
|
# ============================================
|
|
|
|
clean: ## Limpiar archivos de build
|
|
@echo "$(GREEN)Cleaning build artifacts...$(NC)"
|
|
rm -rf $(BUILD_DIR)
|
|
rm -rf frontend/dist
|
|
rm -rf frontend/node_modules/.vite
|
|
|
|
install-deps: ## Instalar dependencias del frontend
|
|
@echo "$(GREEN)Installing frontend dependencies...$(NC)"
|
|
cd frontend && pnpm install
|
|
|
|
update-deps: ## Actualizar dependencias
|
|
@echo "$(GREEN)Updating dependencies...$(NC)"
|
|
go get -u ./...
|
|
cd frontend && pnpm update
|
|
|
|
doctor: ## Verificar instalación de Wails
|
|
@echo "$(GREEN)Running Wails doctor...$(NC)"
|
|
wails doctor
|
|
|
|
# ============================================
|
|
# CROSS-COMPILE SETUP
|
|
# ============================================
|
|
|
|
setup-windows-cross: ## Instalar herramientas para cross-compile a Windows
|
|
@echo "$(GREEN)Installing Windows cross-compile tools...$(NC)"
|
|
sudo apt-get update
|
|
sudo apt-get install -y gcc-mingw-w64-x86-64 nsis
|
|
|
|
setup-linux-deps: ## Instalar dependencias de Linux para Wails
|
|
@echo "$(GREEN)Installing Linux dependencies...$(NC)"
|
|
sudo apt-get update
|
|
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev
|
|
|
|
# ============================================
|
|
# RELEASE
|
|
# ============================================
|
|
|
|
release: build-all ## Crear release con todos los binarios
|
|
@echo "$(GREEN)Creating release package...$(NC)"
|
|
@mkdir -p release
|
|
@cp $(BUILD_DIR)/$(APP_NAME) release/$(APP_NAME)-$(VERSION)-linux-amd64 2>/dev/null || true
|
|
@cp $(BUILD_DIR)/$(APP_NAME).exe release/$(APP_NAME)-$(VERSION)-windows-amd64.exe 2>/dev/null || true
|
|
@cd release && sha256sum * > checksums.txt
|
|
@echo "$(GREEN)Release files:$(NC)"
|
|
@ls -lah release/
|
|
|
|
# ============================================
|
|
# INFO
|
|
# ============================================
|
|
|
|
info: ## Mostrar información del proyecto
|
|
@echo "App: $(APP_NAME)"
|
|
@echo "Version: $(VERSION)"
|
|
@echo "Go: $(shell go version)"
|
|
@echo "Wails: $(shell wails version 2>/dev/null || echo 'not installed')"
|
|
@echo "Node: $(shell node --version 2>/dev/null || echo 'not installed')"
|
|
@echo "pnpm: $(shell pnpm --version 2>/dev/null || echo 'not installed')"
|