# makefile for system

SERVER_EXECUTABLE = server
SERVER_MODULES_C = x11.c $(SERVER_EXECUTABLE).c
SERVER_MODULES_O = x11.o $(SERVER_EXECUTABLE).o

ROBOT_EXECUTABLE = runme
ROBOT_MODULES_C = x11.c $(ROBOT_EXECUTABLE).c
ROBOT_MODULES_O = x11.o $(ROBOT_EXECUTABLE).o

#DEFS = 
DEFS = -D___SINGLE_HOST

#C_FLAGS =  -g -Wall -W -Wno-unused -O1 -fno-math-errno -fschedule-insns2 -fno-strict-aliasing -fomit-frame-pointer -fPIC -fno-common -mieee-fp
C_FLAGS =  -Wall -W -Wno-unused -O1 -fno-math-errno -fschedule-insns2 -fno-strict-aliasing -fomit-frame-pointer -fPIC -fno-common -mieee-fp

LDFLAGS_EXE =  -rdynamic

C_COMPILER = gcc
C_PREPROC = gcc -E
INCLUDES = -I$(includedir)
LIBS = -lutil -lncurses -ldl -lm -L/usr/X11R6/lib -lX11

GAMBCLIB = libgambc.a

prefix = $(GAMBCDIR)
includedir = $(prefix)/include
libdir = $(prefix)/lib

.SUFFIXES:
.SUFFIXES: .scm .c .o

.c.o:
	$(C_COMPILER) $(INCLUDES) $(C_FLAGS) $(DEFS) -c $*.c

.scm.c:
	gsc -:=$(prefix) -f -c $*.scm

SERVER_OBJECTS = $(SERVER_MODULES_O) $(SERVER_EXECUTABLE)_.o
ROBOT_OBJECTS = $(ROBOT_MODULES_O) $(ROBOT_EXECUTABLE)_.o

all: $(SERVER_EXECUTABLE) $(ROBOT_EXECUTABLE)

$(SERVER_EXECUTABLE): $(SERVER_OBJECTS)
	$(C_COMPILER) $(LDFLAGS_EXE) $(SERVER_OBJECTS) $(prefix)/lib/$(GAMBCLIB) $(LIBS) -o $(SERVER_EXECUTABLE)

$(SERVER_EXECUTABLE)_.c: $(SERVER_MODULES_C)
	gsc -:=$(prefix) -f $(SERVER_MODULES_C)

$(ROBOT_EXECUTABLE): $(ROBOT_OBJECTS)
	$(C_COMPILER) $(LDFLAGS_EXE) $(ROBOT_OBJECTS) $(prefix)/lib/$(GAMBCLIB) $(LIBS) -o $(ROBOT_EXECUTABLE)

$(ROBOT_EXECUTABLE)_.c: $(ROBOT_MODULES_C)
	gsc -:=$(prefix) -f $(ROBOT_MODULES_C)

x11:
	rm -f x11.o*
	gsc -:=$(prefix) -dynamic -ld-options "-L/usr/X11R6/lib -lX11" x11.scm

clean:
	rm -f $(SERVER_MODULES_C) $(SERVER_EXECUTABLE)_.c $(SERVER_OBJECTS) $(ROBOT_MODULES_C) $(ROBOT_EXECUTABLE)_.c $(ROBOT_OBJECTS) *~

test:
	/u/feeley/icfp2002/test/test

realclean: clean
	rm -f $(SERVER_EXECUTABLE) $(ROBOT_EXECUTABLE)


dist:
	tar cf dist.tar README buildme source runme *.scm *.c
	gzip -9 dist.tar
	tar ztf dist.tar.gz
	ls -l dist.tar.gz
	md5sum dist.tar.gz

# Tell versions [3.59,3.63) of GNU make not to export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
