CPP  = ccache g++
OBJ  = src/main.o src/ballsyutils.o src/playstate.o src/replaystate.o src/ball.o src/matchteam.o src/playerbody.o src/sequences.o src/controllers/playercontroller.o src/controllers/humanplayercontroller.o src/controllers/aiplayercontroller.o src/gaia/gaia.o src/gaia/utils.o src/gaia/line.o

LIBS = -Wl,-rpath,/usr/local/lib -L/usr/local/lib -lSDL2main -lSDL2 -lSDL2_image -lSDL2_ttf -lboost_signals
CXXINCS = -I"D:/mingw/include" -I"/usr/local/include/SDL2" -I"/usr/include/SDL2" -I"/usr/include/boost" -I"src"
CXXFLAGS = $(CXXINCS) -DBOOST_ENABLE_ASSERT_HANDLER -Wall -std=c++11 -O2 #-pthread
BIN = ballsy

# -Wno-narrowing -Wno-unused-variable -Wno-unused-local-typedefs -fno-strict-aliasing -fprefetch-loop-arrays -fsignaling-nans -mmmx -msse2 -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free -O2

RM = rm

.PHONY: all all-before all-after

all: all-before ballsy all-after

clean:
	${RM} $(OBJ) $(BIN)

$(BIN): $(OBJ)
	$(CPP) $(OBJ) -o "ballsy" $(LIBS)

src/main.o: src/main.cpp
	$(CPP) -c src/main.cpp -o src/main.o $(CXXFLAGS)

src/ballsyutils.o: src/ballsyutils.cpp
	$(CPP) -c src/ballsyutils.cpp -o src/ballsyutils.o $(CXXFLAGS)

src/playstate.o: src/playstate.cpp
	$(CPP) -c src/playstate.cpp -o src/playstate.o $(CXXFLAGS)

src/replaystate.o: src/replaystate.cpp
	$(CPP) -c src/replaystate.cpp -o src/replaystate.o $(CXXFLAGS)

src/ball.o: src/ball.cpp
	$(CPP) -c src/ball.cpp -o src/ball.o $(CXXFLAGS)

src/matchteam.o: src/matchteam.cpp
	$(CPP) -c src/matchteam.cpp -o src/matchteam.o $(CXXFLAGS)

src/playerbody.o: src/playerbody.cpp
	$(CPP) -c src/playerbody.cpp -o src/playerbody.o $(CXXFLAGS)

src/sequences.o: src/sequences.cpp
	$(CPP) -c src/sequences.cpp -o src/sequences.o $(CXXFLAGS)

#src/sequencelibrary.o: src/sequencelibrary.cpp
#	$(CPP) -c src/sequencelibrary.cpp -o src/sequencelibrary.o $(CXXFLAGS)

src/controllers/playercontroller.o: src/controllers/playercontroller.cpp
	$(CPP) -c src/controllers/playercontroller.cpp -o src/controllers/playercontroller.o $(CXXFLAGS)

src/controllers/humanplayercontroller.o: src/controllers/humanplayercontroller.cpp
	$(CPP) -c src/controllers/humanplayercontroller.cpp -o src/controllers/humanplayercontroller.o $(CXXFLAGS)

src/controllers/aiplayercontroller.o: src/controllers/aiplayercontroller.cpp
	$(CPP) -c src/controllers/aiplayercontroller.cpp -o src/controllers/aiplayercontroller.o $(CXXFLAGS)

src/gaia/gaia.o: src/gaia/gaia.cpp
	$(CPP) -c src/gaia/gaia.cpp -o src/gaia/gaia.o $(CXXFLAGS)

src/gaia/utils.o: src/gaia/utils.cpp
	$(CPP) -c src/gaia/utils.cpp -o src/gaia/utils.o $(CXXFLAGS)

src/gaia/line.o: src/gaia/line.cpp
	$(CPP) -c src/gaia/line.cpp -o src/gaia/line.o $(CXXFLAGS)
