Make.defaults revision 1.1.1.2
11.1Sjakllsch# -*- makefile -*- 21.1Sjakllsch# Copyright (c) 1999-2007 Hewlett-Packard Development Company, L.P. 31.1Sjakllsch# Contributed by David Mosberger <davidm@hpl.hp.com> 41.1Sjakllsch# Contributed by Stephane Eranian <eranian@hpl.hp.com> 51.1Sjakllsch# 61.1Sjakllsch# All rights reserved. 71.1Sjakllsch# 81.1Sjakllsch# Redistribution and use in source and binary forms, with or without 91.1Sjakllsch# modification, are permitted provided that the following conditions 101.1Sjakllsch# are met: 111.1Sjakllsch# 121.1Sjakllsch# * Redistributions of source code must retain the above copyright 131.1Sjakllsch# notice, this list of conditions and the following disclaimer. 141.1Sjakllsch# * Redistributions in binary form must reproduce the above 151.1Sjakllsch# copyright notice, this list of conditions and the following 161.1Sjakllsch# disclaimer in the documentation and/or other materials 171.1Sjakllsch# provided with the distribution. 181.1Sjakllsch# * Neither the name of Hewlett-Packard Co. nor the names of its 191.1Sjakllsch# contributors may be used to endorse or promote products derived 201.1Sjakllsch# from this software without specific prior written permission. 211.1Sjakllsch# 221.1Sjakllsch# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 231.1Sjakllsch# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 241.1Sjakllsch# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 251.1Sjakllsch# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 261.1Sjakllsch# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 271.1Sjakllsch# BE LIABLE FOR ANYDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 281.1Sjakllsch# OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 291.1Sjakllsch# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 301.1Sjakllsch# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 311.1Sjakllsch# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 321.1Sjakllsch# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 331.1Sjakllsch# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 341.1Sjakllsch# SUCH DAMAGE. 351.1Sjakllsch# 361.1Sjakllsch 371.1SjakllschTOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi) 381.1Sjakllsch 391.1Sjakllsch# 401.1Sjakllsch# Variables below overridable from command-line: 411.1Sjakllsch# make VARNAME=value ... 421.1Sjakllsch# 431.1Sjakllsch 441.1Sjakllsch# 451.1Sjakllsch# Where to install the package. GNU-EFI will create and access 461.1Sjakllsch# lib and include under the root 471.1Sjakllsch# 481.1SjakllschINSTALLROOT := / 491.1SjakllschPREFIX := /usr/local 501.1SjakllschLIBDIR := $(PREFIX)/lib 511.1SjakllschINSTALL := install 521.1Sjakllsch 531.1.1.2Sjmcneill# Compilation tools 541.1.1.2SjmcneillHOSTCC := $(prefix)gcc 551.1.1.2SjmcneillCC := $(prefix)$(CROSS_COMPILE)gcc 561.1.1.2SjmcneillAS := $(prefix)$(CROSS_COMPILE)as 571.1.1.2SjmcneillLD := $(prefix)$(CROSS_COMPILE)ld 581.1.1.2SjmcneillAR := $(prefix)$(CROSS_COMPILE)ar 591.1.1.2SjmcneillRANLIB := $(prefix)$(CROSS_COMPILE)ranlib 601.1.1.2SjmcneillOBJCOPY := $(prefix)$(CROSS_COMPILE)objcopy 611.1.1.2Sjmcneill 621.1.1.2Sjmcneill 631.1Sjakllsch# Host/target identification 641.1.1.2SjmcneillOS := $(shell uname -s) 651.1.1.2SjmcneillHOSTARCH ?= $(shell $(HOSTCC) -dumpmachine | cut -f1 -d- | sed -e s,i[3456789]86,ia32, -e 's,armv7.*,arm,' ) 661.1.1.2SjmcneillARCH ?= $(shell $(HOSTCC) -dumpmachine | cut -f1 -d- | sed -e s,i[3456789]86,ia32, -e 's,armv7.*,arm,' ) 671.1.1.2Sjmcneill 681.1.1.2Sjmcneill# Get ARCH from the compiler if cross compiling 691.1.1.2Sjmcneillifneq ($(CROSS_COMPILE),) 701.1.1.2Sjmcneill override ARCH := $(shell $(CC) -dumpmachine | cut -f1 -d-| sed -e s,i[3456789]86,ia32, -e 's,armv7.*,arm,' ) 711.1.1.2Sjmcneillendif 721.1Sjakllsch 731.1Sjakllsch# FreeBSD (and possibly others) reports amd64 instead of x86_64 741.1Sjakllschifeq ($(ARCH),amd64) 751.1Sjakllsch override ARCH := x86_64 761.1Sjakllschendif 771.1Sjakllsch 781.1.1.2Sjmcneill# 791.1.1.2Sjmcneill# Where to build the package 801.1.1.2Sjmcneill# 811.1.1.2SjmcneillOBJDIR := $(TOPDIR)/$(ARCH) 821.1Sjakllsch 831.1Sjakllsch# 841.1Sjakllsch# Variables below derived from variables above 851.1Sjakllsch# 861.1Sjakllsch 871.1Sjakllsch# Arch-specific compilation flags 881.1SjakllschCPPFLAGS += -DCONFIG_$(ARCH) 891.1Sjakllsch 901.1.1.2SjmcneillCFLAGS += -Wno-error=pragmas 911.1.1.2Sjmcneill 921.1Sjakllschifeq ($(ARCH),ia64) 931.1Sjakllsch CFLAGS += -mfixed-range=f32-f127 941.1Sjakllschendif 951.1Sjakllsch 961.1Sjakllschifeq ($(ARCH),ia32) 971.1Sjakllsch CFLAGS += -mno-mmx -mno-sse 981.1Sjakllsch ifeq ($(HOSTARCH),x86_64) 991.1Sjakllsch ARCH3264 = -m32 1001.1Sjakllsch endif 1011.1Sjakllschendif 1021.1Sjakllsch 1031.1Sjakllschifeq ($(ARCH),x86_64) 1041.1.1.2Sjmcneill GCCVERSION := $(shell $(CC) -dumpversion | cut -f1 -d.) 1051.1.1.2Sjmcneill GCCMINOR := $(shell $(CC) -dumpversion | cut -f2 -d.) 1061.1.1.2Sjmcneill USING_CLANG := $(shell $(CC) -v 2>&1 | grep -q 'clang version' && echo clang) 1071.1.1.2Sjmcneill 1081.1.1.2Sjmcneill # Rely on GCC MS ABI support? 1091.1.1.2Sjmcneill GCCNEWENOUGH := $(shell ( [ $(GCCVERSION) -gt "4" ] \ 1101.1.1.2Sjmcneill || ( [ $(GCCVERSION) -eq "4" ] \ 1111.1.1.2Sjmcneill && [ $(GCCMINOR) -ge "7" ] ) ) \ 1121.1.1.2Sjmcneill && echo 1) 1131.1.1.2Sjmcneill ifeq ($(GCCNEWENOUGH),1) 1141.1.1.2Sjmcneill CPPFLAGS += -DGNU_EFI_USE_MS_ABI -maccumulate-outgoing-args --std=c11 1151.1.1.2Sjmcneill else ifeq ($(USING_CLANG),clang) 1161.1.1.2Sjmcneill CPPFLAGS += -DGNU_EFI_USE_MS_ABI --std=c11 1171.1.1.2Sjmcneill endif 1181.1.1.2Sjmcneill 1191.1.1.2Sjmcneill CFLAGS += -mno-red-zone 1201.1Sjakllsch ifeq ($(HOSTARCH),ia32) 1211.1Sjakllsch ARCH3264 = -m64 1221.1Sjakllsch endif 1231.1Sjakllschendif 1241.1Sjakllsch 1251.1.1.2Sjmcneillifneq (,$(filter $(ARCH),ia32 x86_64)) 1261.1.1.2Sjmcneill # Disable AVX, if the compiler supports that. 1271.1.1.2Sjmcneill CC_CAN_DISABLE_AVX=$(shell $(CC) -Werror -c -o /dev/null -xc -mno-avx - </dev/null >/dev/null 2>&1 && echo 1) 1281.1.1.2Sjmcneill ifeq ($(CC_CAN_DISABLE_AVX), 1) 1291.1.1.2Sjmcneill CFLAGS += -mno-avx 1301.1.1.2Sjmcneill endif 1311.1.1.2Sjmcneillendif 1321.1.1.2Sjmcneill 1331.1.1.2Sjmcneillifeq ($(ARCH),mips64el) 1341.1.1.2Sjmcneill CFLAGS += -march=mips64r2 1351.1.1.2Sjmcneill ARCH3264 = -mabi=64 1361.1.1.2Sjmcneillendif 1371.1.1.2Sjmcneill 1381.1.1.2Sjmcneill# 1391.1.1.2Sjmcneill# Set HAVE_EFI_OBJCOPY if objcopy understands --target efi-[app|bsdrv|rtdrv], 1401.1.1.2Sjmcneill# otherwise we need to compose the PE/COFF header using the assembler 1411.1.1.2Sjmcneill# 1421.1.1.2Sjmcneillifneq ($(ARCH),aarch64) 1431.1.1.2Sjmcneillifneq ($(ARCH),arm) 1441.1.1.2Sjmcneillifneq ($(ARCH),mips64el) 1451.1.1.2Sjmcneillexport HAVE_EFI_OBJCOPY=y 1461.1.1.2Sjmcneillendif 1471.1.1.2Sjmcneillendif 1481.1.1.2Sjmcneillendif 1491.1.1.2Sjmcneill 1501.1.1.2Sjmcneillifneq ($(ARCH),arm) 1511.1.1.2Sjmcneillexport LIBGCC=$(shell $(CC) $(ARCH3264) -print-libgcc-file-name) 1521.1.1.2Sjmcneillendif 1531.1.1.2Sjmcneill 1541.1.1.2Sjmcneillifeq ($(ARCH),arm) 1551.1.1.2SjmcneillCFLAGS += -marm 1561.1.1.2Sjmcneillendif 1571.1.1.2Sjmcneill 1581.1Sjakllsch# Generic compilation flags 1591.1SjakllschINCDIR += -I$(SRCDIR) -I$(TOPDIR)/inc -I$(TOPDIR)/inc/$(ARCH) \ 1601.1Sjakllsch -I$(TOPDIR)/inc/protocol 1611.1.1.2Sjmcneill 1621.1.1.2Sjmcneill# Only enable -fpic for non MinGW compilers (unneeded on MinGW) 1631.1.1.2SjmcneillGCCMACHINE := $(shell $(CC) -dumpmachine) 1641.1.1.2Sjmcneillifneq (mingw32,$(findstring mingw32, $(GCCMACHINE))) 1651.1.1.2Sjmcneill CFLAGS += -fpic 1661.1.1.2Sjmcneillendif 1671.1.1.2Sjmcneill 1681.1.1.2Sjmcneillifeq (FreeBSD, $(findstring FreeBSD, $(OS))) 1691.1.1.2SjmcneillCFLAGS += $(ARCH3264) -g -O2 -Wall -Wextra -Werror \ 1701.1.1.2Sjmcneill -fshort-wchar -fno-strict-aliasing \ 1711.1.1.2Sjmcneill -ffreestanding -fno-stack-protector 1721.1.1.2Sjmcneillelse 1731.1.1.2SjmcneillCFLAGS += $(ARCH3264) -g -O2 -Wall -Wextra -Werror \ 1741.1.1.2Sjmcneill -fshort-wchar -fno-strict-aliasing \ 1751.1.1.2Sjmcneill -ffreestanding -fno-stack-protector -fno-stack-check \ 1761.1.1.2Sjmcneill -fno-stack-check \ 1771.1.1.2Sjmcneill $(if $(findstring gcc,$(CC)),-fno-merge-all-constants,) 1781.1.1.2Sjmcneillendif 1791.1.1.2Sjmcneill 1801.1.1.2SjmcneillARFLAGS := rDv 1811.1SjakllschASFLAGS += $(ARCH3264) 1821.1.1.2SjmcneillLDFLAGS += -nostdlib --warn-common --no-undefined --fatal-warnings \ 1831.1.1.2Sjmcneill --build-id=sha1 184