# Makefile - Don Yang (uguu.org)
#
# For GNU gmake
#
# make                        debug build without OpenGL
# make NDEBUG=1               release build without OpenGL
# make USE_OPENGL=1           debug build with OpenGL
# make NDEBUG=1 USE_OPENGL=1  release build with OpenGL
#
# 07/15/01

target = serio

ifeq ($(USE_OPENGL), 1)
	objs = dt.o g.o grid.o main.o maze.o ps.o triangle.o
	gcflags = -DUSE_OPENGL
	glflags = -lGL -lGLU -lglut
else
	objs = dt.o grid.o main.o maze.o ps.o triangle.o
	gcflags =
	glflags =
endif

cc = gcc
ld = gcc
lflags = -lm $(glflags)
ifeq ($(NDEBUG), 1)
	cflags = $(gcflags) -O3 -fexpensive-optimizations -finline-functions \
		-DNDEBUG -Wall -ansi
else
	cflags = $(gcflags) -g -Wall -ansi -pedantic
endif

.c.o:
	$(cc) $(cflags) -c $*.c -o $@

all: $(target)

$(target): $(objs)
	$(ld) $(lflags) $(objs) -o $@

dt.o: dt.c dt.h grid.h triangle.h

g.o: g.c g.h grid.h maze.h triangle.h

grid.o: grid.c grid.h triangle.h

main.o: main.c dt.h grid.h maze.h ps.h triangle.h

maze.o: maze.c maze.h triangle.h

ps.o: ps.c ps.h triangle.h

triangle.o: triangle.c triangle.h

dt.h: grid.h triangle.h

g.h: grid.h triangle.h

grid.h: triangle.h

maze.h: triangle.h

ps.h: triangle.h


clean:
	-rm -f *.o
	-rm -f core

backup:
	-rm -f backup.tar.gz
	tar cf backup.tar *.c *.h Makefile*
	gzip -9 backup.tar
