# Proyecto: Sistema de Administración Comunitaria para Condominios
# Requiere GNU Make, JDK 21 o superior y JavaFX SDK junto a este archivo.
#
# Estructura esperada:
#   src/
#   javafx-sdk-21.0.11/
#   Makefile
#   README.md

SRC_DIR := src
OUT_DIR := out
DOC_DIR := javadoc
MAIN_CLASS := CondominioApp
MODULES := javafx.controls
SOURCES := $(wildcard $(SRC_DIR)/*.java)

# Busca automáticamente una carpeta javafx-sdk-* ubicada en la raíz.
# También puede indicarse otra ruta:
# make run JAVAFX_LIB="C:/ruta/javafx-sdk/lib"
JAVAFX_LIB ?= $(firstword $(wildcard javafx-sdk-*/lib))

.PHONY: help run compile javadoc clean check-javafx

help:
	@echo "Comandos disponibles:"
	@echo "  make run       Compila y ejecuta la aplicación"
	@echo "  make compile   Compila las clases en la carpeta out"
	@echo "  make javadoc   Genera documentación en la carpeta javadoc"
	@echo "  make clean     Elimina las carpetas out y javadoc"

check-javafx:
	@test -n "$(JAVAFX_LIB)" || (echo "No se encontró JavaFX SDK. Debe estar junto al Makefile con un nombre como javafx-sdk-21.0.11." && exit 1)

compile: check-javafx
	mkdir -p "$(OUT_DIR)"
	javac --module-path "$(JAVAFX_LIB)" --add-modules $(MODULES) -d "$(OUT_DIR)" $(SOURCES)

run: compile
	java --module-path "$(JAVAFX_LIB)" --add-modules $(MODULES) -cp "$(OUT_DIR)" $(MAIN_CLASS)

javadoc: check-javafx
	mkdir -p "$(DOC_DIR)"
	javadoc --module-path "$(JAVAFX_LIB)" --add-modules $(MODULES) -d "$(DOC_DIR)" $(SOURCES)

clean:
	rm -rf "$(OUT_DIR)" "$(DOC_DIR)"
