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# When cross-compiling on NetBSD, we have to define __PPC__ or else we
  49# will pick up a va_list declaration that is incompatible with the
  50# actual argument lists emitted by the compiler.
  51#
  52# [Tested on NetBSD/i386 1.5 + cross-powerpc-netbsd-1.3]
  53
  54ifeq ($(ARCH),ppc)
  55ifeq ($(CROSS_COMPILE),powerpc-netbsd-)
  56PLATFORM_CPPFLAGS+= -D__PPC__
  57endif
  58ifeq ($(CROSS_COMPILE),powerpc-openbsd-)
  59PLATFORM_CPPFLAGS+= -D__PPC__
  60endif
  61endif
  62
  63ifeq ($(ARCH),arm)
  64ifeq ($(CROSS_COMPILE),powerpc-netbsd-)
  65PLATFORM_CPPFLAGS+= -D__ARM__
  66endif
  67ifeq ($(CROSS_COMPILE),powerpc-openbsd-)
  68PLATFORM_CPPFLAGS+= -D__ARM__
  69endif
  70endif
  71
  72#########################################################################
  73
  74CONFIG_SHELL    := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
  75                    else if [ -x /bin/bash ]; then echo /bin/bash; \
  76                    else echo sh; fi ; fi)
  77
  78ifeq ($(HOSTOS)-$(HOSTARCH),darwin-ppc)
  79HOSTCC          = cc
  80else
  81HOSTCC          = gcc
  82endif
  83HOSTCFLAGS      = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
  84HOSTSTRIP       = strip
  85
  86#########################################################################
  87#
  88# Option checker (courtesy linux kernel) to ensure
  89# only supported compiler options are used
  90#
  91cc-option = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
  92                > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)
  93
  94#
  95# Include the make variables (CC, etc...)
  96#
  97AS      = $(CROSS_COMPILE)as
  98LD      = $(CROSS_COMPILE)ld
  99CC      = $(CROSS_COMPILE)gcc
 100CPP     = $(CC) -E
 101AR      = $(CROSS_COMPILE)ar
 102NM      = $(CROSS_COMPILE)nm
 103LDR     = $(CROSS_COMPILE)ldr
 104STRIP   = $(CROSS_COMPILE)strip
 105OBJCOPY = $(CROSS_COMPILE)objcopy
 106OBJDUMP = $(CROSS_COMPILE)objdump
 107RANLIB  = $(CROSS_COMPILE)RANLIB
 108
 109#########################################################################
 110
 111# Load generated board configuration
 112sinclude $(OBJTREE)/include/autoconf.mk
 113
 114ifdef   ARCH
 115sinclude $(TOPDIR)/$(ARCH)_config.mk    # include architecture dependend rules
 116endif
 117ifdef   CPU
 118sinclude $(TOPDIR)/cpu/$(CPU)/config.mk # include  CPU  specific rules
 119endif
 120ifdef   SOC
 121sinclude $(TOPDIR)/cpu/$(CPU)/$(SOC)/config.mk  # include  SoC  specific rules
 122endif
 123ifdef   VENDOR
 124BOARDDIR = $(VENDOR)/$(BOARD)
 125else
 126BOARDDIR = $(BOARD)
 127endif
 128ifdef   BOARD
 129sinclude $(TOPDIR)/board/$(BOARDDIR)/config.mk  # include board specific rules
 130endif
 131
 132#########################################################################
 133
 134ifneq (,$(findstring s,$(MAKEFLAGS)))
 135ARFLAGS = cr
 136else
 137ARFLAGS = crv
 138endif
 139RELFLAGS= $(PLATFORM_RELFLAGS)
 140DBGFLAGS= -g # -DDEBUG
 141OPTFLAGS= -Os #-fomit-frame-pointer
 142ifndef LDSCRIPT
 143#LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds.debug
 144ifeq ($(CONFIG_NAND_U_BOOT),y)
 145LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot-nand.lds
 146else
 147LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds
 148endif
 149endif
 150OBJCFLAGS += --gap-fill=0xff
 151
 152gccincdir := $(shell $(CC) -print-file-name=include)
 153
 154CPPFLAGS := $(DBGFLAGS) $(OPTFLAGS) $(RELFLAGS)         \
 155        -D__KERNEL__
 156ifneq ($(TEXT_BASE),)
 157CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
 158endif
 159
 160ifneq ($(OBJTREE),$(SRCTREE))
 161CPPFLAGS += -I$(OBJTREE)/include2 -I$(OBJTREE)/include
 162endif
 163
 164CPPFLAGS += -I$(TOPDIR)/include
 165CPPFLAGS += -fno-builtin -ffreestanding -nostdinc       \
 166        -isystem $(gccincdir) -pipe $(PLATFORM_CPPFLAGS)
 167
 168ifdef BUILD_TAG
 169CFLAGS := $(CPPFLAGS) -Wall -Wstrict-prototypes \
 170        -DBUILD_TAG='"$(BUILD_TAG)"'
 171else
 172CFLAGS := $(CPPFLAGS) -Wall -Wstrict-prototypes
 173endif
 174
 175# avoid trigraph warnings while parsing pci.h (produced by NIOS gcc-2.9)
 176# this option have to be placed behind -Wall -- that's why it is here
 177ifeq ($(ARCH),nios)
 178ifeq ($(findstring 2.9,$(shell $(CC) --version)),2.9)
 179CFLAGS := $(CPPFLAGS) -Wall -Wno-trigraphs
 180endif
 181endif
 182
 183# $(CPPFLAGS) sets -g, which causes gcc to pass a suitable -g<format>
 184# option to the assembler.
 185AFLAGS_DEBUG :=
 186
 187# turn jbsr into jsr for m68k
 188ifeq ($(ARCH),m68k)
 189ifeq ($(findstring 3.4,$(shell $(CC) --version)),3.4)
 190AFLAGS_DEBUG := -Wa,-gstabs,-S
 191endif
 192endif
 193
 194AFLAGS := $(AFLAGS_DEBUG) -D__ASSEMBLY__ $(CPPFLAGS)
 195
 196LDFLAGS += -Bstatic -T $(LDSCRIPT) $(PLATFORM_LDFLAGS)
 197ifneq ($(TEXT_BASE),)
 198LDFLAGS += -Ttext $(TEXT_BASE)
 199endif
 200
 201# Location of a usable BFD library, where we define "usable" as
 202# "built for ${HOST}, supports ${TARGET}".  Sensible values are
 203# - When cross-compiling: the root of the cross-environment
 204# - Linux/ppc (native): /usr
 205# - NetBSD/ppc (native): you lose ... (must extract these from the
 206#   binutils build directory, plus the native and U-Boot include
 207#   files don't like each other)
 208#
 209# So far, this is used only by tools/gdb/Makefile.
 210
 211ifeq ($(HOSTOS)-$(HOSTARCH),darwin-ppc)
 212BFD_ROOT_DIR =          /usr/local/tools
 213else
 214ifeq ($(HOSTARCH),$(ARCH))
 215# native
 216BFD_ROOT_DIR =          /usr
 217else
 218#BFD_ROOT_DIR =         /LinuxPPC/CDK           # Linux/i386
 219#BFD_ROOT_DIR =         /usr/pkg/cross          # NetBSD/i386
 220BFD_ROOT_DIR =          /opt/powerpc
 221endif
 222endif
 223
 224ifeq ($(PCI_CLOCK),PCI_66M)
 225CFLAGS := $(CFLAGS) -DPCI_66M
 226endif
 227
 228#########################################################################
 229
 230export  CONFIG_SHELL HPATH HOSTCC HOSTCFLAGS CROSS_COMPILE \
 231        AS LD CC CPP AR NM STRIP OBJCOPY OBJDUMP \
 232        MAKE
 233export  TEXT_BASE PLATFORM_CPPFLAGS PLATFORM_RELFLAGS CPPFLAGS CFLAGS AFLAGS
 234
 235#########################################################################
 236
 237ifndef REMOTE_BUILD
 238
 239%.s:    %.S
 240        $(CPP) $(AFLAGS) -o $@ $<
 241%.o:    %.S
 242        $(CC) $(AFLAGS) -c -o $@ $<
 243%.o:    %.c
 244        $(CC) $(CFLAGS) -c -o $@ $<
 245
 246else
 247
 248$(obj)%.s:      %.S
 249        $(CPP) $(AFLAGS) -o $@ $<
 250$(obj)%.o:      %.S
 251        $(CC) $(AFLAGS) -c -o $@ $<
 252$(obj)%.o:      %.c
 253        $(CC) $(CFLAGS) -c -o $@ $<
 254endif
 255
 256#########################################################################
 257