Move RELOCATE into config.h
[people/lynusvaz/gpxe.git] / src / Config
1 #
2 # Config for Etherboot/32
3 #
4 # Do not delete the tag OptionDescription and /OptionDescription
5 # It is used to automatically generate the documentation.
6 #
7 # @OptionDescription@
8 #       User interaction options:
9 #
10 #       -DASK_BOOT=n
11 #                       Ask "Boot from (N)etwork ... or (Q)uit? " 
12 #                       at startup, timeout after n seconds (0 = no timeout).
13 #                       If unset or negative, don't ask and boot immediately
14 #                       using the default.
15 #       -DBOOT_FIRST
16 #       -DBOOT_SECOND
17 #       -DBOOT_THIRD
18 #                       On timeout or Return key from previous
19 #                       question, selects the order to try to boot from
20 #                       various devices.
21 #                       (alternatives: BOOT_NIC, BOOT_DISK,
22 #                        BOOT_FLOPPY, BOOT_NOTHING)
23 #                       See etherboot.h for prompt and answer strings.
24 #                       BOOT_DISK and BOOT_FLOPPY work only where a driver
25 #                       exists, e.g. in LinuxBIOS.
26 #                       They have no effect on PCBIOS.
27 #       -DBOOT_INDEX    The device to boot from 0 == any device.
28 #                       1 == The first nic found.
29 #                       2 == The second nic found
30 #                       ...
31 #                       BOOT_INDEX only applies to the BOOT_FIRST.  BOOT_SECOND 
32 #                       and BOOT_THIRD search through all of the boot devices.
33 #       -DBAR_PROGRESS
34 #                       Use rotating bar instead of sequential dots
35 #                       to indicate an IP packet transmitted.
36 #
37 #       Boot order options:
38 #
39 #       -DBOOT_CLASS_FIRST
40 #       -DBOOT_CLASS_SECOND
41 #       -DBOOT_CLASS_THIRD
42 #                       Select the priority of the boot classes
43 #                       Valid values are:
44 #                               BOOT_NIC
45 #                               BOOT_DISK
46 #                               BOOT_FLOPPY
47 #       BOOT_DISK and BOOT_FLOPPY work only where a driver exists,
48 #       e.g. in LinuxBIOS.  They have no effect on PCBIOS.
49 #
50 #       Boot autoconfiguration protocol options:
51 #
52 #       -DALTERNATE_DHCP_PORTS_1067_1068
53 #                       Use ports 1067 and 1068 for DHCP instead of 67 and 68.
54 #                       As these ports are non-standard, you need to configure
55 #                       your DHCP server to use them. This option gets around
56 #                       existing DHCP servers which cannot be touched, for
57 #                       one reason or another, at the cost of non-standard
58 #                       boot images.
59 #       -DNO_DHCP_SUPPORT
60 #                       Use BOOTP instead of DHCP.
61 #       -DRARP_NOT_BOOTP
62 #                       Use RARP instead of BOOTP/DHCP.
63 #       -DREQUIRE_VCI_ETHERBOOT
64 #                       Require an encapsulated Vendor Class Identifier
65 #                       of "Etherboot" in the DHCP reply
66 #                       Requires DHCP support.
67 #       -DDHCP_CLIENT_ID=\"Identifier\"
68 #       -DDHCP_CLIENT_ID_LEN=<Client ID length in octets>
69 #       -DDHCP_CLIENT_ID_TYPE=<Client ID type>
70 #                       Specify a RFC2132 Client Identifier option, length and type.
71 #                       Requires DHCP support.
72 #       -DDHCP_USER_CLASS=\"UserClass\"
73 #       -DDHCP_USER_CLASS_LEN=<User Class length in octets>
74 #                       Specify a RFC3004 User Class option and length. Use this
75 #                       option to set a UC (or multiple UCs) rather than munge the
76 #                       client Vendor Class ID.
77 #                       Requires DHCP support.
78 #       -DALLOW_ONLY_ENCAPSULATED
79 #                       Ignore Etherboot-specific options that are not within
80 #                       the Etherboot encapsulated options field.  This option
81 #                       should be enabled unless you have a legacy DHCP server
82 #                       configuration from the bad old days before the use of
83 #                       encapsulated Etherboot options.
84 #       -DDEFAULT_BOOTFILE=\"default_bootfile_name\"
85 #                       Define a default bootfile for the case where your DHCP
86 #                       server does not provide the information.  Example:
87 #                         -DDEFAULT_BOOTFILE="tftp:///tftpboot/kernel"
88 #                       If you do not specify this option, then DHCP offers that
89 #                       do not specify bootfiles will be ignored.
90 #
91 #       NIC tuning parameters:
92 #
93 #       -DALLMULTI
94 #                       Turns on multicast reception in the NICs.
95 #
96 #       Boot tuning parameters:
97 #
98 #       -DCONGESTED
99 #                       Turns on packet retransmission.  Use it on a
100 #                       congested network, where the normal operation
101 #                       can't boot the image.
102 #       -DBACKOFF_LIMIT
103 #                       Sets the maximum RFC951 backoff exponent to n.
104 #                       Do not set this unreasonably low, because on networks
105 #                       with many machines they can saturate the link
106 #                       (the delay corresponding to the exponent is a random
107 #                       time in the range 0..3.5*2^n seconds).  Use 5 for a
108 #                       VERY small network (max. 2 minutes delay), 7 for a
109 #                       medium sized network (max. 7.5 minutes delay) or 10
110 #                       for a really huge network with many clients, frequent
111 #                       congestions (max. 1  hour delay).  On average the
112 #                       delay time will be half the maximum value.  If in
113 #                       doubt about the consequences, use a larger value.
114 #                       Also keep in mind that the number of retransmissions
115 #                       is not changed by this setting, so the default of 20
116 #                       may no longer be appropriate.  You might need to set
117 #                       MAX_ARP_RETRIES, MAX_BOOTP_RETRIES, MAX_TFTP_RETRIES
118 #                       and MAX_RPC_RETRIES to a larger value.
119 #       -DTIMEOUT=n
120 #                       Use with care!! See above.
121 #                       Sets the base of RFC2131 sleep interval to n.
122 #                       This can be used with -DBACKOFF_LIMIT=0 to get a small
123 #                       and constant (predictable) retry interval for embedded
124 #                       devices. This is to achieve short boot delays if both
125 #                       the DHCP Server and the embedded device will be powered
126 #                       on the same time. Otherwise if the DHCP server is ready
127 #                       the client could sleep the next exponentially timeout,
128 #                       e.g. 70 seconds or more. This is not what you want.
129 #                       n should be a multiple of TICKS_PER_SEC (18).
130 #
131 #       Boot device options:
132 #
133 #       -DTRY_FLOPPY_FIRST
134 #                       If > 0, tries that many times to read the boot
135 #                       sector from a floppy drive before booting from
136 #                       ROM. If successful, does a local boot.
137 #                       It assumes the floppy is bootable.
138 #       -DEXIT_IF_NO_OFFER
139 #                       If no IP offer is obtained, exit and
140 #                       let the BIOS continue.
141 #                       The accessibility of the TFTP server has no effect,
142 #                       so configure your DHCP/BOOTP server properly.
143 #                       You should probably reduce MAX_BOOTP_RETRIES
144 #                       to a small number like 3.
145 #
146 #       Boot image options:
147 #
148 #       -DTAGGED_IMAGE
149 #                       Add tagged image kernel boot support (recommended).
150 #       -DAOUT_IMAGE
151 #                       Add a.out kernel boot support (generic).
152 #       -DELF_IMAGE
153 #                       Add generic ELF kernel boot support (recommended).
154 #       -DEL64F_IMAGE
155 #                       Add generic ELF64 kernel boot support (useful for > 4GB disks).
156 #       -DWINCE_IMAGE
157 #                       Add the ability to boot WINCE.... now only sis630 OK!
158 #       -DPXE_IMAGE
159 #                       Add the ability to boot PXE NBPs.  Requires
160 #                       PXE_EXPORT.  Currently not supported on
161 #                       anything other than i386
162 #       -DFREEBSD_PXEEMU
163 #                       Add the ability to boot PXE images... only FreeBSD supported
164 #       -DIMAGE_MULTIBOOT
165 #                       Add Multiboot image support (currently only
166 #                       for ELF images).
167 #                       Without this, generic ELF support is selected.
168 #       -DIMAGE_FREEBSD
169 #                       Add FreeBSD image loading support (requires at least
170 #                       -DAOUT_IMAGE and/or -DELF_IMAGE).
171 #       -DFREEBSD_KERNEL_ENV
172 #                       Pass in FreeBSD kernel environment
173 #       -DAOUT_LYNX_KDI
174 #                       Add Lynx a.out KDI support
175 #       -DMULTICAST_LEVEL1
176 #                       Support for sending multicast packets
177 #       -DMULTICAST_LEVEL2
178 #                       Support for receiving multicast packets
179 #       -DDNS_RESOLVER
180 #                       Support for resolving hostnames in bootfile name (experimental)
181 #       -DDOWNLOAD_PROTO_TFTP
182 #                       If defined, includes TFTP support (recommended).
183 #       -DDOWNLOAD_PROTO_NFS
184 #                       If defined, includes NFS support.
185 #       -DDEFAULT_PROTO_NFS
186 #                       If defined, makes NFS the default protocol instead
187 #                       of TFTP. Requires DOWNLOAD_PROTO_NFS.
188 #       -DDOWNLOAD_PROTO_SLAM
189 #                       If defined, includes Scalable Local Area Multicast
190 #                       support.
191 #       -DDOWNLOAD_PROTO_TFTM
192 #                       If defined, includes TFTP Multicast mode support.
193 #       -DDOWNLOAD_PROTO_HTTP
194 #                       If defined, includes HTTP support.
195 #
196 #       Interface export options:
197 #
198 #       -DPXE_EXPORT
199 #                       Export a PXE API interface.  This is work in
200 #                       progress.  Note that you won't be able to load
201 #                       PXE NBPs unless you also use -DPXE_IMAGE.
202 #       -DPXE_STRICT
203 #                       Strict(er) compliance with the PXE
204 #                       specification as published by Intel.  This may
205 #                       or may not be a good thing depending on your
206 #                       view of the spec...
207 #       -DPXE_DHCP_STRICT
208 #                       Strict compliance of the DHCP request packets
209 #                       with the PXE specification as published by
210 #                       Intel.  This may or may not be a good thing
211 #                       depending on your view of whether requesting
212 #                       vendor options which don't actually exist is
213 #                       pointless or not. You probably want this
214 #                       option if you intend to use Windows RIS or
215 #                       similar.
216 #
217 #       Obscure options you probably don't need to touch:
218 #
219 #       -DPOWERSAVE
220 #                       Halt the processor when waiting for keyboard input
221 #                       which saves power while waiting for user interaction.
222 #                       Good for compute clusters and VMware emulation.
223 #                       But may not work for all CPUs.
224 #       -DBUILD_SERIAL
225 #                       Include an auto-incrementing build number in
226 #                       the Etherboot welcome message.  Useful when
227 #                       developing, to be sure that the file you
228 #                       compiled is the one you're currently testing.
229 #       -DBUILD_ID
230 #                       Include a build ID string in the Etherboot
231 #                       welcome message.  Useful when developing, if
232 #                       you have multiple builds with different
233 #                       configurations and want to check you're
234 #                       running the one you think you are.  Requires
235 #                       -DBUILD_SERIAL.
236 #
237 # @/OptionDescription@
238
239 # These default settings compile Etherboot with a small number of options.
240 # You may wish to enable more of the features if the size of your ROM allows.
241
242
243 # For prompting and default on timeout
244 CFLAGS+=        -DASK_BOOT=3 -DBOOT_FIRST=BOOT_NIC
245 # If you would like to attempt to boot from other devices as well as the network.
246 # CFLAGS+=      -DBOOT_SECOND=BOOT_FLOPPY
247 # CFLAGS+=      -DBOOT_THIRD=BOOT_DISK
248 # CFLAGS+=      -DBOOT_INDEX=0
249
250 # If you prefer the old style rotating bar progress display
251 # CFLAGS+=      -DBAR_PROGRESS
252
253 # Show size indicator
254 # CFLAGS+=      -DSIZEINDICATOR
255
256 # Enabling this creates non-standard images which use ports 1067 and 1068
257 # for DHCP/BOOTP
258 # CFLAGS+=      -DALTERNATE_DHCP_PORTS_1067_1068
259
260 # Enabling this makes the boot ROM require a Vendor Class Identifier
261 # of "Etherboot" in the Vendor Encapsulated Options
262 # This can be used to reject replies from servers other than the one
263 # we want to give out addresses to us, but it will prevent Etherboot
264 # from getting an IP lease until you have configured DHCPD correctly
265 # CFLAGS+=      -DREQUIRE_VCI_ETHERBOOT
266
267 # EXPERIMENTAL! Set DHCP_CLIENT_ID to create a Client Identifier (DHCP
268 # option 61, see RFC2132 section 9.14) when Etherboot sends the DHCP
269 # DISCOVER and REQUEST packets.  This ID must UNIQUELY identify each
270 # client on your local network.  Set DHCP_CLIENT_ID_TYPE to the
271 # appropriate hardware type as described in RFC2132 / RFC1700; this
272 # almost certainly means using '1' if the Client ID is an Ethernet MAC
273 # address and '0' otherwise. Set DHCP_CLIENT_ID_LEN to the length of
274 # the Client ID in octets (this is not a null terminated C string, do
275 # NOT add 1 for a terminator and do NOT add an extra 1 for the
276 # hardware type octet).  Note that to identify your client using the
277 # normal default MAC address of your NIC, you do NOT need to set this
278 # option, as the MAC address is automatically used in the
279 # hwtype/chaddr field; note also that this field only sets the DHCP
280 # option: it does NOT change the MAC address used by the client.
281
282 # CFLAGS+=      -DDHCP_CLIENT_ID="'C','L','I','E','N','T','0','0','1'" \
283 #               -DDHCP_CLIENT_ID_LEN=9 -DDHCP_CLIENT_ID_TYPE=0
284
285 # CFLAGS+=      -DDHCP_CLIENT_ID="0xDE,0xAD,0xBE,0xEF,0xDE,0xAD" \
286 #               -DDHCP_CLIENT_ID_LEN=6 -DDHCP_CLIENT_ID_TYPE=1
287
288 # EXPERIMENTAL! Set DHCP_USER_CLASS to create a User Class option (see
289 # RFC3004) when Etherboot sends the DHCP DISCOVER and REQUEST packets.
290 # This can be used for classification of clients, typically so that a
291 # DHCP server can send an appropriately tailored reply.  Normally, a
292 # string identifies a class of to which this client instance belongs
293 # which is useful in your network, such as a department ('FINANCE' or
294 # 'MARKETING') or hardware type ('THINCLIENT' or 'KIOSK').  Set
295 # DHCP_USER_CLASS_LEN to the length of DHCP_USER_CLASS in octets.
296 # This is NOT a null terminated C string, do NOT add 1 for a
297 # terminator.  RFC3004 advises how to lay out multiple User Class
298 # options by using an octet for the length of each string, as in this
299 # example.  It is, of course, up to the server to parse this.
300
301 # CFLAGS+=      -DDHCP_USER_CLASS="'T','E','S','T','C','L','A','S','S'" \
302 #               -DDHCP_USER_CLASS_LEN=9
303
304 # CFLAGS+=      -DDHCP_USER_CLASS="5,'A','L','P','H','A',4,'B','E','T','A'" \
305 #               -DDHCP_USER_CLASS_LEN=11
306
307 # Set to enable FILO support
308 # for FILO support it will make main call pci_init
309 # INCLUDE_FILO=y
310 ifdef   INCLUDE_FILO
311 CFLAGS+=        -DCONFIG_FILO
312 endif
313
314 # Enabling this causes Etherboot to ignore Etherboot-specific options
315 # that are not within an Etherboot encapsulated options field.
316 # This option should be enabled unless you have a legacy DHCP server
317 # configuration from the bad old days before the use of
318 # encapsulated Etherboot options.
319 CFLAGS+=        -DALLOW_ONLY_ENCAPSULATED
320
321 # Disable DHCP support
322 # CFLAGS+=      -DNO_DHCP_SUPPORT
323
324 # Specify a default bootfile to be used if the DHCP server does not
325 # provide the information.  If you do not specify this option, then
326 # DHCP offers that do not contain bootfiles will be ignored.
327 # CFLAGS+=      -DDEFAULT_BOOTFILE=\"tftp:///tftpboot/kernel\"
328
329 # Limit the delay on packet loss/congestion to a more bearable value. See
330 # description above.  If unset, do not limit the delay between resend.
331 CFLAGS+=        -DBACKOFF_LIMIT=7 -DCONGESTED
332
333 # More optional features
334 # CFLAGS+=      -DTRY_FLOPPY_FIRST=4
335 # CFLAGS+=      -DEXIT_IF_NO_OFFER
336
337 # Enable tagged image, generic ELF, Multiboot ELF
338 # or FreeBSD ELF/a.out boot image support
339 CFLAGS+=        -DTAGGED_IMAGE -DELF_IMAGE
340 # CFLAGS+=      -DAOUT_IMAGE -DIMAGE_MULTIBOOT -DIMAGE_FREEBSD
341 # CFLAGS+=      -DAOUT_IMAGE -DAOUT_LYNX_KDI
342 # CFLAGS+=      -DCOFF_IMAGE 
343 # CFLAGS+=      -DRAW_IMAGE
344
345 # Download files via TFTP
346 CFLAGS+=        -DDOWNLOAD_PROTO_TFTP
347 # Change download protocol to NFS, default is TFTP
348 # CFLAGS+=      -DDOWNLOAD_PROTO_NFS
349 # Change download protocol to HTTP, default is TFTP
350 # CFLAGS+=      -DDOWNLOAD_PROTO_HTTP
351 # Change default protocol to NFS
352 # CFLAGS+=      -DDEFAULT_PROTO_NFS
353 # Support to resolve hostnames in boot filename
354 # CFLAGS+=      -DDNS_RESOLVER
355
356 # Multicast Support
357 # CFLAGS+=      -DALLMULTI -DMULTICAST_LEVEL1 -DMULTICAST_LEVEL2 -DDOWNLOAD_PROTO_TFTM
358
359 # Etherboot as a PXE network protocol ROM
360 CFLAGS+=        -DPXE_IMAGE -DPXE_EXPORT
361 # Etherboot stricter as a PXE network protocol ROM
362 # CFLAGS+=      -DPXE_DHCP_STRICT
363
364 # Support for PXE emulation. Works only with FreeBSD to load the kernel
365 # via pxeboot, use only with DOWNLOAD_PROTO_NFS
366 # CFLAGS+=      -DFREEBSD_PXEEMU
367
368 # Include an auto-incrementing build serial number and optional build
369 # ID string
370 # CFLAGS+=      -DBUILD_SERIAL
371 # CFLAGS+=      -DBUILD_SERIAL -DBUILD_ID=\"testing\"
372
373
374
375
376 # Garbage from Makefile.main temporarily placed here until a home can
377 # be found for it.
378
379 # NS8390 options:
380 #       -DINCLUDE_NE    - Include NE1000/NE2000 support
381 #       -DNE_SCAN=list  - Probe for NE base address using list of
382 #                         comma separated hex addresses
383 #       -DINCLUDE_3C503 - Include 3c503 support
384 #         -DT503_SHMEM  - Use 3c503 shared memory mode (off by default)
385 #       -DINCLUDE_WD    - Include Western Digital/SMC support
386 #       -DWD_DEFAULT_MEM- Default memory location for WD/SMC cards
387 #       -DWD_790_PIO    - Read/write to WD/SMC 790 cards in PIO mode (default
388 #                         is to use shared memory) Try this if you get "Bogus
389 #                         packet, ignoring" messages, common on ISA/PCI hybrid
390 #                         systems.
391 #       -DCOMPEX_RL2000_FIX
392 #
393 #       If you have a Compex RL2000 PCI 32-bit (11F6:1401),
394 #       and the bootrom hangs in "Probing...[NE*000/PCI]",
395 #       try enabling this fix... it worked for me :).
396 #       In the first packet write somehow it somehow doesn't
397 #       get back the expected data so it is stuck in a loop.
398 #       I didn't bother to investigate what or why because it works
399 #       when I interrupt the loop if it takes more then COMPEX_RL2000_TRIES.
400 #       The code will notify if it does a abort.
401 #       SomniOne - somnione@gmx.net
402 #
403 # 3C90X options:
404 #       Warning Warning Warning
405 #       If you use any of the XCVR options below, please do not complain about
406 #       the behaviour with Linux drivers to the kernel developers. You are
407 #       on your own if you do this. Please read 3c90x.txt to understand
408 #       what they do. If you don't understand them, ask for help on the
409 #       Etherboot mailing list. And please document what you did to the NIC
410 #       on the NIC so that people after you won't get nasty surprises.
411 #
412 #       -DCFG_3C90X_PRESERVE_XCVR - Reset the transceiver type to the value it
413 #                         had initially just before the loaded code is started.
414 #       -DCFG_3C90X_XCVR - Hardcode the tranceiver type Etherboot uses.
415 #       -DCFG_3C90X_BOOTROM_FIX - If you have a 3c905B with buggy ROM
416 #                         interface, setting this option might "fix" it.  Use
417 #                         with caution and read the docs in 3c90x.txt!
418 #
419 #       See the documentation file 3c90x.txt for more details.
420 #
421 # CS89X0 (optional) options:
422 #       -DISA_PROBE_ADDRS=list  
423 #                         Probe for CS89x0 base address using list of
424 #                         comma separated hex addresses; increasing the
425 #                         address by one (0x300 -> 0x301) will force a
426 #                         more aggressive probing algorithm. This might
427 #                         be neccessary after a soft-reset of the NIC.
428
429
430 CFLAGS_3c503    = -DINCLUDE_3C503 # -DT503_SHMEM
431 CFLAGS_ne       = -DINCLUDE_NE -DNE_SCAN=0x300,0x280,0x320,0x340,0x380
432 CFLAGS_ns8390   = -DINCLUDE_NS8390      # NE2000/PCI!
433 CFLAGS_wd       = -DINCLUDE_WD -DWD_DEFAULT_MEM=0xCC000