CC = g++
CFLAGS = -Wall -W -pedantic
CLIBS = -lGL -lm -lGLEW -lSDL2 -lSDL2_mixer -lpng -lturbojpeg

DEMO = karacsony

$(DEMO): main.o Scene.o Texture.o ShaderError.o Shader.o ShaderProgram.o MeshIndex.o Mesh3D.o Demo.o Matrix.o Config.o Sprite.o karacsony.o
	$(CC) *.o $(CLIBS) $(CFLAGS) -o $(DEMO)
	mv $(DEMO) ../

# Common demo stuff
main.o: main.c
	$(CC) main.c -c
Scene.o: Scene.hpp
	$(CC) Scene.hpp -c
Texture.o: Texture.hpp Texture.cpp
	$(CC) Texture.cpp -c
Shader.o: Shader.hpp Shader.cpp
	$(CC) Shader.cpp -c
ShaderError.o: ShaderError.hpp ShaderError.cpp
	$(CC) ShaderError.cpp -c
ShaderProgram.o: ShaderProgram.hpp ShaderProgram.cpp
	$(CC) ShaderProgram.cpp -c
Mesh3D.o: Mesh3D.hpp Mesh3D.cpp
	$(CC) Mesh3D.cpp -c
MeshIndex.o: MeshIndex.hpp MeshIndex.cpp
	$(CC) MeshIndex.cpp -c
Renderbuffer.o: Renderbuffer.hpp Renderbuffer.cpp
	$(CC) Renderbuffer.cpp -c
Matrix.o: Matrix.hpp Matrix.cpp
	$(CC) Matrix.cpp -c
Demo.o: Demo.cpp Demo.hpp
	$(CC) Demo.cpp -c
Config.o: Config.cpp Config.hpp
	$(CC) Config.cpp -c
Sprite.o: Sprite.hpp Sprite.cpp
	$(CC) Sprite.cpp -c
karacsony.o: karacsony.cpp karacsony.hpp
	$(CC) karacsony.cpp -c
clean:
	@echo Cleaning up...
	@rm -f *.o *~ core* *.gch
	@echo Done.
