| # |
| # 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 |
| PROCESSOR := arc700 |
| |
| KBUILD_DEFCONFIG := aa4_defconfig |
| |
| PLATFORM := ruby |
| export PLATFORM |
| |
| #LDFLAGS_vmlinux :=-X -T arch/$(ARCH)/kernel/vmlinux.lds |
| GZFLAGS :=-9 |
| KBUILD_CFLAGS += -Iarch/arc/include/asm/board-$(PLATFORM) -Iinclude/common -Iinclude/shared -Iinclude/kernel |
| KBUILD_CFLAGS += -mA7 -mlong-calls -fno-common -pipe -fno-builtin \ |
| -D__linux__ -fcall-used-gp -multcost=16 |
| |
| ifdef CONFIG_ARC_HAS_LLSC |
| KBUILD_CFLAGS += -mlock |
| endif |
| ifdef CONFIG_ARC_HAS_SWAPE |
| KBUILD_CFLAGS += -mswape |
| endif |
| ifdef CONFIG_ARC_HAS_RTSC |
| KBUILD_CFLAGS += -mrtsc |
| endif |
| # preprocessor macros due to above: __Xlock __Xswape __Xrtsc |
| |
| |
| # vineetg Oct 2010: ARC GCC 4.4.2 supports section anchors |
| KBUILD_CFLAGS += $(call cc-ifversion, -gt, 0402, -fsection-anchors) |
| |
| # Idea is to use -O3 for our builds (Default kernel makefile uses -O2) |
| # However doing that unconditionally here breaks -Os: |
| # our -O3 over-rides -Os set by top-level-makefile |
| # |
| ifndef CONFIG_CC_OPTIMIZE_FOR_SIZE |
| KBUILD_CFLAGS += -O3 |
| endif |
| |
| # vineetg, Oct 2009 |
| # Low level event tracing is sort of crude, as it relies on visualisation |
| # of log-buffer as a global array in Metaware debugger's "globals" Pane and |
| # then manually saving it to a file. However w/o -g, debugger can't show the |
| # non-scalar globals, hence this switch. |
| # Ideally we must use something like relay FS, but can't, because this tracing |
| # is generally done in case of weird faults like Machine check, to capture the |
| # dying kernel's last few events. Thus expecting multiple kernel/user |
| # daemons to haul data out of kernel in that state would be really stupid ! |
| ifeq ($(CONFIG_ARC_DBG_EVENT_TIMELINE),y) |
| KBUILD_CFLAGS += -g |
| endif |
| |
| MODFLAGS += -mlong-calls |
| |
| KBUILD_CFLAGS += $(shell if [ $(call cc-version, $(CC)) -gt 0400 ] ; then echo $(call cc-option,-mno-sdata); fi ;) |
| |
| ifdef CONFIG_ARC_STACK_UNWIND |
| # KBUILD_CFLAGS += -fasynchronous-unwind-tables |
| KBUILD_CFLAGS += -gdwarf-2 |
| endif |
| |
| LINUXINCLUDE += -include ${src}/arch/arc/include/asm/defines.h \ |
| -include ${src}/arch/arc/include/asm/current.h |
| |
| ifeq ($(CONFIG_CPU_BIG_ENDIAN),y) |
| KBUILD_CFLAGS += -mbig-endian |
| KBUILD_AFLAGS += -mbig-endian |
| LINKFLAGS += -EB |
| LDFLAGS += -EB |
| endif |
| |
| ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE |
| KBUILD_CFLAGS += -DNONINLINE_USR_CPY -DNONINLINE_MEMSET |
| endif |
| |
| KBUILD_CFLAGS += -include asm/current_reg.h -include common/ruby_config.h |
| |
| #setup AFLAGS from CFLAGS when we are done with all the CFLAGS |
| KBUILD_AFLAGS += $(KBUILD_CFLAGS) |
| |
| LIBGCC := $(shell $(CC) $(KBUILD_CFLAGS) --print-libgcc-file-name) |
| |
| TEXTADDR = 0x80002000 |
| |
| export LDFLAGS LIBGCC TEXTADDR GZFLAGS |
| |
| head-y := arch/arc/proc/$(PROCESSOR)/head.o \ |
| arch/arc/kernel/init_task.o |
| |
| core-y += arch/arc/kernel/ arch/arc/mm/ \ |
| arch/arc/proc/$(PROCESSOR)/ |
| |
| # vineetg Feb 2010: |
| # We switched to -mno-long-calls for overall kernel build |
| # However lib/decompress_inflate.o (.init.text) calls |
| # zlib_inflate_workspacethere (.text) causing relocation error. |
| # Thus forcing all exten calls in this file to be long calls |
| export CFLAGS_decompress_inflate.o = -mlong-calls |
| |
| core-$(CONFIG_OPROFILE) += arch/arc/oprofile/ |
| |
| drivers-y += arch/arc/drivers/ |
| drivers-$(CONFIG_QUANTENNA_RUBY) += drivers/ruby/ |
| drivers-$(CONFIG_QUANTENNA_TOPAZ) += drivers/topaz/ |
| |
| libs-y += arch/arc/lib/ $(LIBGCC) |
| |
| #default target for make without any arguements. |
| KBUILD_IMAGE := Image |
| |
| all: $(KBUILD_IMAGE) |
| |
| boot := arch/arc/boot |
| |
| # Sameer: People update symlinks to machine and proc folders |
| # here. We wil need it when we'll add more processors |
| # or boards. |
| |
| archprepare: maketools arch/arc/include/asm/board |
| |
| PHONY += maketools FORCE |
| |
| maketools: include/linux/version.h FORCE |
| $(Q)$(MAKE) $(build)=arch/$(ARCH)/tools |
| define arc-create-symlink |
| @echo 'SYMLINK arch/arc/include/asm/board -> ${src}/arch/arc/include/asm/board-$(PLATFORM)'; \ |
| ln -fsn board-$(PLATFORM) ${src}/arch/arc/include/asm/board; |
| endef |
| |
| arch/arc/include/asm/board: FORCE |
| $(arc-create-symlink) |
| |
| # Convert bzImage to zImage |
| bzImage: zImage |
| |
| zImage Image xipImage bootpImage uImage: vmlinux |
| $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ |
| |
| bootpImage: vmlinux |
| # $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ |
| |
| |
| CLEAN_FILES += \ |
| arch/$(ARCH)/proc/$(PROCESSOR)/linux.lds \ |
| |
| MRPROPER_FILES += \ |
| include/asm-$(ARCH)/arch \ |
| include/asm-$(ARCH)/proc \ |
| |
| # We use MRPROPER_FILES and CLEAN_FILES now |
| archclean: |
| $(Q)$(MAKE) $(clean)=$(boot) |