⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 makefile

📁 linux下从网卡远程启动
💻
字号:
## Makefile for Etherboot## Most of the time you should edit Config## Common options:#	VERSION=v	- Set the version string## NS8390 options:#	-DINCLUDE_NE	- Include NE1000/NE2000 support#	-DNE_SCAN=list	- Probe for NE base address using list of#			  comma separated hex addresses#	-DINCLUDE_3C503 - Include 3c503 support#	  -DT503_SHMEM	- Use 3c503 shared memory mode (off by default)#	-DINCLUDE_WD	- Include Western Digital/SMC support#	-DWD_DEFAULT_MEM- Default memory location for WD/SMC cards#	-DCOMPEX_RL2000_FIX##	If you have a Compex RL2000 PCI 32-bit (11F6:1401),#	and the bootrom hangs in "Probing...[NE*000/PCI]",#	try enabling this fix... it worked for me :).#	In the first packet write somehow it somehow doesn't#	get back the expected data so it is stuck in a loop.#	I didn't bother to investigate what or why because it works#	when I interrupt the loop if it takes more then COMPEX_RL2000_TRIES.#	The code will notify if it does a abort.#	SomniOne - somnione@gmx.net## 3C509 option:#	-DINCLUDE_3C509	- Include 3c509 support## 3C90X options:#	-DINCLUDE_3C90X	- Include 3c90x support#	-DCFG_3C90X_PRESERVE_XCVR - Reset the transceiver type to the value it#			  had initially just before the loaded code is started.#	-DCFG_3C90X_XCVR - Hardcode the tranceiver type Etherboot uses.#	-DCFG_3C90X_BOOTROM_FIX - If you have a 3c905B with buggy ROM#			  interface, setting this option might "fix" it.  Use#			  with caution and read the docs in 3c90x.txt!##	See the documentation file 3c90x.txt for more details.## CS89X0 (optional) options:#	-DINCLUDE_CS89X0- Include CS89x0 support#	-DCS_SCAN=list	- Probe for CS89x0 base address using list of#			  comma separated hex addresses; increasing the#			  address by one (0x300 -> 0x301) will force a#			  more aggressive probing algorithm. This might#			  be neccessary after a soft-reset of the NIC.## LANCE options:#	-DINCLUDE_NE2100- Include NE2100 support#	-DINCLUDE_NI6510- Include NI6510 support## SK_G16 options:#	-DINCLUDE_SK_G16- Include SK_G16 support## I82586 options:#	-DINCLUDE_3C507	- Include 3c507 support#	-DINCLUDE_NI5210- Include NI5210 support#	-DINCLUDE_EXOS205-Include EXOS205 support## SMC9000 options:#       -DINCLUDE_SMC9000   - Include SMC9000 driver#       -DSMC9000_SCAN=list - List of I/O addresses to probe## TIARA (Fujitsu Etherstar) options:#	-DINCLUDE_TIARA	- Include Tiara support## NI5010 options:#	-DINCLUDE_NI5010 - Include NI5010 support## TULIP options:#	-DINCLUDE_TULIP	- Include Tulip support#	-DUSE_INTERNAL_BUFFER - receuve and transmit buffers within program#		space, not below 0x10000, in case that region is used## RTL8139 options:#	-DINCLUDE_RTL8139 - Include RTL8139 support#	-DUSE_INTERNAL_BUFFER - 8 kB receive buffer within program space,#		not at 0x10000 - 8kB, in case that region is used#include ConfigGCC=		gccCPP=		gcc -EVERSION=	4.6.12CFLAGS16+=	-DVERSION=\"$(VERSION)\" -DRELOC=$(RELOCADDR)CFLAGS32+=	-DVERSION=\"$(VERSION)\" -DRELOC=$(RELOCADDR) $(OLDGAS)LCONFIG+=	-DRELOC=$(RELOCADDR)IDENT16=		'Etherboot/16 $(VERSION) (GPL) $(@F)'IDENT32=		'Etherboot/32 $(VERSION) (GPL) $(@F)'# Find out if we're using binutils 2.9.1 which uses a different syntax in some# places (most prominently in the opcode prefix area).OLDGAS:=	$(shell $(AS) --version | grep -q '2\.9\.1' && echo -DGAS291)# Check the requested type of build (32, 16 or both families)ifeq ($(ETHERBOOT),16)BUILD_LIBS=	$(BLIB16)BUILD_BINS=	$(BINS16)endififeq ($(ETHERBOOT),32)BUILD_LIBS=	$(BLIB32)BUILD_BINS=	$(BINS32)endififeq ($(ETHERBOOT),both)BUILD_LIBS=	$(BLIB16) $(BLIB32)BUILD_BINS=	$(BINS16) $(BINS32)endif3C503FLAGS=	-DINCLUDE_3C503 # -DT503_SHMEM# Note that the suffix to MAKEROM_ is the (mixed case) basename of the ROM fileMAKEROM_3c503=	-33C507FLAGS=	-DINCLUDE_3C5073C509FLAGS=	-DINCLUDE_3C5093C529FLAGS=	-DINCLUDE_3C5293C595FLAGS=	-DINCLUDE_3C5953C90XFLAGS=	-DINCLUDE_3C90XCS89X0FLAGS=	-DINCLUDE_CS89X0EEPROFLAGS=	-DINCLUDE_EEPROEEPRO100FLAGS=	-DINCLUDE_EEPRO100EPIC100FLAGS=	-DINCLUDE_EPIC100EXOS205FLAGS=	-DINCLUDE_EXOS205LANCEFLAGS=	-DINCLUDE_LANCE		# Lance/PCI!NE2100FLAGS=	-DINCLUDE_NE2100NEFLAGS=	-DINCLUDE_NE -DNE_SCAN=0x300,0x280,0x320,0x340,0x380NS8390FLAGS=	-DINCLUDE_NS8390	# NE2000/PCI!NI5010FLAGS=	-DINCLUDE_NI5010NI5210FLAGS=	-DINCLUDE_NI5210NI6510FLAGS=	-DINCLUDE_NI6510RTL8139FLAGS=	-DINCLUDE_RTL8139SK_G16FLAGS=	-DINCLUDE_SK_G16SMC9000FLAGS=   -DINCLUDE_SMC9000TIARAFLAGS=	-DINCLUDE_TIARADEPCAFLAGS=	-DINCLUDE_DEPCA	# -DDEPCA_MODEL=DEPCA -DDEPCA_RAM_BASE=0xd0000TULIPFLAGS=	-DINCLUDE_TULIPOTULIPFLAGS=	-DINCLUDE_OTULIPVIA_RHINEFLAGS=	-DINCLUDE_VIA_RHINEWDFLAGS=	-DINCLUDE_WD -DWD_DEFAULT_MEM=0xCC000W89C840FLAGS=	-DINCLUDE_W89C840# If you have not made any changes to the *.S files, AS86 need not be set.# (most people)# If you have made changes to the *.S files and you want to rebuild *loader.bin# and {floppy,com}load.bin and you have as86 from the ELKS Dev86 package (not# the one that normally comes with Linux) (not most people)#AS86=		as86# If you have made changes to the *.S files and you want to rebuild *loader.bin# and {floppy,com}load.bin and you have nasm (not most people)#AS86=		nasm# if your as has trouble with the data32 directive, uncomment this# but note that the premade start*.o will be larger than necessary because it# contains some routines which may not be used#AS_PSEUDOS=	nSRCS=	floppyload.S comload.S liloprefix.S loader.S start16.S start32.S serial.S startmpcc.SSRCS+=	main.c pci.c osloader.c nfs.c misc.c ansiesc.c bootmenu.c config.cSRCS+=	md5.c floppy.c# ROM loaders: LZ version (prefix Z), PCI header version (prefix P)ifndef AS86RLOADER=	rloader.bin.prePRLOADER=	prloader.bin.preRZLOADER=	rzloader.bin.prePRZLOADER=	przloader.bin.preFLOPPYLOAD=	floppyload.bin.preCOMLOAD=	comload.bin.preLILOPREFIX=	liloprefix.bin.preelseRLOADER=	bin/rloader.binPRLOADER=	bin/prloader.binRZLOADER=	bin/rzloader.binPRZLOADER=	bin/przloader.binFLOPPYLOAD=	bin/floppyload.binCOMLOAD=	bin/comload.binLILOPREFIX=	bin/liloprefix.binendififeq ($(AS86),as86)LCPPFLAGS+=	-DUSE_AS86LASFLAGS+=	$(AS86FLAGS) -0LASBINARY:=	-bendififeq ($(AS86),nasm)LCPPFLAGS+=	-DUSE_NASMLASFLAGS+=	$(NASMFLAGS) -fbinLASBINARY:=	-oendififeq ($(AS_PSEUDOS),n)START16=	start16.o.preSTART32=	start32.o.preelseSTART16=	bin16/start16.oSTART32=	bin32/startmpcc.oendifBOBJS16=	bin16/main.o bin16/osloader.o bin16/misc.o bin16/bootmenu.oBOBJS16+=	bin16/floppy.o bin16/timer.oBOBJS32=	bin32/main.o bin32/osloader.o bin32/nfs.o bin32/misc.oBOBJS32+=	bin32/ansiesc.o bin32/bootmenu.o bin32/md5.o bin32/floppy.oBOBJS32+=	bin32/serial.o bin32/timer.oBLIB16=	bin16/bootlib.aBLIB32=	bin32/bootlib.aLIBS16=	$(BLIB16) $(LIBC16)LIBS32=	$(BLIB32) $(LIBC32) /usr/lib/gcc-lib/i386-redhat-linux/2.96/libgcc.aUTIL_LZHUF:= $(shell if [ -d ../contrib/compressor ]; then echo bin/lzhuf; fi)UTILS+=	bin/makerom $(UTIL_LZHUF) bin/organonSTDDEPS16=	$(START16) $(BLIB16) $(UTILS)STDDEPS32=	$(START32) $(BLIB32) $(UTILS)MAKEDEPS=	Makefile Config RomsCHECKSIZE=	{ read d1; read d1 d2 d3 size d4; [ $$size -gt $(ROMLIMIT) ] &&\	{ $(RM) $@; echo "ERROR: code size exceeds limit!"; exit 1; }; exit 0; }# Make sure that the relocation address is acceptable for all ROM sizes.# Setting it to 0x98000 leaves about 29kB of space for the Etherboot program.# The check is done based running 'size' on the binary, not ROM size, but# roughly this means a ROM of 16kB or a partially used ROM of 32kB,# remembering to compressed ROM images into account.# You may also set RELOCADDR to 0x88000 to avoid using 0x98000# because of other drivers (e.g. Disk On Chip). In that case, you may# only load 512kB of OS, or load in memory above 1MB.# Don't forget to choose an assembler because the loaders have to be rebuilt.ifndef RELOCADDRRELOCADDR=0x98000#RELOCADDR=0xe0000endif# Evaluate ROMLIMIT only once - it is constant during the make run.# Note that the 3K safety margin below is for the 1K extended BIOS data area# and for the Etherboot runtime stack.  Under normal situations, 2K of stack# are rarely needed.  If you experience strange behaviour in functions that use# many local variables or that call functions that do, check for stack overrun!# Make sure that the normal case needs no perl interpreter - if someone uses a# different RELOCADDR, then he has perl installed anyways (the shell cannot# deal with hex numbers, as test/eval don't support non-decimal integers).ifeq ($(RELOCADDR),0x98000)ROMLIMIT=29696elseROMLIMIT:=$(shell perl -e 'print 0x10000 - 3072 - ($(RELOCADDR) & 0xFFFF), "\n";')endif# Start of targetsall:	$(UTILS) $(BUILD_LIBS) allbinsinclude Roms# We need allbins because $(BINS16) and $(BINS32) are not defined until# the Makefile fragment "Roms" is read.allbins:	$(BUILD_BINS)# Common files$(BLIB16):	$(BOBJS16)	$(AR16) rv $@ $(BOBJS16)	$(RANLIB16) $@$(BLIB32):	$(BOBJS32)	$(AR32) rv $@ $(BOBJS32)	$(RANLIB32) $@bin16/main.o:		main.c etherboot.h osdep.h nic.hbin32/main.o:		main.c etherboot.h osdep.h nic.hbin16/osloader.o:	osloader.c etherboot.h osdep.hbin32/osloader.o:	osloader.c etherboot.h osdep.h# NFS currently makes no sense for Etherboot/16bin32/nfs.o:		nfs.c etherboot.h osdep.h nic.hbin16/misc.o:		misc.c etherboot.h osdep.hbin32/misc.o:		misc.c etherboot.h osdep.h# ANSIESC is not supported for Etherboot/16bin32/ansiesc.o:	ansiesc.c etherboot.h osdep.hbin16/bootmenu.o:	bootmenu.c etherboot.h osdep.hbin32/bootmenu.o:	bootmenu.c etherboot.h osdep.h# Password support is not available for Etherboot/16bin32/md5.o:		md5.c etherboot.h osdep.hbin16/floppy.o:		floppy.c etherboot.h osdep.hbin32/floppy.o:		floppy.c etherboot.h osdep.hbin16/timer.o:		timer.c timer.h etherboot.h osdep.hbin32/timer.o:		timer.c timer.h etherboot.h osdep.hbin32/inthw.o:		inthw.c# PCI support code (common to all PCI drivers)bin32/pci.o:	pci.c pci.h# Do not add driver specific dependencies here unless it's something the# genrules.pl script *can't* deal with, i.e. if it is not C code.# Prepended loaders#ifndef AS86#$(RLOADER) $(RZLOADER) $(PRLOADER) $(PRZLOADER):	$(MAKEDEPS)#	@if [ $(RELOCADDR) != 0x98000 ]; then echo Non-standard RELOCADDR, must assemble $@; exit 1; fi#	$(TOUCH) $@#else#bin/rloader.s:	loader.S $(MAKEDEPS)#	$(CPP) $(LCPPFLAGS) $(LCONFIG) -o $@ $<##bin/rzloader.s:	loader.S $(MAKEDEPS)#	$(CPP) $(LCPPFLAGS) $(LCONFIG) -DZLOADER -o $@ $<##bin/prloader.s:	loader.S $(MAKEDEPS)#	$(CPP) $(LCPPFLAGS) $(LCONFIG) -DPCI_PNP_HEADER -o $@ $<##bin/przloader.s:	loader.S $(MAKEDEPS)#	$(CPP) $(LCPPFLAGS) $(LCONFIG) -DPCI_PNP_HEADER -DZLOADER -o $@ $<#endif# Floppy loaderifdef AS86bin/floppyload.s:	floppyload.S $(MAKEDEPS)	$(CPP) $(LCPPFLAGS) -o $@ $<endif# COM loaderifdef AS86bin/comload.s:	comload.S $(MAKEDEPS)	$(CPP) $(LCPPFLAGS) -o $@ $<endif# LILO prefix:ifdef AS86bin/liloprefix.s:	liloprefix.S $(MAKEDEPS)	$(CPP) $(LCPPFLAGS) -o $@ $<endif# Utilitiesbin/makerom: makerom.c	$(GCC) -O2 -o $@ makerom.cbin/organon: organon.c	$(GCC) -o $@ organon.cbin/lzhuf:	../contrib/compressor/lzhuf.c	$(GCC) -O2 -DENCODE -DDECODE -DMAIN -DVERBOSE -o $@ $<# Roms fileRoms:	NIC genrules.pl	@chmod +x genrules.pl	./genrules.pl NIC > $@# Pattern Rules# general rules for compiling/assembling source filesbin16/%.o:	%.c $(MAKEDEPS)	$(CC16) $(CFLAGS16) -o $@ -c $<bin32/%.o:	%.c $(MAKEDEPS)	$(CC32) $(CFLAGS32) -o $@ -c $<bin16/%.o:	%.S $(MAKEDEPS)	$(CC16) $(CFLAGS16) $(ASFLAGS16) -c -o $@ $<bin32/%.o:	%.S $(MAKEDEPS)	$(CPP) $(CFLAGS32) $< | $(AS) $(ASFLAGS32) -o $@# general rule for .bin (plain binary loader code), may be overriddenifdef AS86bin/%.bin:	bin/%.s	$(AS86) $(LASFLAGS) $(LASBINARY) $@ $<endif# general rule for .huf (compressed binary code), may be overridden%.huf:	%.img	bin/lzhuf e $< $@# general rules for normal/compressed ROM images, may be overriddenbin16/%.rom:	bin16/%.img $(RLOADER)	cat $(RLOADER) $< > $@	bin/makerom $(MAKEROM_$*) -i$(IDENT16) $@bin32/%.rom:	bin32/%.img $(RLOADER)	cat $(RLOADER) $< > $@	bin/makerom $(MAKEROM_$*) -i$(IDENT32) $@bin16/%.lzrom:	bin16/%.huf $(RZLOADER)	cat $(RZLOADER) $< > $@	bin/makerom $(MAKEROM_$*) -i$(IDENT16) $@bin32/%.lzrom:	bin32/%.huf $(RZLOADER)	cat $(RZLOADER) $< > $@	bin/makerom $(MAKEROM_$*) -i$(IDENT32) $@# rules to write the .rom/.lzrom image onto a blank floppy# You must give the directory name, e.g. use bin32/rtl8139.lzfd0 as the target.%.fd0:	%.rom $(FLOPPYLOAD)	cat $(FLOPPYLOAD) $< > /dev/fd0%.lzfd0:	%.lzrom $(FLOPPYLOAD)	cat $(FLOPPYLOAD) $< > /dev/fd0# rules to generate a .com executable# You must give the directory name, e.g. use bin32/rtl8139.com as the target.%.com:	%.lzrom $(COMLOAD)	cat $(COMLOAD) $< > $@# rules to make a floppy image (padding to fill an even number of cylinders).# VMware reports floppy image read errors if it cannot read ahead 36 sectors,# probably because the floppyload.S code reads up to that number of sectors in# a single request.  Not that 18k matters much these days...# You must give the directory name, e.g. use bin32/rtl8139.fdimg as the target.%.fdimg:	%.rom $(FLOPPYLOAD)	cat $(FLOPPYLOAD) $< > $@.x	dd if=$@.x of=$@ bs=36k conv=sync 2> /dev/null	$(RM) $@.x%.lzfdimg:	%.lzrom $(FLOPPYLOAD)	cat $(FLOPPYLOAD) $< > $@.x	dd if=$@.x of=$@ bs=36k conv=sync 2> /dev/null	$(RM) $@.x# rules to make a LILO-bootable image%.lilo:		%.rom $(LILOPREFIX)	cat $(LILOPREFIX) $< /dev/zero | head -c 64k > $@%.lzlilo:	%.lzrom $(LILOPREFIX)	cat $(LILOPREFIX) $< /dev/zero | head -c 64k > $@# Housekeeping# To make sure that this actually builds a start32.o.pre with all options set,# you have to make sure that -DFLOPPY -DANSIESC -DCONSOLE_DUAL are in CFLAGS32.precompiled:	bin/rloader.bin bin/rzloader.bin bin/prloader.bin bin/przloader.bin bin/floppyload.bin bin/comload.bin bin16/start16.o bin32/start32.o bin/liloprefix.bin	cp -p bin/rloader.bin rloader.bin.pre	cp -p bin/rzloader.bin rzloader.bin.pre	cp -p bin/prloader.bin prloader.bin.pre	cp -p bin/przloader.bin przloader.bin.pre	cp -p bin/floppyload.bin floppyload.bin.pre	cp -p bin/comload.bin comload.bin.pre	cp -p bin16/start16.o start16.o.pre	cp -p bin32/start32.o start32.o.pre	cp -p bin/liloprefix.bin liloprefix.bin.preclean:	$(RM) $(UTILS) bin/*.s bin/*.bin	$(RM) $(BLIB16) $(BLIB32)	$(RM) bin16/*.o bin32/*.o bin16/*.tmp bin32/*.tmp	$(RM) bin16/*.img bin32/*.img bin16/*.huf bin32/*.huf	$(RM) bin16/*.rom bin32/*.rom bin16/*.lzrom bin32/*.lzrom	$(RM) bin16/*.com bin32/*.com	$(RM) bin16/*.fdimg bin32/*.fdimg bin16/*.lzfdimg bin32/*.lzfdimg	$(RM) bin16/*.lilo bin32/*.lilo bin16/*.lzlilo bin32/*.lzlilo	$(RM) bin32/*.hex	$(RM) bin32/*.asm	$(RM) bin32/*.maptarball:	(echo -n $(VERSION) ''; date -u +'%Y-%m-%d') > ../VERSION	(cd ..; tar cf /tmp/mpccboot-$(VERSION).tar --exclude CVS mpccboot)	bzip2 -9 < /tmp/mpccboot-$(VERSION).tar > /tmp/mpccboot-$(VERSION).tar.bz2	gzip -9 < /tmp/mpccboot-$(VERSION).tar > /tmp/mpccboot-$(VERSION).tar.gzversion:	@echo $(VERSION)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -