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

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

Modif mineur : ajout d'info de débug

Release non stable

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