linux-imx/arch/arc/Makefile
Vineet Gupta 0eca6fdb31 ARC: Assume multiplier is always present
It is unlikely that designs running Linux will not have multiplier.
Further the current support is not complete as tool don't generate a
multilib w/o multiplier.

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
2016-02-18 17:30:03 +05:30

3.9 KiB

Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)

This program is free software; you can redistribute it and/or modify

it under the terms of the GNU General Public License version 2 as

published by the Free Software Foundation.

UTS_MACHINE := arc

ifeq ($(CROSS_COMPILE),) CROSS_COMPILE := arc-linux- endif

KBUILD_DEFCONFIG := nsim_700_defconfig

cflags-y += -fno-common -pipe -fno-builtin -D__linux__ cflags-$(CONFIG_ISA_ARCOMPACT) += -mA7 cflags-$(CONFIG_ISA_ARCV2) += -mcpu=archs

ifdef CONFIG_ARC_CURR_IN_REG

For a global register defintion, make sure it gets passed to every file

We had a customer reported bug where some code built in kernel was NOT using

any kernel headers, and missing the r25 global register

Can't do unconditionally because of recursive include issues

due to <linux/thread_info.h>

LINUXINCLUDE += -include ${src}/arch/arc/include/asm/current.h endif

upto_gcc44 := $(call cc-ifversion, -le, 0404, y) atleast_gcc44 := $(call cc-ifversion, -ge, 0404, y) atleast_gcc48 := $(call cc-ifversion, -ge, 0408, y)

cflags-$(atleast_gcc44) += -fsection-anchors

cflags-$(CONFIG_ARC_HAS_LLSC) += -mlock cflags-$(CONFIG_ARC_HAS_SWAPE) += -mswape

ifdef CONFIG_ISA_ARCV2

ifndef CONFIG_ARC_HAS_LL64 cflags-y += -mno-ll64 endif

ifndef CONFIG_ARC_HAS_DIV_REM cflags-y += -mno-div-rem endif

endif

cflags-$(CONFIG_ARC_DW2_UNWIND) += -fasynchronous-unwind-tables

By default gcc 4.8 generates dwarf4 which kernel unwinder can't grok

ifeq ($(atleast_gcc48),y) cflags-$(CONFIG_ARC_DW2_UNWIND) += -gdwarf-2 endif

ifndef CONFIG_CC_OPTIMIZE_FOR_SIZE

Generic build system uses -O2, we want -O3

Note: No need to add to cflags-y as that happens anyways

ARCH_CFLAGS += -O3 endif

small data is default for elf32 tool-chain. If not usable, disable it

This also allows repurposing GP as scratch reg to gcc reg allocator

disable_small_data := y cflags-$(disable_small_data) += -mno-sdata -fcall-used-gp

cflags-$(CONFIG_CPU_BIG_ENDIAN) += -mbig-endian ldflags-$(CONFIG_CPU_BIG_ENDIAN) += -EB

STAR 9000518362: (fixed with binutils shipping with gcc 4.8)

arc-linux-uclibc-ld (buildroot) or arceb-elf32-ld (EZChip) don't accept

--build-id w/o "-marclinux". Default arc-elf32-ld is OK

ldflags-$(upto_gcc44) += -marclinux

LIBGCC := $(shell $(CC) $(cflags-y) --print-libgcc-file-name)

Modules with short calls might break for calls into builtin-kernel

KBUILD_CFLAGS_MODULE += -mlong-calls -mno-millicode

Finally dump eveything into kernel build system

KBUILD_CFLAGS += $(cflags-y) KBUILD_AFLAGS += $(KBUILD_CFLAGS) LDFLAGS += $(ldflags-y)

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

See arch/arc/Kbuild for content of core part of the kernel

core-y += arch/arc/

w/o this dtb won't embed into kernel binary

core-y += arch/arc/boot/dts/

core-$(CONFIG_ARC_PLAT_SIM) += arch/arc/plat-sim/ core-$(CONFIG_ARC_PLAT_TB10X) += arch/arc/plat-tb10x/ core-$(CONFIG_ARC_PLAT_AXS10X) += arch/arc/plat-axs10x/

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

libs-y += arch/arc/lib/ $(LIBGCC)

boot := arch/arc/boot

#default target for make without any arguements. KBUILD_IMAGE := bootpImage

all: $(KBUILD_IMAGE) bootpImage: vmlinux

boot_targets += uImage uImage.bin uImage.gz

$(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

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

Hacks to enable final link due to absence of link-time branch relexation

and gcc choosing optimal(shorter) branches at -O3

vineetg Feb 2010: -mlong-calls switched off for overall kernel build

However lib/decompress_inflate.o (.init.text) calls

zlib_inflate_workspacesize (.text) causing relocation errors.

Thus forcing all exten calls in this file to be long calls

export CFLAGS_decompress_inflate.o = -mmedium-calls export CFLAGS_initramfs.o = -mmedium-calls ifdef CONFIG_SMP export CFLAGS_core.o = -mmedium-calls endif