source: trunk/Platforms/Test/Makefile @ 101

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

1) Add soc test
2) fix bug (Pc management, Decod and execute, Update prediction ...)

  • Property svn:keywords set to Id
File size: 7.2 KB
Line 
1#
2# $Id: Makefile 101 2009-01-15 17:19:08Z rosiere $
3#
4# [ Description ]
5#
6# Makefile
7#
8
9#----------------------------------------------------------
10#----------------------------------------------------------
11#-----[ Environment ]--------------------------------------
12#----------------------------------------------------------
13#----------------------------------------------------------
14ifeq ($(origin MORPHEO_TOPLEVEL), undefined)
15        $(error "variable MORPHEO_TOPLEVEL is undefined")
16else
17        include $(MORPHEO_TOPLEVEL)/Makefile.tools
18        include $(MORPHEO_TOPLEVEL)/Makefile.flags
19endif
20
21ifeq ($(origin MORPHEO_TMP), undefined)
22        $(error "variable MORPHEO_TMP is undefined")
23endif
24
25#----------------------------------------------------------
26#----------------------------------------------------------
27#-----[ Directory ]----------------------------------------
28#----------------------------------------------------------
29#----------------------------------------------------------
30ENTITY                          =       Test
31
32DIR_TMP                         =       $(MORPHEO_TMP)
33DIR_INC                         =       include
34DIR_SRC                         =       src
35DIR_OBJ                         =       $(DIR_TMP)/obj
36DIR_BIN                         =       $(DIR_TMP)/bin
37DIR_LOG                         =       $(DIR_TMP)/log
38DIR_DATA                        =       ./data
39DIR_SOFT                        =       $(MORPHEO_TOPLEVEL)/Softwares
40
41#MORPHEO                        -       define in $(MORPHEO_TOPLEVEL)/IPs/systemC/processor/Morpheo/Makefile.deps
42#MORPHEO_DIR                    -       define in $(MORPHEO_TOPLEVEL)/IPs/systemC/processor/Morpheo/Makefile.deps
43#MORPHEO_INCDIR                 -       define in $(MORPHEO_TOPLEVEL)/IPs/systemC/processor/Morpheo/Makefile.deps
44#MORPHEO_LIBDIR                 -       define in $(MORPHEO_TOPLEVEL)/IPs/systemC/processor/Morpheo/Makefile.deps
45#MORPHEO_LIBNAME                -       define in $(MORPHEO_TOPLEVEL)/IPs/systemC/processor/Morpheo/Makefile.deps
46
47#ENVIRONMENT_DIR                -       define in $(MORPHEO_TOPLEVEL)/IPs/systemC/Environment/Makefile.deps
48#ENVIRONMENT_INCDIR             -       define in $(MORPHEO_TOPLEVEL)/IPs/systemC/Environment/Makefile.deps
49#ENVIRONMENT_LIBDIR             -       define in $(MORPHEO_TOPLEVEL)/IPs/systemC/Environment/Makefile.deps
50#ENVIRONMENT_LIBNAME            -       define in $(MORPHEO_TOPLEVEL)/IPs/systemC/Environment/Makefile.deps
51
52#----------------------------------------------------------
53#----------------------------------------------------------
54#-----[ Variables ]----------------------------------------
55#----------------------------------------------------------
56#----------------------------------------------------------
57
58OBJECTS                         =       $(patsubst $(DIR_SRC)/%.cpp,$(DIR_OBJ)/%.o,$(wildcard $(DIR_SRC)/*.cpp))
59LOGS                            =       $(patsubst $(DIR_DATA)/%.cfg,$(DIR_LOG)/%.log,$(wildcard $(DIR_DATA)/*.cfg))
60DEBUG_CFG                       =       $(DIR_DATA)/debug.cfg
61DEBUG_LOG                       =       $(DIR_LOG)/debug.log
62
63EXEC                            =       $(DIR_BIN)/soft.x
64EXEC_PREFIX                     =       
65#$(VALGRIND)
66
67#-----[ Compilation ]--------------------------------------
68INCDIR                          =       $(SYSTEMC_INCDIR_$(SIMULATOR))          \
69                                        $(MORPHEO_INCDIR)                       \
70                                        $(ENVIRONMENT_INCDIR)                   \
71                                        -I$(DIR_INC)                         
72
73LIBDIR                          =       $(SYSTEMC_LIBDIR_$(SIMULATOR))          \
74                                        $(ENVIRONMENT_LIBDIR)                   \
75                                        $(MORPHEO_LIBDIR)                       
76
77LIBNAME                         =       $(ENVIRONMENT_LIBNAME)                  \
78                                        $(MORPHEO_LIBNAME)                      \
79                                        $(SYSTEMC_LIBNAME_$(SIMULATOR))
80
81FLAGS                           =       $(SYSTEMC_CFLAGS_$(SIMULATOR))
82
83PLATFORMS_CXX_FLAGS             =       $(MORPHEO_FLAGS) $(CXX_FLAGS) $(FLAGS) $(INCDIR)
84PLATFORMS_L_FLAGS               =       $(MORPHEO_FLAGS) $(CXX_FLAGS) $(FLAGS) $(LIBDIR)
85
86#----------------------------------------------------------
87#----------------------------------------------------------
88#-----[ Rules ]--------------------------------------------
89#----------------------------------------------------------
90#----------------------------------------------------------
91
92vpath   %.h     $(DIR_INC)
93vpath   %.cpp   $(DIR_SRC)
94vpath   %.o     $(DIR_OBJ)
95vpath   %.cfg   $(DIR_DATA)
96
97.PRECIOUS                       : $(DIR_OBJ)/%.o $(DIR_BIN)/%.x $(DIR_LOG)/%.log
98
99all                             : $(DIR_OBJ) $(DIR_BIN)
100                                @\
101                                $(MAKE) $(EXEC)
102
103$(DIR_BIN)/%.x                  : $(OBJECTS)
104                                @\
105                                $(ECHO) "Compilation        : $*";\
106                                $(CXX) $(PLATFORMS_L_FLAGS)      -o $@ $^ $(LIBNAME);
107
108run                             : $(DIR_LOG) all
109                                @\
110                                declare logs;                                           \
111                                if $(TEST) -f "$(DEBUG_CFG)"; then                      \
112                                        logs="$(DEBUG_LOG)";                            \
113                                else                                                    \
114                                        logs="$(LOGS)";                                 \
115                                fi;                                                     \
116                                $(MAKE) $$logs;                                         \
117                                declare -i nb_test=0;                                   \
118                                declare -i nb_test_ko=0;                                \
119                                for log in $$logs; do                                   \
120                                        $(GREP) -q "Test OK" $$log;                     \
121                                        declare -i test_ok=$$?;                         \
122                                        $(GREP) -q "Test KO" $$log;                     \
123                                        declare -i test_ko=$$?;                         \
124                                        if $(TEST) $$test_ko -eq 0 -o $$test_ok -ne 0;  \
125                                        then nb_test_ko=$$(($${nb_test_ko} + 1));       \
126                                        fi;                                             \
127                                        nb_test=$$(($${nb_test} + 1));                  \
128                                done;                                                   \
129                                if $(TEST) $${nb_test_ko} -ne 0;                        \
130                                then $(ECHO) "-------------------| Test KO !!! ($${nb_test_ko}/$${nb_test})"; exit 1;   \
131                                else $(ECHO) "-------------------| Test OK"; exit 0;    \
132                                fi;
133
134execute                         : run
135
136$(DIR_LOG)/%.log                : %.cfg
137                                @\
138                                file=$$($(BASENAME) $<);                                \
139                                data=$$($(CAT) $<);                                     \
140                                log=$@;                                                 \
141                                $(ECHO) "Run                : $$file";                  \
142                                $(EXEC_PREFIX) $(EXEC) $${data} &> $$log;               \
143                                $(GREP) -q "Test OK" $$log;                             \
144                                declare -i test_ok=$$?;                                 \
145                                $(GREP) -q "Test KO" $$log;                             \
146                                declare -i test_ko=$$?;                                 \
147                                declare timing=$$($(GREP) -h "Timing" $$log);           \
148                                if $(TEST) $$test_ko -ne 0 -a $$test_ok -eq 0;          \
149                                then $(ECHO) -e "                     $$file ... OK    \t$$timing";     \
150                                else $(ECHO) -e "                     $$file ... KO !!!\t$$timing";     \
151                                fi;                                                     \
152
153
154#-----[ Library + Software ]-------------------------------
155
156lib                             :
157                                @\
158                                $(MAKE) --directory=$(ENVIRONMENT_DIR) --makefile=Makefile;\
159                                $(MAKE) --directory=$(MORPHEO_DIR)     --makefile=Makefile;
160
161soft                            :
162                                @\
163                                $(MAKE) --directory=$(DIR_SOFT)        --makefile=Makefile;
164
165#-----[ Rules ]--------------------------------------------
166
167$(DIR_OBJ)/%.o                  : %.cpp
168                                @\
169                                $(ECHO) "Compilation        : $*";\
170                                $(CXX) $(PLATFORMS_CXX_FLAGS) -c -o $@ $<;
171
172$(DIR_OBJ)                      :
173                                @\
174                                $(ECHO) "Create directory   : $@";\
175                                $(MKDIR) $@
176
177$(DIR_BIN)                      :
178                                @\
179                                $(ECHO) "Create directory   : $@";\
180                                $(MKDIR) $@
181
182$(DIR_LOG)                      :
183                                @\
184                                $(ECHO) "Create directory   : $@";\
185                                $(MKDIR) $@
186
187#-----[ Clean + help ]-------------------------------------
188
189clean                           :
190                                @\
191                                $(ECHO) "Delete     temporary files in directory $(PWD)";\
192                                $(RM)   *~ $(DIR_SRC)/*~ $(DIR_INC)/*~ $(DIR_DATA)/*~ *core* tty* *.vhdl *.log *.stat *.pos\
193                                        $(DIR_OBJ) $(DIR_BIN) $(DIR_LOG);
194
195clean_all                       : clean
196                                @\
197                                $(ECHO) "Delete     generated files in directory $(PWD)";\
198                                $(MAKE) --directory=$(ENVIRONMENT_DIR) --makefile=Makefile clean_all; \
199                                $(MAKE) --directory=$(MORPHEO_DIR)     --makefile=Makefile clean_all; \
200                                $(MAKE) --directory=$(DIR_SOFT)        --makefile=Makefile clean_all;
201
202
203help                            :
204                                @\
205                                $(ECHO) " -----[ Common ]-------------------------------------";\
206                                $(ECHO) "";\
207                                $(ECHO) " * all (default rules) : create software";\
208                                $(ECHO) " * run                 : execute platforms";\
209                                $(ECHO) " * lib                 : make library";\
210                                $(ECHO) " * soft                : make software";\
211                                $(ECHO) " * execute             : cf 'make run'";\
212                                $(ECHO) " * clean               : erase temporary files";\
213                                $(ECHO) " * clean_all           : erase generated files";\
214                                $(ECHO) " * help                : print this message";\
215                                $(ECHO) "";
216
217include $(MORPHEO_TOPLEVEL)/IPs/systemC/processor/Morpheo/Makefile.deps
218include $(MORPHEO_TOPLEVEL)/IPs/systemC/Environment/Makefile.deps
Note: See TracBrowser for help on using the repository browser.