# -*- makefile -*- : Force emacs to use Makefile mode # BIOS-specific directories containing source files # SRCDIRS += arch/x86/drivers/net # The i386 linker script # LDSCRIPT = arch/x86/scripts/pcbios.lds # Stop ld from complaining about our customised linker script # LDFLAGS += -N --no-check-sections # Prefix always starts at address zero # LDFLAGS += --section-start=.prefix=0 # Media types. # MEDIA += rom MEDIA += mrom MEDIA += pcirom MEDIA += isarom MEDIA += pxe MEDIA += kpxe MEDIA += kkpxe MEDIA += kkkpxe MEDIA += lkrn MEDIA += dsk MEDIA += nbi MEDIA += hd MEDIA += raw MEDIA += exe # Padding rules # PAD_rom = $(PERL) $(PADIMG) --blksize=512 --byte=0xff PAD_mrom = $(PAD_rom) PAD_pcirom = $(PAD_rom) PAD_isarom = $(PAD_rom) PAD_dsk = $(PERL) $(PADIMG) --blksize=512 PAD_hd = $(PERL) $(PADIMG) --blksize=32768 PAD_exe = $(PERL) $(PADIMG) --blksize=512 # Finalisation rules # FINALISE_rom = $(PERL) $(FIXROM) FINALISE_mrom = $(FINALISE_rom) FINALISE_pcirom = $(FINALISE_rom) FINALISE_isarom = $(FINALISE_rom) # Use $(ROMS) rather than $(DRIVERS) for "allroms", "allmroms", etc. # LIST_NAME_rom := ROMS LIST_NAME_mrom := ROMS LIST_NAME_pcirom := ROMS LIST_NAME_isarom := ROMS # Locations of isolinux files # SYSLINUX_DIR_LIST := \ /usr/lib/syslinux \ /usr/lib/syslinux/bios \ /usr/lib/syslinux/modules/bios \ /usr/share/syslinux \ /usr/share/syslinux/bios \ /usr/share/syslinux/modules/bios \ /usr/local/share/syslinux \ /usr/local/share/syslinux/bios \ /usr/local/share/syslinux/modules/bios \ /usr/lib/ISOLINUX ISOLINUX_BIN_LIST := \ $(ISOLINUX_BIN) \ $(patsubst %,%/isolinux.bin,$(SYSLINUX_DIR_LIST)) LDLINUX_C32_LIST := \ $(LDLINUX_C32) \ $(patsubst %,%/ldlinux.c32,$(SYSLINUX_DIR_LIST)) ISOLINUX_BIN = $(firstword $(wildcard $(ISOLINUX_BIN_LIST))) LDLINUX_C32 = $(firstword $(wildcard $(LDLINUX_C32_LIST))) # rule to make a non-emulation ISO boot image NON_AUTO_MEDIA += iso %iso: %lkrn util/geniso $(QM)$(ECHO) " [GENISO] $@" $(Q)ISOLINUX_BIN=$(ISOLINUX_BIN) LDLINUX_C32=$(LDLINUX_C32) \ VERSION="$(VERSION)" bash util/geniso -o $@ $< # rule to make a floppy emulation ISO boot image NON_AUTO_MEDIA += liso %liso: %lkrn util/geniso $(QM)$(ECHO) " [GENISO] $@" $(Q)VERSION="$(VERSION)" bash util/geniso -l -o $@ $< # rule to make a syslinux floppy image (mountable, bootable) NON_AUTO_MEDIA += sdsk %sdsk: %lkrn util/gensdsk $(QM)$(ECHO) " [GENSDSK] $@" $(Q)bash util/gensdsk $@ $< # rule to write disk images to /dev/fd0 NON_AUTO_MEDIA += fd0 %fd0 : %dsk $(QM)$(ECHO) " [DD] $@" $(Q)dd if=$< bs=512 conv=sync of=/dev/fd0 $(Q)sync # Special target for building Master Boot Record binary $(BIN)/mbr.tmp : $(BIN)/mbr.o $(QM)$(ECHO) " [LD] $@" $(Q)$(LD) $(LDFLAGS) -o $@ -e mbr $< # rule to make a USB disk image $(BIN)/usbdisk.tmp : $(BIN)/usbdisk.o $(QM)$(ECHO) " [LD] $@" $(Q)$(LD) $(LDFLAGS) -o $@ -e mbr $< NON_AUTO_MEDIA += usb %usb: $(BIN)/usbdisk.bin %hd $(QM)$(ECHO) " [FINISH] $@" $(Q)cat $^ > $@ NON_AUTO_MEDIA += vhd %vhd: %usb $(QM)$(ECHO) " [FINISH] $@" $(Q)$(QEMUIMG) convert -f raw -O vpc $< $@ # Padded floppy image (e.g. for iLO) NON_AUTO_MEDIA += pdsk %pdsk : %dsk $(Q)cp $< $@ $(Q)$(PADIMG) --blksize=1474560 $@