#
# metag/Makefile
#
# This file is included by the global makefile so that you can add your own
# architecture-specific flags and dependencies. Remember to do have actions
# for "archclean" cleaning up for this architecture.
#
# This file is subject to the terms and conditions of the GNU General Public
# License.  See the file "COPYING" in the main directory of this archive
# for more details.
#
# Copyright (C) 1994 by Linus Torvalds
#               2007,2008,2012 by Imagination Technologies Ltd.
#

LDFLAGS					:=
OBJCOPYFLAGS				:= -O binary -R .note -R .comment -S

checkflags-$(CONFIG_METAG_META12)	+= -DMETAC_1_2
checkflags-$(CONFIG_METAG_META21)	+= -DMETAC_2_1
CHECKFLAGS				+= -D__metag__ $(checkflags-y)

KBUILD_DEFCONFIG			:= tz1090_defconfig

sflags-$(CONFIG_METAG_META12)		+= -mmetac=1.2
ifeq ($(CONFIG_METAG_META12),y)
# Only use TBI API 1.4 if DSP is enabled for META12 cores
sflags-$(CONFIG_METAG_DSP)		+= -DTBI_1_4
endif
sflags-$(CONFIG_METAG_META21)		+= -mmetac=2.1 -DTBI_1_4

cflags-$(CONFIG_METAG_FUNCTION_TRACE)	+= -mhwtrace-leaf -mhwtrace-retpc
cflags-$(CONFIG_METAG_META21)		+= -mextensions=bex

KBUILD_CFLAGS				+= -pipe
KBUILD_CFLAGS				+= -ffunction-sections

KBUILD_CFLAGS				+= $(sflags-y) $(cflags-y)
KBUILD_AFLAGS				+= $(sflags-y)

LDFLAGS_vmlinux				:= $(ldflags-y)

head-y					:= arch/metag/kernel/head.o

core-y					+= arch/metag/boot/dts/
core-y					+= arch/metag/kernel/
core-y					+= arch/metag/mm/

libs-y					+= arch/metag/lib/
libs-y					+= arch/metag/tbx/

drivers-$(CONFIG_OPROFILE)		+= arch/metag/oprofile/

boot					:= arch/metag/boot

boot_targets				+= uImage
boot_targets				+= uImage.gz
boot_targets				+= uImage.bz2
boot_targets				+= uImage.xz
boot_targets				+= uImage.lzo
boot_targets				+= uImage.bin
boot_targets				+= vmlinux.bin

PHONY					+= $(boot_targets)

all: vmlinux.bin

$(boot_targets): vmlinux
	$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@

%.dtb %.dtb.S %.dtb.o: scripts
	$(Q)$(MAKE) $(build)=$(boot)/dts $(boot)/dts/$@

dtbs: scripts
	$(Q)$(MAKE) $(build)=$(boot)/dts dtbs

archclean:
	$(Q)$(MAKE) $(clean)=$(boot)

define archhelp
  echo  '* vmlinux.bin	- Binary kernel image (arch/$(ARCH)/boot/vmlinux.bin)'
  @echo '  uImage  	- Alias to bootable U-Boot image'
  @echo '  uImage.bin	- Kernel-only image for U-Boot (bin)'
  @echo '  uImage.gz	- Kernel-only image for U-Boot (gzip)'
  @echo '  uImage.bz2	- Kernel-only image for U-Boot (bzip2)'
  @echo '  uImage.xz	- Kernel-only image for U-Boot (xz)'
  @echo '  uImage.lzo	- Kernel-only image for U-Boot (lzo)'
  @echo '  dtbs		- Build device tree blobs for enabled boards'
endef
