# -*- makefile -*- : Force emacs to use Makefile mode

# BIOS-specific directories containing source files
#
SRCDIRS		+= arch/x86/drivers/net

# The linker scripts
#
LDSCRIPT	= arch/x86/scripts/pcbios.lds
LDSCRIPT_PREFIX	= arch/x86/scripts/prefixonly.lds

# Stop ld from complaining about our customised linker script
#
LDFLAGS		+= -N --no-check-sections

# 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

# ISO images
NON_AUTO_MEDIA	+= iso
$(BIN)/%.iso : $(BIN)/%.lkrn util/genfsimg
	$(QM)$(ECHO) "  [GENFSIMG] $@"
	$(Q)util/genfsimg -o $@ $<

# FAT filesystem images (via syslinux)
NON_AUTO_MEDIA	+= sdsk
$(BIN)/%.sdsk : $(BIN)/%.lkrn util/genfsimg
	$(QM)$(ECHO) "  [GENFSIMG] $@"
	$(Q)util/genfsimg -o $@ $<

# 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) -T $(LDSCRIPT_PREFIX) -o $@ -e mbr $<

# rule to make a USB disk image
$(BIN)/usbdisk.tmp : $(BIN)/usbdisk.o
	$(QM)$(ECHO) "  [LD] $@"
	$(Q)$(LD) $(LDFLAGS) -T $(LDSCRIPT_PREFIX) -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 $@
