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.
8 FILE_LICENCE ( GPL2_OR_LATER );
10 #include <config/general.h>
11 #include <config/console.h>
15 * Configuration options
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.
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.
32 * Build ID string calculations
37 #define XSTR(s) STR(s)
41 #include "config/.buildserial.h"
42 #define BUILD_SERIAL_STR " #" XSTR(BUILD_SERIAL_NUM)
44 #define BUILD_SERIAL_STR ""
48 #define BUILD_ID_STR " " BUILD_ID
50 #define BUILD_ID_STR ""
53 #if defined(BUILD_ID) || defined(BUILD_SERIAL)
54 #define BUILD_STRING " [build" BUILD_ID_STR BUILD_SERIAL_STR "]"
56 #define BUILD_STRING ""
60 * Drag in all requested console types
65 REQUIRE_OBJECT ( bios_console );
68 REQUIRE_OBJECT ( serial_console );
70 #ifdef CONSOLE_DIRECT_VGA
71 REQUIRE_OBJECT ( video_subr );
74 REQUIRE_OBJECT ( btext );
77 REQUIRE_OBJECT ( pc_kbd );
80 REQUIRE_OBJECT ( syslog );
83 REQUIRE_OBJECT ( efi_console );
87 * Drag in all requested network protocols
91 REQUIRE_OBJECT ( ipv4 );
95 * Drag in all requested PXE support
99 REQUIRE_OBJECT ( pxemenu );
102 REQUIRE_OBJECT ( pxe_call );
106 * Drag in all requested download protocols
109 #ifdef DOWNLOAD_PROTO_TFTP
110 REQUIRE_OBJECT ( tftp );
112 #ifdef DOWNLOAD_PROTO_HTTP
113 REQUIRE_OBJECT ( http );
115 #ifdef DOWNLOAD_PROTO_HTTPS
116 REQUIRE_OBJECT ( https );
118 #ifdef DOWNLOAD_PROTO_FTP
119 REQUIRE_OBJECT ( ftp );
121 #ifdef DOWNLOAD_PROTO_TFTM
122 REQUIRE_OBJECT ( tftm );
124 #ifdef DOWNLOAD_PROTO_SLAM
125 REQUIRE_OBJECT ( slam );
129 * Drag in all requested SAN boot protocols
132 #ifdef SANBOOT_PROTO_ISCSI
133 REQUIRE_OBJECT ( iscsiboot );
135 #ifdef SANBOOT_PROTO_AOE
136 REQUIRE_OBJECT ( aoeboot );
138 #ifdef SANBOOT_PROTO_IB_SRP
139 REQUIRE_OBJECT ( ib_srpboot );
143 * Drag in all requested resolvers
147 REQUIRE_OBJECT ( dns );
151 * Drag in all requested image formats
155 REQUIRE_OBJECT ( nbi );
158 REQUIRE_OBJECT ( elfboot );
161 REQUIRE_OBJECT ( freebsd );
163 #ifdef IMAGE_MULTIBOOT
164 REQUIRE_OBJECT ( multiboot );
167 REQUIRE_OBJECT ( aout );
170 REQUIRE_OBJECT ( wince );
173 REQUIRE_OBJECT ( pxe_image );
176 REQUIRE_OBJECT ( script );
179 REQUIRE_OBJECT ( bzimage );
181 #ifdef IMAGE_ELTORITO
182 REQUIRE_OBJECT ( eltorito );
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 );
193 REQUIRE_OBJECT ( efi_image );
197 * Drag in all requested commands
201 REQUIRE_OBJECT ( autoboot_cmd );
204 REQUIRE_OBJECT ( nvo_cmd );
207 REQUIRE_OBJECT ( config_cmd );
210 REQUIRE_OBJECT ( ifmgmt_cmd );
212 /* IWMGMT_CMD is brought in by net80211.c if requested */
214 REQUIRE_OBJECT ( route_cmd );
217 REQUIRE_OBJECT ( image_cmd );
220 REQUIRE_OBJECT ( dhcp_cmd );
223 REQUIRE_OBJECT ( sanboot_cmd );
226 REQUIRE_OBJECT ( login_cmd );
229 REQUIRE_OBJECT ( time_cmd );
232 REQUIRE_OBJECT ( digest_cmd );
235 REQUIRE_OBJECT ( pxe_cmd );
239 * Drag in miscellaneous objects
243 REQUIRE_OBJECT ( nulltrap );
246 REQUIRE_OBJECT ( gdbidt );
247 REQUIRE_OBJECT ( gdbserial );
248 REQUIRE_OBJECT ( gdbstub_cmd );
251 REQUIRE_OBJECT ( gdbidt );
252 REQUIRE_OBJECT ( gdbudp );
253 REQUIRE_OBJECT ( gdbstub_cmd );
257 * Drag in objects that are always required, but not dragged in via
258 * symbol dependencies.
261 REQUIRE_OBJECT ( device );
262 REQUIRE_OBJECT ( embedded );