History

Kbuild: centralize MKIMAGE and cmd_uimage definitions

All ARCHs have the same definition of MKIMAGE. Move it to Makefile.lib to avoid duplication. All ARCHs have similar definitions of cmd_uimage. Place a sufficiently parameterized version in Makefile.lib to avoid duplication.

Stephen Warren committed 14 years ago

Commit e3393641 parent f75a8df8 files · +54 −60Browse files

Unified · Split

8 files
  1. arch/arm/boot/Makefile +9 −14
  2. arch/avr32/boot/images/Makefile +3 −6
  3. arch/blackfin/boot/Makefile +8 −11
  4. arch/microblaze/boot/Makefile +3 −7
  5. arch/sh/boot/Makefile +2 −6
  6. arch/sparc/boot/Makefile +3 −6
  7. arch/unicore32/boot/Makefile +2 −10
  8. scripts/Makefile.lib +24 −0
arch/arm/boot/Makefile+9−14
@@ -11,8 +11,6 @@ · 10 unmodified lines
1111 # Copyright (C) 1995-2002 Russell King
1212 #
1313
14−MKIMAGE := $(srctree)/scripts/mkuboot.sh
15−
1614 ifneq ($(MACHINE),)
1715 include $(srctree)/$(MACHINE)/Makefile.boot
1816 endif
@@ -69,22 +67,19 @@ $(obj)/dtbs: $(addprefix $(obj)/, $(dtb-y)) · 50 unmodified lines
6967
7068 clean-files := *.dtb
7169
72−quiet_cmd_uimage = UIMAGE $@
73− cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux -T kernel \
74− -C none -a $(LOADADDR) -e $(STARTADDR) \
75− -n 'Linux-$(KERNELRELEASE)' -d $< $@
76−
77−ifeq ($(CONFIG_ZBOOT_ROM),y)
78−$(obj)/uImage: LOADADDR=$(CONFIG_ZBOOT_ROM_TEXT)
70+ifneq ($(LOADADDR),)
71+ UIMAGE_LOADADDR=$(LOADADDR)
7972 else
80−$(obj)/uImage: LOADADDR=$(ZRELADDR)
73+ ifeq ($(CONFIG_ZBOOT_ROM),y)
74+ UIMAGE_LOADADDR=$(CONFIG_ZBOOT_ROM_TEXT)
75+ else
76+ UIMAGE_LOADADDR=$(ZRELADDR)
77+ endif
8178 endif
8279
83−$(obj)/uImage: STARTADDR=$(LOADADDR)
84−
8580 check_for_multiple_loadaddr = \
86−if [ $(words $(LOADADDR)) -gt 1 ]; then \
87− echo 'multiple load addresses: $(LOADADDR)'; \
81+if [ $(words $(UIMAGE_LOADADDR)) -gt 1 ]; then \
82+ echo 'multiple load addresses: $(UIMAGE_LOADADDR)'; \
8883 echo 'This is incompatible with uImages'; \
8984 echo 'Specify LOADADDR on the commandline to build an uImage'; \
9085 false; \
arch/avr32/boot/images/Makefile+3−6
@@ -6,8 +6,6 @@ · 5 unmodified lines
66 # for more details.
77 #
88
9−MKIMAGE := $(srctree)/scripts/mkuboot.sh
10−
119 extra-y := vmlinux.bin vmlinux.gz
1210
1311 OBJCOPYFLAGS_vmlinux.bin := -O binary -R .note.gnu.build-id
@@ -17,10 +15,9 @@ $(obj)/vmlinux.bin: vmlinux FORCE · 3 unmodified lines
1715 $(obj)/vmlinux.gz: $(obj)/vmlinux.bin FORCE
1816 $(call if_changed,gzip)
1917
20−quiet_cmd_uimage = UIMAGE $@
21− cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A avr32 -O linux -T kernel \
22− -C gzip -a $(CONFIG_LOAD_ADDRESS) -e $(CONFIG_ENTRY_ADDRESS) \
23− -n 'Linux-$(KERNELRELEASE)' -d $< $@
18+UIMAGE_LOADADDR = $(CONFIG_LOAD_ADDRESS)
19+UIMAGE_ENTRYADDR = $(CONFIG_ENTRY_ADDRESS)
20+UIMAGE_COMPRESSION = gzip
2421
2522 targets += uImage uImage.srec
2623 $(obj)/uImage: $(obj)/vmlinux.gz
arch/blackfin/boot/Makefile+8−11
@@ -6,20 +6,17 @@ · 5 unmodified lines
66 # for more details.
77 #
88
9−MKIMAGE := $(srctree)/scripts/mkuboot.sh
10−
119 targets := vmImage vmImage.bin vmImage.bz2 vmImage.gz vmImage.lzma vmImage.lzo vmImage.xip
1210 extra-y += vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma vmlinux.bin.lzo vmlinux.bin.xip
1311
14−UIMAGE_OPTS-y :=
15−UIMAGE_OPTS-$(CONFIG_RAMKERNEL) += -a $(CONFIG_BOOT_LOAD)
16−UIMAGE_OPTS-$(CONFIG_ROMKERNEL) += -a $(CONFIG_ROM_BASE) -x
17−
18−quiet_cmd_uimage = UIMAGE $@
19− cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A $(ARCH) -O linux -T kernel \
20− -C $(2) -n '$(CPU_REV)-$(KERNELRELEASE)' \
21− -e $(shell $(NM) vmlinux | awk '$$NF == "__start" {print $$1}') \
22− $(UIMAGE_OPTS-y) -d $< $@
12+ifeq ($(CONFIG_RAMKERNEL),y)
13+UIMAGE_LOADADDR = $(CONFIG_BOOT_LOAD)
14+else # CONFIG_ROMKERNEL must be set
15+UIMAGE_LOADADDR = $(CONFIG_ROM_BASE)
16+endif
17+UIMAGE_ENTRYADDR = $(shell $(NM) vmlinux | awk '$$NF == "__start" {print $$1}')
18+UIMAGE_NAME = '$(CPU_REV)-$(KERNELRELEASE)'
19+UIMAGE_OPTS-$(CONFIG_ROMKERNEL) += -x
2320
2421 $(obj)/vmlinux.bin: vmlinux FORCE
2522 $(call if_changed,objcopy)
arch/microblaze/boot/Makefile+3−7
@@ -2,8 +2,6 @@ · 1 unmodified line
22 # arch/microblaze/boot/Makefile
33 #
44
5−MKIMAGE := $(srctree)/scripts/mkuboot.sh
6−
75 obj-y += linked_dtb.o
86
97 targets := linux.bin linux.bin.gz simpleImage.%
@@ -35,11 +33,9 @@ quiet_cmd_strip = STRIP $@ · 25 unmodified lines
3533 cmd_strip = $(STRIP) -K microblaze_start -K _end -K __log_buf \
3634 -K _fdt_start vmlinux -o $@
3735
38−quiet_cmd_uimage = UIMAGE $@.ub
39− cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A microblaze -O linux -T kernel \
40− -C none -n 'Linux-$(KERNELRELEASE)' \
41− -a $(CONFIG_KERNEL_BASE_ADDR) -e $(CONFIG_KERNEL_BASE_ADDR) \
42− -d $@ $@.ub
36+UIMAGE_IN = $@
37+UIMAGE_OUT = $@.ub
38+UIMAGE_LOADADDR = $(CONFIG_KERNEL_BASE_ADDR)
4339
4440 $(obj)/simpleImage.%: vmlinux FORCE
4541 $(call if_changed,cp,.unstrip)
arch/sh/boot/Makefile+2−6
@@ -8,8 +8,6 @@ · 7 unmodified lines
88 # Copyright (C) 1999 Stuart Menefy
99 #
1010
11−MKIMAGE := $(srctree)/scripts/mkuboot.sh
12−
1311 #
1412 # Assign safe dummy values if these variables are not defined,
1513 # in order to suppress error message.
@@ -61,10 +59,8 @@ KERNEL_ENTRY := $(shell /bin/bash -c 'printf "0x%08x" \ · 45 unmodified lines
6159 $(KERNEL_MEMORY) + \
6260 $(CONFIG_ZERO_PAGE_OFFSET) + $(CONFIG_ENTRY_OFFSET)]')
6361
64−quiet_cmd_uimage = UIMAGE $@
65− cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A sh -O linux -T kernel \
66− -C $(2) -a $(KERNEL_LOAD) -e $(KERNEL_ENTRY) \
67− -n 'Linux-$(KERNELRELEASE)' -d $< $@
62+UIMAGE_LOADADDR = $(KERNEL_LOAD)
63+UIMAGE_ENTRYADDR = $(KERNEL_ENTRY)
6864
6965 $(obj)/vmlinux.bin: vmlinux FORCE
7066 $(call if_changed,objcopy)
arch/sparc/boot/Makefile+3−6
@@ -5,7 +5,6 @@ · 4 unmodified lines
55
66 ROOT_IMG := /usr/src/root.img
77 ELFTOAOUT := elftoaout
8−MKIMAGE := $(srctree)/scripts/mkuboot.sh
98
109 hostprogs-y := piggyback btfixupprep
1110 targets := tftpboot.img btfix.o btfix.S image zImage vmlinux.aout
@@ -92,11 +91,9 @@ $(obj)/image.bin: $(obj)/image FORCE · 80 unmodified lines
9291 $(obj)/image.gz: $(obj)/image.bin
9392 $(call if_changed,gzip)
9493
95−quiet_cmd_uimage = UIMAGE $@
96− cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A sparc -O linux -T kernel \
97− -C gzip -a $(CONFIG_UBOOT_LOAD_ADDR) \
98− -e $(CONFIG_UBOOT_ENTRY_ADDR) -n 'Linux-$(KERNELRELEASE)' \
99− -d $< $@
94+UIMAGE_LOADADDR = $(CONFIG_UBOOT_LOAD_ADDR)
95+UIMAGE_ENTRYADDR = $(CONFIG_UBOOT_ENTRY_ADDR)
96+UIMAGE_COMPRESSION = gzip
10097
10198 quiet_cmd_uimage.o = UIMAGE.O $@
10299 cmd_uimage.o = $(LD) -Tdata $(CONFIG_UBOOT_FLASH_ADDR) \
arch/unicore32/boot/Makefile+2−10
@@ -11,8 +11,6 @@ · 10 unmodified lines
1111 # Copyright (C) 2001~2010 GUAN Xue-tao
1212 #
1313
14−MKIMAGE := $(srctree)/scripts/mkuboot.sh
15−
1614 targets := Image zImage uImage
1715
1816 $(obj)/Image: vmlinux FORCE
@@ -26,14 +24,8 @@ $(obj)/zImage: $(obj)/compressed/vmlinux FORCE · 7 unmodified lines
2624 $(call if_changed,objcopy)
2725 @echo ' Kernel: $@ is ready'
2826
29−quiet_cmd_uimage = UIMAGE $@
30− cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A unicore -O linux -T kernel \
31− -C none -a $(LOADADDR) -e $(STARTADDR) \
32− -n 'Linux-$(KERNELRELEASE)' -d $< $@
33−
34−$(obj)/uImage: LOADADDR=0x0
35−
36−$(obj)/uImage: STARTADDR=$(LOADADDR)
27+UIMAGE_ARCH = unicore
28+UIMAGE_LOADADDR = 0x0
3729
3830 $(obj)/uImage: $(obj)/zImage FORCE
3931 $(call if_changed,uimage)
scripts/Makefile.lib+24−0
@@ -304,6 +304,30 @@ cmd_lzo = (cat $(filter-out FORCE,$^) | \ · 303 unmodified lines
304304 lzop -9 && $(call size_append, $(filter-out FORCE,$^))) > $@ || \
305305 (rm -f $@ ; false)
306306
307+# U-Boot mkimage
308+# ---------------------------------------------------------------------------
309+
310+MKIMAGE := $(srctree)/scripts/mkuboot.sh
311+
312+# SRCARCH just happens to match slightly more than ARCH (on sparc), so reduces
313+# the number of overrides in arch makefiles
314+UIMAGE_ARCH ?= $(SRCARCH)
315+UIMAGE_COMPRESSION ?= $(if $(2),$(2),none)
316+UIMAGE_OPTS-y ?=
317+UIMAGE_TYPE ?= kernel
318+UIMAGE_LOADADDR ?= arch_must_set_this
319+UIMAGE_ENTRYADDR ?= $(UIMAGE_LOADADDR)
320+UIMAGE_NAME ?= 'Linux-$(KERNELRELEASE)'
321+UIMAGE_IN ?= $<
322+UIMAGE_OUT ?= $@
323+
324+quiet_cmd_uimage = UIMAGE $(UIMAGE_OUT)
325+ cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A $(UIMAGE_ARCH) -O linux \
326+ -C $(UIMAGE_COMPRESSION) $(UIMAGE_OPTS-y) \
327+ -T $(UIMAGE_TYPE) \
328+ -a $(UIMAGE_LOADADDR) -e $(UIMAGE_ENTRYADDR) \
329+ -n $(UIMAGE_NAME) -d $(UIMAGE_IN) $(UIMAGE_OUT)
330+
307331 # XZ
308332 # ---------------------------------------------------------------------------
309333 # Use xzkern to compress the kernel image and xzmisc to compress other things.