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 REQUIRE_OBJECT ( ipv6
);
99 * Drag in all requested PXE support
103 REQUIRE_OBJECT ( pxemenu
);
106 REQUIRE_OBJECT ( pxe_call
);
110 * Drag in all requested download protocols
113 #ifdef DOWNLOAD_PROTO_TFTP
114 REQUIRE_OBJECT ( tftp
);
116 #ifdef DOWNLOAD_PROTO_HTTP
117 REQUIRE_OBJECT ( http
);
119 #ifdef DOWNLOAD_PROTO_HTTPS
120 REQUIRE_OBJECT ( https
);
122 #ifdef DOWNLOAD_PROTO_FTP
123 REQUIRE_OBJECT ( ftp
);
125 #ifdef DOWNLOAD_PROTO_TFTM
126 REQUIRE_OBJECT ( tftm
);
128 #ifdef DOWNLOAD_PROTO_SLAM
129 REQUIRE_OBJECT ( slam
);
133 * Drag in all requested SAN boot protocols
136 #ifdef SANBOOT_PROTO_ISCSI
137 REQUIRE_OBJECT ( iscsiboot
);
139 #ifdef SANBOOT_PROTO_AOE
140 REQUIRE_OBJECT ( aoeboot
);
142 #ifdef SANBOOT_PROTO_IB_SRP
143 REQUIRE_OBJECT ( ib_srpboot
);
147 * Drag in all requested resolvers
151 REQUIRE_OBJECT ( dns
);
155 * Drag in all requested image formats
159 REQUIRE_OBJECT ( nbi
);
162 REQUIRE_OBJECT ( elfboot
);
165 REQUIRE_OBJECT ( freebsd
);
167 #ifdef IMAGE_MULTIBOOT
168 REQUIRE_OBJECT ( multiboot
);
171 REQUIRE_OBJECT ( aout
);
174 REQUIRE_OBJECT ( wince
);
177 REQUIRE_OBJECT ( pxe_image
);
180 REQUIRE_OBJECT ( script
);
183 REQUIRE_OBJECT ( bzimage
);
185 #ifdef IMAGE_ELTORITO
186 REQUIRE_OBJECT ( eltorito
);
189 REQUIRE_OBJECT ( comboot
);
190 REQUIRE_OBJECT ( com32
);
191 REQUIRE_OBJECT ( comboot_call
);
192 REQUIRE_OBJECT ( com32_call
);
193 REQUIRE_OBJECT ( com32_wrapper
);
194 REQUIRE_OBJECT ( comboot_resolv
);
197 REQUIRE_OBJECT ( efi_image
);
201 * Drag in all requested commands
205 REQUIRE_OBJECT ( autoboot_cmd
);
208 REQUIRE_OBJECT ( nvo_cmd
);
211 REQUIRE_OBJECT ( config_cmd
);
214 REQUIRE_OBJECT ( ifmgmt_cmd
);
216 /* IWMGMT_CMD is brought in by net80211.c if requested */
218 REQUIRE_OBJECT ( route_cmd
);
221 REQUIRE_OBJECT ( image_cmd
);
224 REQUIRE_OBJECT ( dhcp_cmd
);
227 REQUIRE_OBJECT ( sanboot_cmd
);
230 REQUIRE_OBJECT ( login_cmd
);
233 REQUIRE_OBJECT ( time_cmd
);
236 REQUIRE_OBJECT ( digest_cmd
);
239 REQUIRE_OBJECT ( pxe_cmd
);
242 REQUIRE_OBJECT ( ipv6_cmd
);
246 * Drag in miscellaneous objects
250 REQUIRE_OBJECT ( nulltrap
);
253 REQUIRE_OBJECT ( gdbidt
);
254 REQUIRE_OBJECT ( gdbserial
);
255 REQUIRE_OBJECT ( gdbstub_cmd
);
258 REQUIRE_OBJECT ( gdbidt
);
259 REQUIRE_OBJECT ( gdbudp
);
260 REQUIRE_OBJECT ( gdbstub_cmd
);
264 * Drag in objects that are always required, but not dragged in via
265 * symbol dependencies.
268 REQUIRE_OBJECT ( device
);
269 REQUIRE_OBJECT ( embedded
);