1 | /* |
---|
2 | * This program is free software; you can redistribute it and/or |
---|
3 | * modify it under the terms of the GNU General Public License as |
---|
4 | * published by the Free Software Foundation; either version 2, or (at |
---|
5 | * your option) any later version. |
---|
6 | */ |
---|
7 | |
---|
8 | FILE_LICENCE ( GPL2_OR_LATER ); |
---|
9 | |
---|
10 | #include <config/general.h> |
---|
11 | #include <config/console.h> |
---|
12 | |
---|
13 | /** @file |
---|
14 | * |
---|
15 | * Configuration options |
---|
16 | * |
---|
17 | * This file contains macros that pull various objects into the link |
---|
18 | * based on definitions in configuration header files. Ideally it |
---|
19 | * should be the only place in gPXE where one might need to use #ifdef |
---|
20 | * for compile-time options. |
---|
21 | * |
---|
22 | * In the fairly common case where an object should only be considered |
---|
23 | * for inclusion if the subsystem it depends on is present, its |
---|
24 | * configuration macros should be placed in a file named |
---|
25 | * <tt>config_<i>subsystem</i>.c</tt>, where @e subsystem is the |
---|
26 | * object basename of the main source file for that subsystem. The |
---|
27 | * build system will pull in that file if @c subsystem.c is included |
---|
28 | * in the final gPXE executable built. |
---|
29 | */ |
---|
30 | |
---|
31 | /* |
---|
32 | * Build ID string calculations |
---|
33 | * |
---|
34 | */ |
---|
35 | #undef XSTR |
---|
36 | #undef STR |
---|
37 | #define XSTR(s) STR(s) |
---|
38 | #define STR(s) #s |
---|
39 | |
---|
40 | #ifdef BUILD_SERIAL |
---|
41 | #include "config/.buildserial.h" |
---|
42 | #define BUILD_SERIAL_STR " #" XSTR(BUILD_SERIAL_NUM) |
---|
43 | #else |
---|
44 | #define BUILD_SERIAL_STR "" |
---|
45 | #endif |
---|
46 | |
---|
47 | #ifdef BUILD_ID |
---|
48 | #define BUILD_ID_STR " " BUILD_ID |
---|
49 | #else |
---|
50 | #define BUILD_ID_STR "" |
---|
51 | #endif |
---|
52 | |
---|
53 | #if defined(BUILD_ID) || defined(BUILD_SERIAL) |
---|
54 | #define BUILD_STRING " [build" BUILD_ID_STR BUILD_SERIAL_STR "]" |
---|
55 | #else |
---|
56 | #define BUILD_STRING "" |
---|
57 | #endif |
---|
58 | |
---|
59 | /* |
---|
60 | * Drag in all requested console types |
---|
61 | * |
---|
62 | */ |
---|
63 | |
---|
64 | #ifdef CONSOLE_PCBIOS |
---|
65 | REQUIRE_OBJECT ( bios_console ); |
---|
66 | #endif |
---|
67 | #ifdef CONSOLE_SERIAL |
---|
68 | REQUIRE_OBJECT ( serial_console ); |
---|
69 | #endif |
---|
70 | #ifdef CONSOLE_DIRECT_VGA |
---|
71 | REQUIRE_OBJECT ( video_subr ); |
---|
72 | #endif |
---|
73 | #ifdef CONSOLE_BTEXT |
---|
74 | REQUIRE_OBJECT ( btext ); |
---|
75 | #endif |
---|
76 | #ifdef CONSOLE_PC_KBD |
---|
77 | REQUIRE_OBJECT ( pc_kbd ); |
---|
78 | #endif |
---|
79 | #ifdef CONSOLE_SYSLOG |
---|
80 | REQUIRE_OBJECT ( syslog ); |
---|
81 | #endif |
---|
82 | #ifdef CONSOLE_EFI |
---|
83 | REQUIRE_OBJECT ( efi_console ); |
---|
84 | #endif |
---|
85 | |
---|
86 | /* |
---|
87 | * Drag in all requested network protocols |
---|
88 | * |
---|
89 | */ |
---|
90 | #ifdef NET_PROTO_IPV4 |
---|
91 | REQUIRE_OBJECT ( ipv4 ); |
---|
92 | #endif |
---|
93 | |
---|
94 | /* |
---|
95 | * Drag in all requested PXE support |
---|
96 | * |
---|
97 | */ |
---|
98 | #ifdef PXE_MENU |
---|
99 | REQUIRE_OBJECT ( pxemenu ); |
---|
100 | #endif |
---|
101 | #ifdef PXE_STACK |
---|
102 | REQUIRE_OBJECT ( pxe_call ); |
---|
103 | #endif |
---|
104 | |
---|
105 | /* |
---|
106 | * Drag in all requested download protocols |
---|
107 | * |
---|
108 | */ |
---|
109 | #ifdef DOWNLOAD_PROTO_TFTP |
---|
110 | REQUIRE_OBJECT ( tftp ); |
---|
111 | #endif |
---|
112 | #ifdef DOWNLOAD_PROTO_HTTP |
---|
113 | REQUIRE_OBJECT ( http ); |
---|
114 | #endif |
---|
115 | #ifdef DOWNLOAD_PROTO_HTTPS |
---|
116 | REQUIRE_OBJECT ( https ); |
---|
117 | #endif |
---|
118 | #ifdef DOWNLOAD_PROTO_FTP |
---|
119 | REQUIRE_OBJECT ( ftp ); |
---|
120 | #endif |
---|
121 | #ifdef DOWNLOAD_PROTO_TFTM |
---|
122 | REQUIRE_OBJECT ( tftm ); |
---|
123 | #endif |
---|
124 | #ifdef DOWNLOAD_PROTO_SLAM |
---|
125 | REQUIRE_OBJECT ( slam ); |
---|
126 | #endif |
---|
127 | |
---|
128 | /* |
---|
129 | * Drag in all requested SAN boot protocols |
---|
130 | * |
---|
131 | */ |
---|
132 | #ifdef SANBOOT_PROTO_ISCSI |
---|
133 | REQUIRE_OBJECT ( iscsiboot ); |
---|
134 | #endif |
---|
135 | #ifdef SANBOOT_PROTO_AOE |
---|
136 | REQUIRE_OBJECT ( aoeboot ); |
---|
137 | #endif |
---|
138 | #ifdef SANBOOT_PROTO_IB_SRP |
---|
139 | REQUIRE_OBJECT ( ib_srpboot ); |
---|
140 | #endif |
---|
141 | |
---|
142 | /* |
---|
143 | * Drag in all requested resolvers |
---|
144 | * |
---|
145 | */ |
---|
146 | #ifdef DNS_RESOLVER |
---|
147 | REQUIRE_OBJECT ( dns ); |
---|
148 | #endif |
---|
149 | |
---|
150 | /* |
---|
151 | * Drag in all requested image formats |
---|
152 | * |
---|
153 | */ |
---|
154 | #ifdef IMAGE_NBI |
---|
155 | REQUIRE_OBJECT ( nbi ); |
---|
156 | #endif |
---|
157 | #ifdef IMAGE_ELF |
---|
158 | REQUIRE_OBJECT ( elfboot ); |
---|
159 | #endif |
---|
160 | #ifdef IMAGE_FREEBSD |
---|
161 | REQUIRE_OBJECT ( freebsd ); |
---|
162 | #endif |
---|
163 | #ifdef IMAGE_MULTIBOOT |
---|
164 | REQUIRE_OBJECT ( multiboot ); |
---|
165 | #endif |
---|
166 | #ifdef IMAGE_AOUT |
---|
167 | REQUIRE_OBJECT ( aout ); |
---|
168 | #endif |
---|
169 | #ifdef IMAGE_WINCE |
---|
170 | REQUIRE_OBJECT ( wince ); |
---|
171 | #endif |
---|
172 | #ifdef IMAGE_PXE |
---|
173 | REQUIRE_OBJECT ( pxe_image ); |
---|
174 | #endif |
---|
175 | #ifdef IMAGE_SCRIPT |
---|
176 | REQUIRE_OBJECT ( script ); |
---|
177 | #endif |
---|
178 | #ifdef IMAGE_BZIMAGE |
---|
179 | REQUIRE_OBJECT ( bzimage ); |
---|
180 | #endif |
---|
181 | #ifdef IMAGE_ELTORITO |
---|
182 | REQUIRE_OBJECT ( eltorito ); |
---|
183 | #endif |
---|
184 | #ifdef IMAGE_COMBOOT |
---|
185 | REQUIRE_OBJECT ( comboot ); |
---|
186 | REQUIRE_OBJECT ( com32 ); |
---|
187 | REQUIRE_OBJECT ( comboot_call ); |
---|
188 | REQUIRE_OBJECT ( com32_call ); |
---|
189 | REQUIRE_OBJECT ( com32_wrapper ); |
---|
190 | REQUIRE_OBJECT ( comboot_resolv ); |
---|
191 | #endif |
---|
192 | #ifdef IMAGE_EFI |
---|
193 | REQUIRE_OBJECT ( efi_image ); |
---|
194 | #endif |
---|
195 | |
---|
196 | /* |
---|
197 | * Drag in all requested commands |
---|
198 | * |
---|
199 | */ |
---|
200 | #ifdef AUTOBOOT_CMD |
---|
201 | REQUIRE_OBJECT ( autoboot_cmd ); |
---|
202 | #endif |
---|
203 | #ifdef NVO_CMD |
---|
204 | REQUIRE_OBJECT ( nvo_cmd ); |
---|
205 | #endif |
---|
206 | #ifdef CONFIG_CMD |
---|
207 | REQUIRE_OBJECT ( config_cmd ); |
---|
208 | #endif |
---|
209 | #ifdef IFMGMT_CMD |
---|
210 | REQUIRE_OBJECT ( ifmgmt_cmd ); |
---|
211 | #endif |
---|
212 | /* IWMGMT_CMD is brought in by net80211.c if requested */ |
---|
213 | #ifdef ROUTE_CMD |
---|
214 | REQUIRE_OBJECT ( route_cmd ); |
---|
215 | #endif |
---|
216 | #ifdef IMAGE_CMD |
---|
217 | REQUIRE_OBJECT ( image_cmd ); |
---|
218 | #endif |
---|
219 | #ifdef DHCP_CMD |
---|
220 | REQUIRE_OBJECT ( dhcp_cmd ); |
---|
221 | #endif |
---|
222 | #ifdef SANBOOT_CMD |
---|
223 | REQUIRE_OBJECT ( sanboot_cmd ); |
---|
224 | #endif |
---|
225 | #ifdef LOGIN_CMD |
---|
226 | REQUIRE_OBJECT ( login_cmd ); |
---|
227 | #endif |
---|
228 | #ifdef TIME_CMD |
---|
229 | REQUIRE_OBJECT ( time_cmd ); |
---|
230 | #endif |
---|
231 | #ifdef DIGEST_CMD |
---|
232 | REQUIRE_OBJECT ( digest_cmd ); |
---|
233 | #endif |
---|
234 | #ifdef PXE_CMD |
---|
235 | REQUIRE_OBJECT ( pxe_cmd ); |
---|
236 | #endif |
---|
237 | |
---|
238 | /* |
---|
239 | * Drag in miscellaneous objects |
---|
240 | * |
---|
241 | */ |
---|
242 | #ifdef NULL_TRAP |
---|
243 | REQUIRE_OBJECT ( nulltrap ); |
---|
244 | #endif |
---|
245 | #ifdef GDBSERIAL |
---|
246 | REQUIRE_OBJECT ( gdbidt ); |
---|
247 | REQUIRE_OBJECT ( gdbserial ); |
---|
248 | REQUIRE_OBJECT ( gdbstub_cmd ); |
---|
249 | #endif |
---|
250 | #ifdef GDBUDP |
---|
251 | REQUIRE_OBJECT ( gdbidt ); |
---|
252 | REQUIRE_OBJECT ( gdbudp ); |
---|
253 | REQUIRE_OBJECT ( gdbstub_cmd ); |
---|
254 | #endif |
---|
255 | |
---|
256 | /* |
---|
257 | * Drag in objects that are always required, but not dragged in via |
---|
258 | * symbol dependencies. |
---|
259 | * |
---|
260 | */ |
---|
261 | REQUIRE_OBJECT ( device ); |
---|
262 | REQUIRE_OBJECT ( embedded ); |
---|