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

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

Documentation pour chaque composant.
Documentation : ajout d'un poster et d'un article.
RegisterFile_Multi_Banked_Glue - non encore stable.

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