1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
32 33 34 35 36 37
38
39 /*!
40 * ======== Build ========
41 */
42
43 @Template("./Build.xdt")
44 metaonly module Build
45 {
46 /*!
47 * ======== buildROM ========
48 * Setting this to true causes the ROM to be built.
49 */
50 metaonly config Bool buildROM = false;
51
52 /*!
53 * ======== buildROMApp ========
54 * Setting this to true tells the Build system
55 * that the user wants their application linked with
56 * the ROM image.
57 */
58 metaonly config Bool buildROMApp = false;
59
60 /*!
61 * ======== includePaths ========
62 * Array of header file include search paths
63 * used to build the custom RTOS library
64 *
65 * To add to this array, use the following syntax:
66 * Build.includePaths.$add("/path/to/my/include/files/");
67 */
68 metaonly config String includePaths[];
69
70 /*!
71 * ======== ccArgs ========
72 * Array of strings added to the compile line
73 * used to build the custom RTOS library
74 *
75 * To add to this array, use the following syntax:
76 * Build.ccArgs.$add("-DMY_MACRO=1");
77 */
78 metaonly config String ccArgs[];
79
80 /*!
81 * ======== Component ========
82 * Define an annex component
83 *
84 * Annex components may be defined by adding this object type
85 * to the {@link #annex} array. All components in this array
86 * will participate in the kernel build flow.
87 *
88 * @field(repo) Specify the fully qualified path to the component
89 * repository. This will become a `vpath` directive
90 * in the generated makefile. For example, if you
91 * specify repo as the following
92 * @p(code)
93 * /path/to/component/repository
94 * @p
95 * the generated makefile will contain
96 * @p(code)
97 * vpath %.c /path/to/component/repository
98 * @p
99 *
100 * @field(files) An array of component source files. These will be
101 * added to the kernel build rule as dependencies.
102 * The file name must be found on the vpath given above.
103 * To avoid file name conflicts, it is recommended to
104 * specify package qualified file names. For example:
105 * @p(code)
106 * "my/package/fileA.c"
107 * "my/package/fileB.c"
108 * @p
109 */
110 struct Component {
111 String repo; /*! full path to component repository */
112 String incs[]; /*! list of include paths */
113 String files[]; /*! list of component source files */
114 };
115
116 /*!
117 * ======== annex ========
118 * The array of annex components
119 *
120 * All components defined in this array will participate in the
121 * kernel build flow. Components are of type {@link #Component}.
122 *
123 * To add a component to this array, use the following syntax:
124 *
125 * @p(code)
126 * Build.annex.$add({
127 * repo: "/path/to/component/repository",
128 * files: [
129 * "my/package/fileA.c",
130 * "my/package/fileB.c"
131 * ]
132 * });
133 * @p
134 */
135 metaonly config Component annex[];
136
137 /*!
138 * ======== getDefaultCustomCCOpts ========
139 */
140 metaonly String getDefaultCustomCCOpts();
141
142 /*!
143 * ======== getDefs ========
144 * Get the compiler -D options necessary to build
145 */
146 metaonly String getDefs();
147
148 /*!
149 * ======== getCFiles ========
150 * Get the library C source files.
151 */
152 metaonly String getCFiles(String target);
153
154 /*!
155 * ======== getAsmFiles ========
156 * Get the library Asm source files.
157 */
158 metaonly Any getAsmFiles(String target);
159
160 /*!
161 * ======== getCommandLineDefs ========
162 * Get the set of -D strings to insert into the makefile.
163 */
164 metaonly String getCommandLineDefs();
165
166 /*!
167 * ======== getIncludePaths ========
168 * Get the set of -I strings to insert into the makefile.
169 */
170 metaonly String getIncludePaths();
171
172 /*!
173 * ======== getCcArgs ========
174 * Get the compiler commpand line args
175 */
176 metaonly String getCcArgs();
177
178 179 180 181 182
183 function buildLibs(objList, relList, filter, xdcArgs);
184
185 /*!
186 * ======== getLibs ========
187 * Common getLibs() for all sysbios packages.
188 */
189 function getLibs(pkg);
190 }