source: trunk/Platforms/Test/Makefile@ 128

Last change on this file since 128 was 128, checked in by rosiere, 17 years ago

1) Correct bug in link two signal
2) Fix error detected with valgrind
3) modif distexe script

  • Property svn:keywords set to Id
File size: 10.0 KB
Line 
1
2#
3# $Id: Makefile 128 2009-06-26 08:43:23Z rosiere $
4#
5# [ Description ]
6#
7# Makefile
8#
9
10#----------------------------------------------------------
11#----------------------------------------------------------
12#-----[ Environment ]--------------------------------------
13#----------------------------------------------------------
14#----------------------------------------------------------
15ifeq ($(origin MORPHEO_TOPLEVEL), undefined)
16 $(error "variable MORPHEO_TOPLEVEL is undefined")
17else
18 include $(MORPHEO_TOPLEVEL)/Makefile.tools
19 include $(MORPHEO_TOPLEVEL)/Makefile.flags
20endif
21
22ifeq ($(origin MORPHEO_TMP), undefined)
23 $(error "variable MORPHEO_TMP is undefined")
24endif
25
26DATA_ALL = *
27ifeq ($(origin DATA), undefined)
28DATA = $(DATA_ALL)
29endif
30ifeq ($(origin PRIORITY), undefined)
31PRIORITY = 0
32endif
33
34ifeq ($(flavor CLEAN), undefined)
35CLEAN = 0
36endif
37
38#----------------------------------------------------------
39#----------------------------------------------------------
40#-----[ Directory ]----------------------------------------
41#----------------------------------------------------------
42#----------------------------------------------------------
43ENTITY = Test
44
45PATH_TMP = $(MORPHEO_TMP)
46PATH_INC = include
47PATH_SRC = src
48PATH_OBJ = $(PATH_TMP)/obj
49PATH_LIB = $(PATH_TMP)/lib
50PATH_BIN = $(PATH_TMP)/bin
51PATH_LOG = $(PATH_TMP)/log
52PATH_DATA = ./data
53PATH_LOGS = $(patsubst $(PATH_DATA)/%,$(PATH_LOG)/%,$(wildcard $(PATH_DATA)/*))
54
55PATH_SOFT = $(MORPHEO_TOPLEVEL)/Softwares
56
57#MORPHEO - define in $(MORPHEO_TOPLEVEL)/IPs/systemC/processor/Morpheo/Makefile.deps
58#MORPHEO_DIR - define in $(MORPHEO_TOPLEVEL)/IPs/systemC/processor/Morpheo/Makefile.deps
59#MORPHEO_INCDIR - define in $(MORPHEO_TOPLEVEL)/IPs/systemC/processor/Morpheo/Makefile.deps
60#MORPHEO_LIBDIR - define in $(MORPHEO_TOPLEVEL)/IPs/systemC/processor/Morpheo/Makefile.deps
61#MORPHEO_LIBNAME - define in $(MORPHEO_TOPLEVEL)/IPs/systemC/processor/Morpheo/Makefile.deps
62
63#ENVIRONMENT_DIR - define in $(MORPHEO_TOPLEVEL)/IPs/systemC/Environment/Makefile.deps
64#ENVIRONMENT_INCDIR - define in $(MORPHEO_TOPLEVEL)/IPs/systemC/Environment/Makefile.deps
65#ENVIRONMENT_LIBDIR - define in $(MORPHEO_TOPLEVEL)/IPs/systemC/Environment/Makefile.deps
66#ENVIRONMENT_LIBNAME - define in $(MORPHEO_TOPLEVEL)/IPs/systemC/Environment/Makefile.deps
67
68#----------------------------------------------------------
69#----------------------------------------------------------
70#-----[ Variables ]----------------------------------------
71#----------------------------------------------------------
72#----------------------------------------------------------
73SOURCES = $(wildcard $(PATH_SRC)/*.cpp)
74OBJECTS = $(patsubst $(PATH_SRC)/%.cpp,$(PATH_OBJ)/%.o,$(SOURCES))
75LOGS = $(patsubst $(PATH_DATA)/%.cfg,$(PATH_LOG)/%.log,$(wildcard $(PATH_DATA)/$(DATA)/*.cfg))
76EXEC = $(PATH_BIN)/soft.x
77EXEC_PREFIX = $(NICE) -n $(PRIORITY)
78#$(VALGRIND)
79EXEC_PARAMS = $(SYSTEMC_EXEC_PARAMS_$(SIMULATOR_SYSTEMC))
80
81SCRIPT = make.sh
82
83#-----[ Compilation ]--------------------------------------
84INCDIR = $(SYSTEMC_INCDIR_$(SIMULATOR_SYSTEMC)) \
85 $(MORPHEO_INCDIR) \
86 $(ENVIRONMENT_INCDIR) \
87 -I$(PATH_INC)
88
89#LIBDIR = $(SYSTEMC_LIBDIR_$(SIMULATOR_SYSTEMC)) \
90# $(ENVIRONMENT_LIBDIR) \
91# $(MORPHEO_LIBDIR)
92
93LIBDIR = $(SYSTEMC_LIBDIR_$(SIMULATOR_SYSTEMC)) \
94 -L$(PATH_LIB)
95
96LIBNAME = $(ENVIRONMENT_LIBNAME) \
97 $(MORPHEO_LIBNAME) \
98 $(SYSTEMC_LIBNAME_$(SIMULATOR_SYSTEMC))
99
100FLAGS = $(SYSTEMC_CFLAGS_$(SIMULATOR_SYSTEMC))
101
102PLATFORMS_CXX_FLAGS = $(MORPHEO_FLAGS) $(CXX_FLAGS) $(FLAGS) $(INCDIR)
103PLATFORMS_L_FLAGS = $(MORPHEO_FLAGS) $(CXX_FLAGS) $(FLAGS) $(LIBDIR)
104
105#----------------------------------------------------------
106#----------------------------------------------------------
107#-----[ Rules ]--------------------------------------------
108#----------------------------------------------------------
109#----------------------------------------------------------
110
111vpath %.h $(PATH_INC)
112vpath %.cpp $(PATH_SRC)
113vpath %.o $(PATH_OBJ)
114vpath %.cfg $(PATH_DATA)/*/
115
116.PRECIOUS : $(PATH_OBJ)/%.o $(PATH_BIN)/%.x $(PATH_LOG)/%.log
117
118all : $(EXEC)
119
120$(PATH_BIN)/%.x : $(PATH_OBJ) $(PATH_BIN)
121 @\
122 $(ECHO) "Linkage : $*";\
123 case "${SIMULATOR_SYSTEMC}" in \
124 "modelsim") \
125 $(MAKE) $(WORK_NAME); \
126 $(MODELTECH_SCCOM) $(PLATFORMS_CXX_FLAGS) $(SOURCES); \
127 $(MODELTECH_SCCOM) -link $(PLATFORMS_L_FLAGS) $(LIBNAME); \
128 $(ECHO) "#!$(SHELL)" > $@; \
129 $(ECHO) "cd $${PWD};" >> $@; \
130 $(ECHO) "$(MODELTECH_VSIM) -sc_arg "'"$${*}"'" $(WORK_NAME).top;" >> $@;\
131 $(ECHO) "cd -;" >> $@; \
132 $(CHMOD) +x $@; \
133 ;; \
134 *) \
135 $(MAKE) $(OBJECTS); \
136 $(CXX) $(PLATFORMS_L_FLAGS) -o $@ $(OBJECTS) $(LIBNAME); \
137 ;; \
138 esac; \
139
140run :
141 @\
142 declare -i clean=$(CLEAN); \
143 if $(TEST) $${clean} -ne 0 -a "$(DATA)" != "$(DATA_ALL)"; then \
144 $(RM) $(PATH_LOG)/$(DATA); \
145 fi; \
146 declare logs="$(LOGS)"; \
147 $(MAKE) $${logs}; \
148 declare -i nb_test=0; \
149 declare -i nb_test_ko=0; \
150 for log in $${logs}; do \
151 $(GREP) -q "Test OK" $$log; \
152 declare -i test_ok=$$?; \
153 $(GREP) -q "Test KO" $$log; \
154 declare -i test_ko=$$?; \
155 if $(TEST) $${test_ko} -eq 0 -o $${test_ok} -ne 0; \
156 then nb_test_ko=$$(($${nb_test_ko} + 1)); \
157 fi; \
158 nb_test=$$(($${nb_test} + 1)); \
159 done; \
160 if $(TEST) $${nb_test_ko} -ne 0; \
161 then $(ECHO) "-------------------| Test KO !!! ($${nb_test_ko}/$${nb_test})"; exit 1; \
162 else $(ECHO) "-------------------| Test OK ($${nb_test})"; exit 0; \
163 fi;
164
165execute : run
166
167debug :
168 @\
169 $(MAKE) run DATA=debug CLEAN=1;
170
171bench :
172 @\
173 $(MAKE) run DATA=bench;
174
175distexe :
176 @\
177 $(RM) $(SCRIPT); \
178 for log in $(LOGS); do \
179 $(ECHO) -n "cd $(MORPHEO_TOPLEVEL); source environment.sh; cd -; path=\"${PWD}\"; " >> $(SCRIPT); \
180 if $(TEST) $(CLEAN) -ne 0; then \
181 $(ECHO) -n "$(RM) $${log}; " >> $(SCRIPT); \
182 fi; \
183 $(ECHO) "$(MAKE) -C "'$${path}'" $${log} PRIORITY=$(PRIORITY);" >> $(SCRIPT); \
184 done; \
185 $(CHMOD) +x $(SCRIPT);
186
187$(PATH_LOG)/%.log : $(PATH_DATA)/%.cfg $(EXEC) $(PATH_LOGS)
188 @\
189 file=$$($(BASENAME) $<); \
190 data=$$(eval echo $$($(CAT) $<)); \
191 log=$@; \
192 $(ECHO) "Run : $*"; \
193 $(EXEC_PREFIX) $(EXEC) $(EXEC_PARAMS) $${data} &> $$log; \
194 $(GREP) -q "Test OK" $$log; \
195 declare -i test_ok=$$?; \
196 $(GREP) -q "Test KO" $$log; \
197 declare -i test_ko=$$?; \
198 declare timing=$$($(GREP) -h "Timing" $$log); \
199 if $(TEST) $${test_ko} -ne 0 -a $${test_ok} -eq 0; \
200 then test="... OK "; \
201 else test="... KO !!!"; \
202 fi; \
203 $(ECHO) -e " $* $${test}\t$${timing}";\
204 echo "{$$($(date))} $* $${test} $${timing}" >> $$($(DIRNAME) $*).res;\
205
206#-----[ Library + Software ]-------------------------------
207
208env : soft lib
209 @$(MAKE) $(EXEC)
210
211lib :
212 @\
213 $(MAKE) --directory=$(ENVIRONMENT_DIR) --makefile=Makefile;\
214 $(MAKE) --directory=$(MORPHEO_DIR) --makefile=Makefile;
215
216soft :
217 @\
218 $(MAKE) --directory=$(PATH_SOFT) --makefile=Makefile;
219
220#-----[ Rules ]--------------------------------------------
221
222$(PATH_OBJ)/%.o : %.cpp
223 @\
224 $(ECHO) "Compilation : $*";\
225 $(CXX) $(PLATFORMS_CXX_FLAGS) -c -o $@ $<;
226
227$(PATH_OBJ) $(PATH_BIN) $(PATH_LOGS) :
228 @\
229 $(ECHO) "Create directory : $@";\
230 $(MKDIR) $@
231
232#-----[ Clean + help ]-------------------------------------
233
234clean :
235 @\
236 $(ECHO) "Delete temporary files in directory $(PWD)";\
237 $(RM) $(OBJECTS) $(EXEC) $(LOGS) \
238 *~ $(PATH_SRC)/*~ $(PATH_INC)/*~ $(PATH_DATA)/*/*~ *.res *.txt\
239 *core* \
240 tty* \
241 *.vhdl \
242 *.log \
243 *.stat \
244 *.pos \
245 modelsim.ini transcript *wlf* $(WORK_NAME)
246
247clean_all : clean
248 @\
249 $(ECHO) "Delete generated files in directory $(PWD)";\
250 $(RM) $(PATH_OBJ) $(PATH_BIN) $(PATH_LOG) $(SCRIPT);\
251 $(MAKE) --directory=$(PATH_SOFT) --makefile=Makefile clean_all; \
252 $(MAKE) --directory=$(ENVIRONMENT_DIR) --makefile=Makefile clean_all; \
253 $(MAKE) --directory=$(MORPHEO_DIR) --makefile=Makefile clean_all;
254
255
256help :
257 @\
258 $(ECHO) " -----[ Common ]-------------------------------------";\
259 $(ECHO) "";\
260 $(ECHO) " * all (default rules) : create software";\
261 $(ECHO) " * run : execute platforms with test configuration";\
262 $(ECHO) " set DATA to select a specific directory in $(PATH_DATA) (default : all)";\
263 $(ECHO) " set PRIORITY to nice the execution (default : 0)";\
264 $(ECHO) " set CLEAN to remove previous log (default : 0)";\
265 $(ECHO) " example : make run DATA=debug PRIORITY=10 CLEAN";\
266 $(ECHO) " * execute : cf 'make run'";\
267 $(ECHO) " * debug : cf 'make run DATA=debug'";\
268 $(ECHO) " * bench : cf 'make run DATA=bench'";\
269 $(ECHO) " * distexe : Generate an command file to distexe. It's as run command, but just generate an script with all make";\
270 $(ECHO) " * lib : make library";\
271 $(ECHO) " * soft : make software";\
272 $(ECHO) " * clean : erase temporary files";\
273 $(ECHO) " * clean_all : erase generated files";\
274 $(ECHO) " * help : print this message";\
275 $(ECHO) "";
276
277include $(MORPHEO_TOPLEVEL)/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Synthesis
278include $(MORPHEO_TOPLEVEL)/IPs/systemC/processor/Morpheo/Makefile.deps
279include $(MORPHEO_TOPLEVEL)/IPs/systemC/Environment/Makefile.deps
Note: See TracBrowser for help on using the repository browser.