uboot/config.mk
<<
>>
Prefs
   1#
   2# (C) Copyright 2000-2006
   3# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
   4#
   5# See file CREDITS for list of people who contributed to this
   6# project.
   7#
   8# This program is free software; you can redistribute it and/or
   9# modify it under the terms of the GNU General Public License as
  10# published by the Free Software Foundation; either version 2 of
  11# the License, or (at your option) any later version.
  12#
  13# This program 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.
  17#
  18# You should have received a copy of the GNU General Public License
  19# along with this program; if not, write to the Free Software
  20# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  21# MA 02111-1307 USA
  22#
  23
  24#########################################################################
  25
  26ifneq ($(OBJTREE),$(SRCTREE))
  27ifeq ($(CURDIR),$(SRCTREE))
  28dir :=
  29else
  30dir := $(subst $(SRCTREE)/,,$(CURDIR))
  31endif
  32
  33obj := $(if $(dir),$(OBJTREE)/$(dir)/,$(OBJTREE)/)
  34src := $(if $(dir),$(SRCTREE)/$(dir)/,$(SRCTREE)/)
  35
  36$(shell mkdir -p $(obj))
  37else
  38obj :=
  39src :=
  40endif
  41
  42# clean the slate ...
  43PLATFORM_RELFLAGS =
  44PLATFORM_CPPFLAGS =
  45PLATFORM_LDFLAGS =
  46
  47#########################################################################
  48
  49ifeq ($(HOSTOS),darwin)
  50HOSTCC          = cc
  51else
  52HOSTCC          = gcc
  53endif
  54HOSTCFLAGS      = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
  55HOSTSTRIP       = strip
  56
  57#########################################################################
  58#
  59# Option checker (courtesy linux kernel) to ensure
  60# only supported compiler options are used
  61#
  62cc-option = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
  63                > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)
  64
  65#
  66# Include the make variables (CC, etc...)
  67#
  68AS      = $(CROSS_COMPILE)as
  69LD      = $(CROSS_COMPILE)ld
  70CC      = $(CROSS_COMPILE)gcc
  71CPP     = $(CC) -E
  72AR      = $(CROSS_COMPILE)ar
  73NM      = $(CROSS_COMPILE)nm
  74LDR     = $(CROSS_COMPILE)ldr
  75STRIP   = $(CROSS_COMPILE)strip
  76OBJCOPY = $(CROSS_COMPILE)objcopy
  77OBJDUMP = $(CROSS_COMPILE)objdump
  78RANLIB  = $(CROSS_COMPILE)RANLIB
  79
  80#########################################################################
  81
  82# Load generated board configuration
  83sinclude $(OBJTREE)/include/autoconf.mk
  84
  85ifdef   ARCH
  86sinclude $(TOPDIR)/lib_$(ARCH)/config.mk        # include architecture dependend rules
  87endif
  88ifdef   CPU
  89sinclude $(TOPDIR)/cpu/$(CPU)/config.mk         # include  CPU  specific rules
  90endif
  91ifdef   SOC
  92sinclude $(TOPDIR)/cpu/$(CPU)/$(SOC)/config.mk  # include  SoC  specific rules
  93endif
  94ifdef   VENDOR
  95BOARDDIR = $(VENDOR)/$(BOARD)
  96else
  97BOARDDIR = $(BOARD)
  98endif
  99ifdef   BOARD
 100sinclude $(TOPDIR)/board/$(BOARDDIR)/config.mk  # include board specific rules
 101endif
 102
 103#########################################################################
 104
 105ifneq (,$(findstring s,$(MAKEFLAGS)))
 106ARFLAGS = cr
 107else
 108ARFLAGS = crv
 109endif
 110RELFLAGS= $(PLATFORM_RELFLAGS)
 111DBGFLAGS= -g # -DDEBUG
 112OPTFLAGS= -Os #-fomit-frame-pointer
 113ifndef LDSCRIPT
 114#LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds.debug
 115ifeq ($(CONFIG_NAND_U_BOOT),y)
 116LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot-nand.lds
 117else
 118LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds
 119endif
 120endif
 121OBJCFLAGS += --gap-fill=0xff
 122
 123gccincdir := $(shell $(CC) -print-file-name=include)
 124
 125CPPFLAGS := $(DBGFLAGS) $(OPTFLAGS) $(RELFLAGS)         \
 126        -D__KERNEL__
 127ifneq ($(TEXT_BASE),)
 128CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
 129endif
 130
 131ifneq ($(OBJTREE),$(SRCTREE))
 132CPPFLAGS += -I$(OBJTREE)/include2 -I$(OBJTREE)/include
 133endif
 134
 135CPPFLAGS += -I$(TOPDIR)/include
 136CPPFLAGS += -fno-builtin -ffreestanding -nostdinc       \
 137        -isystem $(gccincdir) -pipe $(PLATFORM_CPPFLAGS)
 138
 139ifdef BUILD_TAG
 140CFLAGS := $(CPPFLAGS) -Wall -Wstrict-prototypes \
 141        -DBUILD_TAG='"$(BUILD_TAG)"'
 142else
 143CFLAGS := $(CPPFLAGS) -Wall -Wstrict-prototypes
 144endif
 145
 146CFLAGS += $(call cc-option,-fno-stack-protector)
 147
 148# avoid trigraph warnings while parsing pci.h (produced by NIOS gcc-2.9)
 149# this option have to be placed behind -Wall -- that's why it is here
 150ifeq ($(ARCH),nios)
 151ifeq ($(findstring 2.9,$(shell $(CC) --version)),2.9)
 152CFLAGS := $(CPPFLAGS) -Wall -Wno-trigraphs
 153endif
 154endif
 155
 156# $(CPPFLAGS) sets -g, which causes gcc to pass a suitable -g<format>
 157# option to the assembler.
 158AFLAGS_DEBUG :=
 159
 160# turn jbsr into jsr for m68k
 161ifeq ($(ARCH),m68k)
 162ifeq ($(findstring 3.4,$(shell $(CC) --version)),3.4)
 163AFLAGS_DEBUG := -Wa,-gstabs,-S
 164endif
 165endif
 166
 167AFLAGS := $(AFLAGS_DEBUG) -D__ASSEMBLY__ $(CPPFLAGS)
 168
 169LDFLAGS += -Bstatic -T $(obj)u-boot.lds $(PLATFORM_LDFLAGS)
 170ifneq ($(TEXT_BASE),)
 171LDFLAGS += -Ttext $(TEXT_BASE)
 172endif
 173
 174# Location of a usable BFD library, where we define "usable" as
 175# "built for ${HOST}, supports ${TARGET}".  Sensible values are
 176# - When cross-compiling: the root of the cross-environment
 177# - Linux/ppc (native): /usr
 178# - NetBSD/ppc (native): you lose ... (must extract these from the
 179#   binutils build directory, plus the native and U-Boot include
 180#   files don't like each other)
 181#
 182# So far, this is used only by tools/gdb/Makefile.
 183
 184ifeq ($(HOSTOS),darwin)
 185BFD_ROOT_DIR =          /usr/local/tools
 186else
 187ifeq ($(HOSTARCH),$(ARCH))
 188# native
 189BFD_ROOT_DIR =          /usr
 190else
 191#BFD_ROOT_DIR =         /LinuxPPC/CDK           # Linux/i386
 192#BFD_ROOT_DIR =         /usr/pkg/cross          # NetBSD/i386
 193BFD_ROOT_DIR =          /opt/powerpc
 194endif
 195endif
 196
 197#########################################################################
 198
 199export  HOSTCC HOSTCFLAGS CROSS_COMPILE \
 200        AS LD CC CPP AR NM STRIP OBJCOPY OBJDUMP MAKE
 201export  TEXT_BASE PLATFORM_CPPFLAGS PLATFORM_RELFLAGS CPPFLAGS CFLAGS AFLAGS
 202
 203#########################################################################
 204
 205# Allow boards to use custom optimize flags on a per dir/file basis
 206BCURDIR := $(notdir $(CURDIR))
 207$(obj)%.s:      %.S
 208        $(CPP) $(AFLAGS) $(AFLAGS_$(@F)) $(AFLAGS_$(BCURDIR)) -o $@ $<
 209$(obj)%.o:      %.S
 210        $(CC)  $(AFLAGS) $(AFLAGS_$(@F)) $(AFLAGS_$(BCURDIR)) -o $@ $< -c
 211$(obj)%.o:      %.c
 212        $(CC)  $(CFLAGS) $(CFLAGS_$(@F)) $(CFLAGS_$(BCURDIR)) -o $@ $< -c
 213$(obj)%.i:      %.c
 214        $(CPP) $(CFLAGS) $(CFLAGS_$(@F)) $(CFLAGS_$(BCURDIR)) -o $@ $< -c
 215$(obj)%.s:      %.c
 216        $(CC)  $(CFLAGS) $(CFLAGS_$(@F)) $(CFLAGS_$(BCURDIR)) -o $@ $< -c -S
 217
 218#########################################################################
 219