Split bootsector execution code out into bootsector.c.
[gpxe.git] / src / core / config.c
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 #include "etherboot.h"
9 #include "dev.h"
10 #include "console.h"
11
12 #include "config/general.h"
13
14 /*
15  * Build ID string calculations
16  *
17  */
18 #undef XSTR
19 #undef STR
20 #define XSTR(s) STR(s)
21 #define STR(s) #s
22
23 #ifdef BUILD_SERIAL
24 #include "config/.buildserial.h"
25 #define BUILD_SERIAL_STR " #" XSTR(BUILD_SERIAL_NUM)
26 #else
27 #define BUILD_SERIAL_STR ""
28 #endif
29
30 #ifdef BUILD_ID
31 #define BUILD_ID_STR " " BUILD_ID
32 #else
33 #define BUILD_ID_STR ""
34 #endif
35
36 #if defined(BUILD_ID) || defined(BUILD_SERIAL)
37 #define BUILD_STRING " [build" BUILD_ID_STR BUILD_SERIAL_STR "]"
38 #else
39 #define BUILD_STRING ""
40 #endif
41
42 /*
43  * Drag in all requested console types
44  *
45  * CONSOLE_DUAL sets both CONSOLE_FIRMWARE and CONSOLE_SERIAL for
46  * legacy compatibility.
47  *
48  */
49
50 #ifdef  CONSOLE_DUAL
51 #undef  CONSOLE_FIRMWARE
52 #define CONSOLE_FIRMWARE        1
53 #undef  CONSOLE_SERIAL
54 #define CONSOLE_SERIAL          1
55 #endif
56
57 #ifdef CONSOLE_FIRMWARE
58 REQUIRE_OBJECT ( bios_console );
59 #endif
60
61 #ifdef CONSOLE_SERIAL
62 REQUIRE_OBJECT ( serial );
63 #endif
64
65 #ifdef CONSOLE_DIRECT_VGA
66 REQUIRE_OBJECT ( video_subr );
67 #endif
68
69 #ifdef CONSOLE_BTEXT
70 REQUIRE_OBJECT ( btext );
71 #endif
72
73 #ifdef CONSOLE_PC_KBD
74 REQUIRE_OBJECT ( pc_kbd );
75 #endif
76
77 /*
78  * Drag in all requested protocols
79  *
80  */
81 #ifdef DOWNLOAD_PROTO_TFTP
82 REQUIRE_OBJECT ( tftp );
83 #endif
84 #ifdef DOWNLOAD_PROTO_NFS
85 REQUIRE_OBJECT ( nfs );
86 #endif
87 #ifdef DOWNLOAD_PROTO_HTTP
88 REQUIRE_OBJECT ( http );
89 #endif
90 #ifdef DOWNLOAD_PROTO_TFTM
91 REQUIRE_OBJECT ( tftm );
92 #endif
93 #ifdef DOWNLOAD_PROTO_SLAM
94 REQUIRE_OBJECT ( slam );
95 #endif
96
97 /*
98  * Drag in any required resolvers
99  *
100  */
101 #ifdef DNS_RESOLVER
102 REQUIRE_OBJECT ( dns );
103 #endif
104
105 #ifdef NMB_RESOLVER
106 REQUIRE_OBJECT ( nmb );
107 #endif
108
109 /*
110  * Drag in all requested image formats
111  *
112  */
113 #ifdef IMAGE_NBI
114 REQUIRE_OBJECT ( nbi );
115 #endif
116 #ifdef IMAGE_ELF64
117 REQUIRE_OBJECT ( elf64 );
118 #endif
119 #ifdef IMAGE_ELF
120 REQUIRE_OBJECT ( elf );
121 #endif
122 #ifdef IMAGE_ELF
123 REQUIRE_OBJECT ( coff );
124 #endif
125 #ifdef IMAGE_FREEBSD
126 REQUIRE_OBJECT ( freebsd );
127 #endif
128 #ifdef IMAGE_MULTIBOOT
129 REQUIRE_OBJECT ( multiboot );
130 #endif
131 #ifdef IMAGE_AOUT
132 REQUIRE_OBJECT ( aout );
133 #endif
134 #ifdef IMAGE_WINCE
135 REQUIRE_OBJECT ( wince );
136 #endif
137 #ifdef IMAGE_PXE
138 REQUIRE_OBJECT ( pxe_image );
139 #endif
140 #ifdef IMAGE_SCRIPT
141 REQUIRE_OBJECT ( script );
142 #endif
143 #ifdef IMAGE_BZIMAGE
144 REQUIRE_OBJECT ( bzimage );
145 #endif
146 #ifdef IMAGE_ELTORITO
147 REQUIRE_OBJECT ( eltorito );
148 #endif
149
150 /*
151  * Drag in all requested commands
152  *
153  */
154 #ifdef AUTOBOOT_CMD
155 REQUIRE_OBJECT ( autoboot_cmd );
156 #endif
157 #ifdef NVO_CMD
158 REQUIRE_OBJECT ( nvo_cmd );
159 #endif
160 #ifdef CONFIG_CMD
161 REQUIRE_OBJECT ( config_cmd );
162 #endif
163 #ifdef IFMGMT_CMD
164 REQUIRE_OBJECT ( ifmgmt_cmd );
165 #endif
166 #ifdef ROUTE_CMD
167 REQUIRE_OBJECT ( route_cmd );
168 #endif
169 #ifdef IMAGE_CMD
170 REQUIRE_OBJECT ( image_cmd );
171 #endif
172 #ifdef DHCP_CMD
173 REQUIRE_OBJECT ( dhcp_cmd );
174 #endif
175
176 /*
177  * Drag in miscellaneous objects
178  *
179  */
180 #ifdef  NULL_TRAP
181 REQUIRE_OBJECT ( nulltrap );
182 #endif