# Makefile for Fork95 example programs by C.W. Kessler 01/95

# paths to target system directories:
P4_HOME_DIR = /home/psi/kessler/p4
P4INCLDIR = $(P4_HOME_DIR)/include
P4LIBDIR = $(P4_HOME_DIR)/lib
# PRAM_HOME_DIR = /home/pram
# SBPINCLDIR = $(SBPLIBDIR)/sbp/include
# SBPLIBDIR = $(PRAM_HOME_DIR)/sbp/lib

# ForkLight compiler
FCC=$(FLDIR)/bin/flcc
FLINCL=../include
FCCFLAGS = -v -I$(FLINCL) -c -g0 -ForkLight -nprocs4 -G$(FLDIR)/ex/ -S 
FCCFLAGS8 = -v -I$(FLINCL) -c -g0 -ForkLight -nprocs8 -G$(FLDIR)/ex/ -S 

# target compiler 
# for pure P4:
TCC = gcc
TCCFLAGS = -g -I$(P4INCLDIR) -DP4
# for SBPRAM:
# TCCFLAGS = -g -I$(P4INCLDIR) -I$(SBPINCLDIR) -DP4 -DSBPRAM

# target linker:
TLD = gcc
# for pure P4:
TLDFLAGS = $(FLDIR)/lib/libfl.o $(FLDIR)/ex/timeit.o $(P4LIBDIR)/libp4.a -lsocket -lnsl -lthread -lm
# for SBPRAM:
#TLDFLAGS = $(FLDIR)/lib/libfl.o $(P4LIBDIR)/libp4.a $(SBPLIBDIR)/libsbp.a -lm

ASMS=test.c quick.c merge.c
OBJS=test.o quick.o merge.o
PROGS=test quick merge

all:	test quick merge timeit.o

#test with P4

# FORKLIGHT TO C SOURCE COMPILATION:

merge.c:	merge.fl $(FLDIR)/lib/rcc $(FLDIR)/bin/flcc $(FLDIR)/lib/libfl.h
	$(FCC) $(FCCFLAGS) merge.fl
 
quick.c:	quick.fl $(FLDIR)/lib/rcc $(FLDIR)/bin/flcc $(FLDIR)/lib/libfl.h
	$(FCC) $(FCCFLAGS8) quick.fl
 
test.c:	test.fl $(FLDIR)/lib/rcc $(FLDIR)/bin/flcc $(FLDIR)/lib/libfl.h
	$(FCC) $(FCCFLAGS) test.fl
 
# TARGET COMPILING:

timeit.o: timeit.c 
	$(TCC) $(TCCFLAGS) -c timeit.c 

merge.o: merge.c 
	$(TCC) $(TCCFLAGS) -c merge.c 
 
quick.o: quick.c 
	$(TCC) $(TCCFLAGS) -c quick.c 
 
test.o: test.c 
	$(TCC) $(TCCFLAGS) -c test.c 
 
# TARGET LINKING:

merge:   merge.o merge.c $(FLDIR)/lib/libfl.o
	$(TLD) -o merge merge.o $(TLDFLAGS)

quick:   quick.o quick.c $(FLDIR)/lib/libfl.o
	$(TLD) -o quick quick.o $(TLDFLAGS)

test:   test.o test.c $(FLDIR)/lib/libfl.o
	$(TLD) -o test test.o $(TLDFLAGS)

#hello using SOLARIS threads
#
#hello:	hello.o hello.c hello.fl $(FLDIR)/lib/libfl.o $(FLDIR)/lib/mythread.o
#	gcc hello.o $(FLDIR)/lib/libfl.o $(FLDIR)/lib/mythread.o -o hello
#
#hello.o:	hello.c hello.fl $(FLDIR)/lib/rcc $(FLDIR)/bin/flcc
#	gcc -c -g hello.c
#
#hello.c:	hello.fl $(FLDIR)/lib/rcc $(FLDIR)/bin/flcc $(FLDIR)/lib/libfl.h
#	$(FCC) $(FCCFLAGS) hello.fl

clean:
	rm -f $(PROGS) $(OBJS) $(ASMS)
