summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael Brown2008-10-07 23:46:43 +0200
committerMichael Brown2008-10-07 23:46:43 +0200
commitf0b942ef42d542a3411545831ce81d5ba54b2de5 (patch)
tree78e79d85289c8331d7a7136cc1bf48b1c6ca76ed /src
parent[libc] Define wchar_t in a gcc-compatible way (diff)
downloadipxe-f0b942ef42d542a3411545831ce81d5ba54b2de5.tar.gz
ipxe-f0b942ef42d542a3411545831ce81d5ba54b2de5.tar.xz
ipxe-f0b942ef42d542a3411545831ce81d5ba54b2de5.zip
[makefile] Kill off arch/$(ARCH)/Config
The arch/i386/Config file has long been marked as deprecated. Move all the pertinent bits to arch/i386/Makefile instead and remove arch/i386/Config.
Diffstat (limited to 'src')
-rw-r--r--src/Makefile13
-rw-r--r--src/arch/i386/Config148
-rw-r--r--src/arch/i386/Makefile61
3 files changed, 56 insertions, 166 deletions
diff --git a/src/Makefile b/src/Makefile
index 6c42da6a..354ca00c 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -73,19 +73,6 @@ noargs : blib $(BIN)/NIC $(BIN)/gpxe.dsk $(BIN)/gpxe.iso $(BIN)/gpxe.usb $(BIN)/
#
ARCH := $(shell uname -m | sed -e 's,i[3456789]86,i386,')
-# handle x86_64 like i386, but set -m32 option for 32bit code only
-ifeq ($(ARCH),x86_64)
-ARCH := i386
-CFLAGS += -m32
-ASFLAGS += --32
-LDFLAGS += -m elf_i386
-endif
-
-# Drag in architecture-specific Config
-#
-MAKEDEPS += arch/$(ARCH)/Config
-include arch/$(ARCH)/Config
-
# Common flags
#
CFLAGS += -I include -I arch/$(ARCH)/include -I . -DARCH=$(ARCH)
diff --git a/src/arch/i386/Config b/src/arch/i386/Config
deleted file mode 100644
index 1c086ecc..00000000
--- a/src/arch/i386/Config
+++ /dev/null
@@ -1,148 +0,0 @@
-# -*- makefile -*-
-
-##############################################################################
-##############################################################################
-#
-# IMPORTANT!
-#
-# The use of this file to set options that affect only single object
-# files is deprecated, because changing anything in this file results
-# in a complete rebuild, which is slow. All options are gradually
-# being migrated to config.h, which does not suffer from this problem.
-#
-# Only options that affect the entire build (e.g. overriding the $(CC)
-# Makefile variable) should be placed in here.
-#
-##############################################################################
-##############################################################################
-
-
-# Config for i386 Etherboot
-#
-# Do not delete the tag OptionDescription and /OptionDescription
-# It is used to automatically generate the documentation.
-#
-# @OptionDescrition@
-#
-# BIOS interface options:
-#
-# -DPCBIOS
-# Compile in support for the normal pcbios
-# -DLINUXBIOS
-# Compile in support for LinuxBIOS
-# -DBBS_BUT_NOT_PNP_COMPLIANT
-# Some BIOSes claim to be PNP but they don't conform
-# to the BBS spec which specifies that ES:DI must
-# point to the string $PnP on entry. This option
-# works around those. This option must be added to
-# LCONFIG.
-# -DNO_DELAYED_INT
-# Take control as soon as BIOS detects the ROM.
-# Normally hooks onto INT18H or INT19H. Use only if you
-# have a very non-conformant BIOS as it bypasses
-# BIOS initialisation of devices. This only works for
-# legacy ROMs, i.e. PCI_PNP_HEADER not defined.
-# This option was formerly called NOINT19H.
-# -DBOOT_INT18H
-# Etherboot normally hooks onto INT19H for legacy ROMs.
-# You can choose to hook onto INT18H (BASIC interpreter
-# entry point) instead. This entry point is used when
-# all boot devices have been exhausted. This option must
-# be added to LCONFIG.
-# -DCONFIG_PCI_DIRECT
-# Define this for PCI BIOSes that do not implement
-# BIOS32 or not correctly. Normally not needed.
-# Only works for BIOSes of a certain era.
-# -DCONFIG_TSC_CURRTICKS
-# Uses the processor time stamp counter instead of reading
-# the BIOS time counter. This allows Etherboot to work
-# even without a BIOS. This only works on late model
-# 486s and above.
-# -DCONFIG_NO_TIMER2
-# Some systems do not have timer2 implemented.
-# If you have a RTC this will allow you to roughly calibrate
-# it using outb instructions.
-#
-# Extended cpu options
-
-# -DCONFIG_X86_64
-# Compile in support for booting x86_64 64bit binaries.
-#
-# PXE loader options:
-#
-# -DPXELOADER_KEEP_ALL
-# Prevent PXE loader (prefix) from unloading the
-# PXE stack. You will want to use this if, for
-# example, you are booting via PXE-on-floppy.
-# You may want to use it under certain
-# circumstances when using the Etherboot UNDI
-# driver; these are complex and best practice is
-# not yet established.
-#
-# Obscure options you probably don't need to touch:
-#
-# -DIGNORE_E820_MAP
-# Ignore the memory map returned by the E820 BIOS
-# call. May be necessary on some buggy BIOSes.
-# -DT503_AUI
-# Use AUI by default on 3c503 cards.
-# -DFLATTEN_REAL_MODE
-# Use 4GB segment limits when calling out to or
-# returning to real-mode code. This is necessary to
-# work around some buggy code (e.g. OpenBSD's pxeboot)
-# that uses flat real-mode without being sufficiently
-# paranoid about the volatility of its segment limits.
-
-#
-# @/OptionDescription@
-
-# BIOS select don't change unless you know what you are doing
-# CFLAGS+= -DPCBIOS
-
-# Compile in k8/hammer support
-# CFLAGS+= -DCONFIG_X86_64
-
-# Options to make a version of Etherboot that will work under linuxBIOS.
-# CFLAGS+= -DLINUXBIOS -DCONFIG_TSC_CURRTICKS -DCONSOLE_SERIAL -DCOMCONSOLE=0x3f8 -DCOMPRESERVE -DCONFIG_PCI_DIRECT -DELF_IMAGE
-
-# These options affect the loader that is prepended to the Etherboot image
-# LCONFIG+= -DBBS_BUT_NOT_PNP_COMPLIANT
-# LCONFIG+= -DBOOT_INT18H
-
-# Produce code that will work with OpenBSD's pxeboot
-# CFLAGS+= -DFLATTEN_REAL_MODE
-
-CFLAGS+= -fstrength-reduce -fomit-frame-pointer -march=i386
-# Squeeze the code in as little space as possible.
-# gcc3 needs a different syntax to gcc2 if you want to avoid spurious warnings.
-GCC_VERSION = $(subst ., ,$(shell $(CC) -dumpversion))
-GCC_MAJORVERSION = $(firstword $(GCC_VERSION))
-ifeq ($(GCC_MAJORVERSION),2)
-CFLAGS+= -malign-jumps=1 -malign-loops=1 -malign-functions=1
-else
-CFLAGS+= -falign-jumps=1 -falign-loops=1 -falign-functions=1
-endif
-
-# this is almost always a win. the kernel uses it, too.
-CFLAGS+= -mpreferred-stack-boundary=2
-
-# use regparm for all functions - C functions called from assembly (or
-# vice versa) need __cdecl now
-CFLAGS+= -mregparm=3
-
-# use -mrtd (same __cdecl requirements as above)
-CFLAGS+= -mrtd
-
-# this is the logical complement to -mregparm=3.
-# it doesn't currently buy us anything, but if anything ever tries
-# to return small structures, let's be prepared
-CFLAGS+= -freg-struct-return
-
-LDFLAGS+= -N --no-check-sections
-
-ifeq "$(shell uname -s)" "FreeBSD"
-CFLAGS+= -DIMAGE_FREEBSD -DELF_IMAGE -DAOUT_IMAGE
-endif
-
-# An alternate location for isolinux.bin can be set here
-# ISOLINUX_BIN=/path/to/isolinux.bin
diff --git a/src/arch/i386/Makefile b/src/arch/i386/Makefile
index 97ca0774..c5d139e9 100644
--- a/src/arch/i386/Makefile
+++ b/src/arch/i386/Makefile
@@ -1,3 +1,59 @@
+# Force i386-only instructions
+#
+CFLAGS += -march=i386
+
+# Code size reduction.
+#
+CFLAGS += -fstrength-reduce -fomit-frame-pointer
+
+# Code size reduction. gcc3 needs a different syntax to gcc2 if you
+# want to avoid spurious warnings.
+#
+GCC_VERSION := $(subst ., ,$(shell $(CC) -dumpversion))
+GCC_MAJOR := $(firstword $(GCC_VERSION))
+ifeq ($(GCC_MAJOR),2)
+CFLAGS += -malign-jumps=1 -malign-loops=1 -malign-functions=1
+else
+CFLAGS += -falign-jumps=1 -falign-loops=1 -falign-functions=1
+endif
+
+# Code size reduction. This is almost always a win. The kernel uses it, too.
+#
+CFLAGS += -mpreferred-stack-boundary=2
+
+# Code size reduction. Use regparm for all functions - C functions
+# called from assembly (or vice versa) need __cdecl now
+#
+CFLAGS += -mregparm=3
+
+# Code size reduction. Use -mrtd (same __cdecl requirements as above)
+CFLAGS += -mrtd
+
+# Code size reduction. This is the logical complement to -mregparm=3.
+# It doesn't currently buy us anything, but if anything ever tries to
+# return small structures, let's be prepared
+#
+CFLAGS += -freg-struct-return
+
+# Stop ld from complaining about our customised linker script
+#
+LDFLAGS += -N --no-check-sections
+
+# Force 32-bit code even on an x86-64 machine
+#
+CFLAGS += -m32
+ASFLAGS += --32
+LDFLAGS += -m elf_i386
+
+# EFI requires -fshort-wchar, and nothing else currently uses wchar_t
+#
+CFLAGS += -fshort-wchar
+
+# We need to undefine the default macro "i386" when compiling .S
+# files, otherwise ".arch i386" translates to ".arch 1"...
+#
+CFLAGS += -Ui386
+
# Locations of utilities
#
ISOLINUX_BIN = /usr/lib/syslinux/isolinux.bin
@@ -25,11 +81,6 @@ NON_AUTO_SRCS += arch/i386/core/wince_loader.c
OBJS_unnrv2b = unnrv2b unnrv2b16
CFLAGS_unnrv2b16 = -DCODE16
-# We need to undefine the default macro "i386" when compiling .S
-# files, otherwise ".arch i386" translates to ".arch 1"...
-#
-CFLAGS_S += -Ui386
-
# The i386 linker script
#
LDSCRIPT = arch/i386/scripts/i386.lds