summaryrefslogtreecommitdiffstats
path: root/SD-VBS/common/makefiles/Makefile.common
blob: ab3a6b4a8eab4ecfede3957d3178cf6398a027fe (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#################################
# Author: Sravanthi Kota Venkata
#################################
SHELL := /bin/bash

# Define MATLAB-PATH with the path to the MATLAB package
MATLAB_PATH = /pkg/bin/matlab
ifeq ($(filter matlab-run,$(MAKECMDGOALS)),matlab-run)
ifneq ($(wildcard $(MATLAB_PATH)),$(MATLAB_PATH))
$(error Please set the appropriate MATLAB path in MATLAB_PATH variable)
endif
endif

ifeq ($(filter mcc-run,$(MAKECMDGOALS)),mcc-run)
ifneq ($(wildcard $(MATLAB_PATH)),$(MATLAB_PATH))
$(error Please set the appropriate MATLAB path in MATLAB_PATH variable)
endif
endif

CC=gcc
LIBEXTRA ?= $(TOP_DIR)/../
override CFLAGS += -DGCC -D$(INPUT) -pthread -I${LIBEXTRA}
COMMON_DIR := $(TOP_DIR)/common/c
M_COMMON := $(TOP_DIR)/common/matlab
M_TOOLBOX=$(TOP_DIR)/common/toolbox
TIMING_DIR := $(TOP_DIR)/cycles/$(BMARK)
TIMES_DIR := $(TOP_DIR)/times/$(BMARK)
PRELOAD_TIMES_DIR := $(TOP_DIR)/preload-times/$(BMARK)
MTIMING_DIR := $(TOP_DIR)/cycles/$(BMARK)
BMARK_DIR := $(TOP_DIR)/benchmarks/$(BMARK)
TOOL_DIR := $(TOP_DIR)/tools
LIBLITMUS ?= /playpen/mc2/liblitmus
ifneq ($(shell grep "define LITMUS 1" ${TOP_DIR}/../extra.h),)
	override CFLAGS += -I${LIBLITMUS}/include -I${LIBLITMUS}/arch/arm/include
	override LDFLAGS += -L${LIBLITMUS} -llitmus
endif
#The options set below and specific to each benchmark. Disparity takes 2 input images, whereas Tracking can take any >1 input images =.

# Variables exported from the benchmark specific Makefiles:
# BMARK
# INPUT - sqcif/qcif/cif

# Matlab source, data and result directory

M_DIR=$(BMARK_DIR)/src/matlab
M_DATA=$(BMARK_DIR)/data/$(INPUT)
M_RESULT=$(BMARK_DIR)/result

# C source, data and result directory

C_DIR=$(BMARK_DIR)/src/c
DATA_DIR=$(BMARK_DIR)/data/$(INPUT)
C_RESULT=$(M_RESULT)

# Source files for C and Common folders

C_SRC := $(wildcard $(C_DIR)/*.c)
COMMON_SRC := $(wildcard $(COMMON_DIR)/*.c)

# RULES

EXE =
INCLUDES = -I$(COMMON_DIR) -I$(C_DIR)
COMPILE_C = $(CC) $(CFLAGS) $(INCLUDES) -O2
#COMPILE_C = $(CC) $(CFLAGS) -DGENERATE_OUTPUT -lm -O2 $(INCLUDES)
COMPILE_G = $(CC) $(CFLAGS) -g -lm $(INCLUDES)
COMPILE_PG = $(COMPILE_G) -pg

preload-run: compile
	@echo preloaded timing
	@echo 3 | tee /proc/sys/vm/drop_caches
	@find ./ -iname "*.bmp" -exec sh -c '$(TOOL_DIR)/preload {} &' \;
	@find ./ -iname "*.txt" -exec sh -c '$(TOOL_DIR)/preload {} &' \;
	mkdir -p $(PRELOAD_TIMES_DIR)
	@echo -e "Data set\t\t- $(INPUT)" 
	(time ./$(BMARK)$(EXE) $(DATA_DIR))  |& tee $(PRELOAD_TIMES_DIR)/T_$(INPUT).txt
	@kill -2 `pgrep preload`

time-run: compile
	mkdir -p $(TIMES_DIR)
	@echo -e "Data set\t\t- $(INPUT)" 
	@echo 3 | tee /proc/sys/vm/drop_caches
	(time ./$(BMARK)$(EXE) $(DATA_DIR))  |& tee $(TIMES_DIR)/T_$(INPUT).txt

c-run: compile
	@echo -e "Data set\t\t- $(INPUT)" 
	mkdir -p $(TIMING_DIR)
	@./$(BMARK)$(EXE) $(DATA_DIR) $(C_RESULT) | tee $(TIMING_DIR)/C_$(INPUT).txt

run: compile
	@echo -e "Data set\t\t- $(INPUT)" 
	@./$(BMARK)$(EXE) $(DATA_DIR) $(C_RESULT)

rt-run: compile
	@echo -e "Data set\t\t- $(INPUT)" 
	@./$(BMARK)$(EXE) $(BMARK)-$(INPUT) 5 0 12345 1

debug:
	@echo Running Debug C Version of the benchmark
	@$(COMPILE_G) $(COMMON_SRC) $(C_SRC) -o $(BMARK)$(EXE)
	@valgrind --leak-check=full ./$(BMARK)$(EXE) $(DATA_DIR) $(C_RESULT)
	#@gdb ./$(BMARK)$(EXE) $(DATA_DIR) $(C_RESULT)

profile: compile-prof
	@echo -e "Data set\t\t- $(INPUT)" 
	@./$(BMARK)$(EXE) $(DATA_DIR) $(C_RESULT)
	@gprof $(BMARK)$(EXE)
	
compile-preload: 
	@$(COMPILE_C) $(TOOL_DIR)\preload.c -o $(TOOL_DIR)\preload

compile: $(C_SRC)
	@echo 
	@echo -e "Benchmark\t\t- $(BMARK)"
	@$(COMPILE_C) $(COMMON_SRC) $(C_SRC) -lrt -lm $(LDFLAGS) -w -o $(BMARK)$(EXE)

compile-prof: $(C_SRC)
	@echo 
	@echo -e "Benchmark\t\t- $(BMARK)"
	@$(COMPILE_PG) $(COMMON_SRC) $(C_SRC) -o $(BMARK)$(EXE)

matlab-run:
	@echo 
	@echo -e "Benchmark\t\t- $(BMARK)"
	@echo -e "Data set\t\t- $(INPUT)" 
	@cd $(M_DIR); $(MATLAB_PATH) -glnx86 -nosplash -nodisplay -r "script_run_profile('$(M_DATA)', '$(M_RESULT)', '$(INPUT)', '$(M_COMMON)', '$(M_TOOLBOX)'); quit" | tee $(MTIMING_DIR)/Matlab_$(INPUT).txt

mcc-run:
	@echo Generating a C standalone application
	cd $(M_DIR); $(MATLAB_PATH) -nosplash -nodesktop -r "mcc -m -v script_run_profile -d $(M_RESULT); quit"
	
all: c-run matlab-run mcc-run

clean:
	@-rm $(BMARK)