SRC = simple.c init.c render.c window.c control.c util.c model.c \
      window_state.c flight.c gxf.c spider.c tux.c bird.c
INC = global.h init.h render.h window.h control.h util.h model.h \
      window_state.h flight.h gxf.h spider.h tux.h \
      basics.h lighting.h mathutil.h xforms.h bird.h

OBJ = simple.o init.o render.o window.o control.o util.o model.o \
      window_state.o flight.o gxf.o spider.o tux.o bird.o


#  Pick one
DEBUG=-g -DDEBUG
PROFILE=-pg
OPTIMIZE=-O6 -mpentiumpro
OPTPROFILE= $(PROFILE) $(OPTIMIZE)

CFLAGS=$(OPTIMIZE) -Wall -Ixform -Igxf
LDFLAGS=xform/libxform.a gxf/libgxffile.a -L/usr/X11R6/lib -lX11 -lm -lXpm

# For glide2x
ifeq ($(GLIDE),2)
CFLAGS += -I /usr/include/glide
LDFLAGS += -lglide2x
else
CFLAGS += -I /usr/include/glide -DUSE_GLIDE3 -DGLIDE3
LDFLAGS += -lglide3x
endif

all: recurse desktop

recurse:
	make -C gxf
	make -C xform GLIDE=$(GLIDE)

# Use the C++ compiler to compile and link since the other libraries
# are written in C++.
.c.o:
	g++ -c $(CFLAGS) $*.c -o $*.o

desktop: $(OBJ)
	g++ $(CFLAGS) -o desktop $(OBJ) $(LDFLAGS)

clean:
	rm -f $(OBJ)
	rm -f *~
	rm -f desktop
	make -C gxf clean
	make -C xform clean GLIDE=$(GLIDE)

# DO NOT DELETE

bird.o: bird.h global.h /usr/include/sys/time.h /usr/include/features.h
bird.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h /usr/include/time.h
bird.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
bird.o: /usr/include/bits/time.h /usr/include/bits/types.h
bird.o: /usr/include/sys/select.h /usr/include/bits/select.h
bird.o: /usr/include/bits/sigset.h model.h window_state.h
bird.o: /usr/include/X11/Xlib.h /usr/include/sys/types.h
bird.o: /usr/include/endian.h /usr/include/bits/endian.h
bird.o: /usr/include/sys/sysmacros.h /usr/include/X11/X.h
bird.o: /usr/include/X11/Xfuncproto.h /usr/include/X11/Xosdefs.h
control.o: /usr/include/stdio.h /usr/include/features.h
control.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
control.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
control.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stdarg.h
control.o: /usr/include/bits/types.h /usr/include/libio.h
control.o: /usr/include/_G_config.h /usr/include/bits/stdio_lim.h
control.o: /usr/include/stdlib.h /usr/include/sys/types.h /usr/include/time.h
control.o: /usr/include/bits/time.h /usr/include/endian.h
control.o: /usr/include/bits/endian.h /usr/include/sys/select.h
control.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
control.o: /usr/include/sys/sysmacros.h /usr/include/alloca.h
control.o: /usr/include/X11/Xlib.h /usr/include/X11/X.h
control.o: /usr/include/X11/Xfuncproto.h /usr/include/X11/Xosdefs.h
control.o: /usr/include/X11/xpm.h /usr/include/X11/Xutil.h control.h global.h
control.o: /usr/include/sys/time.h model.h init.h /usr/include/sys/ipc.h
control.o: /usr/include/bits/ipc.h /usr/include/sys/shm.h
control.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
control.o: /usr/include/bits/confname.h /usr/include/getopt.h
control.o: /usr/include/bits/shm.h
flight.o: /usr/include/stdio.h /usr/include/features.h
flight.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
flight.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
flight.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stdarg.h
flight.o: /usr/include/bits/types.h /usr/include/libio.h
flight.o: /usr/include/_G_config.h /usr/include/bits/stdio_lim.h global.h
flight.o: /usr/include/sys/time.h /usr/include/time.h
flight.o: /usr/include/bits/time.h /usr/include/sys/select.h
flight.o: /usr/include/bits/select.h /usr/include/bits/sigset.h model.h
flight.o: flight.h window_state.h /usr/include/X11/Xlib.h
flight.o: /usr/include/sys/types.h /usr/include/endian.h
flight.o: /usr/include/bits/endian.h /usr/include/sys/sysmacros.h
flight.o: /usr/include/X11/X.h /usr/include/X11/Xfuncproto.h
flight.o: /usr/include/X11/Xosdefs.h window.h control.h
gxf.o: gxf/gxffile.h gxf.h global.h /usr/include/sys/time.h
gxf.o: /usr/include/features.h /usr/include/sys/cdefs.h
gxf.o: /usr/include/gnu/stubs.h /usr/include/time.h
gxf.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
gxf.o: /usr/include/bits/time.h /usr/include/bits/types.h
gxf.o: /usr/include/sys/select.h /usr/include/bits/select.h
gxf.o: /usr/include/bits/sigset.h model.h /usr/include/string.h
init.o: /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h
init.o: /usr/include/gnu/stubs.h
init.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
init.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stdarg.h
init.o: /usr/include/bits/types.h /usr/include/libio.h
init.o: /usr/include/_G_config.h /usr/include/bits/stdio_lim.h
init.o: /usr/include/stdlib.h /usr/include/sys/types.h /usr/include/time.h
init.o: /usr/include/bits/time.h /usr/include/endian.h
init.o: /usr/include/bits/endian.h /usr/include/sys/select.h
init.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
init.o: /usr/include/sys/sysmacros.h /usr/include/alloca.h
init.o: /usr/include/math.h /usr/include/bits/huge_val.h
init.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
init.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/float.h
init.o: /usr/include/X11/xpm.h /usr/include/X11/Xlib.h /usr/include/X11/X.h
init.o: /usr/include/X11/Xfuncproto.h /usr/include/X11/Xosdefs.h
init.o: /usr/include/X11/Xutil.h init.h /usr/include/sys/ipc.h
init.o: /usr/include/bits/ipc.h /usr/include/sys/shm.h /usr/include/unistd.h
init.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
init.o: /usr/include/getopt.h /usr/include/bits/shm.h global.h
init.o: /usr/include/sys/time.h model.h control.h
model.o: global.h /usr/include/sys/time.h /usr/include/features.h
model.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
model.o: /usr/include/time.h
model.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
model.o: /usr/include/bits/time.h /usr/include/bits/types.h
model.o: /usr/include/sys/select.h /usr/include/bits/select.h
model.o: /usr/include/bits/sigset.h model.h flight.h
render.o: /usr/include/math.h /usr/include/features.h
render.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
render.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h
render.o: /usr/include/bits/mathcalls.h
render.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/float.h
render.o: /usr/include/stdio.h
render.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
render.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stdarg.h
render.o: /usr/include/bits/types.h /usr/include/libio.h
render.o: /usr/include/_G_config.h /usr/include/bits/stdio_lim.h
render.o: /usr/include/stdlib.h /usr/include/sys/types.h /usr/include/time.h
render.o: /usr/include/bits/time.h /usr/include/endian.h
render.o: /usr/include/bits/endian.h /usr/include/sys/select.h
render.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
render.o: /usr/include/sys/sysmacros.h /usr/include/alloca.h
render.o: /usr/include/X11/Xlib.h /usr/include/X11/X.h
render.o: /usr/include/X11/Xfuncproto.h /usr/include/X11/Xosdefs.h global.h
render.o: /usr/include/sys/time.h model.h window.h control.h render.h
render.o: window_state.h gxf.h tux.h bird.h
simple.o: /usr/include/stdio.h /usr/include/features.h
simple.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
simple.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
simple.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stdarg.h
simple.o: /usr/include/bits/types.h /usr/include/libio.h
simple.o: /usr/include/_G_config.h /usr/include/bits/stdio_lim.h
simple.o: /usr/include/stdlib.h /usr/include/sys/types.h /usr/include/time.h
simple.o: /usr/include/bits/time.h /usr/include/endian.h
simple.o: /usr/include/bits/endian.h /usr/include/sys/select.h
simple.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
simple.o: /usr/include/sys/sysmacros.h /usr/include/alloca.h
simple.o: /usr/include/signal.h /usr/include/bits/signum.h
simple.o: /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h
simple.o: /usr/include/bits/sigcontext.h /usr/include/asm/sigcontext.h
simple.o: /usr/include/bits/sigstack.h init.h /usr/include/sys/ipc.h
simple.o: /usr/include/bits/ipc.h /usr/include/sys/shm.h
simple.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
simple.o: /usr/include/bits/confname.h /usr/include/getopt.h
simple.o: /usr/include/bits/shm.h /usr/include/X11/Xlib.h
simple.o: /usr/include/X11/X.h /usr/include/X11/Xfuncproto.h
simple.o: /usr/include/X11/Xosdefs.h global.h /usr/include/sys/time.h model.h
simple.o: control.h render.h util.h flight.h window.h window_state.h gxf.h
simple.o: tux.h bird.h
spider.o: spider.h global.h /usr/include/sys/time.h /usr/include/features.h
spider.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
spider.o: /usr/include/time.h
spider.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
spider.o: /usr/include/bits/time.h /usr/include/bits/types.h
spider.o: /usr/include/sys/select.h /usr/include/bits/select.h
spider.o: /usr/include/bits/sigset.h model.h window_state.h
spider.o: /usr/include/X11/Xlib.h /usr/include/sys/types.h
spider.o: /usr/include/endian.h /usr/include/bits/endian.h
spider.o: /usr/include/sys/sysmacros.h /usr/include/X11/X.h
spider.o: /usr/include/X11/Xfuncproto.h /usr/include/X11/Xosdefs.h
tux.o: tux.h global.h /usr/include/sys/time.h /usr/include/features.h
tux.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h /usr/include/time.h
tux.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
tux.o: /usr/include/bits/time.h /usr/include/bits/types.h
tux.o: /usr/include/sys/select.h /usr/include/bits/select.h
tux.o: /usr/include/bits/sigset.h model.h window_state.h
tux.o: /usr/include/X11/Xlib.h /usr/include/sys/types.h /usr/include/endian.h
tux.o: /usr/include/bits/endian.h /usr/include/sys/sysmacros.h
tux.o: /usr/include/X11/X.h /usr/include/X11/Xfuncproto.h
tux.o: /usr/include/X11/Xosdefs.h gxf.h window.h control.h
util.o: /usr/include/sys/time.h /usr/include/features.h
util.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h /usr/include/time.h
util.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
util.o: /usr/include/bits/time.h /usr/include/bits/types.h
util.o: /usr/include/sys/select.h /usr/include/bits/select.h
util.o: /usr/include/bits/sigset.h
window.o: /usr/include/X11/Xlib.h /usr/include/sys/types.h
window.o: /usr/include/features.h /usr/include/sys/cdefs.h
window.o: /usr/include/gnu/stubs.h /usr/include/bits/types.h
window.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
window.o: /usr/include/time.h /usr/include/bits/time.h /usr/include/endian.h
window.o: /usr/include/bits/endian.h /usr/include/sys/select.h
window.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
window.o: /usr/include/sys/sysmacros.h /usr/include/X11/X.h
window.o: /usr/include/X11/Xfuncproto.h /usr/include/X11/Xosdefs.h global.h
window.o: /usr/include/sys/time.h model.h window.h control.h
window_state.o: /usr/include/stdio.h /usr/include/features.h
window_state.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
window_state.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
window_state.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stdarg.h
window_state.o: /usr/include/bits/types.h /usr/include/libio.h
window_state.o: /usr/include/_G_config.h /usr/include/bits/stdio_lim.h
window_state.o: /usr/include/stdlib.h /usr/include/sys/types.h
window_state.o: /usr/include/time.h /usr/include/bits/time.h
window_state.o: /usr/include/endian.h /usr/include/bits/endian.h
window_state.o: /usr/include/sys/select.h /usr/include/bits/select.h
window_state.o: /usr/include/bits/sigset.h /usr/include/sys/sysmacros.h
window_state.o: /usr/include/alloca.h window_state.h /usr/include/X11/Xlib.h
window_state.o: /usr/include/X11/X.h /usr/include/X11/Xfuncproto.h
window_state.o: /usr/include/X11/Xosdefs.h global.h /usr/include/sys/time.h
window_state.o: model.h window.h control.h spider.h tux.h bird.h
