Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | # Makefile for the Sparc boot stuff. |
| 2 | # |
| 3 | # Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
| 4 | # Copyright (C) 1997,1998 Jakub Jelinek (jj@ultra.linux.cz) |
| 5 | |
| 6 | ROOT_IMG := /usr/src/root.img |
| 7 | ELFTOAOUT := elftoaout |
| 8 | |
Sam Ravnborg | 56818a6f | 2011-01-04 11:39:17 +0000 | [diff] [blame] | 9 | hostprogs-y := piggyback btfixupprep |
Sam Ravnborg | a8c601c | 2008-12-03 03:14:26 -0800 | [diff] [blame] | 10 | targets := tftpboot.img btfix.o btfix.S image zImage vmlinux.aout |
Sam Ravnborg | c4893269 | 2008-11-29 21:53:26 -0800 | [diff] [blame] | 11 | clean-files := System.map |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 12 | |
| 13 | quiet_cmd_elftoaout = ELFTOAOUT $@ |
| 14 | cmd_elftoaout = $(ELFTOAOUT) $(obj)/image -o $@ |
Sam Ravnborg | 56818a6f | 2011-01-04 11:39:17 +0000 | [diff] [blame] | 15 | quiet_cmd_piggy = PIGGY $@ |
| 16 | cmd_piggy = $(obj)/piggyback $(BITS) $@ System.map $(ROOT_IMG) |
Sam Ravnborg | 9202db2 | 2011-01-04 11:39:18 +0000 | [diff] [blame] | 17 | quiet_cmd_strip = STRIP $@ |
| 18 | cmd_strip = $(STRIP) -R .comment -R .note -K sun4u_init -K _end -K _start $< -o $@ |
Sam Ravnborg | a8c601c | 2008-12-03 03:14:26 -0800 | [diff] [blame] | 19 | |
| 20 | ifeq ($(CONFIG_SPARC32),y) |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 21 | quiet_cmd_btfix = BTFIX $@ |
| 22 | cmd_btfix = $(OBJDUMP) -x vmlinux | $(obj)/btfixupprep > $@ |
| 23 | quiet_cmd_sysmap = SYSMAP $(obj)/System.map |
| 24 | cmd_sysmap = $(CONFIG_SHELL) $(srctree)/scripts/mksysmap |
| 25 | quiet_cmd_image = LD $@ |
| 26 | cmd_image = $(LD) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LDFLAGS_$(@F)) -o $@ |
| 27 | |
| 28 | define rule_image |
| 29 | $(if $($(quiet)cmd_image), \ |
| 30 | echo ' $($(quiet)cmd_image)' &&) \ |
| 31 | $(cmd_image); \ |
| 32 | $(if $($(quiet)cmd_sysmap), \ |
| 33 | echo ' $($(quiet)cmd_sysmap)' &&) \ |
| 34 | $(cmd_sysmap) $@ $(obj)/System.map; \ |
| 35 | if [ $$? -ne 0 ]; then \ |
| 36 | rm -f $@; \ |
| 37 | /bin/false; \ |
| 38 | fi; \ |
| 39 | echo 'cmd_$@ := $(cmd_image)' > $(@D)/.$(@F).cmd |
| 40 | endef |
| 41 | |
Sam Ravnborg | db5ea21 | 2008-12-02 23:15:42 -0800 | [diff] [blame] | 42 | BTOBJS := $(patsubst %/, %/built-in.o, $(VMLINUX_INIT)) |
| 43 | BTLIBS := $(patsubst %/, %/built-in.o, $(VMLINUX_MAIN)) |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 44 | LDFLAGS_image := -T arch/sparc/kernel/vmlinux.lds $(BTOBJS) \ |
| 45 | --start-group $(BTLIBS) --end-group \ |
| 46 | $(kallsyms.o) $(obj)/btfix.o |
| 47 | |
| 48 | # Link the final image including btfixup'ed symbols. |
| 49 | # This is a replacement for the link done in the top-level Makefile. |
| 50 | # Note: No dependency on the prerequisite files since that would require |
| 51 | # make to try check if they are updated - and due to changes |
| 52 | # in gcc options (path for example) this would result in |
| 53 | # these files being recompiled for each build. |
| 54 | $(obj)/image: $(obj)/btfix.o FORCE |
| 55 | $(call if_changed_rule,image) |
| 56 | |
Martin Habets | 349101d | 2008-08-18 22:37:18 -0700 | [diff] [blame] | 57 | $(obj)/zImage: $(obj)/image |
| 58 | $(call if_changed,strip) |
Sam Ravnborg | 9202db2 | 2011-01-04 11:39:18 +0000 | [diff] [blame] | 59 | @echo ' kernel: $@ is ready' |
Martin Habets | 349101d | 2008-08-18 22:37:18 -0700 | [diff] [blame] | 60 | |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 61 | $(obj)/btfix.S: $(obj)/btfixupprep vmlinux FORCE |
| 62 | $(call if_changed,btfix) |
Sam Ravnborg | a8c601c | 2008-12-03 03:14:26 -0800 | [diff] [blame] | 63 | |
| 64 | endif |
| 65 | |
| 66 | ifeq ($(CONFIG_SPARC64),y) |
Sam Ravnborg | a8c601c | 2008-12-03 03:14:26 -0800 | [diff] [blame] | 67 | |
| 68 | # Actual linking |
| 69 | $(obj)/image: vmlinux FORCE |
| 70 | $(call if_changed,strip) |
| 71 | @echo ' kernel: $@ is ready' |
| 72 | |
Jurij Smakov | 48e46b7 | 2009-08-16 18:21:47 -0700 | [diff] [blame] | 73 | $(obj)/zImage: $(obj)/image |
| 74 | $(call if_changed,gzip) |
Sam Ravnborg | 9202db2 | 2011-01-04 11:39:18 +0000 | [diff] [blame] | 75 | @echo ' kernel: $@ is ready' |
Jurij Smakov | 48e46b7 | 2009-08-16 18:21:47 -0700 | [diff] [blame] | 76 | |
Sam Ravnborg | a8c601c | 2008-12-03 03:14:26 -0800 | [diff] [blame] | 77 | $(obj)/vmlinux.aout: vmlinux FORCE |
| 78 | $(call if_changed,elftoaout) |
| 79 | @echo ' kernel: $@ is ready' |
Daniel Hellstrom | 684151a | 2011-01-26 06:36:35 +0000 | [diff] [blame] | 80 | else |
| 81 | |
| 82 | # The following lines make a readable image for U-Boot. |
| 83 | # uImage - Binary file read by U-boot |
| 84 | # uImage.o - object file of uImage for loading with a |
| 85 | # flash programmer understanding ELF. |
| 86 | |
| 87 | OBJCOPYFLAGS_image.bin := -S -O binary -R .note -R .comment |
| 88 | $(obj)/image.bin: $(obj)/image FORCE |
| 89 | $(call if_changed,objcopy) |
| 90 | |
| 91 | $(obj)/image.gz: $(obj)/image.bin |
| 92 | $(call if_changed,gzip) |
| 93 | |
Stephen Warren | e339364 | 2012-03-16 15:03:55 -0600 | [diff] [blame] | 94 | UIMAGE_LOADADDR = $(CONFIG_UBOOT_LOAD_ADDR) |
| 95 | UIMAGE_ENTRYADDR = $(CONFIG_UBOOT_ENTRY_ADDR) |
| 96 | UIMAGE_COMPRESSION = gzip |
Daniel Hellstrom | 684151a | 2011-01-26 06:36:35 +0000 | [diff] [blame] | 97 | |
| 98 | quiet_cmd_uimage.o = UIMAGE.O $@ |
| 99 | cmd_uimage.o = $(LD) -Tdata $(CONFIG_UBOOT_FLASH_ADDR) \ |
| 100 | -r -b binary $@ -o $@.o |
| 101 | |
| 102 | targets += uImage |
| 103 | $(obj)/uImage: $(obj)/image.gz |
| 104 | $(call if_changed,uimage) |
| 105 | $(call if_changed,uimage.o) |
| 106 | @echo ' Image $@ is ready' |
| 107 | |
Sam Ravnborg | a8c601c | 2008-12-03 03:14:26 -0800 | [diff] [blame] | 108 | endif |
| 109 | |
Sam Ravnborg | 56818a6f | 2011-01-04 11:39:17 +0000 | [diff] [blame] | 110 | $(obj)/tftpboot.img: $(obj)/image $(obj)/piggyback System.map $(ROOT_IMG) FORCE |
| 111 | $(call if_changed,elftoaout) |
| 112 | $(call if_changed,piggy) |