~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/x86/boot/compressed/Makefile

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 # SPDX-License-Identifier: GPL-2.0
  2 #
  3 # linux/arch/x86/boot/compressed/Makefile
  4 #
  5 # create a compressed vmlinux image from the original vmlinux
  6 #
  7 # vmlinuz is:
  8 #       decompression code (*.o)
  9 #       asm globals (piggy.S), including:
 10 #               vmlinux.bin.(gz|bz2|lzma|...)
 11 #
 12 # vmlinux.bin is:
 13 #       vmlinux stripped of debugging and comments
 14 # vmlinux.bin.all is:
 15 #       vmlinux.bin + vmlinux.relocs
 16 # vmlinux.bin.(gz|bz2|lzma|...) is:
 17 #       (see scripts/Makefile.lib size_append)
 18 #       compressed vmlinux.bin.all + u32 size of vmlinux.bin.all
 19 
 20 targets := vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma \
 21         vmlinux.bin.xz vmlinux.bin.lzo vmlinux.bin.lz4 vmlinux.bin.zst
 22 
 23 # CLANG_FLAGS must come before any cc-disable-warning or cc-option calls in
 24 # case of cross compiling, as it has the '--target=' flag, which is needed to
 25 # avoid errors with '-march=i386', and future flags may depend on the target to
 26 # be valid.
 27 KBUILD_CFLAGS := -m$(BITS) -O2 $(CLANG_FLAGS)
 28 KBUILD_CFLAGS += -fno-strict-aliasing -fPIE
 29 KBUILD_CFLAGS += -Wundef
 30 KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
 31 cflags-$(CONFIG_X86_32) := -march=i386
 32 cflags-$(CONFIG_X86_64) := -mcmodel=small -mno-red-zone
 33 KBUILD_CFLAGS += $(cflags-y)
 34 KBUILD_CFLAGS += -mno-mmx -mno-sse
 35 KBUILD_CFLAGS += -ffreestanding -fshort-wchar
 36 KBUILD_CFLAGS += -fno-stack-protector
 37 KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member)
 38 KBUILD_CFLAGS += $(call cc-disable-warning, gnu)
 39 KBUILD_CFLAGS += -Wno-pointer-sign
 40 KBUILD_CFLAGS += $(call cc-option,-fmacro-prefix-map=$(srctree)/=)
 41 KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
 42 KBUILD_CFLAGS += -D__DISABLE_EXPORTS
 43 # Disable relocation relaxation in case the link is not PIE.
 44 KBUILD_CFLAGS += $(call cc-option,-Wa$(comma)-mrelax-relocations=no)
 45 KBUILD_CFLAGS += -include $(srctree)/include/linux/hidden.h
 46 
 47 # sev.c indirectly includes inat-table.h which is generated during
 48 # compilation and stored in $(objtree). Add the directory to the includes so
 49 # that the compiler finds it even with out-of-tree builds (make O=/some/path).
 50 CFLAGS_sev.o += -I$(objtree)/arch/x86/lib/
 51 
 52 KBUILD_AFLAGS  := $(KBUILD_CFLAGS) -D__ASSEMBLY__
 53 
 54 KBUILD_LDFLAGS := -m elf_$(UTS_MACHINE)
 55 KBUILD_LDFLAGS += $(call ld-option,--no-ld-generated-unwind-info)
 56 # Compressed kernel should be built as PIE since it may be loaded at any
 57 # address by the bootloader.
 58 LDFLAGS_vmlinux := -pie $(call ld-option, --no-dynamic-linker)
 59 ifdef CONFIG_LD_ORPHAN_WARN
 60 LDFLAGS_vmlinux += --orphan-handling=$(CONFIG_LD_ORPHAN_WARN_LEVEL)
 61 endif
 62 LDFLAGS_vmlinux += -z noexecstack
 63 ifeq ($(CONFIG_LD_IS_BFD),y)
 64 LDFLAGS_vmlinux += $(call ld-option,--no-warn-rwx-segments)
 65 endif
 66 ifeq ($(CONFIG_EFI_STUB),y)
 67 # ensure that the static EFI stub library will be pulled in, even if it is
 68 # never referenced explicitly from the startup code
 69 LDFLAGS_vmlinux += -u efi_pe_entry
 70 endif
 71 LDFLAGS_vmlinux += -T
 72 
 73 hostprogs       := mkpiggy
 74 HOST_EXTRACFLAGS += -I$(srctree)/tools/include
 75 
 76 sed-voffset := -e 's/^\([0-9a-fA-F]*\) [ABCDGRSTVW] \(_text\|__start_rodata\|__bss_start\|_end\)$$/\#define VO_\2 _AC(0x\1,UL)/p'
 77 
 78 quiet_cmd_voffset = VOFFSET $@
 79       cmd_voffset = $(NM) $< | sed -n $(sed-voffset) > $@
 80 
 81 targets += ../voffset.h
 82 
 83 $(obj)/../voffset.h: vmlinux FORCE
 84         $(call if_changed,voffset)
 85 
 86 $(obj)/misc.o: $(obj)/../voffset.h
 87 
 88 vmlinux-objs-y := $(obj)/vmlinux.lds $(obj)/kernel_info.o $(obj)/head_$(BITS).o \
 89         $(obj)/misc.o $(obj)/string.o $(obj)/cmdline.o $(obj)/error.o \
 90         $(obj)/piggy.o $(obj)/cpuflags.o
 91 
 92 vmlinux-objs-$(CONFIG_EARLY_PRINTK) += $(obj)/early_serial_console.o
 93 vmlinux-objs-$(CONFIG_RANDOMIZE_BASE) += $(obj)/kaslr.o
 94 ifdef CONFIG_X86_64
 95         vmlinux-objs-y += $(obj)/ident_map_64.o
 96         vmlinux-objs-y += $(obj)/idt_64.o $(obj)/idt_handlers_64.o
 97         vmlinux-objs-$(CONFIG_AMD_MEM_ENCRYPT) += $(obj)/mem_encrypt.o
 98         vmlinux-objs-y += $(obj)/pgtable_64.o
 99         vmlinux-objs-$(CONFIG_AMD_MEM_ENCRYPT) += $(obj)/sev.o
100 endif
101 
102 vmlinux-objs-$(CONFIG_ACPI) += $(obj)/acpi.o
103 vmlinux-objs-$(CONFIG_INTEL_TDX_GUEST) += $(obj)/tdx.o $(obj)/tdcall.o $(obj)/tdx-shared.o
104 vmlinux-objs-$(CONFIG_UNACCEPTED_MEMORY) += $(obj)/mem.o
105 
106 vmlinux-objs-$(CONFIG_EFI) += $(obj)/efi.o
107 vmlinux-objs-$(CONFIG_EFI_MIXED) += $(obj)/efi_mixed.o
108 vmlinux-libs-$(CONFIG_EFI_STUB) += $(objtree)/drivers/firmware/efi/libstub/lib.a
109 
110 $(obj)/vmlinux: $(vmlinux-objs-y) $(vmlinux-libs-y) FORCE
111         $(call if_changed,ld)
112 
113 OBJCOPYFLAGS_vmlinux.bin :=  -R .comment -S
114 $(obj)/vmlinux.bin: vmlinux FORCE
115         $(call if_changed,objcopy)
116 
117 targets += $(patsubst $(obj)/%,%,$(vmlinux-objs-y)) vmlinux.bin.all vmlinux.relocs
118 
119 # vmlinux.relocs is created by the vmlinux postlink step.
120 $(obj)/vmlinux.relocs: vmlinux
121         @true
122 
123 vmlinux.bin.all-y := $(obj)/vmlinux.bin
124 vmlinux.bin.all-$(CONFIG_X86_NEED_RELOCS) += $(obj)/vmlinux.relocs
125 
126 $(obj)/vmlinux.bin.gz: $(vmlinux.bin.all-y) FORCE
127         $(call if_changed,gzip)
128 $(obj)/vmlinux.bin.bz2: $(vmlinux.bin.all-y) FORCE
129         $(call if_changed,bzip2_with_size)
130 $(obj)/vmlinux.bin.lzma: $(vmlinux.bin.all-y) FORCE
131         $(call if_changed,lzma_with_size)
132 $(obj)/vmlinux.bin.xz: $(vmlinux.bin.all-y) FORCE
133         $(call if_changed,xzkern_with_size)
134 $(obj)/vmlinux.bin.lzo: $(vmlinux.bin.all-y) FORCE
135         $(call if_changed,lzo_with_size)
136 $(obj)/vmlinux.bin.lz4: $(vmlinux.bin.all-y) FORCE
137         $(call if_changed,lz4_with_size)
138 $(obj)/vmlinux.bin.zst: $(vmlinux.bin.all-y) FORCE
139         $(call if_changed,zstd22_with_size)
140 
141 suffix-$(CONFIG_KERNEL_GZIP)    := gz
142 suffix-$(CONFIG_KERNEL_BZIP2)   := bz2
143 suffix-$(CONFIG_KERNEL_LZMA)    := lzma
144 suffix-$(CONFIG_KERNEL_XZ)      := xz
145 suffix-$(CONFIG_KERNEL_LZO)     := lzo
146 suffix-$(CONFIG_KERNEL_LZ4)     := lz4
147 suffix-$(CONFIG_KERNEL_ZSTD)    := zst
148 
149 quiet_cmd_mkpiggy = MKPIGGY $@
150       cmd_mkpiggy = $(obj)/mkpiggy $< > $@
151 
152 targets += piggy.S
153 $(obj)/piggy.S: $(obj)/vmlinux.bin.$(suffix-y) $(obj)/mkpiggy FORCE
154         $(call if_changed,mkpiggy)

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php