summaryrefslogtreecommitdiffstats
path: root/src/arch/i386/Makefile
diff options
context:
space:
mode:
authorMichael Brown2005-04-08 17:01:17 +0200
committerMichael Brown2005-04-08 17:01:17 +0200
commit0ff80b477dcff0726ebdbed95e8a93971e59e82b (patch)
tree860b7150212a07c24a9529ea072f3fb12700974c /src/arch/i386/Makefile
parentMerged this file into HEAD (diff)
downloadipxe-0ff80b477dcff0726ebdbed95e8a93971e59e82b.tar.gz
ipxe-0ff80b477dcff0726ebdbed95e8a93971e59e82b.tar.xz
ipxe-0ff80b477dcff0726ebdbed95e8a93971e59e82b.zip
Merged mcb30-realmode-redesign back to HEAD
Diffstat (limited to 'src/arch/i386/Makefile')
-rw-r--r--src/arch/i386/Makefile493
1 files changed, 124 insertions, 369 deletions
diff --git a/src/arch/i386/Makefile b/src/arch/i386/Makefile
index 0a80ff94..a4139e74 100644
--- a/src/arch/i386/Makefile
+++ b/src/arch/i386/Makefile
@@ -1,375 +1,130 @@
-ARCH_FORMAT= elf32-i386
-
-# For debugging, don't delete intermediates
-#.SECONDARY:
-
-LDSCRIPT= arch/i386/core/etherboot.lds
-PLDSCRIPT= arch/i386/core/etherboot.prefix.lds
-
-LCONFIG+= -Ui386
-
-ROMLIMIT= 524288
-CHECKSIZE= { read d1; read d1 d2 d3 size d4; [ $$size -gt $(ROMLIMIT) ] &&\
- { $(RM) $@; echo "ERROR: code size exceeds limit!"; exit 1; }; exit 0; }
-
-START= $(BIN)/start32.o $(BIN)/linuxbios.o \
- $(BIN)/bios.o $(BIN)/console.o $(BIN)/memsizes.o $(BIN)/basemem.o \
- $(BIN)/hidemem.o $(BIN)/e820mangler.o \
- $(BIN)/realmode.o $(BIN)/realmode_asm.o \
- $(BIN)/callbacks.o $(BIN)/pxe_callbacks.o
-
-SRCS+= arch/i386/prefix/floppyprefix.S
-SRCS+= arch/i386/prefix/unnrv2b.S
-SRCS+= arch/i386/firmware/pcbios/bios.c
-SRCS+= arch/i386/firmware/pcbios/console.c
-SRCS+= arch/i386/firmware/pcbios/memsizes.c
-SRCS+= arch/i386/firmware/pcbios/basemem.c
-SRCS+= arch/i386/firmware/pcbios/hidemem.c
-SRCS+= arch/i386/firmware/pcbios/e820mangler.S
-SRCS+= arch/i386/prefix/liloprefix.S
-SRCS+= arch/i386/prefix/elfprefix.S
-SRCS+= arch/i386/prefix/lmelf_prefix.S
-SRCS+= arch/i386/prefix/elf_dprefix.S
-SRCS+= arch/i386/prefix/lmelf_dprefix.S
-SRCS+= arch/i386/prefix/comprefix.S
-SRCS+= arch/i386/prefix/exeprefix.S
-SRCS+= arch/i386/prefix/pxeprefix.S
-SRCS+= arch/i386/prefix/romprefix.S
-
-SRCS+= arch/i386/core/init.S
-SRCS+= arch/i386/core/start32.S
-SRCS+= arch/i386/core/pci_io.c
-SRCS+= arch/i386/core/i386_timer.c
-SRCS+= arch/i386/core/elf.c
-SRCS+= arch/i386/core/cpu.c
-SRCS+= arch/i386/core/video_subr.c
-SRCS+= arch/i386/core/pic8259.c
-SRCS+= arch/i386/core/hooks.c
-SRCS+= arch/i386/core/callbacks.c
-SRCS+= arch/i386/core/realmode.c
-SRCS+= arch/i386/core/realmode_asm.S
-SRCS+= arch/i386/core/pxe_callbacks.c
-
-# ROM loaders: ISA and PCI versions
-ISAPREFIX= $(BIN)/isaprefix.o
-ISAENTRY= $(BIN)/isaprefix.entry.o
-ISAEXIT= $(BIN)/isaprefix.exit.o
-PCIPREFIX= $(BIN)/pciprefix.o
-PCIENTRY= $(BIN)/pciprefix.entry.o
-PCIEXIT= $(BIN)/pciprefix.exit.o
-# Variables xxx_ROMTYPE are defined by genrules.pl. ROMENTRY and
-# ROMEXIT will evaluate to give the correct objects to use.
-TARGETBASE=$(patsubst $(BIN)/%,%,$(firstword $(subst ., ,$@)))
-ROMCARD=$(firstword $(subst --, ,$(TARGETBASE)))
-ROMTYPE=$(firstword $(ROMTYPE_$(ROMCARD)) ISA)
-romENTRY=$($(ROMTYPE)ENTRY)
-romEXIT=$($(ROMTYPE)EXIT)
-
-# Target type for generic prf rules
-TARGETTYPE=$(patsubst .%,%, $(suffix $(basename $@)))
-TARGETENTRY=$($(TARGETTYPE)ENTRY)
-TARGETEXIT=$($(TARGETTYPE)EXIT)
-
-# Other real-mode entry loaders
-dskPREFIX= $(BIN)/floppyprefix.o
-dskENTRY= $(BIN)/floppyprefix.entry.o
-dskEXIT= $(BIN)/floppyprefix.exit.o
-comPREFIX= $(BIN)/comprefix.o
-comENTRY= $(BIN)/comprefix.entry.o
-comEXIT= $(BIN)/comprefix.exit.o
-exePREFIX= $(BIN)/exeprefix.o
-exeENTRY= $(BIN)/exeprefix.entry.o
-exeEXIT= $(BIN)/exeprefix.exit.o
-liloPREFIX= $(BIN)/liloprefix.o
-liloENTRY= $(BIN)/liloprefix.entry.o
-liloEXIT= $(BIN)/liloprefix.exit.o
-bImagePREFIX= $(BIN)/bImageprefix.o
-bImageENTRY= $(BIN)/bImageprefix.entry.o
-bImageEXIT= $(BIN)/bImageprefix.exit.o
-pxePREFIX= $(BIN)/pxeprefix.o
-pxeENTRY= $(BIN)/pxeprefix.entry.o
-pxeEXIT= $(BIN)/pxeprefix.exit.o
-rawPREFIX= $(BIN)/nullprefix.o
-rawENTRY= $(BIN)/nullprefix.entry.o
-rawEXIT= $(BIN)/nullprefix.exit.o
-
-# Protected mode entry loaders
-elfPREFIX= $(BIN)/elfprefix.o
-elfENTRY= $(BIN)/elfprefix.entry.o
-elfEXIT= $(BIN)/elfprefix.exit.o
-lmelfPREFIX= $(BIN)/lmelf_prefix.o
-lmelfENTRY= $(BIN)/lmelf_prefix.entry.o
-lmelfEXIT= $(BIN)/lmelf_prefix.exit.o
-elfdPREFIX= $(BIN)/elf_dprefix.o
-elfdENTRY= $(BIN)/elf_dprefix.entry.o
-elfdEXIT= $(BIN)/elf_dprefix.exit.o
-lmelfdPREFIX= $(BIN)/lmelf_dprefix.o
-lmelfdENTRY= $(BIN)/lmelf_dprefix.entry.o
-lmelfdEXIT= $(BIN)/lmelf_dprefix.exit.o
-
-include $(BIN)/Roms
-
-all: $(ROMS)
-allroms: $(ROMS)
-allzroms: $(ROMS)
-alldsks: $(EB_DSKS)
-allzdsks: $(EB_ZDSKS)
-alllilos: $(EB_LILOS)
-allzlilos: $(EB_ZLILOS)
-allbImages: $(EB_BIMAGES)
-allbzImages: $(EB_BZIMAGES)
-allpxes: $(EB_PXES)
-allzpxes: $(EB_ZPXES)
-allelfs: $(EB_ELFS)
-allzelfs: $(EB_ZELFS)
-alllmelfs: $(EB_LMELFS)
-allzlmelfs: $(EB_ZLMELFS)
-allelfds: $(EB_ELFDS)
-allzelfds: $(EB_ZELFDS)
-alllmelfds: $(EB_LMELFDS)
-allzlmelfds: $(EB_ZLMELFDS)
-allcoms: $(EB_COMS)
-allexes: $(EB_EXES)
-allisos: $(EB_ISOS)
-alllisos: $(EB_LISOS)
-
-BOBJS+= $(BIN)/pci_io.o $(BIN)/i386_timer.o
-BOBJS+= $(BIN)/elf.o $(BIN)/cpu.o $(BIN)/video_subr.o
-BOBJS+= $(BIN)/pic8259.o $(BIN)/hooks.o
-
-# ROM loaders
-
-$(ISAPREFIX): arch/i386/prefix/romprefix.S $(MAKEDEPS)
- $(CPP) $(CFLAGS) $(LCONFIG) -Ui386 -D ASSEMBLY $< \
- | $(AS) $(ASFLAGS) -o $@
-
-$(PCIPREFIX): arch/i386/prefix/romprefix.S $(MAKEDEPS)
- $(CPP) -DPCI_PNP_HEADER $(CFLAGS) $(LCONFIG) -Ui386 -D ASSEMBLY $< \
- | $(AS) $(ASFLAGS) -o $@
-
-# Prefix splitters
-$(BIN)/%prefix.entry.o: $(BIN)/%prefix.o $(MAKEDEPS)
- $(OBJCOPY) -R .text16 $< $@
-
-$(BIN)/%prefix.exit.o: $(BIN)/%prefix.o $(MAKEDEPS)
- $(OBJCOPY) -R .prefix $< $@
-
-# Generic prefix objects
-PREFIXOBJS = $(BIN)/init.o
-ZPREFIXOBJS = $(BIN)/init.o $(BIN)/unnrv2b.o
-
-# Utilities
-$(BIN)/nrv2b: util/nrv2b.c
- $(HOST_CC) -O2 -DENCODE -DDECODE -DMAIN -DVERBOSE -DNDEBUG -DBITSIZE=32 -DENDIAN=0 -o $@ $<
-
-ZFILELEN = perl util/zfilelen.pl
-
-# Pattern Rules
-
-# General for compiling/assembly source files
-
-$(BIN)/%.o: arch/i386/core/%.c $(MAKEDEPS)
- $(CC) $(CFLAGS) -o $@ -c $<
-
-$(BIN)/%.o: arch/i386/core/%.S $(MAKEDEPS)
- $(CPP) $(CFLAGS) -Ui386 -D ASSEMBLY $< | $(AS) $(ASFLAGS) -o $@
-
-$(BIN)/%.o: arch/i386/firmware/pcbios/%.c $(MAKEDEPS)
- $(CC) $(CFLAGS) -o $@ -c $<
-
-$(BIN)/%.o: arch/i386/firmware/pcbios/%.S $(MAKEDEPS)
- $(CPP) $(CFLAGS) -Ui386 -DASSEMBLY $< | $(AS) $(ASFLAGS) -o $@
-
-$(BIN)/%.o: arch/i386/prefix/%.S $(MAKEDEPS)
- $(CPP) $(CFLAGS) -Ui386 -DASSEMBLY $< | $(AS) $(ASFLAGS) -o $@
-
-$(BIN)/%16.o: arch/i386/prefix/%.S $(MAKEDEPS)
- $(CPP) $(CFLAGS) -Ui386 -DASSEMBLY -DCODE16 $< | $(AS) $(ASFLAGS) -o $@
-
-# general rule for 16bit .o, may be overridden
-$(BIN)/%.o: $(BIN)/%.s
- $(AS) $(ASFLAGS) -o $@ $<
-
-# general rule for .bin (plain binary loader code), may be overridden
-$(BIN)/%.bin: $(BIN)/%.o
- $(OBJCOPY) -O binary $< $@
-
-# general rule for .z (compressed binary code), may be overridden
-# rule for .z is in top level Makefile
-# Give the directory name, e.g. use $(BIN)/rtl8139.com as the target.
-
-$(BIN)/%.zo: $(BIN)/%.zbin arch/i386/core/prefixzdata.lds $(MAKEDEPS)
- $(LD) -T arch/i386/core/prefixzdata.lds -b binary $< -o $@
-
-$(BIN)/%.uo: $(BIN)/%.bin arch/i386/core/prefixudata.lds $(MAKEDEPS)
- $(LD) -T arch/i386/core/prefixudata.lds -b binary $< -o $@
-
-# Intermediate prf rules
-
-%.prf: %.rt $(PREFIXOBJS) %.rt1.uo %.rt2.uo $(MAKEDEPS)
- $(MAKE) $(TARGETENTRY)
- $(LD) $(LDFLAGS) -T $(PLDSCRIPT) $(TARGETENTRY) -R $(subst $(MAKEDEPS),,$^) -o $@
-
-%.zprf: %.rt $(ZPREFIXOBJS) %.rt1.uo %.rt2.zo $(MAKEDEPS)
- $(MAKE) $(TARGETENTRY)
- $(LD) $(LDFLAGS) -T $(PLDSCRIPT) $(TARGETENTRY) -R $(subst $(MAKEDEPS),,$^) -o $@
-
-# general rules for normal/compressed ROM images, may be overridden
-SUFFIXES += rom zrom
-
-$(BIN)/%.rom.rt: $(BIN)/%.rt.o $(ISAENTRY) $(PCIENTRY) $(ISAEXIT) $(PCIEXIT) $(LDSCRIPT) $(MAKEDEPS)
- $(LD) $(LDFLAGS) -T $(LDSCRIPT) -o $@ $(romEXIT) $<
- @$(SIZE) $@ | $(CHECKSIZE)
-
-$(BIN)/%.rom: $(BIN)/%.rom.prf
- $(OBJCOPY) -O binary $< $@
- $(MAKEROM) $(MAKEROM_FLAGS) $(MAKEROM_$(ROMCARD)) $(MAKEROM_ID_$(ROMCARD)) -i$(IDENT) $@
-
-$(BIN)/%.zrom: $(BIN)/%.rom.zprf
- $(OBJCOPY) -O binary $< $@
- $(MAKEROM) $(MAKEROM_FLAGS) $(MAKEROM_$(ROMCARD)) $(MAKEROM_ID_$(ROMCARD)) -i$(IDENT) $@
-
-# general rules for ELF images
-SUFFIXES += elf zelf
-$(BIN)/%.elf.rt: $(BIN)/%.rt.o $(elfENTRY) $(elfEXIT) $(LDSCRIPT) $(MAKEDEPS)
- $(LD) $(LDFLAGS) -T $(LDSCRIPT) -o $@ $(elfEXIT) $<
-
-$(BIN)/%.elf: $(BIN)/%.elf.prf
- $(OBJCOPY) -O binary $< $@
-
-$(BIN)/%.zelf: $(BIN)/%.elf.zprf
- $(OBJCOPY) -O binary $< $@
-
-# general rules for Long Mode ELF images
-SUFFIXES += lmelf zlmelf
-$(BIN)/%.lmelf.rt: $(BIN)/%.rt.o $(lmelfENTRY) $(lmelfEXIT) $(LDSCRIPT) $(MAKEDEPS)
- $(LD) $(LDFLAGS) -T $(LDSCRIPT) -o $@ $(lmelfEXIT) $<
-
-$(BIN)/%.lmelf: $(BIN)/%.lmelf.prf
- $(OBJCOPY) -O binary $< $@
-
-$(BIN)/%.zlmelf: $(BIN)/%.lmelf.zprf
- $(OBJCOPY) -O binary $< $@
-
-# general rules for ELF dynamic images
-SUFFIXES += elfd zelfd
-$(BIN)/%.elfd.rt: $(BIN)/%.rt.o $(elfdENTRY) $(elfdEXIT) $(LDSCRIPT) $(MAKEDEPS)
- $(LD) $(LDFLAGS) -T $(LDSCRIPT) -o $@ $(elfdEXIT) $<
-
-$(BIN)/%.elfd: $(BIN)/%.elfd.prf
- $(OBJCOPY) -O binary $< $@
-
-$(BIN)/%.zelfd: $(BIN)/%.elfd.zprf
- $(OBJCOPY) -O binary $< $@
-
-# general rules for Long Mode ELF dynamic images
-SUFFIXES += lmelfd zlmelfd
-$(BIN)/%.lmelfd.rt: $(BIN)/%.rt.o $(lmelfdENTRY) $(lmelfdEXIT) $(LDSCRIPT) $(MAKEDEPS)
- $(LD) $(LDFLAGS) -T $(LDSCRIPT) -o $@ $(lmelfdEXIT) $<
-
-$(BIN)/%.lmelfd: $(BIN)/%.lmelfd.prf
- $(OBJCOPY) -O binary $< $@
-
-$(BIN)/%.zlmelfd: $(BIN)/%.lmelfd.zprf
- $(OBJCOPY) -O binary $< $@
-
-# rules to generate a DOS loadable .com executable
-SUFFIXES += com
-$(BIN)/%.com.rt: $(BIN)/%.rt.o $(comENTRY) $(comEXIT) $(LDSCRIPT) $(MAKEDEPS)
- $(LD) $(LDFLAGS) -T $(LDSCRIPT) -o $@ $< $(comEXIT)
-
-$(BIN)/%.com: $(BIN)/%.com.zprf
- $(OBJCOPY) -O binary $< $@
-
-# rules to generate a DOS loadable .exe executable
-SUFFIXES += exe
-$(BIN)/%.exe.rt: $(BIN)/%.rt.o $(exeENTRY) $(exeEXIT) $(LDSCRIPT) $(MAKEDEPS)
- $(LD) $(LDFLAGS) -T $(LDSCRIPT) -o $@ $< $(exeEXIT)
- @$(SIZE) $@ | $(CHECKSIZE)
-
-$(BIN)/%.exe: $(BIN)/%.exe.prf
- $(OBJCOPY) -O binary $< $@
-
-# rules to make a LILO loadable image
-SUFFIXES += lilo zlilo
-
-$(BIN)/%.lilo.rt: $(BIN)/%.rt.o $(liloENTRY) $(liloEXIT) $(LDSCRIPT) $(MAKEDEPS)
- $(LD) $(LDFLAGS) -T $(LDSCRIPT) -o $@ $< $(liloEXIT)
- @$(SIZE) $@ | $(CHECKSIZE)
-
-$(BIN)/%.lilo: $(BIN)/%.lilo.prf
- $(OBJCOPY) -O binary $< $@
-
-$(BIN)/%.zlilo: $(BIN)/%.lilo.zprf
- $(OBJCOPY) -O binary $< $@
-
-# rules to make big linux boot protocol image
-SUFFIXES += bImage bzImage
-
-$(BIN)/%.bImage.rt: $(BIN)/%.rt.o $(bImageENTRY) $(bImageEXIT) $(LDSCRIPT) $(MAKEDEPS)
- $(LD) $(LDFLAGS) -T $(LDSCRIPT) -o $@ $< $(bImageEXIT)
-
-$(BIN)/%.bImage: $(BIN)/%.bImage.prf
- $(OBJCOPY) -O binary $< $@
-
-$(BIN)/%.bzImage: $(BIN)/%.bImage.zprf
- $(OBJCOPY) -O binary $< $@
-
-
-# rules to generate a PXE loadable image
-SUFFIXES += pxe zpxe
-
-$(BIN)/%.pxe.rt: $(BIN)/%.rt.o $(pxeENTRY) $(pxeEXIT) $(LDSCRIPT) $(MAKEDEPS)
- $(LD) $(LDFLAGS) -T $(LDSCRIPT) -o $@ $< $(pxeEXIT)
- @$(SIZE) $@ | $(CHECKSIZE)
-
-$(BIN)/%.pxe: $(BIN)/%.pxe.prf
- $(OBJCOPY) -O binary $< $@
-
-$(BIN)/%.zpxe: $(BIN)/%.pxe.zprf
- $(OBJCOPY) -O binary $< $@
-
-# rules to generate the .dsk/.zdsk floppy images
-SUFFIXES += dsk zdsk
-
-$(BIN)/%.dsk.rt: $(BIN)/%.rt.o $(dskENTRY) $(dskEXIT) $(LDSCRIPT) $(MAKEDEPS)
- $(LD) $(LDFLAGS) -T $(LDSCRIPT) -o $@ $< $(dskEXIT)
- @$(SIZE) $@ | $(CHECKSIZE)
-
-$(BIN)/%.dsk: $(BIN)/%.dsk.prf
- $(OBJCOPY) -O binary $< $@
-
-$(BIN)/%.zdsk: $(BIN)/%.dsk.zprf
- $(OBJCOPY) -O binary $< $@
-
-# rules to write the .dsk/.zdsk image onto a blank floppy
-SUFFIXES += fd0 zfd0
-%.fd0: %.dsk
- dd if=$< bs=512 conv=sync of=/dev/fd0
- sync
-
-%.zfd0: %.zdsk
+# i386-specific directories containing source files
+#
+SRCDIRS += arch/i386/core arch/i386/transitions arch/i386/prefix
+SRCDIRS += arch/i386/firmware/pcbios arch/i386/firmware/linuxbios
+SRCDIRS += arch/i386/drivers/net
+
+# The various xxx_loader.c files are #included into core/loader.c and
+# should not be compiled directly.
+#
+NON_AUTO_SRCS += arch/i386/core/aout_loader.c
+NON_AUTO_SRCS += arch/i386/core/freebsd_loader.c
+NON_AUTO_SRCS += arch/i386/core/multiboot_loader.c
+NON_AUTO_SRCS += arch/i386/core/tagged_loader.c
+NON_AUTO_SRCS += arch/i386/core/wince_loader.c
+
+# setup.S and unnrv2b.S are both used to generate 16-bit as well as
+# 32-bit objects.
+#
+OBJS_setup = setup setup16
+CFLAGS_setup16 = -DCODE16
+OBJS_unnrv2b = unnrv2b unnrv2b16
+CFLAGS_unnrv2b16 = -DCODE16
+
+# hooks.c is used to generate hooks.o and hooks_rm.o
+#
+OBJS_hooks = hooks hooks_rm
+CFLAGS_hooks_rm = -DREALMODE
+
+# We need to undefine the default macro "i386" when compiling .S
+# files, otherwise ".arch i386" translates to ".arch 1"...
+#
+CFLAGS_S += -Ui386
+
+# The i386 linker script
+#
+LDSCRIPT = arch/i386/scripts/i386.lds
+
+# Media types.
+#
+# It's ugly that we have to define these repetitive combinations by
+# hand. Unforunately, $(eval ...) is available only in make >= 3.80,
+# and using an external Makefile fragment doesn't work because
+# OBJS_xxx need to be defined *before* the external Makefile fragments
+# for the source files are generated...
+
+CFLAGS_ZPREFIX = -DCOMPRESS
+
+MEDIA += rom
+OBJS_romprefix = isaprefix zisaprefix pciprefix zpciprefix
+CFLAGS_isaprefix =
+CFLAGS_zisaprefix = $(CFLAGS_ZPREFIX)
+CFLAGS_pciprefix = -DPCI_PNP_HEADER
+CFLAGS_zpciprefix = $(CFLAGS_pciprefix) $(CFLAGS_ZPREFIX)
+
+MEDIA += pxe
+OBJS_pxeprefix = pxeprefix zpxeprefix
+CFLAGS_zpxeprefix = $(CFLAGS_ZPREFIX)
+
+MEDIA += elf
+OBJS_elfprefix = elfprefix zelfprefix
+CFLAGS_zelfprefix = $(CFLAGS_ZPREFIX)
+
+MEDIA += elfd
+OBJS_elfdprefix = elfdprefix zelfdprefix
+CFLAGS_zelfdprefix = $(CFLAGS_ZPREFIX)
+
+MEDIA += lmelf
+OBJS_lmelfprefix = lmelfprefix zlmelfprefix
+CFLAGS_zlmelfprefix = $(CFLAGS_ZPREFIX)
+
+MEDIA += lmelfd
+OBJS_lmelfdprefix = lmelfdprefix zlmelfdprefix
+CFLAGS_zlmelfdprefix = $(CFLAGS_ZPREFIX)
+
+MEDIA += lilo
+OBJS_liloprefix = liloprefix zliloprefix
+CFLAGS_zliloprefix = $(CFLAGS_ZPREFIX)
+
+MEDIA += bImage
+OBJS_bImageprefix = bImageprefix zbImageprefix
+CFLAGS_zbImageprefix = $(CFLAGS_ZPREFIX)
+
+MEDIA += dsk
+OBJS_dskprefix = dskprefix zdskprefix
+CFLAGS_zdskprefix = $(CFLAGS_ZPREFIX)
+
+MEDIA += raw
+OBJS_rawprefix = rawprefix zrawprefix
+CFLAGS_zrawprefix = $(CFLAGS_ZPREFIX)
+
+# These media cannot handle compressed payloads
+
+MEDIA += com
+
+MEDIA += exe
+
+# Some suffixes (e.g. %.zfd0) are generated directly from other
+# finished files (e.g. %.zdsk), rather than having their own prefix.
+
+# rule to write disk images to /dev/fd0
+NON_AUTO_MEDIA += fd0
+%fd0 : %dsk
dd if=$< bs=512 conv=sync of=/dev/fd0
sync
-# rules to create raw executable images
-SUFFIXES += raw zraw
-$(BIN)/%.raw.rt: $(BIN)/%.rt.o $(rawENTRY) $(rawEXIT) $(LDSCRIPT) $(MAKEDEPS)
- $(LD) $(LDFLAGS) -T $(LDSCRIPT) -o $@ $< $(rawEXIT)
-
-$(BIN)/%.raw: $(BIN)/%.raw.prf
- $(OBJCOPY) -O binary $< $@
-
-$(BIN)/%.zraw: $(BIN)/%.raw.zprf
- $(OBJCOPY) -O binary $< $@
-
# rule to make a non-emulation ISO boot image
-SUFFIXES += iso
-%.iso: util/geniso %.zlilo
- ISOLINUX_BIN=${ISOLINUX_BIN} bash util/geniso $*.iso $*.zlilo
+NON_AUTO_MEDIA += iso
+%iso: %lilo util/geniso
+ ISOLINUX_BIN=$(ISOLINUX_BIN) bash util/geniso $@ $<
# rule to make a floppy emulation ISO boot image
-SUFFIXES += liso
-%.liso: util/genliso %.zlilo
- bash util/genliso $*.liso $*.zlilo
-
+NON_AUTO_MEDIA += liso
+%liso: %lilo util/genliso
+ bash util/genliso $@ $<
+
+# Add NON_AUTO_MEDIA to the media list, so that they show up in the
+# output of "make"
+#
+MEDIA += $(NON_AUTO_MEDIA)
+
+# Shortcut to allow typing just
+# make bin-kir/%
+# rather than
+# make -f arch/i386/kir-Makefile bin-kir/%
+# for building a KEEP_IT_REAL flavour.
+#
+$(BIN)-kir/% : kir-target
+ $(MAKE) -f arch/i386/kir-Makefile $(MAKECMDGOALS)
+
+.PHONY : kir-target