1 # 1 # 2 # This file is included by the global makefile 2 # This file is included by the global makefile so that you can add your own 3 # architecture-specific flags and dependencies !! 3 # architecture-specific flags and dependencies. Remember to do have actions 4 # !! 4 # for "archclean" and "archdep" for cleaning up and making dependencies for 5 # Copyright (C) 2002 - 2007 Jeff Dike (jdike@{ !! 5 # this architecture 6 # Licensed under the GPL !! 6 # 7 # !! 7 # This file is subject to the terms and conditions of the GNU General Public >> 8 # License. See the file "COPYING" in the main directory of this archive >> 9 # for more details. >> 10 # >> 11 # Copyright (C) 1994 by Linus Torvalds >> 12 # Changes for PPC by Gary Thomas >> 13 # Rewritten by Cort Dougan and Paul Mackerras >> 14 # >> 15 >> 16 # Be sure to change PAGE_OFFSET in include/asm-ppc/page.h to match >> 17 KERNELLOAD =$(CONFIG_KERNEL_START) >> 18 >> 19 LINKFLAGS = -T arch/ppc/vmlinux.lds -Ttext $(KERNELLOAD) -Bstatic >> 20 CPPFLAGS := $(CPPFLAGS) -I$(TOPDIR)/arch/$(ARCH) >> 21 AFLAGS := $(AFLAGS) -I$(TOPDIR)/arch/$(ARCH) >> 22 CFLAGS := $(CFLAGS) -I$(TOPDIR)/arch/$(ARCH) -fsigned-char \ >> 23 -msoft-float -pipe -ffixed-r2 -Wno-uninitialized \ >> 24 -mmultiple -mstring >> 25 HOSTCFLAGS += -I$(TOPDIR)/arch/$(ARCH) >> 26 CPP = $(CC) -E $(CFLAGS) 8 27 9 # select defconfig based on actual architectur !! 28 ifdef CONFIG_4xx 10 ifeq ($(SUBARCH),x86) !! 29 CFLAGS := $(CFLAGS) -Wa,-m405 11 ifeq ($(shell uname -m),x86_64) << 12 KBUILD_DEFCONFIG := x86_64_defconfig << 13 else << 14 KBUILD_DEFCONFIG := i386_defconfig << 15 endif << 16 else << 17 KBUILD_DEFCONFIG := $(SUBARCH)_defconf << 18 endif 30 endif 19 31 20 ARCH_DIR := arch/um !! 32 ifdef CONFIG_8xx 21 # We require bash because the vmlinux link and !! 33 CFLAGS := $(CFLAGS) -mcpu=860 22 # features. << 23 SHELL := bash << 24 << 25 MODE_INCLUDE += -I$(srctree)/$(ARCH_DIR)/in << 26 << 27 HEADER_ARCH := $(SUBARCH) << 28 << 29 ifneq ($(filter $(SUBARCH),x86 x86_64 i386),) << 30 HEADER_ARCH := x86 << 31 endif 34 endif 32 35 33 ifdef CONFIG_64BIT !! 36 ifdef CONFIG_PPC64BRIDGE 34 KBUILD_CFLAGS += -mcmodel=large !! 37 CFLAGS := $(CFLAGS) -Wa,-mppc64bridge 35 endif 38 endif 36 39 37 HOST_DIR := arch/$(HEADER_ARCH) !! 40 ifdef CONFIG_MORE_COMPILE_OPTIONS 38 !! 41 # Use sed to remove the quotes. 39 include $(srctree)/$(ARCH_DIR)/Makefile-skas !! 42 CFLAGS += $(shell echo $(CONFIG_COMPILE_OPTIONS) | sed -e 's/"//g') 40 include $(srctree)/$(HOST_DIR)/Makefile.um !! 43 endif 41 << 42 core-y += $(HOST_DIR)/um/ << 43 << 44 SHARED_HEADERS := $(ARCH_DIR)/include/shared << 45 ARCH_INCLUDE := -I$(srctree)/$(SHARED_HEADE << 46 ARCH_INCLUDE += -I$(srctree)/$(HOST_DIR)/um << 47 KBUILD_CPPFLAGS += -I$(srctree)/$(HOST_DIR)/um << 48 << 49 # -Dvmap=kernel_vmap prevents anything from re << 50 # named - it's a common symbol in libpcap, so << 51 # << 52 # Same things for in6addr_loopback and mktime << 53 # only get link-time error, luckily. << 54 # << 55 # -Dlongjmp=kernel_longjmp prevents anything f << 56 # embedded copy of longjmp, same thing for set << 57 # << 58 # These apply to USER_CFLAGS to. << 59 << 60 KBUILD_CFLAGS += $(CFLAGS) $(CFLAGS-y) -D__arc << 61 $(ARCH_INCLUDE) $(MODE_INCLUDE) -Dvmap << 62 -Dlongjmp=kernel_longjmp -Dsetjmp=kern << 63 -Din6addr_loopback=kernel_in6addr_loop << 64 -Din6addr_any=kernel_in6addr_any -Dstr << 65 << 66 KBUILD_RUSTFLAGS += -Crelocation-model=pie << 67 << 68 KBUILD_AFLAGS += $(ARCH_INCLUDE) << 69 << 70 USER_CFLAGS = $(patsubst $(KERNEL_DEFINES),,$( << 71 $(ARCH_INCLUDE) $(MODE_INCLUDE << 72 -D_FILE_OFFSET_BITS=64 -idiraf << 73 -idirafter $(objtree)/include << 74 << 75 #This will adjust *FLAGS accordingly to the pl << 76 include $(srctree)/$(ARCH_DIR)/Makefile-os-Lin << 77 << 78 KBUILD_CPPFLAGS += -I$(srctree)/$(HOST_DIR)/in << 79 -I$(srctree)/$(HOST_DIR)/in << 80 -I$(objtree)/$(HOST_DIR)/in << 81 -I$(objtree)/$(HOST_DIR)/in << 82 << 83 # -Derrno=kernel_errno - This turns all kernel << 84 # kernel_errno to separate them from the libc << 85 # in KBUILD_CFLAGS. Otherwise, it would cause << 86 # errnos. << 87 # These apply to kernelspace only. << 88 # << 89 # strip leading and trailing whitespace to mak << 90 # defines more robust << 91 << 92 KERNEL_DEFINES = $(strip -Derrno=kernel_errno << 93 -Dmktime=kernel_mktim << 94 KBUILD_CFLAGS += $(KERNEL_DEFINES) << 95 << 96 PHONY += linux << 97 << 98 all: linux << 99 << 100 linux: vmlinux << 101 @echo ' LINK $@' << 102 $(Q)ln -f $< $@ << 103 44 104 define archhelp !! 45 HEAD-y := arch/ppc/kernel/head.o 105 echo '* linux - Binary kernel image !! 46 HEAD-$(CONFIG_40x) := arch/ppc/kernel/head_4xx.o 106 echo ' compatibility only, !! 47 HEAD-$(CONFIG_44x) := arch/ppc/kernel/head_44x.o 107 echo ' real kernel binary, !! 48 HEAD-$(CONFIG_8xx) := arch/ppc/kernel/head_8xx.o 108 echo ' find in the kernel !! 49 HEAD-$(CONFIG_6xx) += arch/ppc/kernel/idle_6xx.o 109 endef !! 50 >> 51 HEAD := $(HEAD-y) >> 52 >> 53 ARCH_SUBDIRS = arch/ppc/kernel arch/ppc/platforms arch/ppc/mm arch/ppc/lib >> 54 SUBDIRS := $(SUBDIRS) $(ARCH_SUBDIRS) >> 55 CORE_FILES := arch/ppc/kernel/kernel.o arch/ppc/platforms/platform.o \ >> 56 arch/ppc/mm/mm.o arch/ppc/lib/lib.o $(CORE_FILES) >> 57 >> 58 ifdef CONFIG_MATH_EMULATION >> 59 SUBDIRS += arch/ppc/math-emu >> 60 CORE_FILES += arch/ppc/math-emu/math-emu.o >> 61 endif 110 62 111 archheaders: !! 63 ifdef CONFIG_XMON 112 $(Q)$(MAKE) -f $(srctree)/Makefile ARC !! 64 SUBDIRS += arch/ppc/xmon >> 65 CORE_FILES += arch/ppc/xmon/x.o >> 66 endif 113 67 114 archprepare: !! 68 MAKEBOOT = $(MAKE) -C arch/$(ARCH)/boot 115 $(Q)$(MAKE) $(build)=$(HOST_DIR)/um in << 116 69 117 LINK-$(CONFIG_LD_SCRIPT_STATIC) += -static !! 70 ifdef CONFIG_8xx 118 ifdef CONFIG_LD_SCRIPT_DYN !! 71 SUBDIRS += arch/ppc/8xx_io 119 LINK-$(call gcc-min-version, 60100)$(CONFIG_CC !! 72 DRIVERS += arch/ppc/8xx_io/8xx_io.o 120 endif 73 endif 121 LINK-$(CONFIG_LD_SCRIPT_DYN_RPATH) += -Wl,-rpa << 122 74 123 CFLAGS_NO_HARDENING := $(call cc-option, -fno- !! 75 ifdef CONFIG_CPM2 124 -fno-stack-protector $(call cc-option, !! 76 SUBDIRS += arch/ppc/cpm2_io >> 77 DRIVERS += arch/ppc/cpm2_io/cpm2_io.o >> 78 endif 125 79 126 # Options used by linker script !! 80 ifdef CONFIG_APUS 127 export LDS_START := $(START) !! 81 SUBDIRS += arch/ppc/amiga 128 export LDS_ELF_ARCH := $(ELF_ARCH) !! 82 CORE_FILES += arch/ppc/amiga/amiga.o 129 export LDS_ELF_FORMAT := $(ELF_FORMAT) !! 83 endif 130 84 131 # The wrappers will select whether using "mall !! 85 checks: 132 LINK_WRAPS = -Wl,--wrap,malloc -Wl,--wrap,free !! 86 @$(MAKE) -C arch/$(ARCH)/kernel checks 133 87 134 # Avoid binutils 2.39+ warnings by marking the !! 88 BOOT_TARGETS = zImage zImage.initrd znetboot znetboot.initrd uImage 135 # ignorning warnings for the kallsyms sections << 136 LDFLAGS_EXECSTACK = -z noexecstack << 137 ifeq ($(CONFIG_LD_IS_BFD),y) << 138 LDFLAGS_EXECSTACK += $(call ld-option,--no-war << 139 endif << 140 89 141 LD_FLAGS_CMDLINE = $(foreach opt,$(KBUILD_LDFL !! 90 # All the instructions talk about "make bzImage". >> 91 bzImage: zImage 142 92 143 # Used by link-vmlinux.sh which has special su !! 93 $(BOOT_TARGETS): vmlinux 144 export CFLAGS_vmlinux := $(LINK-y) $(LINK_WRAP !! 94 @$(MAKEBOOT) $@ 145 95 146 # When cleaning we don't include .config, so w !! 96 %_config: arch/ppc/configs/%_defconfig 147 # TT or skas makefiles and don't clean skas_pt !! 97 rm -f .config arch/ppc/defconfig 148 CLEAN_FILES += linux x.i gmon.out !! 98 cp -f arch/ppc/configs/$(@:config=defconfig) arch/ppc/defconfig 149 MRPROPER_FILES += $(HOST_DIR)/include/generate << 150 99 151 archclean: 100 archclean: 152 @find . \( -name '*.bb' -o -name '*.bb !! 101 rm -f arch/ppc/kernel/{mk_defs,ppc_defs.h,find_name,checks} 153 -o -name '*.gcov' \) -type f - !! 102 @$(MAKEBOOT) clean >> 103 >> 104 archmrproper: 154 105 155 export HEADER_ARCH SUBARCH USER_CFLAGS CFLAGS_ !! 106 archdep: scripts/mkdep >> 107 $(MAKEBOOT) fastdep
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.