Home | History | Annotate | Download | only in config
      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