# Makefile bueno para compilados que mezclen archivos C y C++
# Crea todas las dependencias entre .h y .c/.cc y compila todos
# los .c y .cc. Linka luego todos los .o como output
# Falla el target dist si algun .c, .cc o .h son pasos intermedios

#Nombre del binario final
output=main

#Version
version=0.1

#Se va a usar la SDL {false,true}
use_SDL=true

#Poner lista de archivos que se han de distribuir con el ejecutable
assets=


#Fin de configuracin----------------------------------
sources=$(patsubst %.c,%.,$(wildcard *.c)) $(patsubst %.cc,%.,$(wildcard *.cc))
ifeq ($(use_SDL),true)
CFLAGS  := $(shell sdl-config --cflags) $(CFLAGS)
CXXFLAGS:= -isystem/usr/include/stlport $(subst -I,-isystem,$(shell sdl-config --cflags)) $(CXXFLAGS)
LDFLAGS := -lstlport_gcc -pthread -lSDL_image $(shell sdl-config --libs) $(LDFLAGS)
endif

#por defecto
all: $(output)

run: all
	./$(output)

$(output): $(sources:.=.o)
	$(CXX) $(LDFLAGS) $(sources:.=.o) -o $(output)

#genera las dependencias de los .c
%.d : TEMP = $(shell $(CXX) $(CXXFLAGS) -MM $< 2> /dev/null)
%.d : %.c
	echo "$(if $(TEMP),$@ $(TEMP),)" > $@
%.d : %.cc
	echo "$(if $(TEMP),$@ $(TEMP),)" > $@
-include $(sources:.=.d)

dist:
	-mkdir $(output)-$(version)
	cp *.c *.cc *.h Makefile $(assets) $(output)-$(version)
	tar -zhcf $(output)-$(version).tgz $(output)-$(version)

.PHONY: clean
clean:
	-rm -rf *.d *.o tags $(output) $(output)-$(version).tgz $(output)-$(version)
