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

Last change on this file since 68 was 68, checked in by rosiere, 16 years ago

read_queue : systemC et vhdl ok !
queue : quelques petits modif pour avoir une queue de taille 1
nettoyage des fichiers *mkf*

File size: 6.0 KB
Line 
1#
2# $Id$
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_PARAMS                     = $(SYSTEMC_EXEC_PARAMS_$(SIMULATOR))
23EXEC_LOG                        = $(patsubst $(DIR_CFG_GEN)/%.cfg,$(DIR_LOG)/%.exec.log,$(wildcard $(DIR_CFG_GEN)/*.cfg))       \
24                                  $(patsubst $(DIR_CFG_USER)/%.cfg,$(DIR_LOG)/%.exec.log,$(wildcard $(DIR_CFG_USER)/*.cfg))
25EXEC                            = soft
26
27#-----[ Rules ]--------------------------------------------
28.PRECIOUS                       : $(DIR_BIN)/%.x $(DIR_LOG)/%.exec.log
29.NOPARALLEL                     : clean clean_all help
30
31all_selftest                    : test_env $(DIR_OBJ) $(DIR_BIN) $(DIR_LOG)
32                                @\
33                                $(MAKE) library;\
34                                $(MAKE) $(DIR_BIN)/$(EXEC).x;
35
36execute                         : all_selftest
37                                @$(MAKE) $(EXEC_LOG);
38
39reconfig                        :
40                                @\
41                                $(MAKE) config_clean;\
42                                $(MAKE) config;
43
44config_clean                    :
45                                @$(RM) $(DIR_CFG_GEN)
46
47config                          : $(DIR_CFG_GEN)
48                                @\
49                                $(ECHO) "Generate configuration";                                                                       \
50                                declare -i  CPT=0;                                                                                      \
51                                declare     files;                                                                                      \
52                                                                                                                                        \
53                                if $(TEST) -f $(CFG_FILE_DEBUG); then                                                                   \
54                                        files=$(CFG_FILE_DEBUG);                                                                        \
55                                else                                                                                                    \
56                                        files=$$($(LS) *.$(CFG_FILE_EXTENSION) );                                                       \
57                                fi;                                                                                                     \
58                                                                                                                                        \
59                                for file in $$files; do                                                                                 \
60                                                                                                                                        \
61                                        declare     NAME;                                                                               \
62                                        declare -ai MIN ;                                                                               \
63                                        declare -ai MAX ;                                                                               \
64                                        declare -a  STEP;                                                                               \
65                                        declare -a  LINE;                                                                               \
66                                        declare -ai PERIOD;                                                                             \
67                                        declare -a  RANGE;                                                                              \
68                                        declare -a  RANGE_LOCAL;                                                                        \
69                                        declare -a  SIZE;                                                                               \
70                                        declare -i  IT=0;                                                                               \
71                                                                                                                                        \
72                                        PERIOD[0]=1;                                                                                    \
73                                                                                                                                        \
74                                        while $(READ) line; do                                                                          \
75                                                LINE=($$line);                                                                          \
76                                                                                                                                        \
77                                                if $(TEST) $$IT -eq 0; then                                                             \
78                                                        NAME=$${LINE[0]};                                                               \
79                                                else                                                                                    \
80                                                        MIN[$$IT]=$${LINE[0]};                                                          \
81                                                        MAX[$$IT]=$${LINE[1]};                                                          \
82                                                        STEP[$$IT]=$${LINE[2]};                                                         \
83                                                        RANGE[$$IT]=$$($(DIR_SCRIPT)/range.sh $${LINE[0]} $${LINE[1]} $${LINE[2]});     \
84                                                        RANGE_LOCAL=($${RANGE[$$IT]});                                                  \
85                                                        SIZE[$$IT]=$${#RANGE_LOCAL[*]};                                                 \
86                                                        PERIOD[$$IT]=$$(($${PERIOD[$$(($$IT-1))]}*$${SIZE[$$IT]}));                     \
87                                                fi;                                                                                     \
88                                                                                                                                        \
89                                                IT=$$(($$IT+1));                                                                        \
90                                        done < $$file;                                                                                  \
91                                                                                                                                        \
92                                        declare -i x;                                                                                   \
93                                        declare -a DATA;                                                                                \
94                                        declare -ai ENUM_CONFIG=($$($(DIR_SCRIPT)/range.sh 0 $$(($${PERIOD[$$(($$IT-1))]}-1))));        \
95                                        declare -ai ENUM_PARAM=($$($(DIR_SCRIPT)/range.sh 1 $${#MIN[*]}));                              \
96                                                                                                                                        \
97                                        $(ECHO) " * File : $$file";                                                                     \
98                                        $(ECHO) "   * They are $${#MIN[*]} parameters";                                                 \
99                                        $(ECHO) "   * Generate $${PERIOD[$$(($$IT-1))]} configurations";                                \
100                                                                                                                                        \
101                                        for i in $${ENUM_CONFIG[*]}; do                                                                 \
102                                                x=$$i;                                                                                  \
103                                                for j in $${ENUM_PARAM[*]}; do                                                          \
104                                                        RANGE_LOCAL=($${RANGE[$$j]});                                                   \
105                                                        DATA[$$j]="$${RANGE_LOCAL[$$((($$x % $${SIZE[$$j]})))]} ";                      \
106                                                        x=$$(($$x/$${SIZE[$$j]}));                                                      \
107                                                done;                                                                                   \
108                                                $(ECHO) $${DATA[*]} > "$(DIR_CFG_GEN)/$${NAME}_$$CPT.cfg";                              \
109                                                $(ECHO) "   - {$$CPT} $${DATA[*]}";                                                     \
110                                                CPT=$$(($$CPT+1));                                                                      \
111                                        done;                                                                                           \
112                                done;
113
114$(DIR_LOG)/%.exec.log           : $(DIR_CFG_GEN)/%.cfg  $(DIR_BIN)/$(EXEC).x
115                                @\
116                                $(ECHO) "Execute            : $*";\
117                                export SYSTEMC=$(SYSTEMC_$(SIMULATOR)) ; ./$(DIR_BIN)/$(EXEC).x $(EXEC_PARAMS) $* `$(CAT) $<` &> $@
118                                declare -i count=`$(GREP) -ch "Test OK" $@`;            \
119                                if $(TEST) $$count -ne 0;                               \
120                                then echo "                     $* ... OK";             \
121                                else echo "                     $* ... KO"; exit 1;     \
122                                fi;
123
124$(DIR_LOG)/%.exec.log           : $(DIR_CFG_USER)/%.cfg $(DIR_BIN)/$(EXEC).x
125                                @\
126                                $(ECHO) "Execute            : $*";\
127                                export SYSTEMC=$(SYSTEMC_$(SIMULATOR)) ; ./$(DIR_BIN)/$(EXEC).x $(EXEC_PARAMS) $* `$(CAT) $<` &> $@
128                                declare -i count=`$(GREP) -ch "Test OK" $@`;            \
129                                if $(TEST) $$count -ne 0;                               \
130                                then echo "                     $* ... OK";             \
131                                else echo "                     $* ... KO"; exit 1;     \
132                                fi;
133
134$(DIR_BIN)/%.x                  : $(OBJECTS) $(HEADERS) $(DIR_LIB)
135                                @\
136                                $(ECHO) "Linkage            : $*";\
137                                $(CXX) $(LFLAGS) -o $@ $(OBJECTS) $(LIBS);
138
139$(DIR_BIN)                      :
140                                @\
141                                $(ECHO) "Create directory   : $@";\
142                                $(MKDIR) $@;
143
144$(DIR_LOG)                      :
145                                @\
146                                $(ECHO) "Create directory   : $@";\
147                                $(MKDIR) $@;
148
149$(DIR_CFG_GEN)                  :
150                                @\
151                                $(ECHO) "Create directory   : $@";\
152                                $(MKDIR) $@;
153
154selftest_clean_all              : library_clean
155                               
156selftest_clean                  : config_clean
157                                @$(RM)  $(DIR_LOG)              \
158                                        $(DIR_CFG_USER)/*~      \
159                                        *.vhdl                  \
160                                        *.pos                   \
161                                        *.stat                  \
162                                        *.dot                   \
163                                        *.txt                   \
164                                        generated_by_systemcass \
165                                        core*;
166
167selftest_help                   :
168                                @\
169                                $(ECHO) " -----[ Selftest ]-----------------------------------";\
170                                $(ECHO) "";\
171                                $(ECHO) " * all_selftest         : compile all c++ file and execute";\
172                                $(ECHO) " * execute              : execute all instance";\
173                                $(ECHO) " * config               : generate configuration with configuration's file" ;\
174                                $(ECHO) " * reconfig             : regenerate configuration with configuration's file" ;\
175                                $(ECHO) " * clean                : Erase all generate files";\
176                                $(ECHO) " * clean_all            : Clean + Erase all dependant library";\
177                                $(ECHO) " * help                 : print this text";\
178                                $(ECHO) "";
179
180help                            :
181                                @\
182                                $(MAKE) common_help  ; \
183                                $(MAKE) synthesis_help;\ 
184                                $(MAKE) selftest_help;
185
186clean                           :
187                                @\
188                                $(MAKE) common_clean ;\
189                                $(MAKE) synthesis_clean ;\
190                                $(MAKE) selftest_clean;
191
192clean_all                       :
193                                @\
194                                $(MAKE) clean ;\
195                                $(MAKE) selftest_clean_all;
Note: See TracBrowser for help on using the repository browser.