# # Copyright (C) 2001-2003 Hewlett-Packard Co. # Contributed by Stephane Eranian # Contributed by Chandramouli Narayanan # # This file is part of ELILO, the LINUX EFI boot loader. # # ELILO 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. # # ELILO is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with ELILO; see the file COPYING. If not, write to the Free # Software Foundation, 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # # Please check out the elilo.txt for complete documentation on how # to use this program. # # # File system selection. At least one filesystem must be enabled # CONFIG_localfs=y CONFIG_netfs=y # # WARNING WARNING WARNING # # Use this option with caution. This filesystem module does not # support ext3 formatted partitions, i.e., it does not know how # to recover from failures (ignores the log). # CONFIG_ext2fs=n # # Chooser selection(at least one must be defined) # CONFIG_chooser_simple=y CONFIG_chooser_textmenu=y # # Enable IP-address based config file (elilo.conf) when netbooted # CONFIG_machspec_netconfig=y # # Indicate where the EFI include and libaries are. # They are installed as part of the GNU-EFI package installation # EFIINC = /usr/include/efi GNUEFILIB = /usr/lib EFILIB = /usr/lib EFICRT0 = $(EFILIB)/gnuefi CDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi) TOPDIR = ALLSUBDIRS = ia32 ia64 x86_64 fs choosers devschemes tools HOSTARCH = $(shell uname -m | sed s,i[3456789]86,ia32, | sed s,amd64,x86_64, ) ARCH := $(shell uname -m | sed s,i[3456789]86,ia32, | sed s,amd64,x86_64, ) INCDIR = -I. -I$(TOPDIR) -I$(EFIINC) -I$(EFIINC)/$(ARCH) -I$(EFIINC)/protocol -I$(TOPDIR)/efi110 CPPFLAGS = -DCONFIG_$(ARCH) OPTIMFLAGS = -O2 DEBUGFLAGS = -Wall CFLAGS = $(ARCH3264) $(OPTIMFLAGS) -fno-stack-protector -fno-strict-aliasing -fpic -fshort-wchar $(DEBUGFLAGS) ASFLAGS = $(ARCH3264) LDFLAGS = -nostdlib -znocombreloc INSTALL = install ifeq ($(CONFIG_machspec_netconfig),y) CFLAGS += -DENABLE_MACHINE_SPECIFIC_NETCONFIG endif ifeq ($(CONFIG_localfs),y) CFLAGS += -DCONFIG_LOCALFS endif ifeq ($(CONFIG_netfs),y) CFLAGS += -DCONFIG_NETFS endif ifeq ($(CONFIG_ext2fs),y) CFLAGS += -DCONFIG_EXT2FS endif ifeq ($(CONFIG_chooser_simple),y) CFLAGS += -DCONFIG_CHOOSER_SIMPLE endif ifeq ($(CONFIG_chooser_textmenu),y) CFLAGS += -DCONFIG_CHOOSER_TEXTMENU endif prefix = /usr/bin/ # Redhat 8.0 ia32 gcc-3.x version is reported to produce working EFI binaries. # Redhat 9.0 ia32 gcc-3.x version is reported to produce BAD binaries. CC = $(prefix)gcc AS = $(prefix)as LD = $(prefix)ld AR = $(prefix)ar RANLIB = $(prefix)ranlib OBJCOPY = $(prefix)objcopy # Use Modified binutils that supports x86_64 using UEFI ABI ifeq ($(ARCH), x86_64) ARCH3264 = -m64 LD3264 = -melf_x86_64 GNUEFILIB := $(GNUEFILIB)64 EFILIB := $(EFILIB)64 EFICRT0 := $(EFILIB)/gnuefi CFLAGS += -DEFI_FUNCTION_WRAPPER OBJCOPY = /usr/bin/objcopy endif ifeq ($(ARCH), ia32) ifeq ($(HOSTARCH), x86_64) ARCH3264 = -m32 LD3264 = -melf_i386 GNUEFILIB := /usr/lib32 EFILIB := /usr/lib32 EFICRT0 := /usr/lib32/gnuefi endif endif ifeq ($(ARCH),ia64) GCC_VERSION=$(shell $(CROSS_COMPILE)$(CC) -v 2>&1 | fgrep 'gcc version' | cut -f3 -d' ' | cut -f1 -d'.') ifneq ($(GCC_VERSION),2) CFLAGS += -frename-registers endif # EFI specs allows only lower floating point partition to be used CFLAGS += -mfixed-range=f32-f127 endif