linux/arch/xtensa/Makefile
<<
>>
Prefs
   1#
   2# This file is subject to the terms and conditions of the GNU General Public
   3# License.  See the file "COPYING" in the main directory of this archive
   4# for more details.
   5#
   6# Copyright (C) 2001 - 2005  Tensilica Inc.
   7# Copyright (C) 2014 Cadence Design Systems Inc.
   8#
   9# This file is included by the global makefile so that you can add your own
  10# architecture-specific flags and dependencies. Remember to do have actions
  11# for "archclean" and "archdep" for cleaning up and making dependencies for
  12# this architecture
  13
  14# Core configuration.
  15# (Use VAR=<xtensa_config> to use another default compiler.)
  16
  17variant-y := $(patsubst "%",%,$(CONFIG_XTENSA_VARIANT_NAME))
  18
  19VARIANT = $(variant-y)
  20export VARIANT
  21
  22# Test for cross compiling
  23
  24ifneq ($(VARIANT),)
  25  COMPILE_ARCH = $(shell uname -m)
  26
  27  ifneq ($(COMPILE_ARCH), xtensa)
  28    ifndef CROSS_COMPILE
  29      CROSS_COMPILE = xtensa_$(VARIANT)-
  30    endif
  31  endif
  32endif
  33
  34# Platform configuration
  35
  36platform-$(CONFIG_XTENSA_PLATFORM_XT2000)       := xt2000
  37platform-$(CONFIG_XTENSA_PLATFORM_ISS)          := iss
  38platform-$(CONFIG_XTENSA_PLATFORM_XTFPGA)       := xtfpga
  39
  40PLATFORM = $(platform-y)
  41export PLATFORM
  42
  43# temporarily until string.h is fixed
  44KBUILD_CFLAGS += -ffreestanding -D__linux__
  45
  46KBUILD_CFLAGS += -pipe -mlongcalls
  47
  48KBUILD_CFLAGS += $(call cc-option,-mforce-no-pic,)
  49
  50ifneq ($(CONFIG_LD_NO_RELAX),)
  51LDFLAGS := --no-relax
  52endif
  53
  54ifeq ($(shell echo __XTENSA_EB__ | $(CC) -E - | grep -v "\#"),1)
  55CHECKFLAGS += -D__XTENSA_EB__
  56KBUILD_CPPFLAGS += -DCONFIG_CPU_BIG_ENDIAN
  57endif
  58ifeq ($(shell echo __XTENSA_EL__ | $(CC) -E - | grep -v "\#"),1)
  59CHECKFLAGS += -D__XTENSA_EL__
  60KBUILD_CPPFLAGS += -DCONFIG_CPU_LITTLE_ENDIAN
  61endif
  62
  63vardirs := $(patsubst %,arch/xtensa/variants/%/,$(variant-y))
  64plfdirs := $(patsubst %,arch/xtensa/platforms/%/,$(platform-y))
  65
  66ifeq ($(KBUILD_SRC),)
  67KBUILD_CPPFLAGS += $(patsubst %,-I%include,$(vardirs) $(plfdirs))
  68else
  69KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%include,$(vardirs) $(plfdirs))
  70endif
  71
  72KBUILD_DEFCONFIG := iss_defconfig
  73
  74# Only build variant and/or platform if it includes a Makefile
  75
  76buildvar := $(shell test -e $(srctree)/arch/xtensa/variants/$(VARIANT)/Makefile && echo arch/xtensa/variants/$(VARIANT)/)
  77buildplf := $(shell test -e $(srctree)/arch/xtensa/platforms/$(PLATFORM)/Makefile && echo arch/xtensa/platforms/$(PLATFORM)/)
  78
  79# Find libgcc.a
  80
  81LIBGCC := $(shell $(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name)
  82
  83head-y          := arch/xtensa/kernel/head.o
  84core-y          += arch/xtensa/kernel/ arch/xtensa/mm/
  85core-y          += $(buildvar) $(buildplf)
  86
  87libs-y          += arch/xtensa/lib/ $(LIBGCC)
  88drivers-$(CONFIG_OPROFILE)      += arch/xtensa/oprofile/
  89
  90ifneq ($(CONFIG_BUILTIN_DTB),"")
  91core-$(CONFIG_OF) += arch/xtensa/boot/dts/
  92endif
  93
  94boot            := arch/xtensa/boot
  95
  96all Image zImage uImage: vmlinux
  97        $(Q)$(MAKE) $(build)=$(boot) $@
  98
  99%.dtb:
 100        $(Q)$(MAKE) $(build)=$(boot)/dts $(boot)/dts/$@
 101
 102dtbs: scripts
 103        $(Q)$(MAKE) $(build)=$(boot)/dts
 104
 105define archhelp
 106  @echo '* Image       - Kernel ELF image with reset vector'
 107  @echo '* zImage      - Compressed kernel image (arch/xtensa/boot/images/zImage.*)'
 108  @echo '* uImage      - U-Boot wrapped image'
 109  @echo '  dtbs        - Build device tree blobs for enabled boards'
 110endef
 111