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
);