123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- # Makefile for making bootable images on various OpenFirmware machines.
- #
- # Paul Mackerras January 1997
- # XCOFF bootable images for PowerMacs
- # Geert Uytterhoeven September 1997
- # ELF bootable iamges for CHRP machines.
- # Tom Rini January 2001
- # Cleaned up, moved into arch/ppc/boot/pmac
- # Tom Rini July/August 2002
- # Merged 'chrp' and 'pmac' into 'openfirmware', and cleaned up the
- # rules.
- zImage.initrd znetboot.initrd: del-ramdisk-sec := -R .ramdisk
- zImage.initrd znetboot.initrd: initrd := .initrd
- boot := arch/ppc/boot
- common := $(boot)/common
- utils := $(boot)/utils
- bootlib := $(boot)/lib
- of1275 := $(boot)/of1275
- images := $(boot)/images
- OBJCOPY_ARGS := -O aixcoff-rs6000 -R .stab -R .stabstr -R .comment
- COFF_LD_ARGS := -T $(srctree)/$(boot)/ld.script -e _start -Ttext 0x00500000 \
- -Bstatic
- CHRP_LD_ARGS := -T $(srctree)/$(boot)/ld.script -e _start -Ttext 0x00800000
- NEWWORLD_LD_ARGS:= -T $(srctree)/$(boot)/ld.script -e _start -Ttext 0x01000000
- COMMONOBJS := start.o misc.o common.o
- COFFOBJS := coffcrt0.o $(COMMONOBJS) coffmain.o
- CHRPOBJS := crt0.o $(COMMONOBJS) chrpmain.o
- NEWWORLDOBJS := crt0.o $(COMMONOBJS) newworldmain.o
- targets := $(COFFOBJS) $(CHRPOBJS) $(NEWWORLDOBJS) dummy.o
- COFFOBJS := $(addprefix $(obj)/, $(COFFOBJS))
- CHRPOBJS := $(addprefix $(obj)/, $(CHRPOBJS))
- NEWWORLDOBJS := $(addprefix $(obj)/, $(NEWWORLDOBJS))
- LIBS := lib/lib.a $(bootlib)/lib.a $(of1275)/lib.a $(common)/lib.a
- HACKCOFF := $(utils)/hack-coff
- ifdef CONFIG_SMP
- END := .smp
- endif
- ifdef CONFIG_PPC64BRIDGE
- END += .64
- endif
- $(images)/ramdisk.image.gz:
- @echo ' MISSING $@'
- @echo ' RAM disk image must be provided separately'
- @/bin/false
- quiet_cmd_genimage = GEN $@
- cmd_genimage = $(OBJCOPY) -R .comment \
- --add-section=.image=$(images)/vmlinux.gz \
- --set-section-flags=.image=contents,alloc,load,readonly,data $< $@
- targets += image.o
- $(obj)/image.o: $(obj)/dummy.o $(images)/vmlinux.gz FORCE
- $(call if_changed,genimage)
- # Place the ramdisk in the initrd image.
- quiet_cmd_genimage-initrd = GEN $@
- cmd_genimage-initrd = $(OBJCOPY) $< $@ \
- --add-section=.ramdisk=$(images)/ramdisk.image.gz \
- --set-section-flags=.ramdisk=contents,alloc,load,readonly,data
- targets += image.initrd.o
- $(obj)/image.initrd.o: $(obj)/image.o $(images)/ramdisk.image.gz FORCE
- $(call if_changed,genimage-initrd)
- # Create the note section for New-World PowerMacs.
- quiet_cmd_mknote = MKNOTE $@
- cmd_mknote = $(utils)/mknote > $@
- targets += note
- $(obj)/note: $(utils)/mknote FORCE
- $(call if_changed,mknote)
- $(obj)/coffcrt0.o: EXTRA_AFLAGS := -traditional -DXCOFF
- $(obj)/crt0.o: EXTRA_AFLAGS := -traditional
- targets += coffcrt0.o crt0.o
- $(obj)/coffcrt0.o $(obj)/crt0.o: $(common)/crt0.S FORCE
- $(call if_changed_dep,as_o_S)
- quiet_cmd_gencoffb = COFF $@
- cmd_gencoffb = $(LD) -o $@ $(COFF_LD_ARGS) $(COFFOBJS) $< $(LIBS) && \
- $(OBJCOPY) $@ $@ -R .comment $(del-ramdisk-sec)
- targets += coffboot
- $(obj)/coffboot: $(obj)/image.o $(COFFOBJS) $(LIBS) $(srctree)/$(boot)/ld.script FORCE
- $(call if_changed,gencoffb)
- targets += coffboot.initrd
- $(obj)/coffboot.initrd: $(obj)/image.initrd.o $(COFFOBJS) $(LIBS) \
- $(srctree)/$(boot)/ld.script FORCE
- $(call if_changed,gencoffb)
- quiet_cmd_gen-coff = COFF $@
- cmd_gen-coff = $(OBJCOPY) $(OBJCOPY_ARGS) $< $@ && \
- $(HACKCOFF) $@ && \
- ln -sf $(notdir $@) $(images)/zImage$(initrd).pmac
- $(images)/vmlinux.coff: $(obj)/coffboot
- $(call cmd,gen-coff)
- $(images)/vmlinux.initrd.coff: $(obj)/coffboot.initrd
- $(call cmd,gen-coff)
- quiet_cmd_gen-elf-pmac = ELF $@
- cmd_gen-elf-pmac = $(LD) $(NEWWORLD_LD_ARGS) -o $@ \
- $(NEWWORLDOBJS) $(LIBS) $< && \
- $(OBJCOPY) $@ $@ --add-section=.note=$(obj)/note \
- -R .comment $(del-ramdisk-sec)
- $(images)/vmlinux.elf-pmac: $(obj)/image.o $(NEWWORLDOBJS) $(LIBS) \
- $(obj)/note $(srctree)/$(boot)/ld.script
- $(call cmd,gen-elf-pmac)
- $(images)/vmlinux.initrd.elf-pmac: $(obj)/image.initrd.o $(NEWWORLDOBJS) \
- $(LIBS) $(obj)/note \
- $(srctree)/$(boot)/ld.script
- $(call cmd,gen-elf-pmac)
- quiet_cmd_gen-chrp = CHRP $@
- cmd_gen-chrp = $(LD) $(CHRP_LD_ARGS) -o $@ $(CHRPOBJS) $< $(LIBS) && \
- $(OBJCOPY) $@ $@ -R .comment $(del-ramdisk-sec)
- $(images)/zImage.chrp: $(obj)/image.o $(CHRPOBJS) $(LIBS) \
- $(srctree)/$(boot)/ld.script
- $(call cmd,gen-chrp)
- $(images)/zImage.initrd.chrp: $(obj)/image.initrd.o $(CHRPOBJS) $(LIBS) \
- $(srctree)/$(boot)/ld.script
- $(call cmd,gen-chrp)
- quiet_cmd_addnote = ADDNOTE $@
- cmd_addnote = cat $< > $@ && $(utils)/addnote $@
- $(images)/zImage.chrp-rs6k $(images)/zImage.initrd.chrp-rs6k: \
- %-rs6k: %
- $(call cmd,addnote)
- quiet_cmd_gen-miboot = GEN $@
- cmd_gen-miboot = $(OBJCOPY) $(OBJCOPY_ARGS) \
- --add-section=$1=$(word 2, $^) $< $@
- $(images)/miboot.image: $(obj)/dummy.o $(images)/vmlinux.gz
- $(call cmd,gen-miboot,image)
- $(images)/miboot.initrd.image: $(images)/miboot.image $(images)/ramdisk.image.gz
- $(call cmd,gen-miboot,initrd)
- # The targets used on the make command-line
- .PHONY: zImage zImage.initrd
- zImage: $(images)/vmlinux.coff \
- $(images)/vmlinux.elf-pmac \
- $(images)/zImage.chrp \
- $(images)/zImage.chrp-rs6k \
- $(images)/miboot.image
- @echo ' kernel: $@ is ready ($<)'
- zImage.initrd: $(images)/vmlinux.initrd.coff \
- $(images)/vmlinux.initrd.elf-pmac \
- $(images)/zImage.initrd.chrp \
- $(images)/zImage.initrd.chrp-rs6k \
- $(images)/miboot.initrd.image
- @echo ' kernel: $@ is ready ($<)'
- TFTPIMAGE := /tftpboot/zImage
- .PHONY: znetboot znetboot.initrd
- znetboot: $(images)/vmlinux.coff \
- $(images)/vmlinux.elf-pmac \
- $(images)/zImage.chrp
- cp $(images)/vmlinux.coff $(TFTPIMAGE).pmac$(END)
- cp $(images)/vmlinux.elf-pmac $(TFTPIMAGE).pmac$(END).elf
- cp $(images)/zImage.chrp $(TFTPIMAGE).chrp$(END)
- @echo ' kernel: $@ is ready ($<)'
- znetboot.initrd:$(images)/vmlinux.initrd.coff \
- $(images)/vmlinux.initrd.elf-pmac \
- $(images)/zImage.initrd.chrp
- cp $(images)/vmlinux.initrd.coff $(TFTPIMAGE).pmac$(END)
- cp $(images)/vmlinux.initrd.elf-pmac $(TFTPIMAGE).pmac$(END).elf
- cp $(images)/zImage.initrd.chrp $(TFTPIMAGE).chrp$(END)
- @echo ' kernel: $@ is ready ($<)'
|