diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2013-10-14 21:52:28 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2013-10-16 20:17:00 -0400 |
commit | 8744e1512b55f57715e9a44e7629f53e54fd8a96 (patch) | |
tree | 251bda70da97730f9808cfb827c8f29940655379 | |
parent | 7c80bb83d9a154a19df75c48a8b42bfb4904a2e4 (diff) | |
download | qemu-seabios-8744e1512b55f57715e9a44e7629f53e54fd8a96.tar.gz |
Build different final files for QEMU, coreboot, and CSM.
Build out/bios.bin on QEMU, out/bios.bin.elf on coreboot, and
out/Csm16.bin for CSM. This reduces the chance that one accidentally
builds for an incorrect target.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-rw-r--r-- | Makefile | 21 | ||||
-rw-r--r-- | README | 6 | ||||
-rw-r--r-- | README.CSM | 11 |
3 files changed, 28 insertions, 10 deletions
@@ -82,7 +82,10 @@ endif # Default targets -include $(KCONFIG_CONFIG) -target-y = $(OUT)bios.bin +target-y := +target-$(CONFIG_QEMU) += $(OUT)bios.bin +target-$(CONFIG_CSM) += $(OUT)Csm16.bin +target-$(CONFIG_COREBOOT) += $(OUT)bios.bin.elf target-$(CONFIG_BUILD_VGABIOS) += $(OUT)vgabios.bin all: $(target-y) @@ -174,12 +177,24 @@ $(OUT)rom.o: $(OUT)rom16.strip.o $(OUT)rom32seg.strip.o $(OUT)code32flat.o $(OUT @echo " Linking $@" $(Q)$(LD) -T $(OUT)romlayout32flat.lds $(OUT)rom16.strip.o $(OUT)rom32seg.strip.o $(OUT)code32flat.o -o $@ -$(OUT)bios.bin.elf $(OUT)bios.bin: $(OUT)rom.o scripts/checkrom.py +$(OUT)bios.bin.prep: $(OUT)rom.o scripts/checkrom.py @echo " Prepping $@" + $(Q)rm -f $(OUT)bios.bin $(OUT)Csm16.bin $(OUT)bios.bin.elf $(Q)$(OBJDUMP) -thr $< > $<.objdump $(Q)$(OBJCOPY) -O binary $< $(OUT)bios.bin.raw $(Q)$(PYTHON) ./scripts/checkrom.py $<.objdump $(CONFIG_ROM_SIZE) \ - $(OUT)bios.bin.raw $(OUT)bios.bin + $(OUT)bios.bin.raw $(OUT)bios.bin.prep + +$(OUT)bios.bin: $(OUT)bios.bin.prep + @echo " Creating $@" + $(Q)cp $< $@ + +$(OUT)Csm16.bin: $(OUT)bios.bin.prep + @echo " Creating $@" + $(Q)cp $< $@ + +$(OUT)bios.bin.elf: $(OUT)rom.o $(OUT)bios.bin.prep + @echo " Creating $@" $(Q)$(STRIP) -R .comment $< -o $(OUT)bios.bin.elf @@ -1,8 +1,10 @@ This code implements an X86 legacy bios. It is intended to be compiled using standard gnu tools (eg, gas and gcc). -To build, one should be able to run "make" in the main directory. The -resulting file "out/bios.bin" contains the processed bios image. +To build for QEMU, one should be able to run "make" in the main +directory. The resulting file "out/bios.bin" contains the processed +bios image. To build for coreboot, please see the coreboot wiki. To +build for CSM, please see README.CSM. Testing of images: @@ -9,11 +9,12 @@ Windows 2008r2 is known to use INT 10h BIOS calls even when booted via EFI, and the presence of a CSM makes this work as expected too. Having built SeaBIOS with CONFIG_CSM, you should be able to drop the -result into your OVMF build tree at OvmfPkg/Csm/Csm16/Csm16.bin and -then build OVMF with 'build -D CSM_ENABLE'. The SeaBIOS binary will be -included as a discrete file within the 'Flash Volume' which is -created, and there are tools which will extract it and allow it to be -replaced; satisfying the requirements of the LGPL licence. +result (out/Csm16.bin) into your OVMF build tree at +OvmfPkg/Csm/Csm16/Csm16.bin and then build OVMF with 'build -D +CSM_ENABLE'. The SeaBIOS binary will be included as a discrete file +within the 'Flash Volume' which is created, and there are tools which +will extract it and allow it to be replaced; satisfying the +requirements of the LGPL licence. A patch to OVMF is required, to prevent it from marking the region from 0xC0000-0xFFFFF as read-only before invoking our Legacy16Boot method. See |