#*************************************#
#* Tomas Lusk, Michal Simek (C) 2005 *#
#*************************************#

# objects for linking main
OBJ=student.o printasm.o printlib.o main.o
# standard libraries for linking main
LOPT=-lstdc++

# default target - create main and help
all : main help_auto

# run profiler

prof: main
	caliper spa_pmu_trace ./main
	
run: main
	./main	
	
# run generated file
exec : all
	./main

# main executable
main: $(OBJ)
	gcc -g $(LOPT) $(OBJ) -o $@

.c.o:
	gcc -g -c $< -o $@

.cpp.o:
	g++ -g -c $< -o $@

.s.o:
	gcc -g -c $< -o $@

.c.s:
	gcc -g -S $< -o $@
	

# delete generated files
clean : clean_obsolete
	rm -f *.o macrogen.s macro_gen main help_auto core

# delete files removed in previous releases
clean_obsolete :
	rm -f README.TXT test macro_gen.c

# generate macros
macrogen.s : macro_gen
	./macro_gen > macrogen.s

# create macro generator
macro_gen : macro_gen.cpp
	g++ macro_gen.cpp -o macro_gen

# generate help
help_auto : macro.s macrogen.s help_gen
	./help_gen > help_auto


# file dependencies
student.o : student.s macro.s macrogen.s
macro.s : macrogen.s
printlib.o : printlib.cpp printlib.h printers.h
main.o: main.cpp
