CXX = g++
CXXFLAGS = -g -O2 `sdl-config --cflags` `freetype-config --cflags`
LIBS = -lGL -lGLU -lSDL_image `sdl-config --libs` `freetype-config --libs`

ifeq (Darwin,$(shell uname))
	LIBPATH += -L"/System/Library/Frameworks/OpenGL.framework/Libraries"
	FRAMEWORK = -framework GLUT
	FRAMEWORK += -framework OpenGL
	LDFLAGS += $(FRAMEWORK)
endif

all: brutalchess brutalchessconsole

objview.o:	objview.cpp glhead.h objfile.h
	$(CXX) $(CXXFLAGS) -c objview.cpp -o $@
	
piecedemo.o:	piecedemo.cpp glhead.h objfile.h
	$(CXX) $(CXXFLAGS) -c piecedemo.cpp -o $@
	
vector.o:	vector.cpp vector.h glhead.h
	$(CXX) $(CXXFLAGS) -c vector.cpp -o $@
	
objfile.o:	objfile.cpp objfile.h vector.h glhead.h
	$(CXX) $(CXXFLAGS) -c objfile.cpp -o $@

board.o:	board.cpp board.h boardmove.h chessplayer.h
	$(CXX) $(CXXFLAGS) -c board.cpp -o $@

boardmove.o:	boardmove.cpp boardmove.h
	$(CXX) $(CXXFLAGS) -c boardmove.cpp -o $@

chessplayer.o:	chessplayer.cpp chessplayer.h board.h boardmove.h
	$(CXX) $(CXXFLAGS) -c chessplayer.cpp -o $@

alphabetaplayer.o:	alphabetaplayer.cpp alphabetaplayer.h board.h chessplayer.h\
					boardmove.h
	$(CXX) $(CXXFLAGS) -c alphabetaplayer.cpp -o $@

humanplayer.o:	humanplayer.cpp humanplayer.h board.h chessplayer.h boardmove.h
	$(CXX) $(CXXFLAGS) -c humanplayer.cpp -o $@
	
randomplayer.o:	randomplayer.cpp randomplayer.h board.h chessplayer.h \
				boardmove.h
	$(CXX) $(CXXFLAGS) -c randomplayer.cpp -o $@

fontloader.o:	fontloader.h fontloader.cpp glhead.h
	$(CXX) $(CXXFLAGS) -c fontloader.cpp -o $@

console.o:	console.cpp console.h glhead.h fontloader.h timer.h
	$(CXX) $(CXXFLAGS) -c console.cpp -o $@
	
timer.o:	timer.cpp timer.h 
	$(CXX) $(CXXFLAGS) -c timer.cpp -o $@

timerchain.o:	timerchain.cpp timerchain.h timer.h
	$(CXX) $(CXXFLAGS) -c timerchain.cpp -o $@
	
textureloader.o:	textureloader.cpp textureloader.h glhead.h
	$(CXX) $(CXXFLAGS) -c textureloader.cpp -o $@
	
movelog.o:	movelog.cpp movelog.h board.h
	$(CXX) $(CXXFLAGS) -c movelog.cpp -o $@

brutalchessconsole.o:	brutalchessconsole.cpp chessplayer.h board.h boardmove.h
	$(CXX) $(CXXFLAGS) -c brutalchessconsole.cpp -o $@

brutalchess.o:	brutalchess.cpp glhead.h objfile.h board.h chessplayer.h \
				fontloader.h console.h timer.h timerchain.h \
				movelog.h textureloader.h chessplayer.h alphabetaplayer.h \
				humanplayer.h randomplayer.h
	$(CXX) $(CXXFLAGS) -c brutalchess.cpp -o $@

brutalchess:	brutalchess.o objfile.o vector.o board.o boardmove.o \
				chessplayer.o fontloader.o console.o timer.o \
				timerchain.o movelog.o textureloader.o alphabetaplayer.o \
				humanplayer.o randomplayer.o
	$(CXX) $(CXXFLAGS) $(LDFLAGS) $(LIBPATH) $(LIBS) brutalchess.o objfile.o vector.o board.o boardmove.o chessplayer.o fontloader.o console.o timer.o timerchain.o movelog.o textureloader.o alphabetaplayer.o humanplayer.o randomplayer.o -o $@
	
brutalchessconsole:	brutalchessconsole.o board.o boardmove.o chessplayer.o \
					humanplayer.o alphabetaplayer.o randomplayer.o
	$(CXX) $(CXXFLAGS) $(LDFLAGS) $(LIBPATH) $(LIBS) brutalchessconsole.o board.o boardmove.o chessplayer.o humanplayer.o alphabetaplayer.o randomplayer.o -o $@

objview:	objview.o vector.o objfile.o
	$(CXX) $(CXXFLAGS) $(LDFLAGS) $(LIBPATH) $(LIBS) objview.o vector.o objfile.o -o $@
	
piecedemo:	piecedemo.o vector.o objfile.o
	$(CXX) $(CXXFLAGS) $(LDFLAGS) $(LIBPATH) $(LIBS) piecedemo.o vector.o objfile.o -o $@
	
clean:
	rm -f *.o objview piecedemo brutalchess brutalchessconsole
