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