# ARCADEmini assembler (unix)
# version 1.4 date 2004-03-15
# part of the ARCADEmini project - http[s]://arcademini.schuermans.info/
# Copyright (C) 2003-2004 1stein <1stein@schuermans.info>
# Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html

FLEX=flex
BISON=bison
CC=gcc
CFLAGS=-W -Wall $(CFLAGS_EX)
LFLAGS=$(LFLAGS_EX)

.PHONY: all debug normal opti clean

all: normal

debug: CFLAGS_EX=-g -DDEBUG
debug: LFLAGS_EX=
debug: am_asm

normal: CFLAGS_EX=
normal: LFLAGS_EX=
normal: am_asm

opti: CFLAGS_EX=-O2
opti: LFLAGS_EX=-Wl,--strip-all
opti: am_asm

id_list.o: id_list.c id_list.h debug.h
	$(CC) $(CFLAGS) -c -o id_list.o id_list.c

node.o: node.c node.h id_list.h global.h debug.h
	$(CC) $(CFLAGS) -c -o node.o node.c

parse.c parse.h: parse.y
	$(BISON) -d -v -o parse.c parse.y

parse.o: parse.c parse_.h scan.h node.h global.h debug.h
	$(CC) $(CFLAGS) -c -o parse.o parse.c

scan.c: scan.l
	$(FLEX) -i -oscan.c scan.l

scan.o: scan.c scan.h parse.h id_list.h node.h global.h debug.h
	$(CC) $(CFLAGS) -c -o scan.o scan.c

get_val.o: get_val.c get_val.h id_list.h node.h
	$(CC) $(CFLAGS) -c -o get_val.o get_val.c

textout.o: textout.c textout.h
	$(CC) $(CFLAGS) -c -o textout.o textout.c

global.o: global.c global.h
	$(CC) $(CFLAGS) -c -o global.o global.c

am_asm: id_list.h id_list.o node.h node.o parse_.h parse.o scan.h scan.o get_val.h get_val.o textout.h textout.o global.h global.o main.c
	$(CC) $(CFLAGS) $(LFLAGS) -o am_asm id_list.o node.o parse.o scan.o get_val.o textout.o global.o main.c

clean:
	-rm -rf parse.c parse.h parse.output
	-rm -rf scan.c
	-rm -rf *.o
	-rm -rf am_asm
