Makefile 4.34 KB
Newer Older
Linus Torvalds's avatar
Linus Torvalds committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
# This file is included by the global makefile so that you can add your own
# architecture-specific flags and dependencies.
#
# 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
# Changes for PPC by Gary Thomas
# Rewritten by Cort Dougan and Paul Mackerras
#

# This must match PAGE_OFFSET in include/asm-ppc/page.h.
KERNELLOAD	:= $(CONFIG_KERNEL_START)

HAS_BIARCH	:= $(call cc-option-yn, -m32)
ifeq ($(HAS_BIARCH),y)
AS		:= $(AS) -a32
LD		:= $(LD) -m elf32ppc
CC		:= $(CC) -m32
endif

LDFLAGS_vmlinux	:= -Ttext $(KERNELLOAD) -Bstatic
24
# The -Iarch/$(ARCH)/include is temporary while we are merging
25
KBUILD_CPPFLAGS	+= -Iarch/$(ARCH) -Iarch/$(ARCH)/include
26
KBUILD_AFLAGS	+= -Iarch/$(ARCH)
27
KBUILD_CFLAGS	+= -Iarch/$(ARCH) -msoft-float -pipe \
Linus Torvalds's avatar
Linus Torvalds committed
28
		-ffixed-r2 -mmultiple
29 30

# No AltiVec instruction when building kernel
31
KBUILD_CFLAGS	+= $(call cc-option, -mno-altivec)
32

33
CPP		= $(CC) -E $(KBUILD_CFLAGS)
34
# Temporary hack until we have migrated to asm-powerpc
35
LINUXINCLUDE    += -Iarch/$(ARCH)/include
Linus Torvalds's avatar
Linus Torvalds committed
36 37 38 39 40 41

CHECKFLAGS	+= -D__powerpc__

cpu-as-$(CONFIG_4xx)		+= -Wa,-m405
cpu-as-$(CONFIG_6xx)		+= -Wa,-maltivec

42
KBUILD_AFLAGS += $(cpu-as-y)
43
KBUILD_CFLAGS += $(cpu-as-y)
Linus Torvalds's avatar
Linus Torvalds committed
44 45

# Default to the common case.
46
KBUILD_DEFCONFIG := ebony_defconfig
Linus Torvalds's avatar
Linus Torvalds committed
47 48 49 50 51 52

head-y				:= arch/ppc/kernel/head.o
head-$(CONFIG_8xx)		:= arch/ppc/kernel/head_8xx.o
head-$(CONFIG_4xx)		:= arch/ppc/kernel/head_4xx.o
head-$(CONFIG_44x)		:= arch/ppc/kernel/head_44x.o

53
head-$(CONFIG_PPC_FPU)		+= arch/powerpc/kernel/fpu.o
Linus Torvalds's avatar
Linus Torvalds committed
54

55 56
core-y				+= arch/ppc/kernel/ arch/powerpc/kernel/ \
				   arch/ppc/platforms/ \
57
				   arch/ppc/mm/ arch/ppc/lib/ \
58 59
				   arch/ppc/syslib/ arch/powerpc/sysdev/ \
				   arch/powerpc/lib/
Linus Torvalds's avatar
Linus Torvalds committed
60
core-$(CONFIG_4xx)		+= arch/ppc/platforms/4xx/
61
core-$(CONFIG_MATH_EMULATION)	+= arch/powerpc/math-emu/
Linus Torvalds's avatar
Linus Torvalds committed
62 63 64 65 66
core-$(CONFIG_XMON)		+= arch/ppc/xmon/
drivers-$(CONFIG_8xx)		+= arch/ppc/8xx_io/
drivers-$(CONFIG_4xx)		+= arch/ppc/4xx_io/
drivers-$(CONFIG_CPM2)		+= arch/ppc/8260_io/

67
drivers-$(CONFIG_OPROFILE)	+= arch/powerpc/oprofile/
Linus Torvalds's avatar
Linus Torvalds committed
68 69 70

BOOT_TARGETS = zImage zImage.initrd znetboot znetboot.initrd vmlinux.sm

71
PHONY += $(BOOT_TARGETS)
Linus Torvalds's avatar
Linus Torvalds committed
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99

all: uImage zImage

CPPFLAGS_vmlinux.lds	:= -Upowerpc

# All the instructions talk about "make bzImage".
bzImage: zImage

boot := arch/$(ARCH)/boot

$(BOOT_TARGETS): vmlinux
	$(Q)$(MAKE) $(build)=$(boot) $@

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

define archhelp
  @echo '* zImage          - Compressed kernel image (arch/$(ARCH)/boot/images/zImage.*)'
  @echo '  uImage          - Create a bootable image for U-Boot / PPCBoot'
  @echo '  install         - Install kernel using'
  @echo '                    (your) ~/bin/installkernel or'
  @echo '                    (distribution) /sbin/installkernel or'
  @echo '                    install to $$(INSTALL_PATH) and run lilo'
  @echo '  *_defconfig     - Select default config from arch/$(ARCH)/ppc/configs'
endef

archclean:
	$(Q)$(MAKE) $(clean)=arch/ppc/boot
100 101
	# Temporary hack until we have migrated to asm-powerpc
	$(Q)rm -rf arch/$(ARCH)/include
Linus Torvalds's avatar
Linus Torvalds committed
102

103
archprepare: checkbin
Linus Torvalds's avatar
Linus Torvalds committed
104

105
# Temporary hack until we have migrated to asm-powerpc
106 107 108 109
include/asm: arch/$(ARCH)/include/asm
arch/$(ARCH)/include/asm:
	$(Q)if [ ! -d arch/$(ARCH)/include ]; then mkdir -p arch/$(ARCH)/include; fi
	$(Q)ln -fsn $(srctree)/include/asm-powerpc arch/$(ARCH)/include/asm
110

Linus Torvalds's avatar
Linus Torvalds committed
111 112 113 114 115 116 117 118
# Use the file '.tmp_gas_check' for binutils tests, as gas won't output
# to stdout and these checks are run even on install targets.
TOUT	:= .tmp_gas_check
# Ensure this is binutils 2.12.1 (or 2.12.90.0.7) or later for altivec
# instructions.
# gcc-3.4 and binutils-2.14 are a fatal combination.

checkbin:
Sam Ravnborg's avatar
Sam Ravnborg committed
119
	@if test "$(call cc-version)" = "0304" ; then \
Linus Torvalds's avatar
Linus Torvalds committed
120 121 122 123 124 125 126 127 128 129 130 131 132 133
		if ! /bin/echo mftb 5 | $(AS) -v -mppc -many -o $(TOUT) >/dev/null 2>&1 ; then \
			echo -n '*** ${VERSION}.${PATCHLEVEL} kernels no longer build '; \
			echo 'correctly with gcc-3.4 and your version of binutils.'; \
			echo '*** Please upgrade your binutils or downgrade your gcc'; \
			false; \
		fi ; \
	fi
	@if ! /bin/echo dssall | $(AS) -many -o $(TOUT) >/dev/null 2>&1 ; then \
		echo -n '*** ${VERSION}.${PATCHLEVEL} kernels no longer build ' ; \
		echo 'correctly with old versions of binutils.' ; \
		echo '*** Please upgrade your binutils to 2.12.1 or newer' ; \
		false ; \
	fi

134
CLEAN_FILES += $(TOUT)
Linus Torvalds's avatar
Linus Torvalds committed
135