source: trunk/Platforms/Test/Makefile @ 145

Last change on this file since 145 was 145, checked in by rosiere, 14 years ago

1) add test with SPECINT2K
2) new config of Selftest
3) modif RAT to support multiple depth_save ... but not finish (need fix Update Prediction Table)
4) add Function_pointer but need fix

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