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

# Detectar plataforma
ifeq ($(OS),Windows_NT)
    PLATFORM := windows
    LDFLAGS += -lmingw32 -lws2_32 -lSDL2main
    OUTPUT_EXT := .exe
else
    UNAME_S := $(shell uname -s)
    ifeq ($(UNAME_S),Linux)
        PLATFORM := linux
        OUTPUT_EXT := .out
    endif
    ifeq ($(UNAME_S),Darwin)  # macOS
        PLATFORM := macos
        CXX := clang++  # Usar clang++ en macOS
        OUTPUT_EXT := .out
    endif
endif

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

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

# Regla para Linux
linux:
	$(CXX) $(source) $(CXXFLAGS) $(LDFLAGS) -o $(executable_name)$(OUTPUT_EXT)

# Regla para macOS
macos:
	$(CXX) $(source) $(CXXFLAGS) $(LDFLAGS) -o $(executable_name)$(OUTPUT_EXT)

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