CC=   gcc
OPTS= -std=gnu99

# Debug options
GCFLAGS= -g -Wall
GLIBS=   -lm -lpthread -lGL -lGLU -lX11

# Release options
CFLAGS= -O3 -Wall -DNDEBUG
LIBS=   -lm -lpthread -lGL -lGLU -lX11

all: casim1d

debug: CFLAGS = $(GCFLAGS)
debug: LIBS   = $(GLIBS)
debug: clean all

########################################
########################################

# Obj deps

util.o: util.c util.h Makefile
	${CC} ${OPTS} ${CFLAGS} -c util.c

random.o: random.c random.h Makefile
	${CC} ${OPTS} ${CFLAGS} -c random.c

ps.o: ps.c ps.h Makefile
	${CC} ${OPTS} ${CFLAGS} -c ps.c

statefromeps.o: statefromeps.c statefromeps.h Makefile
	${CC} ${OPTS} ${CFLAGS} -c statefromeps.c

# GUI deps

gui_button.o: gui_button.c gui_button.h gui.h types.h Makefile
	${CC} ${OPTS} ${CFLAGS} -c gui_button.c

gui_util.o: gui_util.c gui_util.h Makefile
	${CC} ${OPTS} ${CFLAGS} -c gui_util.c

gui_stats.o: gui_stats.c gui_stats.h gui.h gui_util.h types.h params.h Makefile
	${CC} ${OPTS} ${CFLAGS} -c gui_stats.c

gui_gameframe.o: gui_gameframe.c gui_gameframe.h gui.h gui_util.h types.h Makefile
	${CC} ${OPTS} ${CFLAGS} -c gui_gameframe.c

gui.o: gui.c gui.h types.h Makefile
	${CC} ${OPTS} ${CFLAGS} -c gui.c

# Main

casim1d.o: casim1d.c casim1d.h params.h Makefile
	${CC} ${OPTS} ${CFLAGS} -c casim1d.c

history.o: history.c history.h params.h Makefile
	${CC} ${OPTS} ${CFLAGS} -c history.c

# Link

casim1d: util.o random.o gui_button.o gui_stats.o gui_gameframe.o gui.o casim1d.o history.o ps.o statefromeps.c gui_util.o Makefile
	${CC} ${OPTS} -o casim1d util.o random.o gui_button.o gui_stats.o gui_util.o gui_gameframe.o gui.o casim1d.o history.o ps.o statefromeps.c ${LIBS}

########################################
########################################

# Maintenance

clean:
	rm -f casim1d *.o

strip: clean
	rm -f *~ \#*
