#TARGET_ARCH  		= linux
BFD_LIBERTY     = -lbfd -liberty
SOCLIB_LIB 		  = $(SOCLIB)/lib/libsoclib.a
SOCLIB_INCLUDE 	= $(SOCLIB)/include
#SYSTEMC         = /users/outil/systemc/systemc-2.0.1
#SYSTEMC         = /dsk/l1/misc/richard/systemc_2_1.oct_12_2004.beta
#SYSTEMCASS      = /users/cao/buchmann/systemcass/systemcass
SYSTEMC_INC     = $(SYSTEMC)/include
SYSTEMCASS_INC  = $(SYSTEMCASS)/include
SYSTEMC_LIB     = $(SYSTEMC)/lib-$(TARGET_ARCH)/libsystemc.a
SYSTEMCASS_LIB  = $(SYSTEMCASS)/lib-$(TARGET_ARCH)/libsystemc_$(firstword $(CXX)).a

#CXX         		= g++
#CXX          		= icc -w1
CPPFILT     		= c++filt
#DEBUG           = -g -DDEBUG
OPT             = -O2 -UENABLE_TRACE -UENABLE_PAT
#PROF        = -pg # gcc
#PROF        = -qp # icc
CFLAGS      = $(PROF) $(DEBUG) $(OPT) -I. -I$(SOCLIB)/include
LFLAGS      = $(PROF) $(SOCLIB_LIB) $(BFD_LIBERTY) -ldl

CFLAGS_SYSTEMC    = $(CFLAGS) -I$(SYSTEMC_INC)
CFLAGS_SYSTEMCASS = $(CFLAGS) -I$(SYSTEMCASS_INC) -rdynamic #-Wno-deprecated
LFLAGS_SYSTEMC    = $(LFLAGS) $(SYSTEMC_LIB)
LFLAGS_SYSTEMCASS = $(LFLAGS) -rdynamic $(SYSTEMCASS_LIB) 

EXE     = system_systemc.x system_systemcass.x
OBJECTS = $(EXE:.x=.o)
LINKS   = $(OBJECTS:.o=.cpp)

.SECONDARY:

main : $(EXE) 

%_systemc.x : %_systemc.o $(SYSTEMC_LIB)
	$(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC) 2>&1 | $(CPPFILT)

%_systemcass.x : %_systemcass.o  $(SYSTEMCASS_LIB)
	$(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS) 2>&1 | $(CPPFILT)

-include Makefile.deps

%_systemc.cpp : %.cpp 
	ln -s $*.cpp $*_systemc.cpp

%_systemcass.cpp : %.cpp 
	ln -s $*.cpp $*_systemcass.cpp

%_systemc.o : %_systemc.cpp 
	$(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps
	$(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o

%_systemcass.o : %_systemcass.cpp
	$(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps
	$(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o

%.gif : %.dot
	dot -Tgif -o $*.gif $*.dot

view_%.dot : %.gif
	gqview $*.gif &


clean :
	-echo > Makefile.deps
	-rm -f *.o gmon.out
	-rm -f *.txt 
	-rm -f $(EXE) $(OBJECTS) 
	-for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
	-rm -f core*
	-rm -f trace_file.vcd
	-rm -f trace_file.pat
	-rm -f TTY_* 
	-rm -rf code-*.cc code-*.so .libs/
	
