# Variables comunes
source := source/*.cpp
executable_name := demo_pelotas1
CXX := g++  # Cambiar a clang++ si prefieres
CXXFLAGS := -std=c++11 -Wall  # Opciones comunes de compilación
LDFLAGS := -lSDL2  # Flags de enlace comunes

# Detectar plataforma
ifeq ($(OS),Windows_NT)
    PLATFORM := windows
    LDFLAGS += -lmingw32 -lws2_32 -lSDL2main
    OUTPUT_EXT := .exe
else
    PLATFORM := unix  # Unificación para macOS y Linux
    OUTPUT_EXT := .out
endif

# Regla principal: compilar según la plataforma detectada
all: $(PLATFORM)

# Compilación para Windows
windows:
	$(CXX) $(source) $(CXXFLAGS) $(LDFLAGS) -o $(executable_name)$(OUTPUT_EXT)

# Compilación para Unix (Linux y macOS)
unix:
	$(CXX) $(source) $(CXXFLAGS) $(LDFLAGS) -o $(executable_name)$(OUTPUT_EXT)

# Regla para limpiar archivos generados
clean:
	rm -f $(executable_name)*