9
0
Fork 0
barebox/arch/arm/Makefile

338 lines
11 KiB
Makefile
Raw Normal View History

2007-07-05 16:01:13 +00:00
CPPFLAGS += -D__ARM__ -fno-strict-aliasing
# Explicitly specifiy 32-bit ARM ISA since toolchain default can be -mthumb:
CPPFLAGS +=$(call cc-option,-marm,)
2007-07-05 16:01:14 +00:00
ifeq ($(CONFIG_CPU_BIG_ENDIAN),y)
CPPFLAGS += -mbig-endian
AS += -EB
LD += -EB
else
CPPFLAGS += -mlittle-endian
AS += -EL
LD += -EL
endif
comma = ,
# This selects which instruction set is used.
# Note that GCC does not numerically define an architecture version
# macro, but instead defines a whole series of macros which makes
# testing for a specific architecture or later rather impossible.
arch-$(CONFIG_CPU_32v7) :=-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7-a,-march=armv5t -Wa$(comma)-march=armv7-a)
arch-$(CONFIG_CPU_32v6) :=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6)
arch-$(CONFIG_CPU_32v5) :=-D__LINUX_ARM_ARCH__=5 $(call cc-option,-march=armv5te,-march=armv4t)
arch-$(CONFIG_CPU_32v4T) :=-D__LINUX_ARM_ARCH__=4 -march=armv4t
# This selects how we optimise for the processor.
tune-$(CONFIG_CPU_ARM920T) :=-mtune=arm9tdmi
tune-$(CONFIG_CPU_ARM926T) :=-mtune=arm9tdmi
tune-$(CONFIG_CPU_XSCALE) :=$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale
ifeq ($(CONFIG_AEABI),y)
CFLAGS_ABI :=-mabi=aapcs-linux -mno-thumb-interwork
else
CFLAGS_ABI :=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) $(call cc-option,-mno-thumb-interwork,)
endif
ifeq ($(CONFIG_ARM_UNWIND),y)
CFLAGS_ABI +=-funwind-tables
endif
ifeq ($(CONFIG_THUMB2_BAREBOX),y)
AFLAGS_AUTOIT :=$(call as-option,-Wa$(comma)-mimplicit-it=always,-Wa$(comma)-mauto-it)
AFLAGS_NOWARN :=$(call as-option,-Wa$(comma)-mno-warn-deprecated,-Wa$(comma)-W)
CFLAGS_THUMB2 :=-mthumb $(AFLAGS_AUTOIT) $(AFLAGS_NOWARN)
AFLAGS_THUMB2 :=$(CFLAGS_THUMB2) -Wa$(comma)-mthumb
endif
CPPFLAGS += $(CFLAGS_ABI) $(arch-y) $(tune-y) -msoft-float $(CFLAGS_THUMB2)
AFLAGS += -include asm/unified.h -msoft-float $(AFLAGS_THUMB2)
# Machine directory name. This list is sorted alphanumerically
# by CONFIG_* macro name.
machine-$(CONFIG_ARCH_AT91) := at91
machine-$(CONFIG_ARCH_BCM2835) := bcm2835
machine-$(CONFIG_ARCH_CLPS711X) := clps711x
machine-$(CONFIG_ARCH_EP93XX) := ep93xx
machine-$(CONFIG_ARCH_HIGHBANK) := highbank
machine-$(CONFIG_ARCH_IMX) := imx
machine-$(CONFIG_ARCH_MXS) := mxs
machine-$(CONFIG_ARCH_MVEBU) := mvebu
machine-$(CONFIG_ARCH_NOMADIK) := nomadik
machine-$(CONFIG_ARCH_NETX) := netx
machine-$(CONFIG_ARCH_OMAP) := omap
machine-$(CONFIG_ARCH_PXA) := pxa
machine-$(CONFIG_ARCH_SAMSUNG) := samsung
machine-$(CONFIG_ARCH_VERSATILE) := versatile
machine-$(CONFIG_ARCH_VEXPRESS) := vexpress
machine-$(CONFIG_ARCH_TEGRA) := tegra
machine-$(CONFIG_ARCH_ZYNQ) := zynq
# Board directory name. This list is sorted alphanumerically
# by CONFIG_* macro name.
board-$(CONFIG_MACH_A9M2410) += a9m2410
board-$(CONFIG_MACH_A9M2440) += a9m2440
board-$(CONFIG_MACH_ANIMEO_IP) += animeo_ip
board-$(CONFIG_MACH_ARCHOSG9) += archosg9
board-$(CONFIG_MACH_AT91RM9200EK) += at91rm9200ek
board-$(CONFIG_MACH_AT91SAM9260EK) += at91sam9260ek
board-$(CONFIG_MACH_AT91SAM9261EK) += at91sam9261ek
board-$(CONFIG_MACH_AT91SAM9263EK) += at91sam9263ek
board-$(CONFIG_MACH_AT91SAM9G10EK) += at91sam9261ek
board-$(CONFIG_MACH_AT91SAM9G20EK) += at91sam9260ek
board-$(CONFIG_MACH_AT91SAM9M10G45EK) += at91sam9m10g45ek
board-$(CONFIG_MACH_AT91SAM9M10IHD) += at91sam9m10ihd
board-$(CONFIG_MACH_AT91SAM9N12EK) += at91sam9n12ek
board-$(CONFIG_MACH_AT91SAM9X5EK) += at91sam9x5ek
board-$(CONFIG_MACH_BEAGLE) += beagle
board-$(CONFIG_MACH_BEAGLEBONE) += beaglebone
board-$(CONFIG_MACH_CCMX51) += ccxmx51
board-$(CONFIG_MACH_CFA10036) += crystalfontz-cfa10036
board-$(CONFIG_MACH_CHUMBY) += chumby_falconwing
board-$(CONFIG_MACH_CLEP7212) += clep7212
board-$(CONFIG_MACH_DSS11) += dss11
board-$(CONFIG_MACH_EDB93012) += edb93xx
board-$(CONFIG_MACH_EDB9301) += edb93xx
board-$(CONFIG_MACH_EDB9302A) += edb93xx
board-$(CONFIG_MACH_EDB9302) += edb93xx
board-$(CONFIG_MACH_EDB9307A) += edb93xx
board-$(CONFIG_MACH_EDB9307) += edb93xx
board-$(CONFIG_MACH_EDB9315A) += edb93xx
board-$(CONFIG_MACH_EDB9315) += edb93xx
board-$(CONFIG_MACH_EFIKA_MX_SMARTBOOK) += efika-mx-smartbook
board-$(CONFIG_MACH_EUKREA_CPUIMX25) += eukrea_cpuimx25
board-$(CONFIG_MACH_EUKREA_CPUIMX27) += eukrea_cpuimx27
board-$(CONFIG_MACH_EUKREA_CPUIMX35) += eukrea_cpuimx35
board-$(CONFIG_MACH_EUKREA_CPUIMX51SD) += eukrea_cpuimx51
board-$(CONFIG_MACH_FREESCALE_MX25_3STACK) += freescale-mx25-3-stack
board-$(CONFIG_MACH_FREESCALE_MX35_3STACK) += freescale-mx35-3-stack
board-$(CONFIG_MACH_FREESCALE_MX51_PDK) += freescale-mx51-pdk
board-$(CONFIG_MACH_FREESCALE_MX53_LOCO) += freescale-mx53-loco
board-$(CONFIG_MACH_FREESCALE_MX53_SMD) += freescale-mx53-smd
board-$(CONFIG_MACH_GE863) += telit-evk-pro3
board-$(CONFIG_MACH_GLOBALSCALE_GURUPLUG) += globalscale-guruplug
board-$(CONFIG_MACH_GLOBALSCALE_MIRABOX) += globalscale-mirabox
board-$(CONFIG_MACH_GUF_CUPID) += guf-cupid
board-$(CONFIG_MACH_GUF_VINCELL) += guf-vincell
board-$(CONFIG_MACH_HIGHBANK) += highbank
board-$(CONFIG_MACH_IMX21ADS) += imx21ads
board-$(CONFIG_MACH_IMX233_OLINUXINO) += imx233-olinuxino
board-$(CONFIG_MACH_IMX27ADS) += imx27ads
board-$(CONFIG_MACH_MARVELL_ARMADA_XP_GP) += marvell-armada-xp-gp
board-$(CONFIG_MACH_MINI2440) += friendlyarm-mini2440
board-$(CONFIG_MACH_MINI6410) += friendlyarm-mini6410
board-$(CONFIG_MACH_MIOA701) += mioa701
board-$(CONFIG_MACH_MMCCPU) += mmccpu
board-$(CONFIG_MACH_MX23EVK) += freescale-mx23-evk
board-$(CONFIG_MACH_MX28EVK) += freescale-mx28-evk
board-$(CONFIG_MACH_MX6Q_ARM2) += freescale-mx6-arm2
board-$(CONFIG_MACH_NESO) += guf-neso
board-$(CONFIG_MACH_NOMADIK_8815NHK) += nhk8815
board-$(CONFIG_MACH_NXDB500) += netx
board-$(CONFIG_MACH_OMAP343xSDP) += omap343xdsp
board-$(CONFIG_MACH_OMAP3EVM) += omap3evm
board-$(CONFIG_MACH_PANDA) += panda
board-$(CONFIG_MACH_PCA100) += phycard-i.MX27
board-$(CONFIG_MACH_PCAAL1) += phycard-a-l1
board-$(CONFIG_MACH_PCAAXL2) += phycard-a-xl2
board-$(CONFIG_MACH_PCM027) += pcm027
board-$(CONFIG_MACH_PCM037) += pcm037
board-$(CONFIG_MACH_PCM038) += pcm038
board-$(CONFIG_MACH_PCM043) += pcm043
board-$(CONFIG_MACH_PCM049) += pcm049
board-$(CONFIG_MACH_PCM051) += pcm051
board-$(CONFIG_MACH_PLATHOME_OPENBLOCKS_AX3) += plathome-openblocks-ax3
board-$(CONFIG_MACH_PM9261) += pm9261
board-$(CONFIG_MACH_PM9263) += pm9263
board-$(CONFIG_MACH_PM9G45) += pm9g45
board-$(CONFIG_MACH_QIL_A9260) += qil-a926x
board-$(CONFIG_MACH_QIL_A9G20) += qil-a926x
board-$(CONFIG_MACH_REALQ7) += dmo-mx6-realq7
board-$(CONFIG_MACH_RPI) += raspberry-pi
board-$(CONFIG_MACH_SABRELITE) += freescale-mx6-sabrelite
board-$(CONFIG_MACH_SABRESD) += freescale-mx6-sabresd
board-$(CONFIG_MACH_SAMA5D3XEK) += sama5d3xek
board-$(CONFIG_MACH_SCB9328) += scb9328
board-$(CONFIG_MACH_SOLIDRUN_CUBOX) += solidrun-cubox
board-$(CONFIG_MACH_TINY210) += friendlyarm-tiny210
board-$(CONFIG_MACH_TINY6410) += friendlyarm-tiny6410
board-$(CONFIG_MACH_TNY_A9260) += tny-a926x
board-$(CONFIG_MACH_TNY_A9263) += tny-a926x
board-$(CONFIG_MACH_TNY_A9G20) += tny-a926x
board-$(CONFIG_MACH_TOSHIBA_AC100) += toshiba-ac100
board-$(CONFIG_MACH_TQMA53) += tqma53
board-$(CONFIG_MACH_TX25) += karo-tx25
board-$(CONFIG_MACH_TX28) += karo-tx28
board-$(CONFIG_MACH_TX51) += karo-tx51
board-$(CONFIG_MACH_TX53) += karo-tx53
board-$(CONFIG_MACH_USB_A9260) += usb-a926x
board-$(CONFIG_MACH_USB_A9263) += usb-a926x
board-$(CONFIG_MACH_USB_A9G20) += usb-a926x
board-$(CONFIG_MACH_VERSATILEPB) += versatile
board-$(CONFIG_MACH_VEXPRESS) += vexpress
board-$(CONFIG_MACH_ZEDBOARD) += avnet-zedboard
machdirs := $(patsubst %,arch/arm/mach-%/,$(machine-y))
ifeq ($(KBUILD_SRC),)
CPPFLAGS += $(patsubst %,-I%include,$(machdirs))
else
CPPFLAGS += $(patsubst %,-I$(srctree)/%include,$(machdirs))
endif
2007-07-05 16:01:24 +00:00
TEXT_BASE = $(CONFIG_TEXT_BASE)
2007-07-05 16:01:14 +00:00
CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
2007-07-05 16:01:14 +00:00
ifndef CONFIG_MODULES
# Add cleanup flags
CPPFLAGS += -fdata-sections -ffunction-sections
LDFLAGS_barebox += -static --gc-sections
endif
ifdef CONFIG_RELOCATABLE
LDFLAGS_barebox += -pie
endif
ifdef CONFIG_IMAGE_COMPRESSION
KBUILD_BINARY := arch/arm/pbl/zbarebox.bin
else
KBUILD_BINARY := barebox.bin
endif
barebox.netx: $(KBUILD_BINARY)
$(Q)scripts/gen_netx_image -i $< -o barebox.netx \
--sdramctrl=$(CONFIG_NETX_SDRAM_CTRL) \
--sdramtimctrl=$(CONFIG_NETX_SDRAM_TIMING_CTRL) \
--memctrl=$(CONFIG_NETX_MEM_CTRL) \
--entrypoint=$(CONFIG_TEXT_BASE) \
--cookie=$(CONFIG_NETX_COOKIE);
ifeq ($(machine-y),netx)
KBUILD_IMAGE := barebox.netx
endif
barebox.s5p: $(KBUILD_BINARY)
$(Q)scripts/s5p_cksum $< barebox.s5p
ifeq ($(CONFIG_ARCH_S5PCxx),y)
KBUILD_IMAGE := barebox.s5p
endif
quiet_cmd_mlo ?= IFT $@
cmd_mlo ?= scripts/omap_signGP $< $(TEXT_BASE) 1; \
test -e $<.ift && mv $<.ift MLO
MLO: $(KBUILD_BINARY)
$(call if_changed,mlo)
ifeq ($(CONFIG_OMAP_BUILD_IFT),y)
KBUILD_IMAGE := MLO
endif
quiet_cmd_davinci_ubl_image = UBL-IMG $@
cmd_davinci_ubl_image = set -e; \
scripts/mkublheader $< > $@; \
cat $< >> $@
barebox.ubl: $(KBUILD_BINARY) FORCE
$(call if_changed,davinci_ubl_image)
ifeq ($(CONFIG_ARCH_DAVINCI),y)
KBUILD_IMAGE := barebox.ubl
endif
quiet_cmd_am35xx_spi_image = SPI-IMG $@
cmd_am35xx_spi_image = scripts/mk-am35xx-spi-image $< > $@
barebox.spi: $(KBUILD_BINARY) FORCE
$(call if_changed,am35xx_spi_image)
ifeq ($(CONFIG_OMAP_BUILD_SPI),y)
KBUILD_IMAGE := barebox.spi
endif
quiet_cmd_zynq_image = ZYNQ-IMG $@
cmd_zynq_image = scripts/zynq_mkimage $< $@
barebox.zynq: $(KBUILD_BINARY) FORCE
$(call if_changed,zynq_image)
ifeq ($(machine-y),zynq)
KBUILD_IMAGE := barebox.zynq
endif
CFG_barebox.imx := $(src)/arch/arm/boards/$(board-y)/flash-header.imxcfg
barebox.imx: $(KBUILD_BINARY) FORCE
$(call if_changed,imx_image)
ifeq ($(CONFIG_ARCH_IMX_INTERNAL_BOOT_USE_IMXIMAGE),y)
KBUILD_IMAGE := barebox.imx
endif
arm: integrate kwbimage in the image generation When a ARCH_MVEBU platform is selected, generate barebox.kwb and barebox.kwbuart images from barebox.bin, using kwbimage. barebox.kwb is generated by executing kwbimage on the board kwbimage.cfg file, and is therefore designed to be booted from the default boot media of the board, as defined by kwbimage.cfg (typically a NAND flash or SPI flash). barebox.kwbuart is generated by executing kwbimage on the board kwbimage.cfg file, but by overriding the boot media to be UART. This image is suitable for usage with the kwbtool and is generally useful for recovery purposes. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Tested-by: Gregory CLEMENT <gregory.clement@free-electrons.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Squashed this fixup: arm: ensure the build doesn't fail when kwbimage lacks the binary blob mach-mvebu images for Armada 370 and Armada XP SoC require a DDR3 training code which should be extracted from existing bootable images for the relevant board. When such binary blob has not been extracted, the build of the .kwb and .kwbuart images will fail. This is annoying as it makes the build of all Armada 370/XP defconfig fail, which can be a problem for automated builds. This proposal makes the failure of kwbimage not a fatal failure for the build process, and shows a warning. The user therefore sees: ==================================================================== KWB barebox.kwb Didn't find the file 'plathome-openblocks-ax3-binary.0' in '/home/thomas/projets/barebox' which is mandatory to generate the image This file generally contains the DDR3 training code, and should be extracted from an existing bootable image for your board. See 'kwbimage -x' to extract it from an existing image. Could not create image WARNING: Couldn't create KWB image due to previous errors. KWBUART barebox.kwbuart Didn't find the file 'plathome-openblocks-ax3-binary.0' in '/home/thomas/projets/barebox' which is mandatory to generate the image This file generally contains the DDR3 training code, and should be extracted from an existing bootable image for your board. See 'kwbimage -x' to extract it from an existing image. Could not create image WARNING Couldn't create KWB image due to previous errors. ==================================================================== The only drawback is that barebox-flash-image, which normally points to barebox.kwb, becomes a stale symbolic link. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2013-05-09 09:52:48 +00:00
KWBIMAGE_OPTS = \
-c -i $(srctree)/$(BOARD)/kwbimage.cfg -d $(TEXT_BASE) -e $(TEXT_BASE)
quiet_cmd_kwbimage = KWB $@
cmd_kwbimage = scripts/kwbimage -p $< $(KWBIMAGE_OPTS) -o $@ || \
echo "WARNING: Couldn't create KWB image due to previous errors."
quiet_cmd_kwbimage_uart = KWBUART $@
cmd_kwbimage_uart = scripts/kwbimage -m uart -p $< $(KWBIMAGE_OPTS) -o $@ || \
echo "WARNING Couldn't create KWB image due to previous errors."
barebox.kwb: $(KBUILD_BINARY) FORCE
$(call if_changed,kwbimage)
barebox.kwbuart: $(KBUILD_BINARY) FORCE
$(call if_changed,kwbimage_uart)
ifeq ($(CONFIG_ARCH_MVEBU),y)
KBUILD_IMAGE := barebox.kwb barebox.kwbuart
endif
pbl := arch/arm/pbl
$(pbl)/zbarebox.S $(pbl)/zbarebox.bin $(pbl)/zbarebox: barebox.bin FORCE
$(Q)$(MAKE) $(build)=$(pbl) $@
archclean:
$(MAKE) $(clean)=$(pbl)
dts := arch/arm/dts
%.dtb: scripts
$(Q)$(MAKE) $(build)=$(dts) $(dts)/$@
KBUILD_IMAGE ?= $(KBUILD_BINARY)
2007-07-05 16:01:14 +00:00
archprepare: maketools
maketools:
$(Q)$(MAKE) $(build)=arch/arm/tools include/generated/mach-types.h
2007-07-05 16:01:14 +00:00
PHONY += maketools
ifneq ($(board-y),)
BOARD := arch/arm/boards/$(board-y)/
2007-07-05 16:01:14 +00:00
else
BOARD :=
2007-07-05 16:01:14 +00:00
endif
2007-10-17 15:57:55 +00:00
ifneq ($(machine-y),)
MACH := arch/arm/mach-$(machine-y)/
2007-07-05 16:01:14 +00:00
else
MACH :=
2007-07-05 16:01:14 +00:00
endif
2007-07-05 16:01:59 +00:00
common-y += $(BOARD) $(MACH)
common-y += arch/arm/lib/ arch/arm/cpu/
common-$(CONFIG_OFTREE) += arch/arm/dts/
lds-y := arch/arm/lib/barebox.lds
common- += $(patsubst %,arch/arm/boards/%/,$(board-))
CLEAN_FILES += include/generated/mach-types.h arch/arm/lib/barebox.lds barebox-flash-image