include ../env.mk

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

.SECONDARY:

main : $(EXE) 

test : system-23.vcd system-23_reference.vcd
	-diff system-23.vcd system-23_reference.vcd
	@echo Test OK.

system-23.vcd : system_systemcass.x
	./system_systemcass.x --nodynamiclink system 23
	tail -n +8 system.vcd > system-23.vcd
	rm system.vcd

system-23_reference.vcd : system_systemc.x
	./system_systemc.x system 23
	tail -n +8 system.vcd > system-23_reference.vcd
	rm system.vcd

%_systemc.x : %_systemc.o $(SYSTEMC_LIB)
	$(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC)

%_systemcass.x : %_systemcass.o  $(SYSTEMCASS_LIB)
	$(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS)

-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

clean :
	rm -f 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 *~
	-rm -rf generated_by_systemcass
	-rm -rf trace_system_systemcass.x.vcd trace_system_systemc.x.vcd
	-rm -rf system-23.vcd
	-rm -rf system_systemcass.log
	
