CC = gcc
CFLAGS = -O2 -w -fmessage-length=0 -fvisibility=hidden -fPIC -DYYTOKENTYPE -DECERE_STATIC
OBJECTS = \
	bootstrap/ast.o bootstrap/copy.o bootstrap/dbpass.o bootstrap/ecdefs.o bootstrap/expression.o \
	bootstrap/firstPass.o bootstrap/freeAst.o bootstrap/grammar.o bootstrap/lexer.o bootstrap/loadSymbols.o \
	bootstrap/output.o bootstrap/pass0.o bootstrap/pass1.o bootstrap/pass15.o bootstrap/pass16.o bootstrap/pass2.o \
	bootstrap/pass3.o bootstrap/shortcuts.o bootstrap/type.o bootstrap/ec.main.o

all: bootstrap/libecBootstrap.a

bootstrap/libecBootstrap.a:  $(OBJECTS)
	ar rcs bootstrap/libecBootstrap.a $(OBJECTS)

# OBJECT RULES

bootstrap/ast.o: bootstrap/ast.c
	$(CC) $(CFLAGS) -c bootstrap/ast.c -o bootstrap/ast.o

bootstrap/copy.o: bootstrap/copy.c
	$(CC) $(CFLAGS) -c bootstrap/copy.c -o bootstrap/copy.o

bootstrap/dbpass.o: bootstrap/dbpass.c
	$(CC) $(CFLAGS) -c bootstrap/dbpass.c -o bootstrap/dbpass.o

bootstrap/ecdefs.o: bootstrap/ecdefs.c
	$(CC) $(CFLAGS) -c bootstrap/ecdefs.c -o bootstrap/ecdefs.o

bootstrap/expression.o: bootstrap/expression.c
	$(CC) $(CFLAGS) -c bootstrap/expression.c -o bootstrap/expression.o

bootstrap/firstPass.o: bootstrap/firstPass.c
	$(CC) $(CFLAGS) -c bootstrap/firstPass.c -o bootstrap/firstPass.o

bootstrap/freeAst.o: bootstrap/freeAst.c
	$(CC) $(CFLAGS) -c bootstrap/freeAst.c -o bootstrap/freeAst.o

bootstrap/grammar.o: bootstrap/grammar.c
	$(CC) $(CFLAGS) -c bootstrap/grammar.c -o bootstrap/grammar.o

bootstrap/lexer.o: bootstrap/lexer.c
	$(CC) $(CFLAGS) -c bootstrap/lexer.c -o bootstrap/lexer.o

bootstrap/loadSymbols.o: bootstrap/loadSymbols.c
	$(CC) $(CFLAGS) -c bootstrap/loadSymbols.c -o bootstrap/loadSymbols.o

bootstrap/output.o: bootstrap/output.c
	$(CC) $(CFLAGS) -c bootstrap/output.c -o bootstrap/output.o

bootstrap/pass0.o: bootstrap/pass0.c
	$(CC) $(CFLAGS) -c bootstrap/pass0.c -o bootstrap/pass0.o

bootstrap/pass1.o: bootstrap/pass1.c
	$(CC) $(CFLAGS) -c bootstrap/pass1.c -o bootstrap/pass1.o

bootstrap/pass15.o: bootstrap/pass15.c
	$(CC) $(CFLAGS) -c bootstrap/pass15.c -o bootstrap/pass15.o

bootstrap/pass16.o: bootstrap/pass16.c
	$(CC) $(CFLAGS) -c bootstrap/pass16.c -o bootstrap/pass16.o

bootstrap/pass2.o: bootstrap/pass2.c
	$(CC) $(CFLAGS) -c bootstrap/pass2.c -o bootstrap/pass2.o

bootstrap/pass3.o: bootstrap/pass3.c
	$(CC) $(CFLAGS) -c bootstrap/pass3.c -o bootstrap/pass3.o

bootstrap/shortcuts.o: bootstrap/shortcuts.c
	$(CC) $(CFLAGS) -c bootstrap/shortcuts.c -o bootstrap/shortcuts.o

bootstrap/type.o: bootstrap/type.c
	$(CC) $(CFLAGS) -c bootstrap/type.c -o bootstrap/type.o

bootstrap/ec.main.o: bootstrap/ec.main.c
	$(CC) $(CFLAGS) -c bootstrap/ec.main.c -o bootstrap/ec.main.o

clean:
	rm -f bootstrap/libecBootstrap.a $(OBJECTS)
 