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 | a8c601c | 2008-12-03 03:14:26 -0800 | [diff] [blame] | 9 | hostprogs-y := piggyback_32 piggyback_64 btfixupprep |
| 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 | a8c601c | 2008-12-03 03:14:26 -0800 | [diff] [blame] | 15 | |
| 16 | ifeq ($(CONFIG_SPARC32),y) |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 17 | quiet_cmd_piggy = PIGGY $@ |
Sam Ravnborg | a8c601c | 2008-12-03 03:14:26 -0800 | [diff] [blame] | 18 | cmd_piggy = $(obj)/piggyback_32 $@ $(obj)/System.map $(ROOT_IMG) |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 19 | quiet_cmd_btfix = BTFIX $@ |
| 20 | cmd_btfix = $(OBJDUMP) -x vmlinux | $(obj)/btfixupprep > $@ |
| 21 | quiet_cmd_sysmap = SYSMAP $(obj)/System.map |
| 22 | cmd_sysmap = $(CONFIG_SHELL) $(srctree)/scripts/mksysmap |
| 23 | quiet_cmd_image = LD $@ |
| 24 | cmd_image = $(LD) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LDFLAGS_$(@F)) -o $@ |
Martin Habets | 349101d | 2008-08-18 22:37:18 -0700 | [diff] [blame] | 25 | quiet_cmd_strip = STRIP $@ |
| 26 | cmd_strip = $(STRIP) -R .comment -R .note -K sun4u_init -K _end -K _start $(obj)/image -o $@ |
| 27 | |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 28 | |
| 29 | define rule_image |
| 30 | $(if $($(quiet)cmd_image), \ |
| 31 | echo ' $($(quiet)cmd_image)' &&) \ |
| 32 | $(cmd_image); \ |
| 33 | $(if $($(quiet)cmd_sysmap), \ |
| 34 | echo ' $($(quiet)cmd_sysmap)' &&) \ |
| 35 | $(cmd_sysmap) $@ $(obj)/System.map; \ |
| 36 | if [ $$? -ne 0 ]; then \ |
| 37 | rm -f $@; \ |
| 38 | /bin/false; \ |
| 39 | fi; \ |
| 40 | echo 'cmd_$@ := $(cmd_image)' > $(@D)/.$(@F).cmd |
| 41 | endef |
| 42 | |
Sam Ravnborg | db5ea21 | 2008-12-02 23:15:42 -0800 | [diff] [blame] | 43 | BTOBJS := $(patsubst %/, %/built-in.o, $(VMLINUX_INIT)) |
| 44 | BTLIBS := $(patsubst %/, %/built-in.o, $(VMLINUX_MAIN)) |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 45 | LDFLAGS_image := -T arch/sparc/kernel/vmlinux.lds $(BTOBJS) \ |
| 46 | --start-group $(BTLIBS) --end-group \ |
| 47 | $(kallsyms.o) $(obj)/btfix.o |
| 48 | |
| 49 | # Link the final image including btfixup'ed symbols. |
| 50 | # This is a replacement for the link done in the top-level Makefile. |
| 51 | # Note: No dependency on the prerequisite files since that would require |
| 52 | # make to try check if they are updated - and due to changes |
| 53 | # in gcc options (path for example) this would result in |
| 54 | # these files being recompiled for each build. |
| 55 | $(obj)/image: $(obj)/btfix.o FORCE |
| 56 | $(call if_changed_rule,image) |
| 57 | |
Martin Habets | 349101d | 2008-08-18 22:37:18 -0700 | [diff] [blame] | 58 | $(obj)/zImage: $(obj)/image |
| 59 | $(call if_changed,strip) |
| 60 | |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 61 | $(obj)/tftpboot.img: $(obj)/piggyback $(obj)/System.map $(obj)/image FORCE |
| 62 | $(call if_changed,elftoaout) |
| 63 | $(call if_changed,piggy) |
| 64 | |
| 65 | $(obj)/btfix.S: $(obj)/btfixupprep vmlinux FORCE |
| 66 | $(call if_changed,btfix) |
Sam Ravnborg | a8c601c | 2008-12-03 03:14:26 -0800 | [diff] [blame] | 67 | |
| 68 | endif |
| 69 | |
| 70 | ifeq ($(CONFIG_SPARC64),y) |
| 71 | quiet_cmd_piggy = PIGGY $@ |
| 72 | cmd_piggy = $(obj)/piggyback_64 $@ System.map $(ROOT_IMG) |
| 73 | quiet_cmd_strip = STRIP $@ |
| 74 | cmd_strip = $(STRIP) -R .comment -R .note -K sun4u_init -K _end -K _start vmlinux -o $@ |
| 75 | |
| 76 | |
| 77 | # Actual linking |
| 78 | $(obj)/image: vmlinux FORCE |
| 79 | $(call if_changed,strip) |
| 80 | @echo ' kernel: $@ is ready' |
| 81 | |
| 82 | $(obj)/tftpboot.img: vmlinux $(obj)/piggyback_64 System.map $(ROOT_IMG) FORCE |
| 83 | $(call if_changed,elftoaout) |
| 84 | $(call if_changed,piggy) |
| 85 | @echo ' kernel: $@ is ready' |
| 86 | |
| 87 | $(obj)/vmlinux.aout: vmlinux FORCE |
| 88 | $(call if_changed,elftoaout) |
| 89 | @echo ' kernel: $@ is ready' |
| 90 | endif |
| 91 | |