| # 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 | |
| objcpxmon-$(CONFIG_XMON) := --add-section=.sysmap=System.map \ | |
| --set-section-flags=.sysmap=contents,alloc,load,readonly,data | |
| quiet_cmd_genimage = GEN $@ | |
| cmd_genimage = $(OBJCOPY) -R .comment \ | |
| --add-section=.image=$(images)/vmlinux.gz \ | |
| --set-section-flags=.image=contents,alloc,load,readonly,data \ | |
| $(objcpxmon-y) $< $@ | |
| 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 ($<)' | |