2
2
# Copyright (c) 1999-2007 Hewlett-Packard Development Company, L.P.
3
3
# Contributed by David Mosberger <davidm@hpl.hp.com>
4
4
# Contributed by Stephane Eranian <eranian@hpl.hp.com>
6
# This file is part of the gnu-efi package.
8
# GNU-EFI is free software; you can redistribute it and/or modify
9
# it under the terms of the GNU General Public License as published by
10
# the Free Software Foundation; either version 2, or (at your option)
13
# GNU-EFI is distributed in the hope that it will be useful,
14
# but WITHOUT ANY WARRANTY; without even the implied warranty of
15
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
# GNU General Public License for more details.
18
# You should have received a copy of the GNU General Public License
19
# along with GNU-EFI; see the file COPYING. If not, write to the Free
20
# Software Foundation, 59 Temple Place - Suite 330, Boston, MA
8
# Redistribution and use in source and binary forms, with or without
9
# modification, are permitted provided that the following conditions
12
# * Redistributions of source code must retain the above copyright
13
# notice, this list of conditions and the following disclaimer.
14
# * Redistributions in binary form must reproduce the above
15
# copyright notice, this list of conditions and the following
16
# disclaimer in the documentation and/or other materials
17
# provided with the distribution.
18
# * Neither the name of Hewlett-Packard Co. nor the names of its
19
# contributors may be used to endorse or promote products derived
20
# from this software without specific prior written permission.
22
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
23
# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
24
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
25
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
27
# BE LIABLE FOR ANYDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
28
# OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
29
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
32
# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
33
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
37
TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
40
# Variables below overridable from command-line:
41
# make VARNAME=value ...
25
45
# Where to install the package. GNU-EFI will create and access
26
46
# lib and include under the root
28
INSTALLROOT=/usr/local
31
TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
33
HOSTARCH = $(shell uname -m | sed s,i[3456789]86,ia32,)
34
ARCH := $(shell uname -m | sed s,i[3456789]86,ia32,)
35
OS = $(shell uname -s)
36
INCDIR = -I$(SRCDIR) -I$(TOPDIR)/inc -I$(TOPDIR)/inc/$(ARCH) -I$(TOPDIR)/inc/protocol
37
CPPFLAGS = -DCONFIG_$(ARCH)
38
CFLAGS = $(ARCH3264) -O2 -fpic -Wall -fshort-wchar -fno-strict-aliasing -fno-merge-constants -fno-stack-protector
48
RANLIB = $(prefix)ranlib
49
OBJCOPY = $(prefix)objcopy
50
LIBDIR := $(PREFIX)/lib
53
# Host/target identification
54
OS := $(shell uname -s)
55
HOSTARCH := $(shell uname -m | sed s,i[3456789]86,ia32,)
56
ARCH := $(shell uname -m | sed s,i[3456789]86,ia32,)
58
# FreeBSD (and possibly others) reports amd64 instead of x86_64
60
override ARCH := x86_64
69
RANLIB := $(prefix)ranlib
70
OBJCOPY := $(prefix)objcopy
74
# Variables below derived from variables above
77
GCCVERSION := $(shell $(CC) -dumpversion | cut -f1 -d.)
78
GCCMINOR := $(shell $(CC) -dumpversion | cut -f2 -d.)
80
# Rely on GCC MS ABI support?
81
GCCNEWENOUGH := $(shell ( [ $(GCCVERSION) -gt "4" ] \
82
|| ( [ $(GCCVERSION) -eq "4" ] \
83
&& [ $(GCCMINOR) -ge "7" ] ) ) \
85
ifeq ($(GCCNEWENOUGH),1)
86
CPPFLAGS += -DGNU_EFI_USE_MS_ABI -maccumulate-outgoing-args --std=c11
89
# Arch-specific compilation flags
90
CPPFLAGS += -DCONFIG_$(ARCH)
51
92
ifeq ($(ARCH),ia64)
52
93
CFLAGS += -mfixed-range=f32-f127
56
ifeq ($(HOSTARCH), x86_64)
97
CFLAGS += -mno-mmx -mno-sse
98
ifeq ($(HOSTARCH),x86_64)
61
ifeq ($(ARCH), x86_64)
62
CFLAGS += -DEFI_FUNCTION_WRAPPER -mno-red-zone
64
ifeq ($(HOSTARCH), ia32)
103
ifeq ($(ARCH),x86_64)
104
CFLAGS += -mno-red-zone -mno-mmx -mno-sse
105
ifeq ($(HOSTARCH),ia32)
110
# Generic compilation flags
111
INCDIR += -I$(SRCDIR) -I$(TOPDIR)/inc -I$(TOPDIR)/inc/$(ARCH) \
112
-I$(TOPDIR)/inc/protocol
113
CFLAGS += $(ARCH3264) -O2 -fpic -Wall -fshort-wchar -fno-strict-aliasing \
114
-fno-merge-constants -ffreestanding -fno-stack-protector \
116
ASFLAGS += $(ARCH3264)
117
LDFLAGS += -nostdlib --no-undefined