atomic-linux/Makefile

70 lines
5.5 KiB
Makefile

# -----------------------------------------------------------------------------
# CONFIGURACIÓN DE RUTAS
# -----------------------------------------------------------------------------
USER_HOME := $(shell eval echo ~$$USER)
PROJECT_DIR := $(shell pwd)
WORK_DIR := $(USER_HOME)/archiso-build
OUT_DIR := $(PROJECT_DIR)/out
SUDO := sudo
# -----------------------------------------------------------------------------
# PALETA DE COLORES (Estética de la más alta calidad ;P)
# -----------------------------------------------------------------------------
CLR_RESET := \033[0m
CLR_CYAN := \033[1;36m
CLR_GREEN := \033[1;32m
CLR_YELLOW := \033[1;33m
CLR_RED := \033[1;31m
CLR_MAGENTA := \033[1;35m
CLR_BG_DARK := \033[48;5;234m
.PHONY: all clean iso info directories
all: info iso
# -----------------------------------------------------------------------------
# IMPRESIÓN DEL BANNER (usando printf para evitar ciertos... errores, jejejeje)
# -----------------------------------------------------------------------------
info:
@clear
@printf "$(CLR_CYAN) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ $(CLR_RESET)\n"
@printf "$(CLR_MAGENTA) █████╗ ████████╗ ██████╗ ███╗ ███╗██╗ ██████╗ $(CLR_CYAN)██╗ ██╗███╗ ██╗██╗ ██╗██╗ ██╗$(CLR_RESET)\n"
@printf "$(CLR_MAGENTA) ██╔══██╗╚══██╔══╝██╔═══██╗████╗ ████║██║██╔════╝ $(CLR_CYAN)██║ ██║████╗ ██║██║ ██║╚██╗██╔╝$(CLR_RESET)\n"
@printf "$(CLR_MAGENTA) ███████║ ██║ ██║ ██║██╔████╔██║██║██║ $(CLR_CYAN)██║ ██║██╔██╗ ██║██║ ██║ ╚███╔╝ $(CLR_RESET)\n"
@printf "$(CLR_MAGENTA) ██╔══██║ ██║ ██║ ██║██║╚██╔╝██║██║██║ $(CLR_CYAN)██║ ██║██║╚██╗██║██║ ██║ ██╔██╗ $(CLR_RESET)\n"
@printf "$(CLR_MAGENTA) ██║ ██║ ██║ ╚██████╔╝██║ ╚═╝ ██║██║╚██████╗ $(CLR_CYAN)███████╗██║██║ ╚████║╚██████╔╝██╔╝ ██╗$(CLR_RESET)\n"
@printf "$(CLR_MAGENTA) ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═════╝ $(CLR_CYAN)╚══════╝╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝$(CLR_RESET)\n"
@printf "$(CLR_CYAN) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ $(CLR_RESET)\n"
@printf "$(CLR_GREEN) ⚛ Código Fuente:$(CLR_RESET) %s\n" "$(PROJECT_DIR)"
@printf "$(CLR_GREEN) 🛠️ Caché de Compilación (Externa):$(CLR_RESET) %s/\n" "$(WORK_DIR)"
@printf "$(CLR_GREEN) 📦 Destino de la ISO (Local):$(CLR_RESET) %s/\n" "$(OUT_DIR)"
@printf "$(CLR_CYAN) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ $(CLR_RESET)\n"
directories:
@mkdir -p $(WORK_DIR)
@mkdir -p $(OUT_DIR)
# -----------------------------------------------------------------------------
# NÚCLEO DE COMPILACIÓN (PELIGRO)
# -----------------------------------------------------------------------------
iso: info directories
@echo -e "$(CLR_CYAN)[+]$(CLR_RESET) Sincronizando directorios de desarrollo..."
@echo -e "\n$(CLR_YELLOW)🚀 Iniciando Atomic Build Engine(core)...$(CLR_RESET)"
@echo -e "$(CLR_BG_DARK)$(CLR_RED)⚠️ Se requieren privilegios sudo para montar los entornos chroot:$(CLR_RESET)"
@$(SUDO) mkarchiso -v -w $(WORK_DIR) -o $(OUT_DIR) $(PROJECT_DIR)
@if [ $$? -eq 0 ]; then \
echo -e "\n$(CLR_GREEN)████████████████████████████████████████████████████████████$(CLR_RESET)"; \
echo -e "$(CLR_GREEN)✔ ¡COMPILACIÓN COMPLETADA CON ÉXITO!$(CLR_RESET)"; \
echo -e "$(CLR_GREEN)📦 Tu ISO lista en: $(OUT_DIR)/$(CLR_RESET)"; \
echo -e "$(CLR_GREEN)████████████████████████████████████████████████████████████$(CLR_RESET)"; \
else \
echo -e "\n$(CLR_RED)❌ ERROR CRÍTICO: La compilación de Atomic-Linux ha fallado.$(CLR_RESET)"; \
exit 1; \
fi
clean: info
@echo -e "$(CLR_YELLOW)[!] Purgando archivos pesados de compilación en $(WORK_DIR)...$(CLR_RESET)"
@$(SUDO) rm -rf $(WORK_DIR)
@echo -e "$(CLR_GREEN)✔ Todo limpio. Sistema listo para compilar desde cero.$(CLR_RESET)"