# Makefile for bison

# where the installed binary goes
BINDIR = :c

# where the parsers go
PARSERDIR = :lib

# names of parser files
PFILE = bison.simple
PFILE1 = bison.hairy

CC = cc
LD = ln
# It is unwise ever to compile a program without symbols.
#CFLAGS = -n +m +p -b -dAMIGA
#CFLAGS = -n -b -dAMIGA -dSHORT_INTS
CFLAGS = -b -dAMIGA -dSHORT_INTS
#LFLAGS = -g
LFLAGS = 
#LIBS = -lgnul32 -lcl32
LIBS = -lgnu -lc

PFILES = -DXPFILE="$(PARSERDIR)/$(PFILE)" \
	 -DXPFILE1="$(PARSERDIR)/$(PFILE1)"

OBJECTS = LR0.o allocate.o closure.o conflicts.o derives.o files.o \
	  getargs.o gram.o lalr.o lex.o main.o nullable.o output.o \
	  print.o reader.o symtab.o warshall.o

start : bison

clean:
	delete *.o core


bison : $(OBJECTS)
	$(LD) $(LFLAGS) -o ram:bison $(OBJECTS) $(LIBS)
	copy ram:bison bison
	- delete ram:bison

# This file is different to pass the parser file names
# to the compiler.

files.o : files.c files.h new.h gram.h
	$(CC) $(CFLAGS) $(PFILES) -o files.o files.c

LR0.o : machine.h new.h gram.h state.h

closure.o : machine.h new.h gram.h

conflicts.o : machine.h new.h files.h gram.h state.h

derives.o : new.h types.h gram.h

getargs.o : files.h

lalr.o : machine.h types.h state.h new.h gram.h

lex.o : files.h symtab.h lex.h

main.o : machine.h

nullable.o : types.h gram.h new.h

output.o : machine.h new.h files.h gram.h state.h
	cc $(CFLAGS) -E160 -o output.o output.c

print.o : machine.h new.h files.h gram.h state.h

reader.o : files.h new.h symtab.h lex.h gram.h

symtab.o : new.h symtab.h gram.h

warshall.o : machine.h
