source: trunk/Platforms/Test/Makefile@ 88

Last change on this file since 88 was 88, checked in by rosiere, 18 years ago

Almost complete design
with Test and test platform

  • Property svn:keywords set to Id
File size: 6.9 KB
Line 
1#
2# $Id: Makefile 88 2008-12-10 18:31:39Z 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 = ./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))
60
61EXEC = $(DIR_BIN)/soft.x
62EXEC_PREFIX =
63#$(VALGRIND)
64
65#-----[ Compilation ]--------------------------------------
66INCDIR = $(SYSTEMC_INCDIR_$(SIMULATOR)) \
67 $(MORPHEO_INCDIR) \
68 $(ENVIRONMENT_INCDIR) \
69 -I$(DIR_INC)
70
71LIBDIR = $(SYSTEMC_LIBDIR_$(SIMULATOR)) \
72 $(ENVIRONMENT_LIBDIR) \
73 $(MORPHEO_LIBDIR)
74
75LIBNAME = $(ENVIRONMENT_LIBNAME) \
76 $(MORPHEO_LIBNAME) \
77 $(SYSTEMC_LIBNAME_$(SIMULATOR))
78
79FLAGS = $(SYSTEMC_CFLAGS_$(SIMULATOR))
80
81PLATFORMS_CXX_FLAGS = $(MORPHEO_FLAGS) $(CXX_FLAGS) $(FLAGS) $(INCDIR)
82PLATFORMS_L_FLAGS = $(MORPHEO_FLAGS) $(CXX_FLAGS) $(FLAGS) $(LIBDIR)
83
84#----------------------------------------------------------
85#----------------------------------------------------------
86#-----[ Rules ]--------------------------------------------
87#----------------------------------------------------------
88#----------------------------------------------------------
89
90vpath %.h $(DIR_INC)
91vpath %.cpp $(DIR_SRC)
92vpath %.o $(DIR_OBJ)
93vpath %.cfg $(DIR_DATA)
94
95.PRECIOUS : $(DIR_OBJ)/%.o $(DIR_BIN)/%.x $(DIR_LOG)/%.log
96
97all : $(DIR_OBJ) $(DIR_BIN)
98 @\
99 $(MAKE) $(EXEC)
100
101$(DIR_BIN)/%.x : $(OBJECTS)
102 @\
103 $(ECHO) "Compilation : $*";\
104 $(CXX) $(PLATFORMS_L_FLAGS) -o $@ $^ $(LIBNAME);
105
106run : $(DIR_LOG) all
107 @\
108 $(MAKE) $(LOGS); \
109 declare -i have_test_ko=0; \
110 for log in $(LOGS); do \
111 $(GREP) -q "Test OK" $$log; \
112 declare -i test_ok=$$?; \
113 $(GREP) -q "Test KO" $$log; \
114 declare -i test_ko=$$?; \
115 if $(TEST) $$test_ko -eq 0 -o $$test_ok -ne 0; \
116 then have_test_ko=1; \
117 fi; \
118 done; \
119 if $(TEST) $$have_test_ko -ne 0; \
120 then $(ECHO) "-------------------| Test KO"; exit 1; \
121 else $(ECHO) "-------------------| Test OK"; exit 0; \
122 fi;
123
124execute : run
125
126
127$(DIR_LOG)/%.log : %.cfg
128 @\
129 file=$$($(BASENAME) $<); \
130 data=$$($(CAT) $<); \
131 log=$@; \
132 $(ECHO) "Run : $$file"; \
133 $(EXEC_PREFIX) $(EXEC) $${data} &> $$log; \
134 $(GREP) -q "Test OK" $$log; \
135 declare -i test_ok=$$?; \
136 $(GREP) -q "Test KO" $$log; \
137 declare -i test_ko=$$?; \
138 declare timing=$$($(GREP) -h "Timing" $$log); \
139 if $(TEST) $$test_ko -ne 0 -a $$test_ok -eq 0; \
140 then $(ECHO) -e " $$file ... OK\t$$timing"; \
141 else $(ECHO) -e " $$file ... KO\t$$timing"; \
142 have_test_ko=1; \
143 fi; \
144
145
146#-----[ Library + Software ]-------------------------------
147
148lib :
149 @\
150 $(MAKE) --directory=$(ENVIRONMENT_DIR) --makefile=Makefile;\
151 $(MAKE) --directory=$(MORPHEO_DIR) --makefile=Makefile;
152
153soft :
154 @\
155 $(MAKE) --directory=$(DIR_SOFT) --makefile=Makefile;
156
157#-----[ Rules ]--------------------------------------------
158
159$(DIR_OBJ)/%.o : %.cpp
160 @\
161 $(ECHO) "Compilation : $*";\
162 $(CXX) $(PLATFORMS_CXX_FLAGS) -c -o $@ $<;
163
164$(DIR_OBJ) :
165 @\
166 $(ECHO) "Create directory : $@";\
167 $(MKDIR) $@
168
169$(DIR_BIN) :
170 @\
171 $(ECHO) "Create directory : $@";\
172 $(MKDIR) $@
173
174$(DIR_LOG) :
175 @\
176 $(ECHO) "Create directory : $@";\
177 $(MKDIR) $@
178
179#-----[ Clean + help ]-------------------------------------
180
181clean :
182 @\
183 $(ECHO) "Delete temporary files in directory $(PWD)";\
184 $(RM) *~ $(DIR_SRC)/*~ $(DIR_INC)/*~ $(DIR_DATA)/*~ core* tty* \
185 $(DIR_OBJ) $(DIR_BIN) $(DIR_LOG);
186
187clean_all : clean
188 @\
189 $(ECHO) "Delete generated files in directory $(PWD)";\
190 $(MAKE) --directory=$(ENVIRONMENT_DIR) --makefile=Makefile clean_all; \
191 $(MAKE) --directory=$(MORPHEO_DIR) --makefile=Makefile clean_all; \
192 $(MAKE) --directory=$(DIR_SOFT) --makefile=Makefile clean_all;
193
194
195help :
196 @\
197 $(ECHO) " -----[ Common ]-------------------------------------";\
198 $(ECHO) "";\
199 $(ECHO) " * all (default rules) : create software";\
200 $(ECHO) " * run : execute platforms";\
201 $(ECHO) " * lib : make library";\
202 $(ECHO) " * soft : make software";\
203 $(ECHO) " * execute : cf 'make run'";\
204 $(ECHO) " * clean : erase temporary files";\
205 $(ECHO) " * clean_all : erase generated files";\
206 $(ECHO) " * help : print this message";\
207 $(ECHO) "";
208
209include $(MORPHEO_TOPLEVEL)/IPs/systemC/processor/Morpheo/Makefile.deps
210include $(MORPHEO_TOPLEVEL)/IPs/systemC/Environment/Makefile.deps
Note: See TracBrowser for help on using the repository browser.