2005-03-08 19:53:11 +01:00
|
|
|
/*
|
|
|
|
* This program is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU General Public License as
|
|
|
|
* published by the Free Software Foundation; either version 2, or (at
|
|
|
|
* your option) any later version.
|
|
|
|
*/
|
|
|
|
|
2009-05-01 16:41:06 +02:00
|
|
|
FILE_LICENCE ( GPL2_OR_LATER );
|
|
|
|
|
2008-10-12 03:30:31 +02:00
|
|
|
#include <config/general.h>
|
|
|
|
#include <config/console.h>
|
2005-04-18 13:00:42 +02:00
|
|
|
|
2009-08-07 03:52:06 +02:00
|
|
|
/** @file
|
|
|
|
*
|
|
|
|
* Configuration options
|
|
|
|
*
|
|
|
|
* This file contains macros that pull various objects into the link
|
|
|
|
* based on definitions in configuration header files. Ideally it
|
2010-04-19 21:16:01 +02:00
|
|
|
* should be the only place in iPXE where one might need to use #ifdef
|
2009-08-07 03:52:06 +02:00
|
|
|
* for compile-time options.
|
|
|
|
*
|
|
|
|
* In the fairly common case where an object should only be considered
|
|
|
|
* for inclusion if the subsystem it depends on is present, its
|
|
|
|
* configuration macros should be placed in a file named
|
|
|
|
* <tt>config_<i>subsystem</i>.c</tt>, where @e subsystem is the
|
|
|
|
* object basename of the main source file for that subsystem. The
|
|
|
|
* build system will pull in that file if @c subsystem.c is included
|
2010-04-19 21:16:01 +02:00
|
|
|
* in the final iPXE executable built.
|
2009-08-07 03:52:06 +02:00
|
|
|
*/
|
|
|
|
|
2005-04-18 14:43:18 +02:00
|
|
|
/*
|
|
|
|
* Build ID string calculations
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
#undef XSTR
|
|
|
|
#undef STR
|
|
|
|
#define XSTR(s) STR(s)
|
|
|
|
#define STR(s) #s
|
|
|
|
|
2005-03-08 19:53:11 +01:00
|
|
|
#ifdef BUILD_SERIAL
|
2005-04-18 14:43:18 +02:00
|
|
|
#include "config/.buildserial.h"
|
2005-04-18 14:45:31 +02:00
|
|
|
#define BUILD_SERIAL_STR " #" XSTR(BUILD_SERIAL_NUM)
|
2005-04-18 14:43:18 +02:00
|
|
|
#else
|
|
|
|
#define BUILD_SERIAL_STR ""
|
2005-03-08 19:53:11 +01:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef BUILD_ID
|
2005-04-18 14:45:31 +02:00
|
|
|
#define BUILD_ID_STR " " BUILD_ID
|
2005-04-18 14:43:18 +02:00
|
|
|
#else
|
|
|
|
#define BUILD_ID_STR ""
|
2005-03-08 19:53:11 +01:00
|
|
|
#endif
|
2005-04-18 14:43:18 +02:00
|
|
|
|
|
|
|
#if defined(BUILD_ID) || defined(BUILD_SERIAL)
|
2005-04-18 14:45:31 +02:00
|
|
|
#define BUILD_STRING " [build" BUILD_ID_STR BUILD_SERIAL_STR "]"
|
2005-04-18 14:43:18 +02:00
|
|
|
#else
|
|
|
|
#define BUILD_STRING ""
|
|
|
|
#endif
|
|
|
|
|
2005-04-08 17:01:17 +02:00
|
|
|
/*
|
|
|
|
* Drag in all requested console types
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
2008-10-12 03:30:31 +02:00
|
|
|
#ifdef CONSOLE_PCBIOS
|
2005-04-08 17:01:17 +02:00
|
|
|
REQUIRE_OBJECT ( bios_console );
|
|
|
|
#endif
|
2005-04-18 14:43:18 +02:00
|
|
|
#ifdef CONSOLE_SERIAL
|
2008-06-04 22:00:46 +02:00
|
|
|
REQUIRE_OBJECT ( serial_console );
|
2005-04-08 17:01:17 +02:00
|
|
|
#endif
|
2005-04-18 14:43:18 +02:00
|
|
|
#ifdef CONSOLE_DIRECT_VGA
|
2005-04-08 17:01:17 +02:00
|
|
|
REQUIRE_OBJECT ( video_subr );
|
|
|
|
#endif
|
2005-04-18 14:43:18 +02:00
|
|
|
#ifdef CONSOLE_BTEXT
|
2005-04-08 17:01:17 +02:00
|
|
|
REQUIRE_OBJECT ( btext );
|
|
|
|
#endif
|
2005-04-18 14:43:18 +02:00
|
|
|
#ifdef CONSOLE_PC_KBD
|
2005-04-08 17:01:17 +02:00
|
|
|
REQUIRE_OBJECT ( pc_kbd );
|
|
|
|
#endif
|
2007-04-09 20:01:43 +02:00
|
|
|
#ifdef CONSOLE_SYSLOG
|
|
|
|
REQUIRE_OBJECT ( syslog );
|
|
|
|
#endif
|
2008-10-12 02:55:55 +02:00
|
|
|
#ifdef CONSOLE_EFI
|
|
|
|
REQUIRE_OBJECT ( efi_console );
|
|
|
|
#endif
|
2007-04-09 20:01:43 +02:00
|
|
|
|
2005-05-02 13:13:47 +02:00
|
|
|
/*
|
2008-03-21 01:06:28 +01:00
|
|
|
* Drag in all requested network protocols
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
#ifdef NET_PROTO_IPV4
|
|
|
|
REQUIRE_OBJECT ( ipv4 );
|
|
|
|
#endif
|
|
|
|
|
2009-10-07 01:15:06 +02:00
|
|
|
/*
|
|
|
|
* Drag in all requested PXE support
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
#ifdef PXE_MENU
|
|
|
|
REQUIRE_OBJECT ( pxemenu );
|
|
|
|
#endif
|
|
|
|
#ifdef PXE_STACK
|
|
|
|
REQUIRE_OBJECT ( pxe_call );
|
|
|
|
#endif
|
|
|
|
|
2008-03-21 01:06:28 +01:00
|
|
|
/*
|
|
|
|
* Drag in all requested download protocols
|
2005-05-02 13:13:47 +02:00
|
|
|
*
|
|
|
|
*/
|
|
|
|
#ifdef DOWNLOAD_PROTO_TFTP
|
|
|
|
REQUIRE_OBJECT ( tftp );
|
|
|
|
#endif
|
|
|
|
#ifdef DOWNLOAD_PROTO_HTTP
|
|
|
|
REQUIRE_OBJECT ( http );
|
|
|
|
#endif
|
2007-07-30 04:01:04 +02:00
|
|
|
#ifdef DOWNLOAD_PROTO_HTTPS
|
|
|
|
REQUIRE_OBJECT ( https );
|
|
|
|
#endif
|
2007-06-28 19:49:57 +02:00
|
|
|
#ifdef DOWNLOAD_PROTO_FTP
|
|
|
|
REQUIRE_OBJECT ( ftp );
|
|
|
|
#endif
|
2005-05-02 13:13:47 +02:00
|
|
|
#ifdef DOWNLOAD_PROTO_TFTM
|
|
|
|
REQUIRE_OBJECT ( tftm );
|
|
|
|
#endif
|
|
|
|
#ifdef DOWNLOAD_PROTO_SLAM
|
|
|
|
REQUIRE_OBJECT ( slam );
|
|
|
|
#endif
|
|
|
|
|
2008-10-13 11:05:23 +02:00
|
|
|
/*
|
|
|
|
* Drag in all requested SAN boot protocols
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
#ifdef SANBOOT_PROTO_ISCSI
|
|
|
|
REQUIRE_OBJECT ( iscsiboot );
|
|
|
|
#endif
|
|
|
|
#ifdef SANBOOT_PROTO_AOE
|
|
|
|
REQUIRE_OBJECT ( aoeboot );
|
|
|
|
#endif
|
2009-07-17 23:11:42 +02:00
|
|
|
#ifdef SANBOOT_PROTO_IB_SRP
|
|
|
|
REQUIRE_OBJECT ( ib_srpboot );
|
|
|
|
#endif
|
2008-10-13 11:05:23 +02:00
|
|
|
|
2005-04-30 16:39:21 +02:00
|
|
|
/*
|
2008-03-21 01:06:28 +01:00
|
|
|
* Drag in all requested resolvers
|
2005-04-30 16:39:21 +02:00
|
|
|
*
|
|
|
|
*/
|
|
|
|
#ifdef DNS_RESOLVER
|
2005-04-30 16:49:41 +02:00
|
|
|
REQUIRE_OBJECT ( dns );
|
2005-04-30 16:39:21 +02:00
|
|
|
#endif
|
2005-05-17 15:33:49 +02:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Drag in all requested image formats
|
|
|
|
*
|
|
|
|
*/
|
2007-01-13 18:28:51 +01:00
|
|
|
#ifdef IMAGE_NBI
|
2005-05-17 15:33:49 +02:00
|
|
|
REQUIRE_OBJECT ( nbi );
|
|
|
|
#endif
|
2007-01-13 18:28:51 +01:00
|
|
|
#ifdef IMAGE_ELF
|
2008-06-09 14:11:46 +02:00
|
|
|
REQUIRE_OBJECT ( elfboot );
|
2005-05-17 15:33:49 +02:00
|
|
|
#endif
|
2007-01-13 18:28:51 +01:00
|
|
|
#ifdef IMAGE_FREEBSD
|
2005-05-17 15:33:49 +02:00
|
|
|
REQUIRE_OBJECT ( freebsd );
|
|
|
|
#endif
|
2007-01-13 18:28:51 +01:00
|
|
|
#ifdef IMAGE_MULTIBOOT
|
2005-05-17 15:33:49 +02:00
|
|
|
REQUIRE_OBJECT ( multiboot );
|
|
|
|
#endif
|
2007-01-13 18:28:51 +01:00
|
|
|
#ifdef IMAGE_AOUT
|
2005-05-17 15:33:49 +02:00
|
|
|
REQUIRE_OBJECT ( aout );
|
|
|
|
#endif
|
2007-01-13 18:28:51 +01:00
|
|
|
#ifdef IMAGE_WINCE
|
2005-05-17 15:33:49 +02:00
|
|
|
REQUIRE_OBJECT ( wince );
|
|
|
|
#endif
|
2007-01-13 18:28:51 +01:00
|
|
|
#ifdef IMAGE_PXE
|
|
|
|
REQUIRE_OBJECT ( pxe_image );
|
2005-05-17 15:33:49 +02:00
|
|
|
#endif
|
2007-01-13 18:28:51 +01:00
|
|
|
#ifdef IMAGE_SCRIPT
|
2007-01-12 10:00:48 +01:00
|
|
|
REQUIRE_OBJECT ( script );
|
|
|
|
#endif
|
2007-01-14 05:27:25 +01:00
|
|
|
#ifdef IMAGE_BZIMAGE
|
|
|
|
REQUIRE_OBJECT ( bzimage );
|
|
|
|
#endif
|
2007-01-29 05:21:38 +01:00
|
|
|
#ifdef IMAGE_ELTORITO
|
|
|
|
REQUIRE_OBJECT ( eltorito );
|
|
|
|
#endif
|
2008-08-29 00:52:19 +02:00
|
|
|
#ifdef IMAGE_COMBOOT
|
|
|
|
REQUIRE_OBJECT ( comboot );
|
|
|
|
REQUIRE_OBJECT ( com32 );
|
|
|
|
REQUIRE_OBJECT ( comboot_call );
|
|
|
|
REQUIRE_OBJECT ( com32_call );
|
|
|
|
REQUIRE_OBJECT ( com32_wrapper );
|
|
|
|
REQUIRE_OBJECT ( comboot_resolv );
|
|
|
|
#endif
|
2008-10-12 02:55:55 +02:00
|
|
|
#ifdef IMAGE_EFI
|
|
|
|
REQUIRE_OBJECT ( efi_image );
|
|
|
|
#endif
|
2006-06-11 03:55:43 +02:00
|
|
|
|
2006-12-20 01:39:06 +01:00
|
|
|
/*
|
|
|
|
* Drag in all requested commands
|
|
|
|
*
|
|
|
|
*/
|
2007-01-14 01:06:23 +01:00
|
|
|
#ifdef AUTOBOOT_CMD
|
|
|
|
REQUIRE_OBJECT ( autoboot_cmd );
|
2006-12-20 08:04:08 +01:00
|
|
|
#endif
|
2006-12-20 01:39:06 +01:00
|
|
|
#ifdef NVO_CMD
|
|
|
|
REQUIRE_OBJECT ( nvo_cmd );
|
|
|
|
#endif
|
2006-12-20 06:37:33 +01:00
|
|
|
#ifdef CONFIG_CMD
|
|
|
|
REQUIRE_OBJECT ( config_cmd );
|
|
|
|
#endif
|
2007-01-10 02:55:07 +01:00
|
|
|
#ifdef IFMGMT_CMD
|
|
|
|
REQUIRE_OBJECT ( ifmgmt_cmd );
|
|
|
|
#endif
|
2009-08-08 05:17:50 +02:00
|
|
|
/* IWMGMT_CMD is brought in by net80211.c if requested */
|
2007-01-10 21:51:14 +01:00
|
|
|
#ifdef ROUTE_CMD
|
|
|
|
REQUIRE_OBJECT ( route_cmd );
|
|
|
|
#endif
|
2007-01-12 07:05:27 +01:00
|
|
|
#ifdef IMAGE_CMD
|
|
|
|
REQUIRE_OBJECT ( image_cmd );
|
|
|
|
#endif
|
2007-01-12 10:53:28 +01:00
|
|
|
#ifdef DHCP_CMD
|
|
|
|
REQUIRE_OBJECT ( dhcp_cmd );
|
|
|
|
#endif
|
2008-03-04 18:59:26 +01:00
|
|
|
#ifdef SANBOOT_CMD
|
|
|
|
REQUIRE_OBJECT ( sanboot_cmd );
|
|
|
|
#endif
|
2009-02-17 13:01:47 +01:00
|
|
|
#ifdef LOGIN_CMD
|
|
|
|
REQUIRE_OBJECT ( login_cmd );
|
|
|
|
#endif
|
2009-03-04 06:17:06 +01:00
|
|
|
#ifdef TIME_CMD
|
|
|
|
REQUIRE_OBJECT ( time_cmd );
|
|
|
|
#endif
|
2009-03-26 23:04:31 +01:00
|
|
|
#ifdef DIGEST_CMD
|
|
|
|
REQUIRE_OBJECT ( digest_cmd );
|
|
|
|
#endif
|
2009-06-28 21:50:23 +02:00
|
|
|
#ifdef PXE_CMD
|
|
|
|
REQUIRE_OBJECT ( pxe_cmd );
|
|
|
|
#endif
|
2006-12-20 01:39:06 +01:00
|
|
|
|
2006-06-11 03:55:43 +02:00
|
|
|
/*
|
|
|
|
* Drag in miscellaneous objects
|
|
|
|
*
|
|
|
|
*/
|
2007-06-30 23:43:31 +02:00
|
|
|
#ifdef NULL_TRAP
|
2006-06-11 03:55:43 +02:00
|
|
|
REQUIRE_OBJECT ( nulltrap );
|
|
|
|
#endif
|
2008-06-11 13:12:46 +02:00
|
|
|
#ifdef GDBSERIAL
|
2008-06-04 22:09:59 +02:00
|
|
|
REQUIRE_OBJECT ( gdbidt );
|
2008-06-11 13:12:46 +02:00
|
|
|
REQUIRE_OBJECT ( gdbserial );
|
|
|
|
REQUIRE_OBJECT ( gdbstub_cmd );
|
|
|
|
#endif
|
|
|
|
#ifdef GDBUDP
|
|
|
|
REQUIRE_OBJECT ( gdbidt );
|
|
|
|
REQUIRE_OBJECT ( gdbudp );
|
|
|
|
REQUIRE_OBJECT ( gdbstub_cmd );
|
2008-06-04 22:09:59 +02:00
|
|
|
#endif
|
2008-07-17 18:45:17 +02:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Drag in objects that are always required, but not dragged in via
|
|
|
|
* symbol dependencies.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
REQUIRE_OBJECT ( device );
|
2009-02-16 01:28:30 +01:00
|
|
|
REQUIRE_OBJECT ( embedded );
|