source: trunk/Platforms/Test/Makefile@ 115

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

1) Fix bug with previous commit
2) Add test libc
3) Change Dhrystone

  • Property svn:keywords set to Id
File size: 8.5 KB
Line 
1#
2# $Id: Makefile 114 2009-04-16 22:35:37Z 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_LIB = $(DIR_TMP)/lib
37DIR_BIN = $(DIR_TMP)/bin
38DIR_LOG = $(DIR_TMP)/log
39DIR_DATA_TEST = ./data_test
40DIR_DATA_BENCH = ./data_bench
41DIR_SOFT = $(MORPHEO_TOPLEVEL)/Softwares
42
43#MORPHEO - define in $(MORPHEO_TOPLEVEL)/IPs/systemC/processor/Morpheo/Makefile.deps
44#MORPHEO_DIR - define in $(MORPHEO_TOPLEVEL)/IPs/systemC/processor/Morpheo/Makefile.deps
45#MORPHEO_INCDIR - define in $(MORPHEO_TOPLEVEL)/IPs/systemC/processor/Morpheo/Makefile.deps
46#MORPHEO_LIBDIR - define in $(MORPHEO_TOPLEVEL)/IPs/systemC/processor/Morpheo/Makefile.deps
47#MORPHEO_LIBNAME - define in $(MORPHEO_TOPLEVEL)/IPs/systemC/processor/Morpheo/Makefile.deps
48
49#ENVIRONMENT_DIR - define in $(MORPHEO_TOPLEVEL)/IPs/systemC/Environment/Makefile.deps
50#ENVIRONMENT_INCDIR - define in $(MORPHEO_TOPLEVEL)/IPs/systemC/Environment/Makefile.deps
51#ENVIRONMENT_LIBDIR - define in $(MORPHEO_TOPLEVEL)/IPs/systemC/Environment/Makefile.deps
52#ENVIRONMENT_LIBNAME - define in $(MORPHEO_TOPLEVEL)/IPs/systemC/Environment/Makefile.deps
53
54#----------------------------------------------------------
55#----------------------------------------------------------
56#-----[ Variables ]----------------------------------------
57#----------------------------------------------------------
58#----------------------------------------------------------
59
60SOURCES = $(wildcard $(DIR_SRC)/*.cpp)
61OBJECTS = $(patsubst $(DIR_SRC)/%.cpp,$(DIR_OBJ)/%.o,$(SOURCES))
62LOGS = $(patsubst $(DIR_DATA_TEST)/%.cfg,$(DIR_LOG)/%.log,$(wildcard $(DIR_DATA_TEST)/*.cfg))
63BENCHS = $(patsubst $(DIR_DATA_BENCH)/%.cfg,$(DIR_LOG)/%.log,$(wildcard $(DIR_DATA_BENCH)/*.cfg))
64DEBUG_CFG = $(DIR_DATA_TEST)/debug.cfg
65DEBUG_LOG = $(DIR_LOG)/debug.log
66
67EXEC = $(DIR_BIN)/soft.x
68EXEC_PREFIX =
69#$(VALGRIND)
70
71#-----[ Compilation ]--------------------------------------
72INCDIR = $(SYSTEMC_INCDIR_$(SIMULATOR)) \
73 $(MORPHEO_INCDIR) \
74 $(ENVIRONMENT_INCDIR) \
75 -I$(DIR_INC)
76
77#LIBDIR = $(SYSTEMC_LIBDIR_$(SIMULATOR)) \
78# $(ENVIRONMENT_LIBDIR) \
79# $(MORPHEO_LIBDIR)
80
81# FIXME !!!
82LIBDIR = $(SYSTEMC_LIBDIR_$(SIMULATOR)) \
83 -L$(DIR_LIB)
84
85LIBNAME = $(ENVIRONMENT_LIBNAME) \
86 $(MORPHEO_LIBNAME) \
87 $(SYSTEMC_LIBNAME_$(SIMULATOR))
88
89FLAGS = $(SYSTEMC_CFLAGS_$(SIMULATOR))
90
91PLATFORMS_CXX_FLAGS = $(MORPHEO_FLAGS) $(CXX_FLAGS) $(FLAGS) $(INCDIR)
92PLATFORMS_L_FLAGS = $(MORPHEO_FLAGS) $(CXX_FLAGS) $(FLAGS) $(LIBDIR)
93
94#----------------------------------------------------------
95#----------------------------------------------------------
96#-----[ Rules ]--------------------------------------------
97#----------------------------------------------------------
98#----------------------------------------------------------
99
100vpath %.h $(DIR_INC)
101vpath %.cpp $(DIR_SRC)
102vpath %.o $(DIR_OBJ)
103vpath %.cfg $(DIR_DATA_TEST) $(DIR_DATA_BENCH)
104
105.PRECIOUS : $(DIR_OBJ)/%.o $(DIR_BIN)/%.x $(DIR_LOG)/%.log
106
107all : $(EXEC)
108
109$(DIR_BIN)/%.x : $(DIR_OBJ) $(DIR_BIN)
110 @\
111 $(ECHO) "Linkage : $*";\
112 case "${SIMULATOR}" in \
113 "modelsim") \
114 $(MAKE) $(WORK_NAME); \
115 $(MODELTECH_SCCOM) $(PLATFORMS_CXX_FLAGS) $(SOURCES); \
116 $(MODELTECH_SCCOM) -link $(PLATFORMS_L_FLAGS) $(LIBNAME); \
117 $(ECHO) "#!$(SHELL)" > $@; \
118 $(ECHO) "cd $${PWD};" >> $@; \
119 $(ECHO) "$(MODELTECH_VSIM) -sc_arg "'"$${*}"'" $(WORK_NAME).top;" >> $@;\
120 $(ECHO) "cd -;" >> $@; \
121 $(CHMOD) +x $@; \
122 ;; \
123 *) \
124 $(MAKE) $(OBJECTS); \
125 $(CXX) $(PLATFORMS_L_FLAGS) -o $@ $(OBJECTS) $(LIBNAME); \
126 ;; \
127 esac; \
128
129
130test : $(DIR_LOG) all
131 @\
132 declare logs; \
133 if $(TEST) -f "$(DEBUG_CFG)"; then \
134 logs="$(DEBUG_LOG)"; \
135 else \
136 logs="$(LOGS)"; \
137 fi; \
138 $(MAKE) $$logs; \
139 declare -i nb_test=0; \
140 declare -i nb_test_ko=0; \
141 for log in $$logs; do \
142 $(GREP) -q "Test OK" $$log; \
143 declare -i test_ok=$$?; \
144 $(GREP) -q "Test KO" $$log; \
145 declare -i test_ko=$$?; \
146 if $(TEST) $$test_ko -eq 0 -o $$test_ok -ne 0; \
147 then nb_test_ko=$$(($${nb_test_ko} + 1)); \
148 fi; \
149 nb_test=$$(($${nb_test} + 1)); \
150 done; \
151 if $(TEST) $${nb_test_ko} -ne 0; \
152 then $(ECHO) "-------------------| Test KO !!! ($${nb_test_ko}/$${nb_test})"; exit 1; \
153 else $(ECHO) "-------------------| Test OK"; exit 0; \
154 fi;
155
156bench : $(DIR_LOG) all
157 @\
158 declare logs="$(BENCHS)"; \
159 $(MAKE) $$logs;
160
161execute : bench
162
163# $(ECHO) $${data} | $(EXEC_PREFIX) $(EXEC) &> $$log; \
164
165$(DIR_LOG)/%.log : %.cfg
166 @\
167 file=$$($(BASENAME) $<); \
168 data=$$($(CAT) $<); \
169 log=$@; \
170 $(ECHO) "Run : $$file"; \
171 $(EXEC_PREFIX) $(EXEC) $${data} &> $$log; \
172 $(GREP) -q "Test OK" $$log; \
173 declare -i test_ok=$$?; \
174 $(GREP) -q "Test KO" $$log; \
175 declare -i test_ko=$$?; \
176 declare timing=$$($(GREP) -h "Timing" $$log); \
177 if $(TEST) $$test_ko -ne 0 -a $$test_ok -eq 0; \
178 then $(ECHO) -e " $$file ... OK \t$$timing"; \
179 else $(ECHO) -e " $$file ... KO !!!\t$$timing"; \
180 fi; \
181
182#-----[ Library + Software ]-------------------------------
183
184lib :
185 @\
186 $(MAKE) --directory=$(ENVIRONMENT_DIR) --makefile=Makefile;\
187 $(MAKE) --directory=$(MORPHEO_DIR) --makefile=Makefile;
188
189soft :
190 @\
191 $(MAKE) --directory=$(DIR_SOFT) --makefile=Makefile;
192
193#-----[ Rules ]--------------------------------------------
194
195$(DIR_OBJ)/%.o : %.cpp
196 @\
197 $(ECHO) "Compilation : $*";\
198 $(CXX) $(PLATFORMS_CXX_FLAGS) -c -o $@ $<;
199
200$(DIR_OBJ) $(DIR_BIN) $(DIR_LOG) :
201 @\
202 $(ECHO) "Create directory : $@";\
203 $(MKDIR) $@
204
205#-----[ Clean + help ]-------------------------------------
206
207clean :
208 @\
209 $(ECHO) "Delete temporary files in directory $(PWD)";\
210 $(RM) $(OBJECTS) $(EXEC) \
211 *~ $(DIR_SRC)/*~ $(DIR_INC)/*~ $(DIR_DATA_TEST)/*~ $(DIR_DATA_BENCH)/*~ \
212 *core* \
213 tty* \
214 *.vhdl \
215 *.log \
216 *.stat \
217 *.pos \
218 modelsim.ini transcript *wlf* $(WORK_NAME)
219
220clean_all : clean
221 @\
222 $(ECHO) "Delete generated files in directory $(PWD)";\
223 $(RM) $(DIR_OBJ) $(DIR_BIN) $(DIR_LOG);\
224 $(MAKE) --directory=$(DIR_SOFT) --makefile=Makefile clean_all; \
225 $(MAKE) --directory=$(ENVIRONMENT_DIR) --makefile=Makefile clean_all; \
226 $(MAKE) --directory=$(MORPHEO_DIR) --makefile=Makefile clean_all;
227
228
229help :
230 @\
231 $(ECHO) " -----[ Common ]-------------------------------------";\
232 $(ECHO) "";\
233 $(ECHO) " * all (default rules) : create software";\
234 $(ECHO) " * test : execute platforms with test configuration";\
235 $(ECHO) " * bench : execute platforms with bench configuration";\
236 $(ECHO) " * lib : make library";\
237 $(ECHO) " * soft : make software";\
238 $(ECHO) " * execute : cf 'make bench'";\
239 $(ECHO) " * clean : erase temporary files";\
240 $(ECHO) " * clean_all : erase generated files";\
241 $(ECHO) " * help : print this message";\
242 $(ECHO) "";
243
244include $(MORPHEO_TOPLEVEL)/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Synthesis
245include $(MORPHEO_TOPLEVEL)/IPs/systemC/processor/Morpheo/Makefile.deps
246include $(MORPHEO_TOPLEVEL)/IPs/systemC/Environment/Makefile.deps
Note: See TracBrowser for help on using the repository browser.