1 # 1 # 2 # arch/x86/boot/Makefile << 3 # << 4 # This file is subject to the terms and condit 2 # This file is subject to the terms and conditions of the GNU General Public 5 # License. See the file "COPYING" in the main 3 # License. See the file "COPYING" in the main directory of this archive 6 # for more details. 4 # for more details. 7 # 5 # 8 # Copyright (C) 1994 by Linus Torvalds !! 6 # Copyright (C) 1995, 1998, 2001, 2002 by Ralf Baechle 9 # Changed by many, many contributors over the !! 7 # Copyright (C) 2004 Maciej W. Rozycki 10 # 8 # 11 9 12 # If you want to preset the SVGA mode, uncomme !! 10 # 13 # set SVGA_MODE to whatever number you want. !! 11 # Some DECstations need all possible sections of an ECOFF executable 14 # Set it to -DSVGA_MODE=NORMAL_VGA if you just !! 12 # 15 # The number is the same as you would ordinari !! 13 ifdef CONFIG_MACH_DECSTATION 16 !! 14 e2eflag := -a 17 SVGA_MODE := -DSVGA_MODE=NORMAL_VGA !! 15 endif 18 << 19 targets := vmlinux.bin setup.bin setup << 20 targets += fdimage fdimage144 fdimage2 << 21 subdir- := compressed << 22 << 23 setup-y += a20.o bioscall.o cmdline.o << 24 setup-y += early_serial_console.o edd. << 25 setup-y += pm.o pmjump.o printf.o regs << 26 setup-y += video-mode.o version.o << 27 setup-$(CONFIG_X86_APM_BOOT) += apm.o << 28 << 29 # The link order of the video-*.o modules can << 30 # video-vga.o *must* be listed first, followed << 31 # Hardware-specific drivers should follow in t << 32 # probed, and video-bios.o should typically be << 33 setup-y += video-vga.o << 34 setup-y += video-vesa.o << 35 setup-y += video-bios.o << 36 << 37 targets += $(setup-y) << 38 hostprogs := tools/build << 39 hostprogs += mkcpustr << 40 << 41 HOST_EXTRACFLAGS += -I$(srctree)/tools/include << 42 -include include/generated << 43 -D__EXPORTED_HEADERS__ << 44 << 45 $(obj)/cpu.o: $(obj)/cpustr.h << 46 << 47 quiet_cmd_cpustr = CPUSTR $@ << 48 cmd_cpustr = $(obj)/mkcpustr > $@ << 49 $(obj)/cpustr.h: $(obj)/mkcpustr FORCE << 50 $(call if_changed,cpustr) << 51 targets += cpustr.h << 52 << 53 # -------------------------------------------- << 54 << 55 KBUILD_CFLAGS := $(REALMODE_CFLAGS) -D_SETUP << 56 KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMB << 57 KBUILD_CFLAGS += $(call cc-option,-fmacro-pr << 58 KBUILD_CFLAGS += -fno-asynchronous-unwind-ta << 59 KBUILD_CFLAGS += $(CONFIG_CC_IMPLICIT_FALLTH << 60 << 61 $(obj)/bzImage: asflags-y := $(SVGA_MODE) << 62 << 63 quiet_cmd_image = BUILD $@ << 64 silent_redirect_image = >/dev/null << 65 cmd_image = $(obj)/tools/build $(obj)/setup.bi << 66 $(obj)/zoffset. << 67 << 68 $(obj)/bzImage: $(obj)/setup.bin $(obj)/vmlinu << 69 $(call if_changed,image) << 70 @$(kecho) 'Kernel: $@ is ready' ' (#'$ << 71 << 72 OBJCOPYFLAGS_vmlinux.bin := -O binary -R .note << 73 $(obj)/vmlinux.bin: $(obj)/compressed/vmlinux << 74 $(call if_changed,objcopy) << 75 << 76 SETUP_OBJS = $(addprefix $(obj)/,$(setup-y)) << 77 << 78 sed-zoffset := -e 's/^\([0-9a-fA-F]*\) [a-zA-Z << 79 << 80 quiet_cmd_zoffset = ZOFFSET $@ << 81 cmd_zoffset = $(NM) $< | sed -n $(sed-zo << 82 << 83 targets += zoffset.h << 84 $(obj)/zoffset.h: $(obj)/compressed/vmlinux FO << 85 $(call if_changed,zoffset) << 86 16 >> 17 # >> 18 # Drop some uninteresting sections in the kernel. >> 19 # This is only relevant for ELF kernels but doesn't hurt a.out >> 20 # >> 21 drop-sections := .reginfo .mdebug .comment .note .pdr .options .MIPS.options >> 22 strip-flags := $(addprefix --remove-section=,$(drop-sections)) 87 23 88 AFLAGS_header.o += -I$(objtree)/$(obj) !! 24 hostprogs := elf2ecoff 89 $(obj)/header.o: $(obj)/zoffset.h << 90 25 91 LDFLAGS_setup.elf := -m elf_i386 -z noex !! 26 suffix-y := bin 92 $(obj)/setup.elf: $(src)/setup.ld $(SETUP_OBJS !! 27 suffix-$(CONFIG_KERNEL_BZIP2) := bz2 93 $(call if_changed,ld) !! 28 suffix-$(CONFIG_KERNEL_GZIP) := gz >> 29 suffix-$(CONFIG_KERNEL_LZMA) := lzma >> 30 suffix-$(CONFIG_KERNEL_LZO) := lzo >> 31 >> 32 targets := vmlinux.ecoff >> 33 quiet_cmd_ecoff = ECOFF $@ >> 34 cmd_ecoff = $(obj)/elf2ecoff $(VMLINUX) $@ $(e2eflag) >> 35 $(obj)/vmlinux.ecoff: $(obj)/elf2ecoff $(VMLINUX) FORCE >> 36 $(call if_changed,ecoff) >> 37 >> 38 targets += vmlinux.bin >> 39 quiet_cmd_bin = OBJCOPY $@ >> 40 cmd_bin = $(OBJCOPY) -O binary $(strip-flags) $(VMLINUX) $@ >> 41 $(obj)/vmlinux.bin: $(VMLINUX) FORCE >> 42 $(call if_changed,bin) >> 43 >> 44 targets += vmlinux.srec >> 45 quiet_cmd_srec = OBJCOPY $@ >> 46 cmd_srec = $(OBJCOPY) -S -O srec $(strip-flags) $(VMLINUX) $@ >> 47 $(obj)/vmlinux.srec: $(VMLINUX) FORCE >> 48 $(call if_changed,srec) 94 49 95 OBJCOPYFLAGS_setup.bin := -O binary !! 50 UIMAGE_LOADADDR = $(VMLINUX_LOAD_ADDRESS) 96 $(obj)/setup.bin: $(obj)/setup.elf FORCE !! 51 UIMAGE_ENTRYADDR = $(VMLINUX_ENTRY_ADDRESS) 97 $(call if_changed,objcopy) << 98 52 99 $(obj)/compressed/vmlinux: FORCE !! 53 # 100 $(Q)$(MAKE) $(build)=$(obj)/compressed !! 54 # Compressed vmlinux images >> 55 # 101 56 102 # Set this if you want to pass append argument !! 57 extra-y += vmlinux.bin.bz2 103 # bzdisk/fdimage/hdimage/isoimage kernel !! 58 extra-y += vmlinux.bin.gz 104 FDARGS = !! 59 extra-y += vmlinux.bin.lzma 105 # Set this if you want one or more initrds inc !! 60 extra-y += vmlinux.bin.lzo 106 FDINITRD = !! 61 >> 62 $(obj)/vmlinux.bin.bz2: $(obj)/vmlinux.bin FORCE >> 63 $(call if_changed,bzip2) 107 64 108 imgdeps = $(obj)/bzImage $(obj)/mtools.conf $( !! 65 $(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE >> 66 $(call if_changed,gzip) 109 67 110 $(obj)/mtools.conf: $(src)/mtools.conf.in !! 68 $(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FORCE 111 sed -e 's|@OBJ@|$(obj)|g' < $< > $@ !! 69 $(call if_changed,lzma) 112 70 113 targets += mtools.conf !! 71 $(obj)/vmlinux.bin.lzo: $(obj)/vmlinux.bin FORCE >> 72 $(call if_changed,lzo) 114 73 115 # genimage.sh requires bash, but it also has a !! 74 # 116 # external dependencies. !! 75 # Compressed u-boot images 117 quiet_cmd_genimage = GENIMAGE $3 !! 76 # 118 cmd_genimage = $(BASH) $(src)/genimage.s << 119 $(obj)/mtools.conf '$(FDARGS)' << 120 77 121 PHONY += bzdisk fdimage fdimage144 fdimage288 !! 78 targets += uImage >> 79 targets += uImage.bin >> 80 targets += uImage.bz2 >> 81 targets += uImage.gz >> 82 targets += uImage.lzma >> 83 targets += uImage.lzo >> 84 >> 85 $(obj)/uImage.bin: $(obj)/vmlinux.bin FORCE >> 86 $(call if_changed,uimage,none) >> 87 >> 88 $(obj)/uImage.bz2: $(obj)/vmlinux.bin.bz2 FORCE >> 89 $(call if_changed,uimage,bzip2) >> 90 >> 91 $(obj)/uImage.gz: $(obj)/vmlinux.bin.gz FORCE >> 92 $(call if_changed,uimage,gzip) >> 93 >> 94 $(obj)/uImage.lzma: $(obj)/vmlinux.bin.lzma FORCE >> 95 $(call if_changed,uimage,lzma) >> 96 >> 97 $(obj)/uImage.lzo: $(obj)/vmlinux.bin.lzo FORCE >> 98 $(call if_changed,uimage,lzo) >> 99 >> 100 $(obj)/uImage: $(obj)/uImage.$(suffix-y) >> 101 @ln -sf $(notdir $<) $@ >> 102 @echo ' Image $@ is ready' 122 103 123 # This requires write access to /dev/fd0 !! 104 # 124 # All images require syslinux to be installed; !! 105 # Flattened Image Tree (.itb) images 125 # EDK2/OVMF if the kernel is compiled with the !! 106 # 126 bzdisk: $(imgdeps) << 127 $(call cmd,genimage,bzdisk,/dev/fd0) << 128 107 129 fdimage fdimage144: $(imgdeps) !! 108 ifeq ($(ADDR_BITS),32) 130 $(call cmd,genimage,fdimage144,$(obj)/ !! 109 itb_addr_cells = 1 131 @$(kecho) 'Kernel: $(obj)/fdimage is r !! 110 endif >> 111 ifeq ($(ADDR_BITS),64) >> 112 itb_addr_cells = 2 >> 113 endif >> 114 >> 115 targets += vmlinux.its.S >> 116 >> 117 quiet_cmd_its_cat = CAT $@ >> 118 cmd_its_cat = cat $(real-prereqs) >$@ >> 119 >> 120 $(obj)/vmlinux.its.S: $(addprefix $(srctree)/arch/mips/$(PLATFORM)/,$(ITS_INPUTS)) FORCE >> 121 $(call if_changed,its_cat) >> 122 >> 123 targets += vmlinux.its >> 124 targets += vmlinux.gz.its >> 125 targets += vmlinux.bz2.its >> 126 targets += vmlinux.lzma.its >> 127 targets += vmlinux.lzo.its >> 128 >> 129 quiet_cmd_cpp_its_S = ITS $@ >> 130 cmd_cpp_its_S = $(CPP) -P -C -o $@ $< \ >> 131 -DKERNEL_NAME="\"Linux $(KERNELRELEASE)\"" \ >> 132 -DVMLINUX_BINARY="\"$(3)\"" \ >> 133 -DVMLINUX_COMPRESSION="\"$(2)\"" \ >> 134 -DVMLINUX_LOAD_ADDRESS=$(VMLINUX_LOAD_ADDRESS) \ >> 135 -DVMLINUX_ENTRY_ADDRESS=$(VMLINUX_ENTRY_ADDRESS) \ >> 136 -DADDR_BITS=$(ADDR_BITS) \ >> 137 -DADDR_CELLS=$(itb_addr_cells) >> 138 >> 139 $(obj)/vmlinux.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE >> 140 $(call if_changed,cpp_its_S,none,vmlinux.bin) >> 141 >> 142 $(obj)/vmlinux.gz.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE >> 143 $(call if_changed,cpp_its_S,gzip,vmlinux.bin.gz) >> 144 >> 145 $(obj)/vmlinux.bz2.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE >> 146 $(call if_changed,cpp_its_S,bzip2,vmlinux.bin.bz2) >> 147 >> 148 $(obj)/vmlinux.lzma.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE >> 149 $(call if_changed,cpp_its_S,lzma,vmlinux.bin.lzma) >> 150 >> 151 $(obj)/vmlinux.lzo.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE >> 152 $(call if_changed,cpp_its_S,lzo,vmlinux.bin.lzo) >> 153 >> 154 targets += vmlinux.itb >> 155 targets += vmlinux.gz.itb >> 156 targets += vmlinux.bz2.itb >> 157 targets += vmlinux.lzma.itb >> 158 targets += vmlinux.lzo.itb >> 159 >> 160 quiet_cmd_itb-image = ITB $@ >> 161 cmd_itb-image = \ >> 162 env PATH="$(objtree)/scripts/dtc:$(PATH)" \ >> 163 $(BASH) $(MKIMAGE) \ >> 164 -D "-I dts -O dtb -p 500 \ >> 165 --include $(objtree)/arch/mips \ >> 166 --warning no-unit_address_vs_reg" \ >> 167 -f $(2) $@ 132 168 133 fdimage288: $(imgdeps) !! 169 $(obj)/vmlinux.itb: $(obj)/vmlinux.its $(obj)/vmlinux.bin FORCE 134 $(call cmd,genimage,fdimage288,$(obj)/ !! 170 $(call if_changed,itb-image,$<) 135 @$(kecho) 'Kernel: $(obj)/fdimage is r << 136 171 137 hdimage: $(imgdeps) !! 172 $(obj)/vmlinux.%.itb: $(obj)/vmlinux.%.its $(obj)/vmlinux.bin.% FORCE 138 $(call cmd,genimage,hdimage,$(obj)/hdi !! 173 $(call if_changed,itb-image,$<) 139 @$(kecho) 'Kernel: $(obj)/hdimage is r << 140 174 141 isoimage: $(imgdeps) !! 175 # for cleaning 142 $(call cmd,genimage,isoimage,$(obj)/im !! 176 subdir- += compressed tools 143 @$(kecho) 'Kernel: $(obj)/image.iso is <<
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.