Home | History | Annotate | Line # | Download | only in dist
Make.defaults revision 1.1
      1  1.1  jakllsch # -*- makefile -*-
      2  1.1  jakllsch # Copyright (c) 1999-2007 Hewlett-Packard Development Company, L.P.
      3  1.1  jakllsch #	Contributed by David Mosberger <davidm (a] hpl.hp.com>
      4  1.1  jakllsch #	Contributed by Stephane Eranian <eranian (a] hpl.hp.com>
      5  1.1  jakllsch #
      6  1.1  jakllsch #    All rights reserved.
      7  1.1  jakllsch #
      8  1.1  jakllsch #    Redistribution and use in source and binary forms, with or without
      9  1.1  jakllsch #    modification, are permitted provided that the following conditions
     10  1.1  jakllsch #    are met:
     11  1.1  jakllsch #
     12  1.1  jakllsch #    * Redistributions of source code must retain the above copyright
     13  1.1  jakllsch #      notice, this list of conditions and the following disclaimer.
     14  1.1  jakllsch #    * Redistributions in binary form must reproduce the above
     15  1.1  jakllsch #      copyright notice, this list of conditions and the following
     16  1.1  jakllsch #      disclaimer in the documentation and/or other materials
     17  1.1  jakllsch #      provided with the distribution.
     18  1.1  jakllsch #    * Neither the name of Hewlett-Packard Co. nor the names of its
     19  1.1  jakllsch #      contributors may be used to endorse or promote products derived
     20  1.1  jakllsch #      from this software without specific prior written permission.
     21  1.1  jakllsch #
     22  1.1  jakllsch #    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
     23  1.1  jakllsch #    CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
     24  1.1  jakllsch #    INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
     25  1.1  jakllsch #    MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     26  1.1  jakllsch #    DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
     27  1.1  jakllsch #    BE LIABLE FOR ANYDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
     28  1.1  jakllsch #    OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     29  1.1  jakllsch #    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
     30  1.1  jakllsch #    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     31  1.1  jakllsch #    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
     32  1.1  jakllsch #    TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
     33  1.1  jakllsch #    THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     34  1.1  jakllsch #    SUCH DAMAGE.
     35  1.1  jakllsch #
     36  1.1  jakllsch 
     37  1.1  jakllsch TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
     38  1.1  jakllsch 
     39  1.1  jakllsch #
     40  1.1  jakllsch # Variables below overridable from command-line:
     41  1.1  jakllsch #   make VARNAME=value ...
     42  1.1  jakllsch #
     43  1.1  jakllsch 
     44  1.1  jakllsch #
     45  1.1  jakllsch # Where to install the package. GNU-EFI will create and access
     46  1.1  jakllsch # lib and include under the root
     47  1.1  jakllsch #
     48  1.1  jakllsch INSTALLROOT  := /
     49  1.1  jakllsch PREFIX       := /usr/local
     50  1.1  jakllsch LIBDIR 	     := $(PREFIX)/lib
     51  1.1  jakllsch INSTALL	     := install
     52  1.1  jakllsch 
     53  1.1  jakllsch # Host/target identification
     54  1.1  jakllsch OS	     := $(shell uname -s)
     55  1.1  jakllsch HOSTARCH     := $(shell uname -m | sed s,i[3456789]86,ia32,)
     56  1.1  jakllsch ARCH	     := $(shell uname -m | sed s,i[3456789]86,ia32,)
     57  1.1  jakllsch 
     58  1.1  jakllsch # FreeBSD (and possibly others) reports amd64 instead of x86_64
     59  1.1  jakllsch ifeq ($(ARCH),amd64)
     60  1.1  jakllsch   override ARCH := x86_64
     61  1.1  jakllsch endif
     62  1.1  jakllsch 
     63  1.1  jakllsch # Compilation tools
     64  1.1  jakllsch prefix       := /usr/bin/
     65  1.1  jakllsch CC           := $(prefix)gcc
     66  1.1  jakllsch AS           := $(prefix)as
     67  1.1  jakllsch LD           := $(prefix)ld
     68  1.1  jakllsch AR           := $(prefix)ar
     69  1.1  jakllsch RANLIB       := $(prefix)ranlib
     70  1.1  jakllsch OBJCOPY      := $(prefix)objcopy
     71  1.1  jakllsch 
     72  1.1  jakllsch 
     73  1.1  jakllsch #
     74  1.1  jakllsch # Variables below derived from variables above
     75  1.1  jakllsch #
     76  1.1  jakllsch 
     77  1.1  jakllsch GCCVERSION   := $(shell $(CC) -dumpversion | cut -f1 -d.)
     78  1.1  jakllsch GCCMINOR     := $(shell $(CC) -dumpversion | cut -f2 -d.)
     79  1.1  jakllsch 
     80  1.1  jakllsch # Rely on GCC MS ABI support?
     81  1.1  jakllsch GCCNEWENOUGH := $(shell ( [ $(GCCVERSION) -gt "4" ]           \
     82  1.1  jakllsch                           || ( [ $(GCCVERSION) -eq "4" ]      \
     83  1.1  jakllsch                                && [ $(GCCMINOR) -ge "7" ] ) ) \
     84  1.1  jakllsch                         && echo 1)
     85  1.1  jakllsch ifeq ($(GCCNEWENOUGH),1)
     86  1.1  jakllsch   CPPFLAGS += -DGNU_EFI_USE_MS_ABI -maccumulate-outgoing-args --std=c11
     87  1.1  jakllsch endif
     88  1.1  jakllsch 
     89  1.1  jakllsch # Arch-specific compilation flags
     90  1.1  jakllsch CPPFLAGS += -DCONFIG_$(ARCH)
     91  1.1  jakllsch 
     92  1.1  jakllsch ifeq ($(ARCH),ia64)
     93  1.1  jakllsch   CFLAGS += -mfixed-range=f32-f127
     94  1.1  jakllsch endif
     95  1.1  jakllsch 
     96  1.1  jakllsch ifeq ($(ARCH),ia32)
     97  1.1  jakllsch   CFLAGS += -mno-mmx -mno-sse
     98  1.1  jakllsch   ifeq ($(HOSTARCH),x86_64)
     99  1.1  jakllsch     ARCH3264 = -m32
    100  1.1  jakllsch   endif
    101  1.1  jakllsch endif
    102  1.1  jakllsch 
    103  1.1  jakllsch ifeq ($(ARCH),x86_64)
    104  1.1  jakllsch   CFLAGS += -mno-red-zone -mno-mmx -mno-sse
    105  1.1  jakllsch   ifeq ($(HOSTARCH),ia32)
    106  1.1  jakllsch     ARCH3264 = -m64
    107  1.1  jakllsch   endif
    108  1.1  jakllsch endif
    109  1.1  jakllsch 
    110  1.1  jakllsch # Generic compilation flags
    111  1.1  jakllsch INCDIR  += -I$(SRCDIR) -I$(TOPDIR)/inc -I$(TOPDIR)/inc/$(ARCH) \
    112  1.1  jakllsch            -I$(TOPDIR)/inc/protocol
    113  1.1  jakllsch CFLAGS  += $(ARCH3264) -O2 -fpic -Wall -fshort-wchar -fno-strict-aliasing \
    114  1.1  jakllsch            -fno-merge-constants -ffreestanding -fno-stack-protector       \
    115  1.1  jakllsch            -fno-stack-check
    116  1.1  jakllsch ASFLAGS += $(ARCH3264)
    117  1.1  jakllsch LDFLAGS	+= -nostdlib --no-undefined
    118