source: trunk/Platforms/Test/Makefile @ 96

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

Almost complete design
with Test and test platform

  • Property svn:keywords set to Id
File size: 6.9 KB
RevLine 
[88]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.