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

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

Modification des classes d'encapsulation des interfaces.
Stable sur tous les composants actuels

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