# User must specify the root path for the OCP SystemC communication channel  

TL_SC = /path/to/channel

SYSTEMC = /path/to/systemc

# use one of these
#TARGET_ARCH = linux
#TARGET_ARCH = gccsparcOS5
#TARGET_ARCH = cygwin


CC = g++
debug: OPT = -g
opt: OPT = -O
FLAGS = -Wall -Wno-deprecated

INC = -I. -I$(SYSTEMC)/include -I$(TL_SC)/include -I../../include/tl0_tl1

.cpp.o:
	$(CC) $(OPT) $(FLAGS) $(INC) -c $<

LDPATH += -L $(SYSTEMC)/lib-$(TARGET_ARCH)
LDLIBS += -lsystemc -lm

# Standard targets.

# debug | opt: run_tl0_slave_async run_tl0_slave_sync run_tl0_slave_sync2 run_tl0_slave_sync_hs run_tl0_master_async run_tl0_master_sync run_tl0_master_sync2 run_tl0_master_sync_hs 
debug | opt: run_tl0_slave_async run_tl0_slave_sync run_tl0_slave_sync2 run_tl0_master_async run_tl0_master_sync run_tl0_master_sync2

run_tl0_slave_async: top_slave_async.o ocp_tl0_tl1_slave_adapter.o ocp_tl0_slave_async.o ocp_tl1_master_async.o
	$(CC) $(OPT) -o $@ $+ $(LDPATH) $(LDLIBS)

run_tl0_slave_sync: top_slave_sync.o ocp_tl0_tl1_slave_adapter.o ocp_tl0_slave_sync.o ocp_tl1_master_async.o
	$(CC) $(OPT) -o $@ $+ $(LDPATH) $(LDLIBS)

run_tl0_slave_sync2: top_slave_sync2.o ocp_tl0_tl1_slave_adapter.o ocp_tl0_slave_sync2.o ocp_tl1_master_async.o
	$(CC) $(OPT) -o $@ $+ $(LDPATH) $(LDLIBS)

run_tl0_slave_sync_hs: top_slave_sync_hs.o ocp_tl0_tl1_slave_adapter_hs.o ocp_tl0_slave_sync_hs.o ocp_tl1_master_async_hs.o
	$(CC) $(OPT) -o $@ $+ $(LDPATH) $(LDLIBS)

run_tl0_master_async: top_master_async.o ocp_tl0_tl1_master_adapter.o ocp_tl0_master_async.o ocp_tl1_slave_async.o
	$(CC) $(OPT) -o $@ $+ $(LDPATH) $(LDLIBS)

run_tl0_master_sync: top_master_sync.o ocp_tl0_tl1_master_adapter.o ocp_tl0_master_async.o ocp_tl1_slave_sync.o
	$(CC) $(OPT) -o $@ $+ $(LDPATH) $(LDLIBS)

run_tl0_master_sync2: top_master_sync2.o ocp_tl0_tl1_master_adapter.o ocp_tl0_master_async.o ocp_tl1_slave_sync.o
	$(CC) $(OPT) -o $@ $+ $(LDPATH) $(LDLIBS)

run_tl0_master_sync_hs: top_master_sync_hs.o ocp_tl0_tl1_master_adapter_hs.o ocp_tl0_master_sync_hs.o ocp_tl1_slave_sync_hs.o
	$(CC) $(OPT) -o $@ $+ $(LDPATH) $(LDLIBS)

ocp_tl0_tl1_slave_adapter.o: ../../src/tl0_tl1/ocp_tl0_tl1_slave_adapter.cpp 
	$(CC) $(OPT) $(FLAGS) $(INC) -c $<

ocp_tl0_tl1_master_adapter.o: ../../src/tl0_tl1/ocp_tl0_tl1_master_adapter.cpp 
	$(CC) $(OPT) $(FLAGS) $(INC) -c $<

ocp_tl0_tl1_slave_adapter_hs.o: ../../src/tl0_tl1/ocp_tl0_tl1_slave_adapter_hs.cpp 
	$(CC) $(OPT) $(FLAGS) $(INC) -c $<

ocp_tl0_tl1_master_adapter_hs.o: ../../src/tl0_tl1/ocp_tl0_tl1_master_adapter_hs.cpp 
	$(CC) $(OPT) $(FLAGS) $(INC) -c $<

clean::
	- rm *.o  run_* *.vcd
