# makefile for ffpinterpreter ffpi

# fpc
F = fpc

# FPRTS is used for objects (commands) that are assumed to be there
# and don't need to be made.
FPRTS = `ldpath` -lfp

# lexer and parser respectively
L = fplex
P = school

# C compiler, rm
C = gcc
R = /bin/rm

# object files used by ffpi
OBJ = ffpi.o ffpgen.o fpl.o fpg.o parse.o fplstd.o fpil.o fpig.o ffpint.o

.SUFFIXES:

.SUFFIXES: .lex .grm .fp .o

.PRECIOUS: fpl.fp fpg.fp

.lex.fp:
	fplex $*.lex | sed "s/Def $*/Def $* fplerrcheck o/" > $*.fp

.grm.fp:
	$P $*.grm > $*.fp

.fp.o:
	$F $*.fp
	$C -c $*.c
	$R -f $*.c

ffpi: ${OBJ}
	$C -o ffpi ${OBJ} ${FPRTS}

ffpi.o: ffpi.fp
	$F -m -a -i -o -p ffpi.fp
	$C -c ffpi.c
	$R -f ffpi.c

clean:
	$R -f ${OBJ} ffpi ffpb core

batch: ffpb

ffpb: ffpint.fp
	$F -m ffpint.fp
	$C -o ffpb ffpint.c `ldpath` -lfp
	$R -f ffpint.c
