summaryrefslogtreecommitdiff
path: root/buildrom-withgrub.mk
diff options
context:
space:
mode:
Diffstat (limited to 'buildrom-withgrub.mk')
-rw-r--r--buildrom-withgrub.mk30
1 files changed, 30 insertions, 0 deletions
diff --git a/buildrom-withgrub.mk b/buildrom-withgrub.mk
new file mode 100644
index 0000000..42970f8
--- /dev/null
+++ b/buildrom-withgrub.mk
@@ -0,0 +1,30 @@
+define rule_rom_nokeyboard
+tmp/$(board)_nokeyboard_$(romtype).rom: \
+ tmp/grub_$(romtype).elf \
+ resources/libreboot/config/$(board)_$(romtype)_config
+ $(MAKE) -C src/coreboot clean
+ ln resources/libreboot/config/$(board)_$(romtype)_config src/coreboot/.config
+ ln tmp/grub_$(romtype).elf src/coreboot/grub.elf
+ $(MAKE) -C src/coreboot
+ rm -f src/coreboot/.config src/coreboot/grub.elf
+ mv src/coreboot/build/coreboot.rom $@
+endef
+$(eval $(call loop_rule,rom_nokeyboard,board romtype))
+
+define rule_rom
+bin/$(board)_$(keymap)_$(romtype).rom: \
+ tmp/$(board)_nokeyboard_$(romtype).rom \
+ tmp/grub_$(keymap)_$(romtype).cfg \
+ $(firstword $(CBFSTOOL))
+ cp $< $@.tmp
+ $(CBFSTOOL) $@.tmp add -f tmp/grub_$(keymap)_$(romtype).cfg -n grub.cfg -t raw
+ $(CBFSTOOL) $@.tmp add -f tmp/grub_$(keymap)_$(romtype)_test.cfg -n grubtest.cfg -t raw
+ $(if $(filter $(board),$(i945boards)),\
+ # Needed on i945 systems for the bucts/dd trick (documented)
+ # This enables the ROM to be flashed over the lenovo bios firmware
+ dd if='$@.tmp' of='$@.tmp.top64k' bs=1 skip=$$[$$(stat -c %s '$@.tmp') - 0x10000] count=64k && \
+ dd if='$@.tmp.top64k' of='$@.tmp' bs=1 seek=$$[$$(stat -c %s '$@.tmp') - 0x20000] count=64k conv=notrunc && \
+ rm -f '$@.tmp.top64k')
+ mv $@.tmp $@
+endef
+$(eval $(call loop_rule,rom,board keymap romtype))