# Makefile for Stamped 

TARGET = Stamped

GRAMAR = stamped.atg

PACKAGE = IRed.spectro.stamped

MAINCLASS = IRed.spectro.stamped.Compiler

FRAMES = Scanner.frame Parser.frame

GENERATED = Scanner.java Parser.java

SRC = Compiler.java SymbolTable.java Symbol.java Kind.java Place.java Code.java Instruction.java
SRC += DataType.java ComponentTy.java IntegerType.java FloatType.java BoolType.java BlobType.java RecordType.java ArrayType.java UnknownType.java
SRC += ProcType.java TuppleType.java TimeStampType.java StringType.java EventType.java
SRC += AST.java TypedAST.java ConstIntAST.java ConstFloatAST.java ConstBoolAST.java ConstStringAST.java ConstTsAST.java
SRC += RefAST.java ArrayRefAST.java FunCallAST.java ActParsAST.java QualAST.java ExtremeTsAST.java
SRC += BinaryOpAST.java Operators.java UnaryOpAST.java toFloatAST.java toIntegerAST.java
SRC += SequenceAST.java AssignmentAST.java LhsAST.java LhsQualAST.java
SRC += ProcCallAST.java ComponentCallAST.java LhsTuppleAST.java TuppleAST.java
SRC += ReturnAST.java IfAST.java ForAST.java TryAST.java ThrowAST.java
SRC += TaskAST.java Trigger.java Tag.java

# Define programs and commands.
SHELL = sh
JAVAC = gcj
COCO = cocoj
REMOVE = rm -f
COPY = cp

# Default target.
all: begin build end

build: $(TARGET)

# Eye candy.
begin:
	@echo

end:
	@echo

# output file from object files.

$(TARGET) : $(GENERATED) $(SRC)
	@echo
	$(JAVAC) -g -o $(TARGET) --main=$(MAINCLASS) $(GENERATED) $(SRC)

$(GENERATED) : $(GRAMAR) $(FRAMES)
	$(COCO) -package $(PACKAGE) $(GRAMAR) 


# Target: clean project.
clean: begin clean_list end


clean_list :
	@echo
	@echo $(MSG_CLEANING)
	$(REMOVE) $(TARGET)
	$(REMOVE) *~


# Listing of phony targets.
.PHONY : all begin finish end sizebefore sizeafter gccversion \
build elf hex bin lss sym clean clean_list program

