source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Selftest @ 82

Last change on this file since 82 was 82, checked in by rosiere, 16 years ago
  • support locale (now must "just" translate)
  • update all component with new test format
  • update all component with usage
  • New component : decod queue and prediction_unit
  • Property svn:keywords set to Id
File size: 6.8 KB
Line 
1#
2# $Id: Makefile.Selftest 82 2008-05-01 16:48:45Z rosiere $
3#
4# [ Description ]
5#
6# Makefile
7#
8
9#-----[ Directory ]----------------------------------------
10DIR_BIN                         = bin
11DIR_LIB                         = ../lib
12DIR_CFG_GEN                     = configuration_generated
13DIR_CFG_USER                    = configuration
14DIR_LOG                         = log
15
16#-----[ Variables ]----------------------------------------
17CFG_FILE_EXTENSION              = cfg
18CFG_FILE_DEBUG                  = debug.$(CFG_FILE_EXTENSION)
19
20OBJECTS                         = $(OBJECTS_COMMON)
21
22EXEC_PREFIX                     =
23#$(VALGRIND)
24EXEC_PARAMS                     = $(SYSTEMC_EXEC_PARAMS_$(SIMULATOR))
25EXEC_LOG                        = $(patsubst $(DIR_CFG_GEN)/%.cfg,$(DIR_LOG)/%.exec.log,$(wildcard $(DIR_CFG_GEN)/*.cfg))       \
26                                  $(patsubst $(DIR_CFG_USER)/%.cfg,$(DIR_LOG)/%.exec.log,$(wildcard $(DIR_CFG_USER)/*.cfg))
27EXEC                            = soft
28
29#-----[ Rules ]--------------------------------------------
30.PRECIOUS                       : $(DIR_BIN)/%.x $(DIR_LOG)/%.exec.log
31#.NOTPARALLEL                   : clean clean_all help
32
33all_selftest                    : test_env $(DIR_OBJ) $(DIR_BIN) $(DIR_LOG)
34                                @\
35                                $(MAKE) library;\
36                                $(MAKE) $(DIR_BIN)/$(EXEC).x;
37
38execute                         : all_selftest
39                                @\
40                                $(MAKE) $(EXEC_LOG);                                    \
41                                declare -i all_ok=1;                                    \
42                                for i in $(EXEC_LOG); do                                \
43                                    $(GREP) -q "Test OK" $$i;                           \
44                                    declare -i test_ok=$$?;                             \
45                                    $(GREP) -q "Test KO" $$i;                           \
46                                    declare -i test_ko=$$?;                             \
47                                    if $(TEST) $$test_ko -eq 0 -o $$test_ok -ne 0;      \
48                                    then all_ok=0;                                      \
49                                    fi;                                                 \
50                                done;                                                   \
51                                if $(TEST) $$all_ok -eq 1;                              \
52                                then echo "-------------------| Test OK"; exit 0;       \
53                                else echo "-------------------| Test KO"; exit 1;       \
54                                fi;
55
56reconfig                        :
57                                @\
58                                $(MAKE) config_clean;\
59                                $(MAKE) config;
60
61config_clean                    :
62                                @$(RM) $(DIR_CFG_GEN)
63
64config                          : $(DIR_CFG_GEN)
65                                @\
66                                $(ECHO) "Generate configuration";                                                                       \
67                                declare -i  CPT=0;                                                                                      \
68                                declare     files;                                                                                      \
69                                                                                                                                        \
70                                if $(TEST) -f $(CFG_FILE_DEBUG); then                                                                   \
71                                        files=$(CFG_FILE_DEBUG);                                                                        \
72                                else                                                                                                    \
73                                        files=$$($(LS) *.$(CFG_FILE_EXTENSION) );                                                       \
74                                fi;                                                                                                     \
75                                                                                                                                        \
76                                for file in $$files; do                                                                                 \
77                                                                                                                                        \
78                                        declare     NAME;                                                                               \
79                                        declare -ai MIN ;                                                                               \
80                                        declare -ai MAX ;                                                                               \
81                                        declare -a  STEP;                                                                               \
82                                        declare -a  LINE;                                                                               \
83                                        declare -ai PERIOD;                                                                             \
84                                        declare -a  RANGE;                                                                              \
85                                        declare -a  RANGE_LOCAL;                                                                        \
86                                        declare -a  SIZE;                                                                               \
87                                        declare -i  IT=0;                                                                               \
88                                                                                                                                        \
89                                        PERIOD[0]=1;                                                                                    \
90                                                                                                                                        \
91                                        while read line; do                                                                             \
92                                                LINE=($$line);                                                                          \
93                                                                                                                                        \
94                                                if $(TEST) $$IT -eq 0; then                                                             \
95                                                        NAME=$${LINE[0]};                                                               \
96                                                else                                                                                    \
97                                                        MIN[$$IT]=$${LINE[0]};                                                          \
98                                                        MAX[$$IT]=$${LINE[1]};                                                          \
99                                                        STEP[$$IT]=$${LINE[2]};                                                         \
100                                                        RANGE[$$IT]=$$($(DIR_SCRIPT)/range.sh $${LINE[0]} $${LINE[1]} $${LINE[2]});     \
101                                                        RANGE_LOCAL=($${RANGE[$$IT]});                                                  \
102                                                        SIZE[$$IT]=$${#RANGE_LOCAL[*]};                                                 \
103                                                        PERIOD[$$IT]=$$(($${PERIOD[$$(($$IT-1))]}*$${SIZE[$$IT]}));                     \
104                                                fi;                                                                                     \
105                                                                                                                                        \
106                                                IT=$$(($$IT+1));                                                                        \
107                                        done < $$file;                                                                                  \
108                                                                                                                                        \
109                                        declare -i x;                                                                                   \
110                                        declare -a DATA;                                                                                \
111                                        declare -ai ENUM_CONFIG=($$($(DIR_SCRIPT)/range.sh 0 $$(($${PERIOD[$$(($$IT-1))]}-1))));        \
112                                        declare -ai ENUM_PARAM=($$($(DIR_SCRIPT)/range.sh 1 $${#MIN[*]}));                              \
113                                                                                                                                        \
114                                        $(ECHO) " * File : $$file";                                                                     \
115                                        $(ECHO) "   * They are $${#MIN[*]} parameters";                                                 \
116                                        $(ECHO) "   * Generate $${PERIOD[$$(($$IT-1))]} configurations";                                \
117                                                                                                                                        \
118                                        for i in $${ENUM_CONFIG[*]}; do                                                                 \
119                                                x=$$i;                                                                                  \
120                                                for j in $${ENUM_PARAM[*]}; do                                                          \
121                                                        RANGE_LOCAL=($${RANGE[$$j]});                                                   \
122                                                        DATA[$$j]="$${RANGE_LOCAL[$$((($$x % $${SIZE[$$j]})))]} ";                      \
123                                                        x=$$(($$x/$${SIZE[$$j]}));                                                      \
124                                                done;                                                                                   \
125                                                $(ECHO) $${DATA[*]} > "$(DIR_CFG_GEN)/$${NAME}_$$CPT.cfg";                              \
126                                                $(ECHO) "   - {$$CPT} $${DATA[*]}";                                                     \
127                                                CPT=$$(($$CPT+1));                                                                      \
128                                        done;                                                                                           \
129                                done;
130
131$(DIR_LOG)/%.exec.log           : $(DIR_CFG_GEN)/%.cfg  $(DIR_BIN)/$(EXEC).x
132                                @\
133                                $(ECHO) "Execute            : $*";\
134                                export SYSTEMC=$(SYSTEMC_$(SIMULATOR)) ; $(EXEC_PREFIX) ./$(DIR_BIN)/$(EXEC).x $(EXEC_PARAMS) $* `$(CAT) $<` &> $@; \
135                                declare timing=`$(GREP) -h "Timing"  $@`;               \
136                                $(GREP) -q "Test OK" $@;                                \
137                                declare -i test_ok=$$?;                                 \
138                                $(GREP) -q "Test KO" $@;                                \
139                                declare -i test_ko=$$?;                                 \
140                                if $(TEST) $$test_ko -ne 0 -a $$test_ok -eq 0;          \
141                                then echo -e "                     $* ... OK\t$$timing";\
142                                else echo    "                     $* ... KO";          \
143                                fi;
144
145$(DIR_LOG)/%.exec.log           : $(DIR_CFG_USER)/%.cfg $(DIR_BIN)/$(EXEC).x
146                                @\
147                                $(ECHO) "Execute            : $*";\
148                                export SYSTEMC=$(SYSTEMC_$(SIMULATOR)) ; $(EXEC_PREFIX) ./$(DIR_BIN)/$(EXEC).x $(EXEC_PARAMS) $* `$(CAT) $<` &> $@; \
149                                declare timing=`$(GREP) -h "Timing"  $@`;               \
150                                $(GREP) -q "Test OK" $@;                                \
151                                declare -i test_ok=$$?;                                 \
152                                $(GREP) -q "Test KO" $@;                                \
153                                declare -i test_ko=$$?;                                 \
154                                if $(TEST) $$test_ko -ne 0 -a $$test_ok -eq 0;          \
155                                then echo -e "                     $* ... OK\t$$timing";\
156                                else echo    "                     $* ... KO";          \
157                                fi;
158
159$(DIR_BIN)/%.x                  : $(OBJECTS) $(HEADERS) $(DIR_LIB)
160                                @\
161                                $(ECHO) "Linkage            : $*";\
162                                $(CXX) $(LFLAGS) -o $@ $(OBJECTS) $(LIBS);
163
164$(DIR_BIN)                      :
165                                @\
166                                $(ECHO) "Create directory   : $@";\
167                                $(MKDIR) $@;
168
169$(DIR_LOG)                      :
170                                @\
171                                $(ECHO) "Create directory   : $@";\
172                                $(MKDIR) $@;
173
174$(DIR_CFG_GEN)                  :
175                                @\
176                                $(ECHO) "Create directory   : $@";\
177                                $(MKDIR) $@;
178
179selftest_clean_all              : library_clean
180                               
181selftest_clean                  : config_clean
182                                @$(RM)  $(DIR_LOG)              \
183                                        $(DIR_CFG_USER)/*~      \
184                                        *.vhdl                  \
185                                        *.pos                   \
186                                        *.stat                  \
187                                        *.dot                   \
188                                        *.txt                   \
189                                        generated_by_systemcass \
190                                        core*;
191
192selftest_help                   :
193                                @\
194                                $(ECHO) " -----[ Selftest ]-----------------------------------";\
195                                $(ECHO) "";\
196                                $(ECHO) " * all_selftest         : compile all c++ file and execute";\
197                                $(ECHO) " * execute              : execute all instance";\
198                                $(ECHO) " * config               : generate configuration with configuration's file" ;\
199                                $(ECHO) " * reconfig             : regenerate configuration with configuration's file" ;\
200                                $(ECHO) " * clean                : Erase all generate files";\
201                                $(ECHO) " * clean_all            : Clean + Erase all dependant library";\
202                                $(ECHO) " * help                 : print this text";\
203                                $(ECHO) "";
204
205help                            :
206                                @\
207                                $(MAKE) common_help  ; \
208                                $(MAKE) synthesis_help;\
209                                $(MAKE) selftest_help;
210
211clean                           :
212                                @\
213                                $(MAKE) common_clean ;\
214                                $(MAKE) synthesis_clean ;\
215                                $(MAKE) selftest_clean;
216
217clean_all                       :
218                                @\
219                                $(MAKE) clean ;\
220                                $(MAKE) selftest_clean_all;
Note: See TracBrowser for help on using the repository browser.