1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<HTML LANG="en">
3
4<HEAD>
5    <META http-equiv="Content-Type" content="text/html; charset=utf-8">
6    <META http-equiv="Content-Style-Type" content="text/css">
7
8<TITLE>Guide to Developing a Build System</TITLE>
9
10    <STYLE>
11        h1.left
12        {
13            color: #46f;
14            font-size: 120%;
15        }
16        ul.left, ul.left ul
17        {
18            margin: 0;
19            padding: 0;
20        }
21        ul.left
22        {
23            font-size: 0.8em;
24        }
25        ul.left li
26        {
27            margin: 0;
28            padding: 0;
29            margin-left: 1em;
30            line-height: 1.5em;
31        }
32        ul.left li a
33        {
34            margin: 0;
35            padding: 0;
36        }
37
38        H1
39        {
40            font-weight         : bold;
41            font-size           : 250%;
42            text-align          : left;
43            color               : #46f;
44            margin-bottom       : 0px;
45        }
46
47        H2
48        {
49            font-weight         : normal;
50            font-size           : 180%;
51            margin              : 24pt 0pt 6pt 0pt;
52            border-bottom-style : solid;
53            border-bottom-width : 1px;
54        }
55
56        H3
57        {
58            font-weight         : bold;
59            font-size           : 120%;
60            border-bottom-style : solid;
61            border-bottom-width : 1px;
62            width: 75%;
63            margin              : 18pt 0pt 6pt 30pt;
64        }
65
66        H4
67        {
68            font-weight         : bold;
69            font-size           : 100%;
70            margin              : 12pt 0pt 6pt 30pt;
71        }
72
73        H5
74        {
75            font-weight         : bold;
76            margin              : 12pt 0pt 6pt 30pt;
77        }
78
79        H6
80        {
81            font-weight         : bold;
82            margin              : 12pt 0pt 6pt 30pt;
83        }
84
85        DIV.date
86        {
87            text-align          : right;
88            color               : #46f;
89            margin-bottom       : 30pt;
90            line-height         : 150%;
91        }
92
93        P
94        {
95            margin              : 0pt 0pt 12pt 30pt;
96            line-height         : 150%;
97        }
98
99        OL,UL,DL
100        {
101            margin              : 6pt 0pt 6pt 50pt;
102        }
103        OL OL, UL UL
104        {
105            margin-left: 3em;
106        }
107
108        DT
109        {
110            font-family         : "Courier New", monospace;
111            margin-top : 0.3em;
112            margin-bottom : 0.3em;
113        }
114        DD
115        {
116            margin-top : 0.3em;
117            margin-bottom : 0.6em;
118        }
119
120        PRE
121        {
122            font-family         : "Courier New", monospace;
123            font-weight         : normal;
124
125            margin              : 0pt 0pt 20pt 50pt;
126            padding             : 2pt 8pt 2pt 8pt;
127            background-color    : #eee;
128
129            border-style        : solid;
130            border-width        : 1px;
131        }
132        em
133        {
134            font-style: normal;
135            color: red;
136        }
137        TABLE
138        {
139            margin-left         : 40pt;
140            margin-bottom       : 20pt;
141            border-color        : #aaa;
142            border-width        : 1pt;
143            border-style        : solid;
144        }
145        TD
146        {
147            font-style          : normal;
148            padding             : 2pt 4pt 2pt 4pt;
149
150            border-color        : #aaa;
151            border-width        : 1pt;
152            border-style        : solid;
153        }
154        div.footer
155        {
156            border-color: black;
157            padding-top: 0.5em;
158            border-top-style    : solid;
159            border-top-width    : 1px;
160            width:              100%;
161            margin-top: 4em;;
162        }
163        div.footer span
164        {
165            color               : #46f;
166            float: right;
167        }
168        table
169        {
170            border-collapse:    collapse;
171        }
172        table td
173        {
174        }
175        table th
176        {
177        }
178        ul
179        {
180            margin-top: 1em;
181            margin-bottom: 1em;
182        }
183        DL.history
184        {
185            margin: 1em;
186        }
187        DL.history DT
188        {
189            font-family         : sans-serif;
190            font-weight         : bold;
191            font-size           : 0.8em;
192            margin              : 0px;
193        }
194        DL.history DD
195        {
196            font-size           : 0.9em;
197            margin              : 0px 0px 4px 0px;
198        }
199    </STYLE>
200    <SCRIPT type="text/javascript">
201    <!--
202        function DeleteRule(index)
203        {
204            var ss = document.styleSheets.item(0);
205
206            if( ss.removeRule )
207            {
208                ss.removeRule(index);
209            }
210            else
211            {
212                ss.deleteRule(index);
213            }
214        }
215        function OnClickAnchor(e, anchor)
216        {
217            window.parent.frames[1].location.hash = anchor;
218
219            if( e.preventDefault )
220            {
221                e.preventDefault();
222            }
223            else
224            {
225                e.returnValue = false;
226            }
227        }
228        function TravLeft(obj)
229        {
230            var ary = new Array();
231            var index = 0;
232
233            for( var i = 0; i < obj.childNodes.length; ++i )
234            {
235                var c = obj.childNodes.item(i);
236
237                if( c.nodeType == 1 )
238                {
239                    if( c.tagName == "H2" || c.tagName == "H3" )
240                    {
241                        var a = c.childNodes.item(0);
242                        var text  = "";
243
244                        var anchor = "name-" + index;
245                        index++;
246
247                        if( a && a.tagName == "A" )
248                        {
249                            text  = a.innerHTML;
250                        }
251                        else
252                        {
253                            text  = c.innerHTML;
254                        }
255
256                        ary.push([c.tagName.substr(1,1), "<a target=\"right\" href=\"?right#" + anchor + "\" onclick=\"OnClickAnchor(event, '" + anchor + "')\">" + text + "</a>"]);
257                    }
258                    else
259                    {
260                        ary = ary.concat(TravLeft(c));
261                    }
262                }
263            }
264
265            return ary;
266        }
267        function TravRight(obj)
268        {
269            var index = 0;
270
271            for( var i = 0; i < obj.childNodes.length; ++i )
272            {
273                var c = obj.childNodes.item(i);
274
275                if( c.nodeType == 1 )
276                {
277                    if( c.tagName == "H2" || c.tagName == "H3" )
278                    {
279                        var anchor = "name-" + index;
280                        index++;
281
282                        c.innerHTML = "<a name=\"" + anchor + "\">" + c.innerHTML + "</a>"
283                    }
284                    else
285                    {
286                        TravRight(c);
287                    }
288                }
289            }
290        }
291        function OnLoad_Left()
292        {
293            var test = TravLeft(document.body);
294            var test2 = "";
295            var level = 2;
296
297            test2 += "<h1 class='left'>" + document.title + "</h1>";
298            test2 += "<ul class='left'>";
299            for( var i in test )
300            {
301                while( test[i][0] > level )
302                {
303                    level++;
304                    test2 += "<ul>";
305                }
306                while( test[i][0] < level )
307                {
308                    level--;
309                    test2 += "</ul>";
310                }
311
312                test2 += "<li>" + test[i][1];
313            }
314            test2 += "</ul>";
315
316            document.body.innerHTML = test2;
317            DeleteRule(0);
318        }
319        function OnLoad_Right()
320        {
321            TravRight(document.body);
322        }
323        function OnLoad_Frame()
324        {
325            var myname = location.pathname.substr(location.pathname.lastIndexOf("/") + 1);
326
327            var f = document.createElement("frameset");
328            var l = document.createElement("frame");
329            var r = document.createElement("frame");
330
331            f.appendChild(l);
332            f.appendChild(r);
333            f.cols = "250,*";
334
335            l.src  = myname + "?left"  + location.hash;
336            r.src  = myname + "?right" + location.hash;
337            l.name = "left";
338            r.name = "right";
339
340            var h = document.documentElement;
341            var b = h.getElementsByTagName("body").item(0);
342
343            h.replaceChild(f, b);
344        }
345
346
347        if( ! window.opera )
348        {
349            var search = location.search;
350
351            if( search == "?left" )
352            {
353                window.onload = OnLoad_Left;
354            }
355            else if( search == "" )
356            {
357                window.onload = OnLoad_Frame;
358            }
359            else if( search == "?right" )
360            {
361                window.onload = OnLoad_Right;
362            }
363
364            if( search != "?right" )
365            {
366                var ss = document.styleSheets.item(0);
367
368                if( ss.addRule )
369                {
370                    ss.addRule("body", "display: none", 0);
371                }
372                else
373                {
374                    ss.insertRule("body {display: none}", 0);
375                }
376            }
377        }
378    //-->
379    </SCRIPT>
380</HEAD>
381
382<BODY>
383
384
385
386
387
388<H1>Guide to Developing a Build System</H1>
389<DIV class="date">(2012/05/25)</DIV>
390
391
392
393
394
395<H2>Introduction</H2>
396
397<H3>About This Document</H3>
398<P>
399This document is for those who wish to develop their own build systems, rather than the one that the SDK provides. It provides information necessary for building CTR applications.
400</P>
401<ul>
402<li>Application Build Sequence
403<li>Procedures for Creating Each File
404<li>Restrictions on Compiler and Linker Options
405<li>Macros Required by SDK
406<li>Libraries Provided by SDK
407<li>RSF and DESC Files Provided by SDK
408</ul>
409
410<P>
411See <a href="../../SDKRules/BuildRules.html">Build System</a> for information about the structure and usage of the build system provided by the SDK.
412</P>
413<P>
414This document assumes basic knowledge of CTR-SDK terminology. See <a href="../Glossary/Glossary.html">CTR-SDK Terminology</a> for a glossary of basic CTR-SDK terms.
415</P>
416
417<H3>Notation Used in This Document</H3>
418<P>
419This document sometimes puts content in colored boxes like the one below to indicate that it is a command sequence to be entered on the command line.
420</P>
421<pre>
422command option1 option2
423</pre>
424
425<P>
426With respect to command syntax, do not enter text enclosed in angle brackets (&quot;&lt;&quot; and &quot;&gt;&quot;) verbatim. Instead, substitute an appropriate entry for the placeholder description. For example, the string <code>&lt;CTRSDK_ROOT&gt;</code> indicates that you must enter the CTR-SDK installation path.
427</P>
428<P>
429Text in the command sequence enclosed by square brackets (&quot;[&quot; and &quot;]&quot;) is optional.
430</P>
431<pre>
432makecia -i &lt;CXI_FILE&gt; -o &lt;OUTPUT_FILE&gt; [-man &lt;E_MANUAL_CFA_FILE&gt;]
433</pre>
434<P>
435Elements in the command sequence preceding ellipses (...) can be repeated any number of times.
436</P>
437<pre>
438armar --create &lt;OUTPUT_FILE&gt; &lt;INPUT_FILE&gt;...
439</pre>
440<P>
441In this document, the names of Windows tools contained in the <CODE>tools/CommandLineTools</CODE> directory are abbreviated by omitting the leading <CODE>ctr_</CODE> and the ending file extension. For example, the abbreviation for <CODE>ctr_makerom32.exe</CODE> is <CODE>makerom</CODE>.
442</P>
443
444
445<H2>Build Sequence</H2>
446
447<H3>Overall Sequence</H3>
448<p>
449The following figure illustrates the overall build sequence, from the source files and other resources up to the creation of a ROM image (CCI and CIA files). <br> <br> <a href="img/flow.png"><img src="img/flow.png" width="536" height="581"></a> <br>
450</p>
451
452
453<H3>Creating Object Files</H3>
454<p>
455Use <CODE>armcc</CODE> to compile C/C++ source files. <CODE>armcc</CODE> converts source files into object files.<br> <br> <img src="img/flow_o.png"> <br> See the RVCT and RMCC documentation for instructions on using <CODE>armcc</CODE>. See <a href="#rvct_options">Restrictions on Compiler and Linker Options</a> for restrictions on <CODE>armcc</CODE> options used with CTR-SDK. See <a href="#macro">Macros Required by SDK</a> for the macro definitions that the SDK requires. For more information about the options that are required in order to use the SDK libraries, see <a href="#sdk_lib">Libraries Provided by SDK</a>.
456</p>
457<p>
458This section describes the basic use of <CODE>armcc</CODE> with the CTR-SDK. (Although the command below is separated into multiple lines for ease of viewing, an actual command cannot contain newline characters.)
459</p>
460
461<pre>
462armcc
463    -c
464    --apcs=/interwork
465    --cpu=MPCore
466    --fpmode=fast
467    --signed_chars
468    --cpp
469    --force_new_nothrow
470    --no_exceptions
471    --no_rtti
472    -DNN_COMPILER_OPTION_ARM
473    -DNN_COMPILER_RVCT
474    -DNN_COMPILER_RVCT_VERSION_MAJOR=4
475    -DNN_DEBUGGER_KMC_PARTNER
476    -DNN_EFFORT_FAST
477    -DNN_HARDWARE_CTR
478    -DNN_HARDWARE_CTR_TS
479    -DNN_PLATFORM_CTR
480    -DNN_PROCESSOR_ARM
481    -DNN_PROCESSOR_ARM11MPCORE
482    -DNN_PROCESSOR_ARM_V6
483    -DNN_PROCESSOR_ARM_VFP_V2
484    -DNN_SWITCH_DISABLE_ASSERT_WARNING=1
485    -DNN_SWITCH_DISABLE_ASSERT_WARNING_FOR_SDK=1
486    -DNN_SWITCH_DISABLE_DEBUG_PRINT=1
487    -DNN_SWITCH_DISABLE_DEBUG_PRINT_FOR_SDK=1
488    -DNN_SYSTEM_PROCESS
489    -I&lt;CTRSDK_ROOT&gt;/include
490    -o &lt;Output file&gt;
491    &lt;Source file&gt;
492</pre>
493<p>
494The command compiles <CODE>SOURCE_FILE</CODE> and outputs the results to <CODE>OUTPUT_FILE</CODE>.
495</p>
496
497
498<H3>Creating Static Libraries</H3>
499<p>
500You can combine multiple object files and static libraries into a single static library. Use <CODE>armar</CODE> to create a static library.
501
502    <br> <br> <img src="img/flow_a.png"> <br> <br>
503
504Use <CODE>armar</CODE> as follows:
505</p>
506
507<pre>
508armar --create &lt;OUTPUT_FILE&gt; &lt;INPUT_FILE&gt;...
509</pre>
510
511<p>
512The command combines the files specified by <CODE>INPUT_FILE</CODE> and creates <CODE>OUTPUT_FILE</CODE>.
513</p>
514
515
516<H3>Creating Banners and Icons</H3>
517<p>
518Each application must have a banner and icon, which are used on the HOME Menu. Use <a href="../../tools/ctr_makebanner.html"><CODE>makebanner</CODE></a> to create the banner and icon.<br> <br> <br> <img src="img/flow_bnr.png"> <br> <br> Use <CODE><a href="../../tools/ctr_makebanner.html"><CODE>makebanner</CODE></a></CODE> as follows. You must specify the options in this order, because the options are parsed based on their order on the command line.
519</p>
520
521<pre>
522makebanner &lt;BSF_FILE&gt; &lt;BANNER_FILE&gt; &lt;ICON_FILE&gt;
523</pre>
524
525<p>
526The command takes the information stored in each file and creates <CODE>BANNER_FILE</CODE> and <CODE>ICON_FILE</CODE> based on the instructions in <CODE>BSF_FILE</CODE>.
527</p>
528<p>
529The SDK includes a default banner and icon that you can use during development. The default banner and icon are shown below:
530</p>
531
532<pre>
533&lt;CTRSDK_ROOT&gt;/resources/banner/Default.bnr
534&lt;CTRSDK_ROOT&gt;/resources/banner/Default.icn
535</pre>
536
537<p>
538
539</p>
540
541
542<H3>Creating AXF Files</H3>
543<p>
544<CODE>armlink</CODE> combines the object files generated by the compiler and the static libraries that combine them into an AXF file.<br> <br> <img src="img/flow_axf.png"> <br> See the RVCT and RMCC documentation for instructions on using <CODE>armlink</CODE>. See <a href="#rvct_options">Restrictions on Compiler and Linker Options</a> for information about the restrictions on <CODE>armlink</CODE> options with CTR-SDK. For more information about the options that are required in order to use the SDK libraries, see <a href="#sdk_lib">Libraries Provided by SDK</a>.
545</p>
546<p>
547This section describes the basic use of <CODE>armlink</CODE> with CTR-SDK. (Although the command below is separated into multiple lines for ease of viewing, an actual command cannot contain newline characters.)
548</p>
549
550<pre>
551armlink
552    --datacompressor off
553    --keep=nnMain
554    --scatter=&lt;CTRSDK_ROOT&gt;/resources/specfiles/linker/CTR.Process.MPCore.ldscript
555    -o &lt;Output file&gt;
556    &lt;Input file&gt;...
557</pre>
558<p>
559The command combines files specified by <CODE>INPUT_FILE</CODE> and outputs the results to <CODE>OUTPUT_FILE</CODE>.
560</p>
561
562
563<H3>Creating CFA Files</H3>
564<p>
565A CFA file is an archive that converts a directory structure containing multiple files into a single file. It is mainly used to store download-play child program and e-manuals.
566</p>
567
568<p>
569    <br> <img src="img/flow_cfa.png"> <br>
570</p>
571
572<p>
573There are two ways to create a CFA file: (1) use <CODE>makeciaarchive</CODE> to store download-play child programs, and (2) use <CODE>makerom</CODE> to store e-manuals.
574</p>
575
576<a name="makeciaarchive"></a>
577<H4> Creating a CFA File Using <CODE>makeciaarchive</CODE></H4>
578
579<p>
580<CODE>makeciaarchive</CODE> is a tool for creating a CFA file from multiple CIA files. It is used to create CFA files storing download-play programs.
581
582<p>
583Use <CODE><a href="../../tools/ctr_makeciaarchive.html">makeciaarchive</a></CODE> as follows:
584</p>
585
586<pre>
587makeciaarchive -cia &lt;INPUT_FILE&gt;...  -o &lt;OUTPUT_FILE&gt;
588</pre>
589
590<p>
591Specify the CIA files with <CODE>INPUT_FILE</CODE>. The tool combines the CIA files and outputs them to <CODE>OUTPUT_FILE</CODE> in CFA format.
592</p>
593
594<p>
595You can use the <code>-cia</code> option multiple times. You can create a CFA file storing multiple CIA files by specifying <CODE>INPUT_FILE</CODE> multiple times.
596</p>
597
598<H4> Creating a CFA File Using makerom</H4>
599
600<p>
601Create a CFA file using <a href="../../tools/ctr_makerom.html"><CODE>makerom</CODE></a> by specifying the <code>-data</code> option.
602</p>
603
604<p>
605Create a CFA file using <a href="../../tools/ctr_makerom.html"><CODE>makerom</CODE></a> as follows. (Although the command below is separated into multiple lines for ease of viewing, an actual command cannot contain newline characters.)
606</p>
607
608<pre>
609makerom -f data
610        -rsf &lt;rsf file&gt;
611        -o &lt;Output file&gt;
612</pre>
613
614<p>
615The tool creates <CODE>OUTPUT_FILE</CODE> as a CFA file that contains the content specified by <CODE>RSF_FILE</CODE>.
616</p>
617
618
619
620
621<H3>Creating CXI Files</H3>
622<p>
623You must create a CXI file as part of the process of creating an import application. Use <CODE>makerom</CODE> to create a CXI file.<br> <br> <img src="img/flow_cxi.png"> <br> Create a CXI file using <a href="../../tools/ctr_makerom.html"><CODE>makerom</CODE></a> as follows. (Although the command below is separated into multiple lines for ease of viewing, an actual command cannot contain newline characters.)
624</p>
625
626<pre>
627makerom -f exec
628        &lt;axf file&gt;
629        -rsf &lt;rsf file&gt;
630        -desc &lt;CTRSDK_ROOT&gt;/resources/specfiles/Application.desc
631        -banner &lt;banner file&gt;
632        -icon &lt;icon file&gt;
633        -o &lt;Output file&gt;
634</pre>
635
636<p>
637The tool creates <CODE>OUTPUT_FILE</CODE> as a CXI file, storing the content in <CODE>AXF_FILE</CODE>, <CODE>BANNER_FILE</CODE>, and <CODE>ICON_FILE</CODE> in accordance with the settings in <CODE>RSF_FILE</CODE>. If <code>HostRoot</code> is specified in <CODE>RSF_FILE</CODE>, then the files below the directory specified as <CODE>ROM-FS</CODE> are stored in <CODE>OUTPUT_FILE</CODE>.
638</p>
639
640
641<a name="cci"></a>
642<H3>Creating CCI Files</H3>
643<p>
644When you create a Card application, the final step is creating a CCI file. Use <CODE>makerom</CODE> to create a CCI file.<br> <br> <img src="img/flow_cci.png"> <br> Create a CCI file using <a href="../../tools/ctr_makerom.html"><CODE>makerom</CODE></a> as follows. (Although the command below is separated into multiple lines for ease of viewing, an actual command cannot contain newline characters.)
645</p>
646
647<pre>
648makerom -f card
649        &lt;axf file&gt;
650        -rsf &lt;rsf file&gt;
651        -desc &lt;CTRSDK_ROOT&gt;/resources/specfiles/Application.desc
652        -banner &lt;banner file&gt;
653        -icon &lt;icon file&gt;
654        [-content &lt;e-manual cfa file&gt;:1]
655        [-content &lt;download play cfa file&gt;:2]
656        -o &lt;Output file&gt;
657</pre>
658
659<p>
660This command creates <CODE>OUTPUT_FILE</CODE> as a CCI file, storing <CODE>AXF_FILE</CODE>, <CODE>BANNER_FILE</CODE>, <CODE>ICON_FILE</CODE>, <CODE>E_MANUAL_CFA_FILE</CODE> (the CFA file storing the e-manual), and <CODE>DOWNLOAD_PLAY_CFA_FILE</CODE> (the CFA file storing the download play child program) in accordance with the settings in <CODE>RSF_FILE</CODE>. If <code>HostRoot</code> is specified in <CODE>RSF_FILE</CODE>, then the files below the directory specified as <CODE>ROM-FS</CODE> are stored in <CODE>OUTPUT_FILE</CODE>. <CODE>E_MANUAL_CFA_FILE</CODE> and <CODE>DOWNLOAD_PLAY_CFA_FILE</CODE> are optional; only specify them when needed. Specify <CODE>1</CODE> for the content index of a CFA file storing an e-manual. Specify <CODE>2</CODE> for the content index of a CFA file storing a download-play child program. You must not specify any other indexes.
661</p>
662
663<a name="cia"></a>
664<H3>Creating CIA Files</H3>
665<p>
666When you create an import application, the final step is creating a CIA file. Use <CODE>makecia</CODE> to create a CIA file.<br> <br> <img src="img/flow_cia.png"> <br> Create a CIA file using <a href="../../tools/ctr_makecia.html"><CODE>makecia</CODE></a> as follows:
667</p>
668
669<pre>
670makecia -i &lt;CXI_FILE&gt; -o &lt;OUTPUT_FILE&gt; [-man &lt;E_MANUAL_CFA_FILE&gt;]
671</pre>
672
673<p>
674This command creates <CODE>OUTPUT_FILE</CODE> as a CIA file storing <CODE>CXI_FILE</CODE> and <CODE>E_MANUAL_CFA_FILE</CODE>. <CODE>E_MANUAL_CFA_FILE</CODE> is optional; only specify it when needed.
675</p>
676
677
678<H3>Creating CCL Files</H3>
679<p>
680A CCL file is a modified version of the CCI format. It requires three files: the CCL file itself, and the LR file (<CODE>.r.bin</CODE>) and LE file (<CODE>.e.bin</CODE>) that it references. Create these three files using <CODE>makerom</CODE>.<br> <br> <img src="img/flow_ccl.png"> <br> Create the LR file using <a href="../../tools/ctr_makerom.html"><CODE>makerom</CODE></a> as follows.
681</p>
682
683<pre>
684makerom -f lr -rsf &lt;RSF_FILE&gt; -o &lt;OUTPUT_FILE&gt;
685</pre>
686<p>
687This command creates <CODE>OUTPUT_FILE</CODE> as an LR file in accordance with the settings in <CODE>RSF_FILE</CODE>. If <code>HostRoot</code> is specified in <CODE>RSF_FILE</CODE>, then the files below the directory specified as <CODE>ROM-FS</CODE> are stored in <CODE>OUTPUT_FILE</CODE>.
688</p>
689<p>
690Create the LE file using <a href="../../tools/ctr_makerom.html"><CODE>makerom</CODE></a> as follows. (Although the command below is separated into multiple lines for ease of viewing, an actual command cannot contain newline characters.)
691</p>
692
693<pre>
694makerom -f le
695        &lt;axf file&gt;
696        -rsf &lt;rsf file&gt;
697        -desc &lt;CTRSDK_ROOT&gt;/resources/specfiles/Application.desc
698        -banner &lt;banner file&gt;
699        -icon &lt;icon file&gt;
700        -lr &lt;LR format file&gt;
701        -m 0x01000000
702        -o &lt;Output file&gt;
703</pre>
704
705<p>
706The tool creates <CODE>OUTPUT_FILE</CODE> as an LE file storing the content in <CODE>AXF_FILE</CODE>, <CODE>BANNER_FILE</CODE>, and <CODE>ICON_FILE</CODE> in accordance with the settings in <CODE>RSF_FILE</CODE> and <CODE>LR_FILE</CODE>.
707</p>
708<p>
709Create the CCL file using <a href="../../tools/ctr_makerom.html"><CODE>makerom</CODE></a> as follows.
710</p>
711
712<pre>
713makerom -f list -le &lt;LE_FILE&gt; -lr &lt;LR_FILE&gt; -o &lt;OUTPUT_FILE&gt;
714</pre>
715
716<p>
717This command creates <CODE>OUTPUT_FILE</CODE> as a CCL file, corresponding to <CODE>LE_FILE</CODE> and <CODE>LR_FILE</CODE>.
718</p>
719
720<H2> Builds for Special Uses </H2>
721
722<H3> Creating a Download Play Child Program CIA File </H3>
723
724<p>A Download Play child program is a type of imported application. For this reason, when you create a Download Play child program you create a CIA file. When creating Download Play child programs, refer to <a href="#cia">Creating CIA Files</a> and the <I>Programming Manual: Application Creation Procedures</I>.</p>
725
726<p>When building, take care with unique IDs and child device indexes.</p>
727
728<p>
729All stored download play child programs must have the same unique ID as the download play parent program.
730</p>
731
732<p>
733If you want to store more than one Download Play child program in the CIA file, you must specify them so that no child indexes overlap.
734</p>
735
736<p>
737Specify the unique ID using the <CODE>UniqueId</CODE> parameter in the RSF file. Specify the child-program index using the <CODE>ChildIndex</CODE> parameter in the RSF file. For details on RSF files, see <a href="../../tools/ctr_makerom.html"><CODE>makerom</CODE></a>.
738
739Use the described RSF file configurations to create a CXI file for a download play child program.
740</p>
741
742<H3> Creating a CFA File That Contains a Download Play Child Program </H3>
743
744<p>
745In order to create an application that supports download play, you must include a CFA file containing a download play child program in your CCI file .
746</p>
747
748<p>
749See <a href="#cci">Creating CCI Files</a> for instructions on creating a CCI file with a CFA file that contains a download play child program.
750</p>
751
752<p>
753Use <a href="../../tools/ctr_makeciaarchive.html"><CODE>makeciaarchive</CODE></a> to create a CFA file that contains a download play child program. See <a href="#makeciaarchive">Creating CFA Files Using <CODE>makeciaarchive</CODE></a> for instructions on creating a CFA file that contains a download play child program.
754</p>
755
756<p>
757You can specify an RSF file to <a href="../../tools/ctr_makeciaarchive.html"><CODE>makeciaarchive</CODE></a> using the <code>-rsf</code> option. If you want to create a CFA file that contains a download play child program, only specify <code>&lt;CTRSDK_ROOT&gt;/resources/specfiles/Child.rsf</code> as your RSF file. You must not use any other RSF file.
758</p>
759
760<H3> Creating a CFA File That Contains an E-manual </H3>
761<p>
762A CFA file that contains an e-manual is an archive with a BCMA file created using <CODE>CTR-ManualTools</CODE>. See the <CODE>CTR-ManualTools</CODE> documentation for information about BCMA files and how to create them.
763</p>
764
765<p>
766Use <a href="../../tools/ctr_makerom.html"><CODE>makerom</CODE></a> to create a CFA file that contains an e-manual. Create a CFA file that contains an e-manual using <a href="../../tools/ctr_makerom.html"><CODE>makerom</CODE></a> as follows. (Although the command below is separated into multiple lines for ease of viewing, an actual command cannot contain newline characters.)
767</p>
768
769<pre>
770makerom -f data
771        -rsf &lt;CTRSDK_ROOT&gt;/resources/specfiles/Manual.rsf
772        -DROMFS_ROOT=&lt;manual directory&gt;
773        -o &lt;Output file&gt;
774</pre>
775
776<p>
777This command creates <CODE>OUTPUT_FILE</CODE> as a CFA file storing the e-manual in <CODE>MANUAL_DIRECTORY</CODE>.
778</p>
779
780<p>
781Put the BCMA file <code>Manual.bcma</code> in <CODE>MANUAL_DIRECTORY</CODE>. You must not place any other files in this directory. You also must not use a BCMA file with a different name.
782</p>
783
784
785<p>
786Specify only the RSF file in <code>&lt;CTRSDK_ROOT&gt;/resources/specfiles/Manual.rsf </code> using the <code>-rsf</code> option. You must not use any other RSF file.
787</p>
788
789<a name="rvct_options"></a>
790<H2>Compiler and Linker Options</H2>
791
792<H3>RVCT and ARMCC</H3>
793<p>
794CTR-SDK uses RVCT and ARMCC as its compiler and linker. The only difference between RVCT and ARMCC is their versions; they are from the same series of compilers/linkers. This documentation makes no distinction between RVCT and ARMCC and simply calls them <I>compiler</I> and <I>linker</I>.
795</p>
796
797<H3>Options</H3>
798<p>
799The compiler and linker have large numbers of command-line options, and the generated code will depend on the options that are specified.
800</p>
801<p>
802CTR-SDK assumes that some options will or will not be used, and the created program may fail to behave correctly if these assumptions are not met. The compiler or linker may report an error if certain options are specified and prevent the program from being created. Even if the tools succeed in creating an AXF file, the SDK tools may subsequently report an error.
803</p>
804<p>
805Make sure to follow the option availability below when using the compiler and linker.
806</p>
807
808
809<H3>Compiler Options</H3>
810<p>
811Below are lists of allowed and prohibited compiler options.
812</p>
813
814<h4>Required</h4>
815<p>
816The following options are required. These options must be specified every time you use this tool.
817</p>
818<pre>
819--apcs=/interwork
820--c99 (when compiling C source)
821--cpu=MPCore
822--fpmode=fast
823--signed_chars
824</pre>
825
826<h4>Different Specifications Prohibited</h4>
827<p>
828You must use the defaults for the following options. Specify these options by using the default values. Do not specify any other values.
829</p>
830<pre>
831--library_interface=rvct
832--library_type=standardlib
833--littleend
834--wchar16
835--wchar
836</pre>
837
838<h4>Recommended</h4>
839<p>
840Although these options are not mandatory, Nintendo recommends their use.
841</p>
842<pre>
843--debug
844--debug_info=line_inlining_extensions
845--no_debug_macros
846--remove_unneeded_entities
847--split_sections
848</pre>
849
850<h4>Optional</h4>
851<p>
852The following options are optional.
853</p>
854<pre>
855--allow_null_this
856--arm
857--asm
858--asm_dir
859--autoinline
860--brief_diagnostics
861--bss_threshold
862--code_gen
863--compile_all_input
864--cpp
865--create_pch
866--data_reorder
867--debug_info
868--debug_macros
869--default_extension
870--depend
871--depend_dir
872--depend_format
873--depend_system_headers
874--depend_target
875--diag_error
876--diag_remark
877--diag_style
878--diag_suppress
879--diag_warning
880--dollar
881--dwarf2
882--dwarf3
883--emit_frame_directives
884--errors
885--exceptions
886--exceptions_unwind
887--feedback
888--force_new_nothrow
889--gnu
890--help
891--ignore_missing_headers
892--implicit_include
893--info=totals
894--inline
895--instrument_inline
896--interleave
897--intermediate_object_files
898--link_all_input
899--list
900--list_dir
901--list_macros
902--locale
903--long_long
904--loose_implicit_cast
905--md
906--message_locale
907--mm
908--multibyte_chars
909--multifile
910--output_dir
911--pch
912--pch_dir
913--pch_messages
914--pch_verbose
915--phony_targets
916--preinclude
917--preprocessed
918--reassociate_saturation
919--reduce_paths
920--restrict
921--retain
922--rtti
923--rtti_data
924--show_cmdline
925--sys_include
926--thumb
927--use_pch
928--version_number
929--vfe
930--via
931--vla
932--vsn
933--whole_program
934--wrap_diagonostics
935-A
936-C
937-E
938-I
939-L
940-M
941-O
942-Ospace
943-Otime
944-P
945-S
946-U
947-W
948-c
949-g
950-o
951</pre>
952
953<h4>Use Is Prohibited</h4>
954<p>
955The following options are prohibited. You must not use them.
956</p>
957<pre>
958--alternative_tokens
959--anachronisms
960--arm_linux
961--arm_linux_config_file
962--arm_linux_configure
963--arm_linux_paths
964--arm_only
965--bigend
966--bitband
967--c90
968--compatible
969--configure_cpp_headers
970--configure_extra_includes
971--configure_extra_libraries
972--configure_gas
973--configure_gcc
974--configure_gcc_version
975--configure_gld
976--configure_sysroot
977--default_definition_visibility
978--dep_name
979--device
980--dllexport_all
981--dllimport_runtime
982--enum_is_int
983--execstack
984--export_all_vtbl
985--export_defs_implicity
986--extended_initializers
987--forceinline
988--fp16_format
989--fpu
990--friend_injection
991--global_reg
992--gnu_defaults
993--gnu_version
994--guiding_decls
995--hide_all
996--implicit_include_searches
997--implicit_key_function
998--implicit_typename
999--import_all_vtbl
1000--interface_enums_are_32_bit
1001--kandr_include
1002--licretry
1003--lower_ropi
1004--lower_rwpi
1005--ltcg
1006--min_array_alignment
1007--multiply_latency
1008--nonstd_qualifier_deduction
1009--nonstd_qualifier_deduction
1010--old_specializations
1011--old_style_preprocessing
1012--parse_templates
1013--pending_instanciations
1014--pointer_alignment
1015--profile
1016--project
1017--reinitialize_workdir
1018--relaxed_ref_def
1019--shared
1020--signed_bitfields
1021--split_ldm
1022--strict
1023--strict_warnings
1024--translate_g++
1025--translate_gcc
1026--translate_gld
1027--trigraphs
1028--type_traits_helpers
1029--use_gas
1030--using_std
1031--vectorize
1032--visibility_inlines_hidden
1033--wchar32
1034--workdir
1035-J
1036-Warmcc,[option]
1037</pre>
1038
1039
1040<H3>Linker Options</H3>
1041
1042<p>
1043Below are lists of allowed and prohibited linker options.
1044</p>
1045
1046<h4>Required</h4>
1047<p>
1048The following options are required. These options must be specified every time you use this tool.
1049</p>
1050<pre>
1051--datacompressor=off
1052--keep=nnMain
1053--scatter=&lt;CTRSDK_ROOT&gt;/resources/specfiles/linker/CTR.Process.MPCore.ldscript
1054</pre>
1055
1056<h4>Different Specifications Prohibited</h4>
1057<p>
1058You must use the defaults for the following options. Specify these options by using the default values. Do not specify any other values.
1059</p>
1060<pre>
1061--be8
1062--cpu=MPCore
1063--entry=__ctr_start
1064--legacyalign
1065--library_type=standardlib
1066--ref_cpp_init
1067--scanlib
1068--startup=__ctr_start
1069</pre>
1070
1071<h4>Recommended</h4>
1072<p>
1073Although these options are not mandatory, Nintendo recommends their use.
1074</p>
1075<pre>
1076--largeregions
1077--no_eager_load_debug
1078--strict
1079</pre>
1080
1081<h4>Optional</h4>
1082<p>
1083The following options are optional.
1084</p>
1085<pre>
1086--bestdebug
1087--branchnop
1088--callgraph
1089--callgraph_file
1090--callgraph_output
1091--cgfile
1092--cgsymbol
1093--cgundefined
1094--comment_section
1095--compress_debug
1096--crosser_veneershare
1097--diag_error
1098--diag_remark
1099--diag_style
1100--diag_suppress
1101--diag_warning
1102--eager_load_debug
1103--errors
1104--exceptions
1105--exceptions_table
1106--feedback
1107--feedback_image
1108--feedback_type
1109--filtercomment
1110--help
1111--info
1112--info_lib_prefix
1113--inline
1114--inlineveneer
1115--libpath
1116--list
1117--list_mapping_symbols
1118--mangled
1119--map
1120--max_veneer_passes
1121--merge
1122--merge_partial_comdat
1123--output
1124--pad
1125--partial
1126--privacy
1127--reduce_paths
1128--remarks
1129--remove
1130--section_index_display
1131--show_cmdline
1132--show_full_path
1133--show_parent_lib
1134--show_sec_index
1135--sort
1136--strict
1137--strict_enum_size
1138--strict_wchar_sizse
1139--symbols
1140--symdefs
1141--tailreorder
1142--tiebreaker
1143--userlibpath
1144--veneer_inject_type
1145--veneershare
1146--verbose
1147--version_number
1148--vfemode
1149--via
1150--vsn
1151--xref
1152--xrefdbg
1153--xref{from|to}
1154</pre>
1155
1156<h4>Use Is Prohibited</h4>
1157<p>
1158The following options are prohibited. You must not use this attribute.
1159</p>
1160<pre>
1161--add_needed
1162--add_shared_references
1163--any_placement
1164--any_sort_order
1165--arm_linux
1166--arm_only
1167--as_needed
1168--autoat
1169--base_platform
1170--be32
1171--bpabi
1172--combreloc
1173--cppinit
1174--device
1175--dll
1176--dynamic_debug
1177--dynamiclinker
1178--edit
1179--emit_debug_overlay_relocs
1180--emit_debug_overlay_section
1181--emit_non_debug_relocs
1182--emit_relocs
1183--execstack
1184--export_all
1185--export_dynamic
1186--fini
1187--first
1188--force_explicit_attr
1189--force_so_throw
1190--fpic
1191--fpu
1192--gnu_linker_defined_syms
1193--implicit_branchpatch
1194--import_unresolved
1195--init
1196--keep_protected_symbols
1197--last
1198--ldpartial
1199--library
1200--licretry
1201--linker_script
1202--linux_abitag
1203--locals
1204--ltcg
1205--match
1206--max_visibility
1207--muldefweak
1208--override_visibility
1209--paged
1210--pagesize
1211--pivenner
1212--pltgot
1213--pltgot_opts
1214--predefine
1215--prelink_support
1216--profile
1217--project
1218--reinitialize_workdir
1219--reloc
1220--ro_base
1221--ropi
1222--rosplit
1223--runpath
1224--rw_base
1225--rwpi
1226--search_dynamic_libraries
1227--shared
1228--soname
1229--split
1230--strict_ph
1231--strict_relocations
1232--symbolic
1233--symver_script
1234--symver_soname
1235--sysv
1236--undefined
1237--undefined_and_export
1238--unresolved
1239--use_definition_visibility
1240--use_sysv_default_script
1241--workdir
1242--zi_base
1243</pre>
1244
1245
1246<a name="macro"></a>
1247<H2>Macros Required by SDK</H2>
1248
1249<p>
1250CTR-SDK uses C/C++ macros to enable or disable a number of features. Accordingly, you must provide the appropriate macro definitions as compiler options.
1251</p>
1252
1253<H3>Required Macros</H3>
1254<P>
1255The macros below must always be set for CTR. You must therefore define them for all CTR projects.
1256</P>
1257<pre>
1258NN_COMPILER_OPTION_ARM
1259NN_COMPILER_RVCT
1260NN_DEBUGGER_KMC_PARTNER
1261NN_HARDWARE_CTR
1262NN_HARDWARE_CTR_TS
1263NN_PLATFORM_CTR
1264NN_PROCESSOR_ARM
1265NN_PROCESSOR_ARM11MPCORE
1266NN_PROCESSOR_ARM_V6
1267NN_PROCESSOR_ARM_VFP_V2
1268NN_SYSTEM_PROCESS
1269</pre>
1270
1271<H3>Selection Macros</H3>
1272<P>
1273You must change your macro specifications based on the following selections.
1274</P>
1275
1276<H4><CODE>RVCT/ARMCC Version</CODE></H4>
1277<pre>
1278NN_COMPILER_RVCT_VERSION_MAJOR=4
1279</pre>
1280<P>
1281You must specify an appropriate value in accordance with your RVCT/ARMCC version. If you are using RVCT version 4.0, set <CODE>NN_COMPILER_RVCT_VERSION_MAJOR</CODE> to <CODE>4</CODE>, as shown above. Even if you are using ARMCC, the name of the macro does not change.
1282</P>
1283
1284<H4>Optimization Type</H4>
1285<pre>
1286NN_EFFORT_FAST
1287NN_EFFORT_SMALL
1288</pre>
1289<P>
1290Specify whether to favor speed or size when optimizing. Define <CODE>NN_EFFORT_FAST</CODE> for <CODE>-Otime</CODE> and <CODE>NN_EFFORT_SMALL</CODE> for <CODE>-Ospace</CODE>. You must define one of these.
1291</P>
1292
1293<H4>Library Selection</H4>
1294<pre>
1295NN_BUILD_VERBOSE
1296NN_SWITCH_DISABLE_DEBUG_PRINT_FOR_SDK
1297NN_SWITCH_DISABLE_ASSERT_WARNING_FOR_SDK
1298</pre>
1299<P>
1300The SDK provides a <CODE>verbose</CODE> and <CODE>release</CODE> version of the static libraries. You must change your macro definitions based on which of these you use.
1301</P>
1302<P>
1303To use the <CODE>verbose</CODE> version, you must define <CODE>NN_BUILD_VERBOSE</CODE>. To use the <CODE>release</CODE> version, you must define <CODE>NN_SWITCH_DISABLE_DEBUG_PRINT_FOR_SDK</CODE> and <CODE>NN_SWITCH_DISABLE_ASSERT_WARNING_FOR_SDK</CODE>.
1304</P>
1305<P>
1306Your application may fail to link or run properly if there are inconsistencies between the macro definitions that you specify via compiler options and the static libraries you link to.
1307</P>
1308
1309<H3>Optional Macros</H3>
1310<P>
1311To use the SDK, the following macros are not required. You can use them as needed for application development.
1312</P>
1313
1314<H4>Enabling and Disabling <CODE>ASSERT</CODE> and <CODE>WARNING</CODE></H4>
1315<pre>
1316NN_SWITCH_DISABLE_ASSERT_WARNING
1317</pre>
1318<P>
1319Defining <code>NN_SWITCH_DISABLE_ASSERT_WARNING</code> replaces <CODE>ASSERT</CODE> and <CODE>WARNING</CODE> functions with no-ops. This lets you disable <CODE>ASSERT</CODE> and <CODE>WARNING</CODE> statements without changing the source code.
1320</P>
1321
1322<H4>Enabling and Disabling Debug Output</H4>
1323<pre>
1324NN_SWITCH_DISABLE_DEBUG_PRINT
1325</pre>
1326<P>
1327Defining <code>NN_SWITCH_DISABLE_DEBUG_PRINT</code> replaces <code>NN_LOG</code>, <code>NN_LOGV</code>, and <code>NN_PUT</code> with no-ops. This lets you disable debug output without changing the source code.
1328</P>
1329<P>
1330All debug output must be disabled in the final ROM image.
1331</P>
1332
1333
1334<a name="sdk_lib"></a>
1335<H2>SDK Libraries</H2>
1336<p>
1337The libraries provided by the SDK consist of C/C++ header files and static library files.
1338</p>
1339
1340<a name="include"></a>
1341<H3>Using Header Files</H3>
1342<p>
1343The C/C++ header files are located in <code>CTR_SDK/include</code>. You must specify <code>CTR_SDK/include</code> as an include to your compiler so that you can include these header files from your application's source files.
1344</p>
1345<pre>
1346armcc -I&lt;CTRSDK_ROOT&gt;/include ... (omitted) ...
1347</pre>
1348
1349<H3>Static Library Types</H3>
1350
1351<p>
1352The static libraries are in the <code>CTR_SDK/libraries/CTR-TS.Process.MPCore</code> directory. There are a total of four library types, formed by combination of two binary choices (development or release, and optimization for speed or size; 2 x 2 = 4).<br> The development libraries are in the <code>verbose</code> directory and the release libraries are in the <code>release</code> directory. Within those directories, the library optimized for speed is in the <code>.fast.</code> directory and the library optimized for size is in the <code>.small.</code> directory.
1353</p>
1354<pre>
1355verbose/*.fast.a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For development, optimized for speed
1356verbose/*.small.a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For development, optimized for size
1357release/*.fast.a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For release, optimized for speed
1358release/*.small.a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For release, optimized for size
1359</pre>
1360<p>
1361When you use a library, you must choose which of the four library types to use. Although you can mix the speed and size-optimized types in a single program, you cannot mix development and release libraries in this way.
1362</p>
1363
1364<H3>Development and Release Versions</H3>
1365
1366<p>
1367The development libraries differ from the release libraries in the following ways to facilitate development and debugging:
1368</p>
1369<ul>
1370<li>Assertions and warnings in the libraries are enabled.
1371<li>Debugging code in the libraries is enabled.
1372<li>Some of the API functions produce debugging output.
1373</ul>
1374<p>
1375Ordinarily, you should use the development libraries while you are developing your application. Your final ROM image must link to the release libraries.
1376</p>
1377
1378<H3>Using Static Libraries</H3>
1379
1380<p>
1381To make a library provided by the SDK available to your application, you must specify the appropriate static library as one of the input files of the linker.
1382</p>
1383<pre>
1384armlink &lt;CTRSDK_ROOT&gt;\libraries\CTR-TS.Process.MPCore\release\libnn_os.fast.a ... (omitted) ...
1385</pre>
1386<p>
1387The libraries have interdependencies, so providing only a portion of the static libraries as input to the linker may cause an error. Even if linking is successful, the program may fail to run correctly. You must therefore specify all libraries to the linker, with the exception of the development-only libraries and optional libraries described below.
1388</p>
1389
1390<H3>Development-Only Libraries</H3>
1391<p>
1392Some of the libraries provided by the SDK are specialized for development. Specifically, the functions in the following namespaces are for development only: <code>nn::hio</code>, <code>nn::midi</code>, and <code>nn::fs::hio</code>. You must ensure that you do not use these functions in your final ROM image. The following four static libraries support these functions: <code>libnn_hio.*.a</code>, <code>libnn_midi.*.a</code>, <code>libnn_fshio.*.a</code>, and <code>libnn_dev.*.a</code>. When you create your final ROM image, you can detect the use of development-only functions as linker errors by ensuring that these static libraries are not specified as input files for the linker.
1393</p>
1394
1395<H3>Optional Libraries</H3>
1396<p>
1397Some of the libraries provided by the SDK are not essential libraries. Most of these libraries are open source, and you do not need to take steps to avoid symbol conflicts.<br>  At the present time, the only static library that is an optional library is <code>libzlib.*.a</code>.
1398</p>
1399
1400<H3><CODE>crt0.o</CODE></H3>
1401<p>
1402The directory containing the static libraries also contains the object files <CODE>crt0.*.o</CODE>. As with other static libraries, you must specify this file as one of the linker's input files.
1403</p>
1404
1405
1406
1407<a name="rsf_desc"></a>
1408<H2>RSF and DESC Files</H2>
1409
1410<p>
1411RSF and DESC files are necessary for creating an application.
1412</p>
1413
1414<H3>RSF Files</H3>
1415<p>
1416You must create a separate RSF file for each application. However, if you create a CFA file that contains an e-manual or a download-play child program, you must use the appropriate RSF file included in the SDK. For details on writing RSF files, see the <a href="../../tools/ctr_makerom.html#rsf"><CODE>makerom reference</CODE></a>.<br> The following RSF files can be found in <code>CTR_SDK/resources/specfiles</code>:
1417</p>
1418<dl>
1419<dt><CODE>Application.rsf</CODE>
1420    <dd>
1421This RSF file contains the minimum necessary instructions to create a CTR application that is not a download-play child program. You can use this in the initial stages of development.
1422
1423<dt><CODE>Child.rsf</CODE>
1424    <dd>
1425Use this RSF file when you are creating a CFA file that contains a download-play child program.
1426
1427You must use this RSF file if you are creating a CFA file that contains a download-play child program.
1428
1429You cannot use it to create a download-play child application.
1430
1431<dt><CODE>Manual.rsf</CODE>
1432    <dd>
1433Use this RSF file when you are creating a CFA file that contains an e-manual. You must use this RSF file in order to create an e-manual.
1434</dl>
1435
1436<H3>DESC Files</H3>
1437<p>
1438The DESC files are the same for all applications. You must use one of the files included in the SDK without modifications of any kind.<br> The DESC files are located in the <code>CTR_SDK/resources/specfiles</code> directory. Use the appropriate file for your application.
1439</p>
1440<dl>
1441<dt><CODE>Application.desc</CODE>
1442    <dd>
1443Use this DESC file when creating a CTR application that does not contain a download-play child program.
1444
1445<dt><CODE>DlpChild.desc</CODE>
1446    <dd>
1447Use this DESC file when creating a download-play child program.
1448</dl>
1449
1450
1451
1452
1453
1454<H2>Revision History</H2>
1455<dl class="history">
1456
1457    <dt>2012/08/11</dt>
1458    <dd>
1459Deleted <CODE>NN_COMPILER_RVCT_VERSION_MINOR</CODE>.<BR>
1460    </dd>
1461
1462    <dt>2012/05/25</dt>
1463    <dd>
1464Added the <B>Optional Libraries</B> section. <br/> Added the <B>Revision History</B> section. <br/>
1465    </dd>
1466
1467    <dt>2011/12/21</dt>
1468    <dd>
1469Separated <B>Creating a Download Play Child Program CIA File</B> out as its own section. <br/>
1470    </dd>
1471
1472    <dt>2011/10/06</dt>
1473    <dd>
1474Added an explanation about <CODE>makerom</CODE> content index. <br/>
1475    </dd>
1476
1477    <dt>2011/08/05</dt>
1478    <dd>
1479Revised the link to <B>Build System</B>. <br/>
1480    </dd>
1481
1482    <dt>2011/07/19</dt>
1483    <dd>
1484Added information about building Download-Play child programs and e-manuals. <br/> Corrected the <CODE>--scatter</CODE> linker option, which was missing its argument.
1485    </dd>
1486
1487    <dt>2011/05/18</dt>
1488    <dd>
1489Initial version.
1490    </dd>
1491</dl>
1492
1493
1494<div class="footer"><span>Guide to Developing a Build System</span></div>
1495
1496  <hr><p>CTR-06-0200-002-I<br>CONFIDENTIAL</p></body>
1497</HTML>