# use gmake

OCP_TL1_EXAMPLES_DIR = tl_sc/ocp_tl1_examples
OCP_TL1_EXAMPLES_TRACE_FILE = $(OCP_TL1_EXAMPLES_DIR)/ocp_tl1_examples.trace
OCP_TL1_EXAMPLES_PROGRAMS = $(OCP_TL1_EXAMPLES_DIR)/run_async \
							$(OCP_TL1_EXAMPLES_DIR)/run_async_hs \
							$(OCP_TL1_EXAMPLES_DIR)/run_sync \
							$(OCP_TL1_EXAMPLES_DIR)/run_sync1 \
							$(OCP_TL1_EXAMPLES_DIR)/run_sync2 

OCP_TL2_EXAMPLES_DIR = tl_sc/ocp_tl2_examples
OCP_TL2_EXAMPLES_TRACE_FILE = $(OCP_TL2_EXAMPLES_DIR)/ocp_tl2_examples.trace
OCP_TL2_EXAMPLES_PROGRAMS = $(OCP_TL2_EXAMPLES_DIR)/run20 \
							$(OCP_TL2_EXAMPLES_DIR)/run21

SIMPLE_EXAMPLES_DIR = tl_sc/simple_examples
SIMPLE_EXAMPLES_TRACE_FILE = $(SIMPLE_EXAMPLES_DIR)/simple_examples.trace
SIMPLE_EXAMPLES_PROGRAMS = $(SIMPLE_EXAMPLES_DIR)/run_tl1 \
							$(SIMPLE_EXAMPLES_DIR)/run_tl2 \
							$(SIMPLE_EXAMPLES_DIR)/run_tl3

ADAPTER_TL0_TL1_DIR = tl_sc/layer_adapters/tl0_tl1
ADAPTER_TL0_TL1_TRACE_FILE = $(ADAPTER_TL0_TL1_DIR)/tl0_tl1_examples.trace
ADAPTER_TL0_TL1_PROGRAMS = $(ADAPTER_TL0_TL1_DIR)/run_master_async \
							$(ADAPTER_TL0_TL1_DIR)/run_master_sync \
							$(ADAPTER_TL0_TL1_DIR)/run_master_sync2 \
							$(ADAPTER_TL0_TL1_DIR)/run_master_sync_hs \
							$(ADAPTER_TL0_TL1_DIR)/run_slave_async \
							$(ADAPTER_TL0_TL1_DIR)/run_slave_sync \
							$(ADAPTER_TL0_TL1_DIR)/run_slave_sync2 \
							$(ADAPTER_TL0_TL1_DIR)/run_slave_sync_hs \

TRACE_FILES = $(OCP_TL1_EXAMPLES_TRACE_FILE) \
				$(OCP_TL2_EXAMPLES_TRACE_FILE) \
				$(SIMPLE_EXAMPLES_TRACE_FILE) \
				$(ADAPTER_TL0_TL1_TRACE_FILE)

# Standard targets.

all.trace : $(TRACE_FILES)
	cat $(TRACE_FILES) > all.trace

$(OCP_TL1_EXAMPLES_TRACE_FILE) : $(OCP_TL1_EXAMPLES_PROGRAMS)
	@./run_ocp_tl1_examples.sh

$(OCP_TL2_EXAMPLES_TRACE_FILE) : $(OCP_TL2_EXAMPLES_PROGRAMS)
	@./run_ocp_tl2_examples.sh

$(SIMPLE_EXAMPLES_TRACE_FILE) : $(SIMPLE_EXAMPLES_PROGRAMS)
	@./run_simple_examples.sh

$(ADAPTER_TL0_TL1_TRACE_FILE) : $(ADAPTER_TL0_TL1_PROGRAMS)
	@./run_tl0_tl1_examples.sh

	
$(OCP_TL1_EXAMPLES_PROGRAMS) :
	@./make_ocp_tl1_examples.sh

$(OCP_TL2_EXAMPLES_PROGRAMS) :
	@./make_ocp_tl2_examples.sh

$(SIMPLE_EXAMPLES_PROGRAMS) :
	@./make_simple_examples.sh

$(ADAPTER_TL0_TL1_PROGRAMS) :
	@./make_tl0_tl1_examples.sh

clean_trace::
	- rm $(TRACE_FILES) 
	- rm all.trace

clean::
	- cd tl_sc; rm `find . -name "*.o"`; rm `find . -name "run_*"`
	- rm $(TRACE_FILES) 
	- rm all.trace

