Makefile revision 677833bc953b6cb418c701facbdcf4aa18d6c44e
c10c16dec587a0662068f6e2991c29ed3a9db943Richard LoweARCH_FORMAT= elf32-i386
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe# For debugging, don't delete intermediates
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe#.SECONDARY:
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe
c10c16dec587a0662068f6e2991c29ed3a9db943Richard LoweLDSCRIPT= arch/i386/core/etherboot.lds
c10c16dec587a0662068f6e2991c29ed3a9db943Richard LowePLDSCRIPT= arch/i386/core/etherboot.prefix.lds
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe
c10c16dec587a0662068f6e2991c29ed3a9db943Richard LoweLCONFIG+= -Ui386
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe
c10c16dec587a0662068f6e2991c29ed3a9db943Richard LoweROMLIMIT= 524288
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovCHECKSIZE= { read d1; read d1 d2 d3 size d4; [ $$size -gt $(ROMLIMIT) ] &&\
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe { $(RM) $@; echo "ERROR: code size exceeds limit!"; exit 1; }; exit 0; }
3c9168fa8e9c30d55b3aa2fde74bd7da46df53f5Hans Rosenfeld
49ef7e0638c8b771d8a136eae78b1c0f99acc8e0Garrett D'AmoreSTART= $(BIN)/start32.o $(BIN)/linuxbios.o \
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov $(BIN)/bios.o $(BIN)/console.o $(BIN)/memsizes.o $(BIN)/basemem.o \
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe $(BIN)/hidemem.o $(BIN)/e820mangler.o \
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov $(BIN)/realmode.o $(BIN)/realmode_asm.o \
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe $(BIN)/callbacks.o $(BIN)/pxe_callbacks.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
c10c16dec587a0662068f6e2991c29ed3a9db943Richard LoweSRCS+= arch/i386/prefix/hdprefix.S
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/prefix/floppyprefix.S
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/prefix/unhuf.S
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/prefix/unnrv2b.S
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/firmware/pcbios/bios.c
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/firmware/pcbios/console.c
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/firmware/pcbios/memsizes.c
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/firmware/pcbios/basemem.c
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/firmware/pcbios/hidemem.c
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/firmware/pcbios/e820mangler.S
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/prefix/liloprefix.S
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/prefix/elfprefix.S
5886b388693aede815c0cf5262e123d4677cd72cGarrett D'AmoreSRCS+= arch/i386/prefix/lmelf_prefix.S
d14abf155341d55053c76eeec58b787a456b753bRobert MustacchiSRCS+= arch/i386/prefix/elf_dprefix.S
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/prefix/lmelf_dprefix.S
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/prefix/comprefix.S
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/prefix/exeprefix.S
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/prefix/pxeprefix.S
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/prefix/romprefix.S
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/core/init.S
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/core/start32.S
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/core/pci_io.c
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/core/i386_timer.c
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/core/elf.c
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/core/cpu.c
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/core/video_subr.c
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/core/pic8259.c
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/core/hooks.c
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/core/callbacks.c
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/core/realmode.c
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/core/realmode_asm.S
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSRCS+= arch/i386/core/pxe_callbacks.c
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov# ROM loaders: ISA and PCI versions
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovISAPREFIX= $(BIN)/isaprefix.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovISAENTRY= $(BIN)/isaprefix.entry.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovISAEXIT= $(BIN)/isaprefix.exit.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovPCIPREFIX= $(BIN)/pciprefix.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovPCIENTRY= $(BIN)/pciprefix.entry.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovPCIEXIT= $(BIN)/pciprefix.exit.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov# Variables xxx_ROMTYPE are defined by genrules.pl. ROMENTRY and
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov# ROMEXIT will evaluate to give the correct objects to use.
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovTARGETBASE=$(basename $(notdir $@))
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovROMCARD=$(firstword $(subst --, ,$(TARGETBASE)))
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovROMTYPE=$(firstword $(ROMTYPE_$(ROMCARD)) ISA)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovromENTRY=$($(ROMTYPE)ENTRY)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovromEXIT=$($(ROMTYPE)EXIT)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov# Target type for generic prf rules
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovTARGETTYPE=$(patsubst .%,%, $(suffix $(basename $@)))
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovTARGETENTRY=$($(TARGETTYPE)ENTRY)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovTARGETEXIT=$($(TARGETTYPE)EXIT)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov# Other real-mode entry loaders
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovhdPREFIX= $(BIN)/hdprefix.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovhdENTRY= $(BIN)/hdprefix.entry.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovhdEXIT= $(BIN)/hdprefix.exit.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovdskPREFIX= $(BIN)/floppyprefix.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovdskENTRY= $(BIN)/floppyprefix.entry.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovdskEXIT= $(BIN)/floppyprefix.exit.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovcomPREFIX= $(BIN)/comprefix.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovcomENTRY= $(BIN)/comprefix.entry.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovcomEXIT= $(BIN)/comprefix.exit.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovexePREFIX= $(BIN)/exeprefix.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovexeENTRY= $(BIN)/exeprefix.entry.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovexeEXIT= $(BIN)/exeprefix.exit.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovliloPREFIX= $(BIN)/liloprefix.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovliloENTRY= $(BIN)/liloprefix.entry.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovliloEXIT= $(BIN)/liloprefix.exit.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovbImagePREFIX= $(BIN)/bImageprefix.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovbImageENTRY= $(BIN)/bImageprefix.entry.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovbImageEXIT= $(BIN)/bImageprefix.exit.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovpxePREFIX= $(BIN)/pxeprefix.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovpxeENTRY= $(BIN)/pxeprefix.entry.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovpxeEXIT= $(BIN)/pxeprefix.exit.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovrawPREFIX= $(BIN)/nullprefix.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovrawENTRY= $(BIN)/nullprefix.entry.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovrawEXIT= $(BIN)/nullprefix.exit.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov# Protected mode entry loaders
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovelfPREFIX= $(BIN)/elfprefix.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovelfENTRY= $(BIN)/elfprefix.entry.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovelfEXIT= $(BIN)/elfprefix.exit.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovlmelfPREFIX= $(BIN)/lmelf_prefix.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovlmelfENTRY= $(BIN)/lmelf_prefix.entry.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovlmelfEXIT= $(BIN)/lmelf_prefix.exit.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovelfdPREFIX= $(BIN)/elf_dprefix.o
86635a91ceb503bad0052c7a964ec3fd28d548dcGarrett D'AmoreelfdENTRY= $(BIN)/elf_dprefix.entry.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovelfdEXIT= $(BIN)/elf_dprefix.exit.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovlmelfdPREFIX= $(BIN)/lmelf_dprefix.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovlmelfdENTRY= $(BIN)/lmelf_dprefix.entry.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovlmelfdEXIT= $(BIN)/lmelf_dprefix.exit.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankovinclude $(BIN)/Roms
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankovall: $(ROMS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankovallroms: $(ROMS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankovallzroms: $(ROMS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankovalldsks: $(EB_DSKS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankovallzdsks: $(EB_ZDSKS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankovallhds: $(EB_HDS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankovallzhds: $(EB_ZHDS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankovalllilos: $(EB_LILOS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankovallzlilos: $(EB_ZLILOS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovallbImages: $(EB_BIMAGES)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovallbzImages: $(EB_BZIMAGES)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankovallpxes: $(EB_PXES)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankovallzpxes: $(EB_ZPXES)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankovallelfs: $(EB_ELFS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankovallzelfs: $(EB_ZELFS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankovalllmelfs: $(EB_LMELFS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankovallzlmelfs: $(EB_ZLMELFS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankovallelfds: $(EB_ELFDS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankovallzelfds: $(EB_ZELFDS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankovalllmelfds: $(EB_LMELFDS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankovallzlmelfds: $(EB_ZLMELFDS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankovallcoms: $(EB_COMS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankovallexes: $(EB_EXES)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankovallisos: $(EB_ISOS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankovalllisos: $(EB_LISOS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovBOBJS+= $(BIN)/pci_io.o $(BIN)/i386_timer.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovBOBJS+= $(BIN)/elf.o $(BIN)/cpu.o $(BIN)/video_subr.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovBOBJS+= $(BIN)/pic8259.o $(BIN)/hooks.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov# ROM loaders
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov$(ISAPREFIX): arch/i386/prefix/romprefix.S $(MAKEDEPS)
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe $(CPP) $(CFLAGS) $(LCONFIG) -Ui386 -D ASSEMBLY $< \
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov | $(AS) $(ASFLAGS) -o $@
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov$(PCIPREFIX): arch/i386/prefix/romprefix.S $(MAKEDEPS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov $(CPP) -DPCI_PNP_HEADER $(CFLAGS) $(LCONFIG) -Ui386 -D ASSEMBLY $< \
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov | $(AS) $(ASFLAGS) -o $@
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov# Prefix splitters
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov$(BIN)/%prefix.entry.o: $(BIN)/%prefix.o $(MAKEDEPS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov $(OBJCOPY) -R .text16 $< $@
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov$(BIN)/%prefix.exit.o: $(BIN)/%prefix.o $(MAKEDEPS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov $(OBJCOPY) -R .prefix $< $@
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov# Generic prefix objects
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovPREFIXOBJS = $(BIN)/init.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovZPREFIXOBJS = $(BIN)/init.o $(BIN)/unnrv2b.o
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov# Utilities
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov$(BIN)/nrv2b: util/nrv2b.c
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov $(HOST_CC) -O2 -DENCODE -DDECODE -DMAIN -DVERBOSE -DNDEBUG -DBITSIZE=32 -DENDIAN=0 -o $@ $<
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovZFILELEN = perl util/zfilelen.pl
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov# Pattern Rules
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov# General for compiling/assembly source files
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov$(BIN)/%.o: arch/i386/core/%.c $(MAKEDEPS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov $(CC) $(CFLAGS) -o $@ -c $<
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov$(BIN)/%.o: arch/i386/core/%.S $(MAKEDEPS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov $(CPP) $(CFLAGS) -Ui386 -D ASSEMBLY $< | $(AS) $(ASFLAGS) -o $@
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe$(BIN)/%.o: arch/i386/firmware/pcbios/%.c $(MAKEDEPS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov $(CC) $(CFLAGS) -o $@ -c $<
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe$(BIN)/%.o: arch/i386/firmware/pcbios/%.S $(MAKEDEPS)
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe $(CPP) $(CFLAGS) -Ui386 -D ASSEMBLY $< | $(AS) $(ASFLAGS) -o $@
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe$(BIN)/%.o: arch/i386/prefix/%.S $(MAKEDEPS)
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe $(CPP) $(CFLAGS) -Ui386 -D ASSEMBLY $< | $(AS) $(ASFLAGS) -o $@
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe# general rule for 16bit .o, may be overridden
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe$(BIN)/%.o: $(BIN)/%.s
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe $(AS) $(ASFLAGS) -o $@ $<
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe
7ffba875a0c7cf118aef7a2c9bfd00c3935e230aGarrett D'Amore# general rule for .bin (plain binary loader code), may be overridden
7ffba875a0c7cf118aef7a2c9bfd00c3935e230aGarrett D'Amore$(BIN)/%.bin: $(BIN)/%.o
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe $(OBJCOPY) -O binary $< $@
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe# general rule for .z (compressed binary code), may be overridden
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe# rule for .z is in top level Makefile
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe# Give the directory name, e.g. use $(BIN)/rtl8139.com as the target.
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe$(BIN)/%.zo: $(BIN)/%.zbin arch/i386/core/prefixzdata.lds $(MAKEDEPS)
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe $(LD) -T arch/i386/core/prefixzdata.lds -b binary $< -o $@
8bf58058bb64c24ccf6da9141b2f10037725b137Richard Lowe
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe$(BIN)/%.uo: $(BIN)/%.bin arch/i386/core/prefixudata.lds $(MAKEDEPS)
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe $(LD) -T arch/i386/core/prefixudata.lds -b binary $< -o $@
d43e36083971394ac9c1341783ff58802c2e73efIgor Kozhukhov
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe# Intermediate prf rules
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe
989f28072d20c73ae0955d6a1e3e2fc74831cb39Jerry Jelinek%.prf: %.rt $(PREFIXOBJS) %.rt1.uo %.rt2.uo $(MAKEDEPS)
d43e36083971394ac9c1341783ff58802c2e73efIgor Kozhukhov $(MAKE) $(TARGETENTRY)
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe $(LD) $(LDFLAGS) -T $(PLDSCRIPT) $(TARGETENTRY) -R $(subst $(MAKEDEPS),,$^) -o $@
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe%.zprf: %.rt $(ZPREFIXOBJS) %.rt1.uo %.rt2.zo $(MAKEDEPS)
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe $(MAKE) $(TARGETENTRY)
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe $(LD) $(LDFLAGS) -T $(PLDSCRIPT) $(TARGETENTRY) -R $(subst $(MAKEDEPS),,$^) -o $@
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe# general rules for normal/compressed ROM images, may be overridden
3c9168fa8e9c30d55b3aa2fde74bd7da46df53f5Hans RosenfeldSUFFIXES += rom zrom
6d8b5bf1bbeb8c7f1357b3e5836fe664fb0fcc46Richard Lowe
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe$(BIN)/%.rom.rt: $(BIN)/%.rt.o $(ISAENTRY) $(PCIENTRY) $(ISAEXIT) $(PCIEXIT) $(LDSCRIPT) $(MAKEDEPS)
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe $(LD) $(LDFLAGS) -T $(LDSCRIPT) -o $@ $(romEXIT) $<
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe @$(SIZE) $@ | $(CHECKSIZE)
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe$(BIN)/%.rom: $(BIN)/%.rom.prf
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe $(OBJCOPY) -O binary $< $@
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe $(MAKEROM) $(MAKEROM_FLAGS) $(MAKEROM_$(ROMCARD)) $(MAKEROM_ID_$(ROMCARD)) -i$(IDENT) $@
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe
06cf6f102162a50c50c11c1579390fe873da5509Garrett D'Amore$(BIN)/%.zrom: $(BIN)/%.rom.zprf
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe $(OBJCOPY) -O binary $< $@
18350fd517a33ddbea1445f157f6cd88eacc0898Hans Rosenfeld $(MAKEROM) $(MAKEROM_FLAGS) $(MAKEROM_$(ROMCARD)) $(MAKEROM_ID_$(ROMCARD)) -i$(IDENT) $@
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe# general rules for ELF images
c10c16dec587a0662068f6e2991c29ed3a9db943Richard LoweSUFFIXES += elf zelf
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe$(BIN)/%.elf.rt: $(BIN)/%.rt.o $(elfENTRY) $(elfEXIT) $(LDSCRIPT) $(MAKEDEPS)
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe $(LD) $(LDFLAGS) -T $(LDSCRIPT) -o $@ $(elfEXIT) $<
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe$(BIN)/%.elf: $(BIN)/%.elf.prf
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov $(OBJCOPY) -O binary $< $@
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe$(BIN)/%.zelf: $(BIN)/%.elf.zprf
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe $(OBJCOPY) -O binary $< $@
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe# general rules for Long Mode ELF images
c10c16dec587a0662068f6e2991c29ed3a9db943Richard LoweSUFFIXES += lmelf zlmelf
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe$(BIN)/%.lmelf.rt: $(BIN)/%.rt.o $(lmelfENTRY) $(lmelfEXIT) $(LDSCRIPT) $(MAKEDEPS)
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe $(LD) $(LDFLAGS) -T $(LDSCRIPT) -o $@ $(lmelfEXIT) $<
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe$(BIN)/%.lmelf: $(BIN)/%.lmelf.prf
e2c88f0c2610f16de7b639746b40dea5f3e2256eGarrett D'Amore $(OBJCOPY) -O binary $< $@
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov$(BIN)/%.zlmelf: $(BIN)/%.lmelf.zprf
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov $(OBJCOPY) -O binary $< $@
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe# general rules for ELF dynamic images
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSUFFIXES += elfd zelfd
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov$(BIN)/%.elfd.rt: $(BIN)/%.rt.o $(elfdENTRY) $(elfdEXIT) $(LDSCRIPT) $(MAKEDEPS)
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe $(LD) $(LDFLAGS) -T $(LDSCRIPT) -o $@ $(elfdEXIT) $<
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov$(BIN)/%.elfd: $(BIN)/%.elfd.prf
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe $(OBJCOPY) -O binary $< $@
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov$(BIN)/%.zelfd: $(BIN)/%.elfd.zprf
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov $(OBJCOPY) -O binary $< $@
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov# general rules for Long Mode ELF dynamic images
c10c16dec587a0662068f6e2991c29ed3a9db943Richard LoweSUFFIXES += lmelfd zlmelfd
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov$(BIN)/%.lmelfd.rt: $(BIN)/%.rt.o $(lmelfdENTRY) $(lmelfdEXIT) $(LDSCRIPT) $(MAKEDEPS)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov $(LD) $(LDFLAGS) -T $(LDSCRIPT) -o $@ $(lmelfdEXIT) $<
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov$(BIN)/%.lmelfd: $(BIN)/%.lmelfd.prf
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe $(OBJCOPY) -O binary $< $@
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov$(BIN)/%.zlmelfd: $(BIN)/%.lmelfd.zprf
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe $(OBJCOPY) -O binary $< $@
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe# rules to generate a DOS loadable .com executable
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovSUFFIXES += com
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov$(BIN)/%.com.rt: $(BIN)/%.rt.o $(comENTRY) $(comEXIT) $(LDSCRIPT) $(MAKEDEPS)
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe $(LD) $(LDFLAGS) -T $(LDSCRIPT) -o $@ $< $(comEXIT)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe$(BIN)/%.com: $(BIN)/%.com.zprf
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe $(OBJCOPY) -O binary $< $@
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov# rules to generate a DOS loadable .exe executable
c10c16dec587a0662068f6e2991c29ed3a9db943Richard LoweSUFFIXES += exe
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov$(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 generate the .hd/.zhd harddisk images
SUFFIXES += hd zhd
$(BIN)/%.hd.rt: $(BIN)/%.rt.o $(hdENTRY) $(hdEXIT) $(LDSCRIPT) $(MAKEDEPS)
$(LD) $(LDFLAGS) -T $(LDSCRIPT) -o $@ $< $(hdEXIT)
@$(SIZE) $@ | $(CHECKSIZE)
$(BIN)/%.hd: $(BIN)/%.hd.prf
$(OBJCOPY) -O binary $< $@
$(BIN)/%.zhd: $(BIN)/%.hd.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
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
# rule to make a floppy emulation ISO boot image
SUFFIXES += liso
%.liso: util/genliso %.zlilo
bash util/genliso $*.liso $*.zlilo