]> git.kernelconcepts.de Git - karo-tx-redboot.git/blob - doc/html/cdl-guide/ref.make.html
RedBoot TX53 Release 2012-02-15
[karo-tx-redboot.git] / doc / html / cdl-guide / ref.make.html
1 <!-- Copyright (C) 2003 Red Hat, Inc.                                -->
2 <!-- This material may be distributed only subject to the terms      -->
3 <!-- and conditions set forth in the Open Publication License, v1.0  -->
4 <!-- or later (the latest version is presently available at          -->
5 <!-- http://www.opencontent.org/openpub/).                           -->
6 <!-- Distribution of the work or derivative of the work in any       -->
7 <!-- standard (paper) book form is prohibited unless prior           -->
8 <!-- permission is obtained from the copyright holder.               -->
9 <HTML
10 ><HEAD
11 ><TITLE
12 >make</TITLE
13 ><meta name="MSSmartTagsPreventParsing" content="TRUE">
14 <META
15 NAME="GENERATOR"
16 CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
17 "><LINK
18 REL="HOME"
19 TITLE="The eCos Component Writer's Guide"
20 HREF="cdl-guide.html"><LINK
21 REL="UP"
22 TITLE="CDL Language Specification"
23 HREF="reference.html"><LINK
24 REL="PREVIOUS"
25 TITLE="library"
26 HREF="ref.library.html"><LINK
27 REL="NEXT"
28 TITLE="make_object"
29 HREF="ref.make-object.html"></HEAD
30 ><BODY
31 CLASS="REFENTRY"
32 BGCOLOR="#FFFFFF"
33 TEXT="#000000"
34 LINK="#0000FF"
35 VLINK="#840084"
36 ALINK="#0000FF"
37 ><DIV
38 CLASS="NAVHEADER"
39 ><TABLE
40 SUMMARY="Header navigation table"
41 WIDTH="100%"
42 BORDER="0"
43 CELLPADDING="0"
44 CELLSPACING="0"
45 ><TR
46 ><TH
47 COLSPAN="3"
48 ALIGN="center"
49 >The <SPAN
50 CLASS="APPLICATION"
51 >eCos</SPAN
52 > Component Writer's Guide</TH
53 ></TR
54 ><TR
55 ><TD
56 WIDTH="10%"
57 ALIGN="left"
58 VALIGN="bottom"
59 ><A
60 HREF="ref.library.html"
61 ACCESSKEY="P"
62 >Prev</A
63 ></TD
64 ><TD
65 WIDTH="80%"
66 ALIGN="center"
67 VALIGN="bottom"
68 ></TD
69 ><TD
70 WIDTH="10%"
71 ALIGN="right"
72 VALIGN="bottom"
73 ><A
74 HREF="ref.make-object.html"
75 ACCESSKEY="N"
76 >Next</A
77 ></TD
78 ></TR
79 ></TABLE
80 ><HR
81 ALIGN="LEFT"
82 WIDTH="100%"></DIV
83 ><H1
84 ><A
85 NAME="REF.MAKE"><SPAN
86 CLASS="PROPERTY"
87 >make</SPAN
88 ></H1
89 ><DIV
90 CLASS="REFNAMEDIV"
91 ><A
92 NAME="AEN4710"
93 ></A
94 ><H2
95 >Name</H2
96 >Property <SPAN
97 CLASS="PROPERTY"
98 >make</SPAN
99 >&nbsp;--&nbsp;Define an additional custom build step associated with an
100 option, resulting in a target that should not go directly into a library.</DIV
101 ><DIV
102 CLASS="REFSYNOPSISDIV"
103 ><A
104 NAME="AEN4714"><H2
105 >Synopsis</H2
106 ><TABLE
107 BORDER="5"
108 BGCOLOR="#E0E0F0"
109 WIDTH="70%"
110 ><TR
111 ><TD
112 ><PRE
113 CLASS="SYNOPSIS"
114 >cdl_option &lt;name&gt; {
115     make [-priority=&lt;pri&gt;]  {
116         &lt;custom build step&gt;
117     }
118     &#8230;
119 }</PRE
120 ></TD
121 ></TR
122 ></TABLE
123 ></DIV
124 ><DIV
125 CLASS="REFSECT1"
126 ><A
127 NAME="AEN4716"
128 ></A
129 ><H2
130 >Description</H2
131 ><P
132 >When building an <SPAN
133 CLASS="APPLICATION"
134 >eCos</SPAN
135 > configuration the primary target is a single
136 library, <TT
137 CLASS="FILENAME"
138 >libtarget.a</TT
139 >. In some cases it is
140 necessary to build some additional targets. For example architectural
141 HAL packages typically build a linker script and some start-up code.
142 Such additional targets can be specified by a <SPAN
143 CLASS="PROPERTY"
144 >make</SPAN
145 > property. Any
146 option can have one or more <SPAN
147 CLASS="PROPERTY"
148 >make</SPAN
149 > properties, although typically such
150 properties only occur in the body of a <TT
151 CLASS="LITERAL"
152 >cdl_package</TT
153 > command.</P
154 ><P
155 >The <SPAN
156 CLASS="PROPERTY"
157 >make</SPAN
158 > property takes a single argument, which resembles a
159 makefile rule: it consists of a target, a list of dependencies, and
160 one or more commands that should be executed. However the argument is
161 not a makefile fragment, and custom build steps may get executed in
162 build environments that do not involve make. For full details of
163 custom build steps see <A
164 HREF="build.make.html#BUILD.CUSTOM"
165 >the Section called <I
166 >Custom Build Steps</I
167 > in Chapter 4</A
168 >.</P
169 ><DIV
170 CLASS="WARNING"
171 ><P
172 ></P
173 ><TABLE
174 CLASS="WARNING"
175 BORDER="1"
176 WIDTH="100%"
177 ><TR
178 ><TD
179 ALIGN="CENTER"
180 ><B
181 >Warning</B
182 ></TD
183 ></TR
184 ><TR
185 ><TD
186 ALIGN="LEFT"
187 ><P
188 >The exact syntax and limitations of custom build steps have not yet
189 been finalized, and are subject to change in future versions of the
190 configuration tools.</P
191 ></TD
192 ></TR
193 ></TABLE
194 ></DIV
195 ><P
196 >The <SPAN
197 CLASS="PROPERTY"
198 >make</SPAN
199 > property takes an optional priority argument indicating the
200 order in which build steps take place. This priority complements the
201 dependency list, and avoids problems with packages needing to know
202 details of custom build steps in other packages (which may change
203 between releases). The defined order is:</P
204 ><P
205 ></P
206 ><DIV
207 CLASS="VARIABLELIST"
208 ><DL
209 ><DT
210 >Priority 0</DT
211 ><DD
212 ><P
213 >The header files exported by the current set of packages are copied
214 to the appropriate places in the
215 <TT
216 CLASS="FILENAME"
217 >include</TT
218 > subdirectory of the
219 install tree. Any unnecessary copies are avoided, to prevent rebuilds
220 of package and application source modules caused by header file dependencies.</P
221 ><DIV
222 CLASS="NOTE"
223 ><BLOCKQUOTE
224 CLASS="NOTE"
225 ><P
226 ><B
227 >Note: </B
228 >A possible future enhancement of the build system may result in the
229 build and install trees being updated automatically if there has been
230 a change to the <TT
231 CLASS="FILENAME"
232 >ecos.ecc</TT
233 > configuration savefile.</P
234 ></BLOCKQUOTE
235 ></DIV
236 ></DD
237 ><DT
238 >Priority 100</DT
239 ><DD
240 ><P
241 >All files specified in <SPAN
242 CLASS="PROPERTY"
243 >compile</SPAN
244 > properties will get built, producing
245 the corresponding object files. In addition any custom build steps
246 defined by <SPAN
247 CLASS="PROPERTY"
248 >make_object</SPAN
249 > properties get executed, unless there is
250 a <TT
251 CLASS="LITERAL"
252 >-priority=</TT
253 > option.</P
254 ></DD
255 ><DT
256 >Priority 200</DT
257 ><DD
258 ><P
259 >The libraries now get built using the appropriate object files.</P
260 ></DD
261 ><DT
262 >Priority 300</DT
263 ><DD
264 ><P
265 >Any custom build steps specified by <SPAN
266 CLASS="PROPERTY"
267 >make</SPAN
268 > properties now get
269 executed, unless the priority for a particular build step is changed
270 from its default.</P
271 ></DD
272 ></DL
273 ></DIV
274 ><P
275 >For example, if a custom build step needs to take place before any of
276 the normal source files get compiled then it should be given a
277 priority somewhere between 0 and 100. If a custom build step involves
278 post-processing an object file prior to its incorporation into a
279 library then a priority between 100 and 200 should be used.</P
280 ></DIV
281 ><DIV
282 CLASS="REFSECT1"
283 ><A
284 NAME="AEN4757"
285 ></A
286 ><H2
287 >Example</H2
288 ><TABLE
289 BORDER="5"
290 BGCOLOR="#E0E0F0"
291 WIDTH="70%"
292 ><TR
293 ><TD
294 ><PRE
295 CLASS="PROGRAMLISTING"
296 >cdl_package CYGPKG_HAL_MN10300_AM33 {
297     display       "MN10300 AM33 variant"
298     parent        CYGPKG_HAL_MN10300
299     implements    CYGINT_HAL_MN10300_VARIANT
300     hardware
301     include_dir   cyg/hal
302     define_header hal_mn10300_am33.h
303     description   "
304            The MN10300 AM33 variant HAL package provides generic
305            support for this processor architecture. It is also
306            necessary to select a specific target platform HAL
307            package."
308
309     make {
310         &lt;PREFIX&gt;/lib/target.ld: &lt;PACKAGE&gt;/src/mn10300_am33.ld
311         $(CC) -E -P -Wp,-MD,target.tmp -DEXTRAS=1 -xc $(INCLUDE_PATH) $(CFLAGS) -o $@ $&lt;
312         @echo $@ ": \\" &gt; $(notdir $@).deps
313         @tail +2 target.tmp &gt;&gt; $(notdir $@).deps
314         @echo &gt;&gt; $(notdir $@).deps
315         @rm target.tmp
316     }
317 }</PRE
318 ></TD
319 ></TR
320 ></TABLE
321 ></DIV
322 ><DIV
323 CLASS="REFSECT1"
324 ><A
325 NAME="AEN4760"
326 ></A
327 ><H2
328 >See Also</H2
329 ><P
330 >Properties <A
331 HREF="ref.compile.html"
332 >compile</A
333 >,
334 <A
335 HREF="ref.make-object.html"
336 >make_object</A
337 > and
338 <A
339 HREF="ref.library.html"
340 >library</A
341 >.</P
342 ></DIV
343 ><DIV
344 CLASS="NAVFOOTER"
345 ><HR
346 ALIGN="LEFT"
347 WIDTH="100%"><TABLE
348 SUMMARY="Footer navigation table"
349 WIDTH="100%"
350 BORDER="0"
351 CELLPADDING="0"
352 CELLSPACING="0"
353 ><TR
354 ><TD
355 WIDTH="33%"
356 ALIGN="left"
357 VALIGN="top"
358 ><A
359 HREF="ref.library.html"
360 ACCESSKEY="P"
361 >Prev</A
362 ></TD
363 ><TD
364 WIDTH="34%"
365 ALIGN="center"
366 VALIGN="top"
367 ><A
368 HREF="cdl-guide.html"
369 ACCESSKEY="H"
370 >Home</A
371 ></TD
372 ><TD
373 WIDTH="33%"
374 ALIGN="right"
375 VALIGN="top"
376 ><A
377 HREF="ref.make-object.html"
378 ACCESSKEY="N"
379 >Next</A
380 ></TD
381 ></TR
382 ><TR
383 ><TD
384 WIDTH="33%"
385 ALIGN="left"
386 VALIGN="top"
387 ><SPAN
388 CLASS="PROPERTY"
389 >library</SPAN
390 ></TD
391 ><TD
392 WIDTH="34%"
393 ALIGN="center"
394 VALIGN="top"
395 ><A
396 HREF="reference.html"
397 ACCESSKEY="U"
398 >Up</A
399 ></TD
400 ><TD
401 WIDTH="33%"
402 ALIGN="right"
403 VALIGN="top"
404 ><SPAN
405 CLASS="PROPERTY"
406 >make_object</SPAN
407 ></TD
408 ></TR
409 ></TABLE
410 ></DIV
411 ></BODY
412 ></HTML
413 >