Commit | Line | Data |
---|---|---|
1da177e4 | 1 | # |
96ae6ea0 | 2 | # arch/x86/boot/Makefile |
1da177e4 LT |
3 | # |
4 | # This file is subject to the terms and conditions of the GNU General Public | |
5 | # License. See the file "COPYING" in the main directory of this archive | |
6 | # for more details. | |
7 | # | |
8 | # Copyright (C) 1994 by Linus Torvalds | |
5e47c478 | 9 | # Changed by many, many contributors over the years. |
1da177e4 LT |
10 | # |
11 | ||
1da177e4 LT |
12 | # If you want to preset the SVGA mode, uncomment the next line and |
13 | # set SVGA_MODE to whatever number you want. | |
14 | # Set it to -DSVGA_MODE=NORMAL_VGA if you just want the EGA/VGA mode. | |
15 | # The number is the same as you would ordinarily press at bootup. | |
16 | ||
5e47c478 | 17 | SVGA_MODE := -DSVGA_MODE=NORMAL_VGA |
1da177e4 | 18 | |
5e47c478 | 19 | targets := vmlinux.bin setup.bin setup.elf bzImage |
f279b49f | 20 | targets += fdimage fdimage144 fdimage288 image.iso hdimage |
f0be6c6a | 21 | subdir- := compressed |
1da177e4 | 22 | |
dd78b973 | 23 | setup-y += a20.o bioscall.o cmdline.o copy.o cpu.o cpuflags.o cpucheck.o |
94916301 | 24 | setup-y += early_serial_console.o edd.o header.o main.o memory.o |
f4ed2877 YL |
25 | setup-y += pm.o pmjump.o printf.o regs.o string.o tty.o video.o |
26 | setup-y += video-mode.o version.o | |
a6b68076 | 27 | setup-$(CONFIG_X86_APM_BOOT) += apm.o |
4fd06960 PA |
28 | |
29 | # The link order of the video-*.o modules can matter. In particular, | |
30 | # video-vga.o *must* be listed first, followed by video-vesa.o. | |
31 | # Hardware-specific drivers should follow in the order they should be | |
32 | # probed, and video-bios.o should typically be last. | |
33 | setup-y += video-vga.o | |
34 | setup-y += video-vesa.o | |
35 | setup-y += video-bios.o | |
30c82645 | 36 | |
3fbc5416 | 37 | targets += $(setup-y) |
5f2fb52f MY |
38 | hostprogs := tools/build |
39 | hostprogs += mkcpustr | |
1da177e4 | 40 | |
b6eea87f MF |
41 | HOST_EXTRACFLAGS += -I$(srctree)/tools/include \ |
42 | -include include/generated/autoconf.h \ | |
446e1c86 PA |
43 | -D__EXPORTED_HEADERS__ |
44 | ||
f0be6c6a PA |
45 | $(obj)/cpu.o: $(obj)/cpustr.h |
46 | ||
47 | quiet_cmd_cpustr = CPUSTR $@ | |
48 | cmd_cpustr = $(obj)/mkcpustr > $@ | |
f0be6c6a PA |
49 | $(obj)/cpustr.h: $(obj)/mkcpustr FORCE |
50 | $(call if_changed,cpustr) | |
e3c7c105 | 51 | targets += cpustr.h |
1da177e4 LT |
52 | |
53 | # --------------------------------------------------------------------------- | |
54 | ||
0acba3f9 | 55 | KBUILD_CFLAGS := $(REALMODE_CFLAGS) -D_SETUP |
222d394d | 56 | KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__ |
9e2276fa | 57 | KBUILD_CFLAGS += $(call cc-option,-fmacro-prefix-map=$(srctree)/=) |
003602ad | 58 | KBUILD_CFLAGS += -fno-asynchronous-unwind-tables |
dd0716c2 | 59 | KBUILD_CFLAGS += $(CONFIG_CC_IMPLICIT_FALLTHROUGH) |
4fd06960 | 60 | |
5e47c478 | 61 | $(obj)/bzImage: asflags-y := $(SVGA_MODE) |
1da177e4 LT |
62 | |
63 | quiet_cmd_image = BUILD $@ | |
d460131d | 64 | silent_redirect_image = >/dev/null |
809373e2 | 65 | cmd_image = $(obj)/tools/build $(obj)/setup.bin $(obj)/vmlinux.bin \ |
d460131d | 66 | $(obj)/zoffset.h $@ $($(quiet)redirect_image) |
1da177e4 | 67 | |
5e47c478 | 68 | $(obj)/bzImage: $(obj)/setup.bin $(obj)/vmlinux.bin $(obj)/tools/build FORCE |
1da177e4 | 69 | $(call if_changed,image) |
083cad78 | 70 | @$(kecho) 'Kernel: $@ is ready' ' (#'$(or $(KBUILD_BUILD_VERSION),`cat .version`)')' |
1da177e4 | 71 | |
1622ac23 | 72 | OBJCOPYFLAGS_vmlinux.bin := -O binary -R .note -R .comment -S |
1da177e4 LT |
73 | $(obj)/vmlinux.bin: $(obj)/compressed/vmlinux FORCE |
74 | $(call if_changed,objcopy) | |
75 | ||
4fd06960 | 76 | SETUP_OBJS = $(addprefix $(obj)/,$(setup-y)) |
1da177e4 | 77 | |
34951f3c | 78 | sed-zoffset := -e 's/^\([0-9a-fA-F]*\) [a-zA-Z] \(startup_32\|efi.._stub_entry\|efi\(32\)\?_pe_entry\|input_data\|kernel_info\|_end\|_ehead\|_text\|_e\?data\|z_.*\)$$/\#define ZO_\2 0x\1/p' |
77d1a499 PA |
79 | |
80 | quiet_cmd_zoffset = ZOFFSET $@ | |
81 | cmd_zoffset = $(NM) $< | sed -n $(sed-zoffset) > $@ | |
82 | ||
83 | targets += zoffset.h | |
84 | $(obj)/zoffset.h: $(obj)/compressed/vmlinux FORCE | |
85 | $(call if_changed,zoffset) | |
099e1377 | 86 | |
099e1377 | 87 | |
58ab5e0c | 88 | AFLAGS_header.o += -I$(objtree)/$(obj) |
67b66625 | 89 | $(obj)/header.o: $(obj)/zoffset.h |
099e1377 | 90 | |
ffcf9c57 | 91 | LDFLAGS_setup.elf := -m elf_i386 -z noexecstack -T |
4fd06960 | 92 | $(obj)/setup.elf: $(src)/setup.ld $(SETUP_OBJS) FORCE |
1da177e4 LT |
93 | $(call if_changed,ld) |
94 | ||
4fd06960 | 95 | OBJCOPYFLAGS_setup.bin := -O binary |
4fd06960 PA |
96 | $(obj)/setup.bin: $(obj)/setup.elf FORCE |
97 | $(call if_changed,objcopy) | |
98 | ||
1da177e4 | 99 | $(obj)/compressed/vmlinux: FORCE |
d960c9ce | 100 | $(Q)$(MAKE) $(build)=$(obj)/compressed $@ |
1da177e4 | 101 | |
f9c5107c | 102 | # Set this if you want to pass append arguments to the |
f279b49f | 103 | # bzdisk/fdimage/hdimage/isoimage kernel |
f0be6c6a | 104 | FDARGS = |
f279b49f | 105 | # Set this if you want one or more initrds included in the image |
841b8a46 PA |
106 | FDINITRD = |
107 | ||
f279b49f | 108 | imgdeps = $(obj)/bzImage $(obj)/mtools.conf $(src)/genimage.sh |
1da177e4 LT |
109 | |
110 | $(obj)/mtools.conf: $(src)/mtools.conf.in | |
111 | sed -e 's|@OBJ@|$(obj)|g' < $< > $@ | |
112 | ||
f279b49f PAI |
113 | targets += mtools.conf |
114 | ||
115 | # genimage.sh requires bash, but it also has a bunch of other | |
116 | # external dependencies. | |
4366d57a | 117 | quiet_cmd_genimage = GENIMAGE $3 |
b1992c37 | 118 | cmd_genimage = $(BASH) $(src)/genimage.sh $2 $3 $(obj)/bzImage \ |
f279b49f | 119 | $(obj)/mtools.conf '$(FDARGS)' $(FDINITRD) |
4366d57a | 120 | |
08155126 | 121 | PHONY += bzdisk fdimage fdimage144 fdimage288 hdimage isoimage |
675a59b7 | 122 | |
1da177e4 | 123 | # This requires write access to /dev/fd0 |
f279b49f PAI |
124 | # All images require syslinux to be installed; hdimage also requires |
125 | # EDK2/OVMF if the kernel is compiled with the EFI stub. | |
126 | bzdisk: $(imgdeps) | |
4366d57a | 127 | $(call cmd,genimage,bzdisk,/dev/fd0) |
1da177e4 | 128 | |
f279b49f | 129 | fdimage fdimage144: $(imgdeps) |
4366d57a CD |
130 | $(call cmd,genimage,fdimage144,$(obj)/fdimage) |
131 | @$(kecho) 'Kernel: $(obj)/fdimage is ready' | |
1da177e4 | 132 | |
f279b49f | 133 | fdimage288: $(imgdeps) |
4366d57a CD |
134 | $(call cmd,genimage,fdimage288,$(obj)/fdimage) |
135 | @$(kecho) 'Kernel: $(obj)/fdimage is ready' | |
1da177e4 | 136 | |
f279b49f PAI |
137 | hdimage: $(imgdeps) |
138 | $(call cmd,genimage,hdimage,$(obj)/hdimage) | |
139 | @$(kecho) 'Kernel: $(obj)/hdimage is ready' | |
140 | ||
141 | isoimage: $(imgdeps) | |
4366d57a CD |
142 | $(call cmd,genimage,isoimage,$(obj)/image.iso) |
143 | @$(kecho) 'Kernel: $(obj)/image.iso is ready' |