|
|
1.1 root 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: #include <config/sideband.h>
13:
14: /** @file
15: *
16: * Configuration options
17: *
18: * This file contains macros that pull various objects into the link
19: * based on definitions in configuration header files. Ideally it
20: * should be the only place in iPXE where one might need to use #ifdef
21: * for compile-time options.
22: *
23: * In the fairly common case where an object should only be considered
24: * for inclusion if the subsystem it depends on is present, its
25: * configuration macros should be placed in a file named
26: * <tt>config_<i>subsystem</i>.c</tt>, where @e subsystem is the
27: * object basename of the main source file for that subsystem. The
28: * build system will pull in that file if @c subsystem.c is included
29: * in the final iPXE executable built.
30: */
31:
32: /*
33: * Build ID string calculations
34: *
35: */
36: #undef XSTR
37: #undef STR
38: #define XSTR(s) STR(s)
39: #define STR(s) #s
40:
41: #ifdef BUILD_SERIAL
42: #include "config/.buildserial.h"
43: #define BUILD_SERIAL_STR " #" XSTR(BUILD_SERIAL_NUM)
44: #else
45: #define BUILD_SERIAL_STR ""
46: #endif
47:
48: #ifdef BUILD_ID
49: #define BUILD_ID_STR " " BUILD_ID
50: #else
51: #define BUILD_ID_STR ""
52: #endif
53:
54: #if defined(BUILD_ID) || defined(BUILD_SERIAL)
55: #define BUILD_STRING " [build" BUILD_ID_STR BUILD_SERIAL_STR "]"
56: #else
57: #define BUILD_STRING ""
58: #endif
59:
60: /*
61: * Drag in all requested console types
62: *
63: */
64:
65: #ifdef CONSOLE_PCBIOS
66: REQUIRE_OBJECT ( bios_console );
67: #endif
68: #ifdef CONSOLE_SERIAL
69: REQUIRE_OBJECT ( serial_console );
70: #endif
71: #ifdef CONSOLE_DIRECT_VGA
72: REQUIRE_OBJECT ( video_subr );
73: #endif
74: #ifdef CONSOLE_BTEXT
75: REQUIRE_OBJECT ( btext );
76: #endif
77: #ifdef CONSOLE_PC_KBD
78: REQUIRE_OBJECT ( pc_kbd );
79: #endif
80: #ifdef CONSOLE_SYSLOG
81: REQUIRE_OBJECT ( syslog );
82: #endif
83: #ifdef CONSOLE_EFI
84: REQUIRE_OBJECT ( efi_console );
85: #endif
86: #ifdef CONSOLE_LINUX
87: REQUIRE_OBJECT ( linux_console );
88: #endif
89:
90: /*
91: * Drag in all requested network protocols
92: *
93: */
94: #ifdef NET_PROTO_IPV4
95: REQUIRE_OBJECT ( ipv4 );
96: #endif
97:
98: /*
99: * Drag in all requested PXE support
100: *
101: */
102: #ifdef PXE_MENU
103: REQUIRE_OBJECT ( pxemenu );
104: #endif
105: #ifdef PXE_STACK
106: REQUIRE_OBJECT ( pxe_call );
107: #endif
108:
109: /*
110: * Drag in all requested download protocols
111: *
112: */
113: #ifdef DOWNLOAD_PROTO_TFTP
114: REQUIRE_OBJECT ( tftp );
115: #endif
116: #ifdef DOWNLOAD_PROTO_HTTP
117: REQUIRE_OBJECT ( http );
118: #endif
119: #ifdef DOWNLOAD_PROTO_HTTPS
120: REQUIRE_OBJECT ( https );
121: #endif
122: #ifdef DOWNLOAD_PROTO_FTP
123: REQUIRE_OBJECT ( ftp );
124: #endif
125: #ifdef DOWNLOAD_PROTO_TFTM
126: REQUIRE_OBJECT ( tftm );
127: #endif
128: #ifdef DOWNLOAD_PROTO_SLAM
129: REQUIRE_OBJECT ( slam );
130: #endif
131:
132: /*
133: * Drag in all requested SAN boot protocols
134: *
135: */
136: #ifdef SANBOOT_PROTO_ISCSI
137: REQUIRE_OBJECT ( iscsi );
138: #endif
139:
140: /*
141: * Drag in all requested resolvers
142: *
143: */
144: #ifdef DNS_RESOLVER
145: REQUIRE_OBJECT ( dns );
146: #endif
147:
148: /*
149: * Drag in all requested image formats
150: *
151: */
152: #ifdef IMAGE_NBI
153: REQUIRE_OBJECT ( nbi );
154: #endif
155: #ifdef IMAGE_ELF
156: REQUIRE_OBJECT ( elfboot );
157: #endif
158: #ifdef IMAGE_FREEBSD
159: REQUIRE_OBJECT ( freebsd );
160: #endif
161: #ifdef IMAGE_MULTIBOOT
162: REQUIRE_OBJECT ( multiboot );
163: #endif
164: #ifdef IMAGE_AOUT
165: REQUIRE_OBJECT ( aout );
166: #endif
167: #ifdef IMAGE_WINCE
168: REQUIRE_OBJECT ( wince );
169: #endif
170: #ifdef IMAGE_PXE
171: REQUIRE_OBJECT ( pxe_image );
172: #endif
173: #ifdef IMAGE_SCRIPT
174: REQUIRE_OBJECT ( script );
175: #endif
176: #ifdef IMAGE_BZIMAGE
177: REQUIRE_OBJECT ( bzimage );
178: #endif
179: #ifdef IMAGE_ELTORITO
180: REQUIRE_OBJECT ( eltorito );
181: #endif
182: #ifdef IMAGE_COMBOOT
183: REQUIRE_OBJECT ( comboot );
184: REQUIRE_OBJECT ( com32 );
185: REQUIRE_OBJECT ( comboot_call );
186: REQUIRE_OBJECT ( com32_call );
187: REQUIRE_OBJECT ( com32_wrapper );
188: REQUIRE_OBJECT ( comboot_resolv );
189: #endif
190: #ifdef IMAGE_EFI
191: REQUIRE_OBJECT ( efi_image );
192: #endif
193:
194: /*
195: * Drag in all requested commands
196: *
197: */
198: #ifdef AUTOBOOT_CMD
199: REQUIRE_OBJECT ( autoboot_cmd );
200: #endif
201: #ifdef NVO_CMD
202: REQUIRE_OBJECT ( nvo_cmd );
203: #endif
204: #ifdef CONFIG_CMD
205: REQUIRE_OBJECT ( config_cmd );
206: #endif
207: #ifdef IFMGMT_CMD
208: REQUIRE_OBJECT ( ifmgmt_cmd );
209: #endif
210: /* IWMGMT_CMD is brought in by net80211.c if requested */
211: #ifdef ROUTE_CMD
212: REQUIRE_OBJECT ( route_cmd );
213: #endif
214: #ifdef IMAGE_CMD
215: REQUIRE_OBJECT ( image_cmd );
216: #endif
217: #ifdef DHCP_CMD
218: REQUIRE_OBJECT ( dhcp_cmd );
219: #endif
220: #ifdef SANBOOT_CMD
221: REQUIRE_OBJECT ( sanboot_cmd );
222: #endif
223: #ifdef LOGIN_CMD
224: REQUIRE_OBJECT ( login_cmd );
225: #endif
226: #ifdef TIME_CMD
227: REQUIRE_OBJECT ( time_cmd );
228: #endif
229: #ifdef DIGEST_CMD
230: REQUIRE_OBJECT ( digest_cmd );
231: #endif
232: #ifdef PXE_CMD
233: REQUIRE_OBJECT ( pxe_cmd );
234: #endif
235: #ifdef LOTEST_CMD
236: REQUIRE_OBJECT ( lotest_cmd );
237: #endif
238: #ifdef VLAN_CMD
239: REQUIRE_OBJECT ( vlan_cmd );
240: #endif
241: #ifdef REBOOT_CMD
242: REQUIRE_OBJECT ( reboot_cmd );
243: #endif
244:
245: /*
246: * Drag in miscellaneous objects
247: *
248: */
249: #ifdef NULL_TRAP
250: REQUIRE_OBJECT ( nulltrap );
251: #endif
252: #ifdef GDBSERIAL
253: REQUIRE_OBJECT ( gdbidt );
254: REQUIRE_OBJECT ( gdbserial );
255: REQUIRE_OBJECT ( gdbstub_cmd );
256: #endif
257: #ifdef GDBUDP
258: REQUIRE_OBJECT ( gdbidt );
259: REQUIRE_OBJECT ( gdbudp );
260: REQUIRE_OBJECT ( gdbstub_cmd );
261: #endif
262:
263: /*
264: * Drag in objects that are always required, but not dragged in via
265: * symbol dependencies.
266: *
267: */
268: REQUIRE_OBJECT ( device );
269: REQUIRE_OBJECT ( embedded );
270:
271: /* linux drivers aren't picked up by the parserom utility so drag them in here */
272: #ifdef DRIVERS_LINUX
273: REQUIRE_OBJECT ( tap );
274: #endif
275:
276: /*
277: * Drag in relevant BOFM entry points
278: */
279: #ifdef CONFIG_BOFM
280: #ifdef BOFM_EFI
281: REQUIRE_OBJECT ( efi_bofm );
282: #endif /* BOFM_EFI */
283: #endif /* CONFIG_BOFM */
284:
285: /*
286: * Drag in selected keyboard map
287: */
288: #define REQUIRE_KEYMAP_OBJECT( _map ) REQUIRE_OBJECT ( keymap_ ## _map )
289: #define REQUIRE_KEYMAP( _map ) REQUIRE_KEYMAP_OBJECT ( _map )
290: REQUIRE_KEYMAP ( KEYBOARD_MAP );
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.