CFLAGS = `gtk-config --cflags` -g -O2 -Wall
LDFLAGS = -g -O2 -Wall
LIBS = `gtk-config --libs`
PREFIX = /usr/local
BINARY = g5
OBJECTS = bin/game.o bin/history.o bin/rules.o bin/coordinate.o \
          bin/ai/aimain.o bin/ai/aithink.o bin/ai/aithinkaccel.o \
          bin/gui/guimain.o bin/gui/guimenu.o bin/gui/guiloadsave.o \
          bin/gui/guicallbacks.o bin/gui/guiabout.o bin/gui/guioptions.o \
          bin/gui/guioptionmenu.o bin/gui/guiboolchoice.o \
          bin/gui/guinewgame.o bin/gui/guiscore.o bin/gui/guiboard.o \
          bin/gui/guidialog.o

CC = gcc
COMPILE = $(CC) -o $@ $(CFLAGS)
LINK = $(CC) -o $@ $(LDFLAGS) $(LIBS)
RM = /bin/rm
INSTALL = /usr/bin/install
MANPAGE = g5.6.gz
MANTARGET = $(PREFIX)/man/man6/
BINTARGET = $(PREFIX)/games/

all: $(BINARY)

$(BINARY): $(OBJECTS)
	$(LINK) $(OBJECTS)

bin/game.o: src/game.c src/version.h src/game.h src/gui/guiinterface.h src/ai/aiinterface.h src/rules.h src/history.h
	$(COMPILE) -c src/game.c

bin/history.o: src/history.c src/history.h src/game.h src/gui/guiinterface.h src/ai/aiinterface.h
	$(COMPILE) -c src/history.c

bin/rules.o: src/rules.c src/rules.h src/game.h src/coordinate.h
	$(COMPILE) -c src/rules.c

bin/coordinate.o: src/coordinate.c src/coordinate.h src/game.h
	$(COMPILE) -c src/coordinate.c

bin/ai/aimain.o: src/ai/aimain.c src/ai/aiinterface.h src/coordinate.h src/gui/guiinterface.h
	$(COMPILE) -c src/ai/aimain.c

bin/ai/aithink.o: src/ai/aithink.c src/ai/aiinterface.h src/game.h src/coordinate.h src/rules.h
	$(COMPILE) -c src/ai/aithink.c

bin/ai/aithinkaccel.o: src/ai/aithinkaccel.c src/ai/aiinterface.h src/coordinate.h src/game.h
	$(COMPILE) -c src/ai/aithinkaccel.c

bin/gui/guiabout.o: src/gui/guiabout.c src/version.h src/gui/guiinterface.h
	$(COMPILE) -c src/gui/guiabout.c

bin/gui/guiboard.o: src/gui/guiboard.c src/gui/guiinterface.h src/game.h src/rules.h
	$(COMPILE) -c src/gui/guiboard.c

bin/gui/guiboolchoice.o: src/gui/guiboolchoice.c src/gui/guiboolchoice.h
	$(COMPILE) -c src/gui/guiboolchoice.c

bin/gui/guicallbacks.o: src/gui/guicallbacks.c src/gui/guiinterface.h src/history.h src/ai/aiinterface.h
	$(COMPILE) -c src/gui/guicallbacks.c

bin/gui/guidialog.o: src/gui/guidialog.c src/gui/guidialog.h
	$(COMPILE) -c src/gui/guidialog.c

bin/gui/guimain.o: src/gui/guimain.c src/gui/guiinterface.h
	$(COMPILE) -c src/gui/guimain.c

bin/gui/guimenu.o: src/gui/guimenu.c src/gui/guimenu.h
	$(COMPILE) -c src/gui/guimenu.c

bin/gui/guinewgame.o: src/gui/guinewgame.c src/game.h src/gui/guiinterface.h
	$(COMPILE) -c src/gui/guinewgame.c

bin/gui/guioptionmenu.o: src/gui/guioptionmenu.c src/gui/guioptionmenu.h
	$(COMPILE) -c src/gui/guioptionmenu.c

bin/gui/guioptions.o: src/gui/guioptions.c src/gui/guiinterface.h src/game.h src/ai/aiinterface.h
	$(COMPILE) -c src/gui/guioptions.c

bin/gui/guiscore.o: src/gui/guiscore.c src/gui/guiscore.h src/game.h
	$(COMPILE) -c src/gui/guiscore.c

bin/gui/guiloadsave.o: src/gui/guiloadsave.c src/gui/guiloadsave.h
	$(COMPILE) -c src/gui/guiloadsave.c

src/game.h:
src/rules.h: src/coordinate.h
src/coordinate.h:
src/history.h: src/game.h

src/ai/aiinterface.h: src/ai/aithink.h src/ai/aimain.h src/coordinate.h
src/ai/aithink.h: src/coordinate.h src/ai/aithinkaccel.h
src/ai/aithinkaccel.h: src/coordinate.h src/game.h

src/gui/guimain.h: src/coordinate.h
src/gui/guimenu.h:
src/gui/guioptionmenu.h:
src/gui/guiinterface.h: src/gui/guiabout.h src/gui/guiboard.h src/gui/guiboolchoice.h src/gui/guicallbacks.h src/gui/guidialog.h src/gui/guimenu.h src/gui/guinewgame.h src/gui/guioptionmenu.h src/gui/guioptions.h src/gui/guiscore.h
src/gui/guiabout.h: src/game.h
src/gui/guicallbacks.h:
src/gui/guioptions.h:
src/gui/guiboolchoice.h:
src/gui/guinewgame.h:
src/gui/guiscore.h:
src/gui/guiboard.h: src/game.h
src/gui/guidialog.h:
src/gui/loadsave.h:

clean:
	-$(RM) -f $(OBJECTS)

distclean: clean
	-$(RM) -f $(BINARY)

install: all
	-mkdir $(MANTARGET)
	-mkdir $(BINTARGET)
	-$(INSTALL) man/$(MANPAGE) $(MANTARGET)
	-$(INSTALL) $(BINARY) $(BINTARGET)

uninstall:
	-$(RM) -f $(MANTARGET)$(MANPAGE) $(BINTARGET)$(BINARY)

help:
	@echo \"make\" to compile g5.
	@echo \"make clean\" to remove compiled objects.
	@echo \"make distclean\" to remove all compiled/linked files.
	@echo \"make install\" to install g5.
	@echo \"make uninstall\" to uninstall g5.
