1 | #
|
---|
2 | # Makefile for Etherboot
|
---|
3 | #
|
---|
4 | # Most of the time you should edit Config
|
---|
5 | #
|
---|
6 | # Common options:
|
---|
7 | # VERSION_*=v - Set the major and minor version numbers
|
---|
8 | #
|
---|
9 | # NS8390 options:
|
---|
10 | # -DINCLUDE_NE - Include NE1000/NE2000 support
|
---|
11 | # -DNE_SCAN=list - Probe for NE base address using list of
|
---|
12 | # comma separated hex addresses
|
---|
13 | # -DINCLUDE_3C503 - Include 3c503 support
|
---|
14 | # -DT503_SHMEM - Use 3c503 shared memory mode (off by default)
|
---|
15 | # -DINCLUDE_WD - Include Western Digital/SMC support
|
---|
16 | # -DWD_DEFAULT_MEM- Default memory location for WD/SMC cards
|
---|
17 | # -DWD_790_PIO - Read/write to WD/SMC 790 cards in PIO mode (default
|
---|
18 | # is to use shared memory) Try this if you get "Bogus
|
---|
19 | # packet, ignoring" messages, common on ISA/PCI hybrid
|
---|
20 | # systems.
|
---|
21 | # -DCOMPEX_RL2000_FIX
|
---|
22 | #
|
---|
23 | # If you have a Compex RL2000 PCI 32-bit (11F6:1401),
|
---|
24 | # and the bootrom hangs in "Probing...[NE*000/PCI]",
|
---|
25 | # try enabling this fix... it worked for me :).
|
---|
26 | # In the first packet write somehow it somehow doesn't
|
---|
27 | # get back the expected data so it is stuck in a loop.
|
---|
28 | # I didn't bother to investigate what or why because it works
|
---|
29 | # when I interrupt the loop if it takes more then COMPEX_RL2000_TRIES.
|
---|
30 | # The code will notify if it does a abort.
|
---|
31 | # SomniOne - somnione@gmx.net
|
---|
32 | #
|
---|
33 | # 3C509 option:
|
---|
34 | # -DINCLUDE_3C509 - Include 3c509 support
|
---|
35 | #
|
---|
36 | # 3C90X options:
|
---|
37 | # -DINCLUDE_3C90X - Include 3c90x support
|
---|
38 | #
|
---|
39 | # Warning Warning Warning
|
---|
40 | # If you use any of the XCVR options below, please do not complain about
|
---|
41 | # the behaviour with Linux drivers to the kernel developers. You are
|
---|
42 | # on your own if you do this. Please read 3c90x.txt to understand
|
---|
43 | # what they do. If you don't understand them, ask for help on the
|
---|
44 | # Etherboot mailing list. And please document what you did to the NIC
|
---|
45 | # on the NIC so that people after you won't get nasty surprises.
|
---|
46 | #
|
---|
47 | # -DCFG_3C90X_PRESERVE_XCVR - Reset the transceiver type to the value it
|
---|
48 | # had initially just before the loaded code is started.
|
---|
49 | # -DCFG_3C90X_XCVR - Hardcode the tranceiver type Etherboot uses.
|
---|
50 | # -DCFG_3C90X_BOOTROM_FIX - If you have a 3c905B with buggy ROM
|
---|
51 | # interface, setting this option might "fix" it. Use
|
---|
52 | # with caution and read the docs in 3c90x.txt!
|
---|
53 | #
|
---|
54 | # See the documentation file 3c90x.txt for more details.
|
---|
55 | #
|
---|
56 | # CS89X0 (optional) options:
|
---|
57 | # -DINCLUDE_CS89X0- Include CS89x0 support
|
---|
58 | # -DCS_SCAN=list - Probe for CS89x0 base address using list of
|
---|
59 | # comma separated hex addresses; increasing the
|
---|
60 | # address by one (0x300 -> 0x301) will force a
|
---|
61 | # more aggressive probing algorithm. This might
|
---|
62 | # be neccessary after a soft-reset of the NIC.
|
---|
63 | #
|
---|
64 | # LANCE options:
|
---|
65 | # -DINCLUDE_NE2100- Include NE2100 support
|
---|
66 | # -DINCLUDE_NI6510- Include NI6510 support
|
---|
67 | #
|
---|
68 | # SK_G16 options:
|
---|
69 | # -DINCLUDE_SK_G16- Include SK_G16 support
|
---|
70 | #
|
---|
71 | # I82586 options:
|
---|
72 | # -DINCLUDE_3C507 - Include 3c507 support
|
---|
73 | # -DINCLUDE_NI5210- Include NI5210 support
|
---|
74 | # -DINCLUDE_EXOS205-Include EXOS205 support
|
---|
75 | #
|
---|
76 | # SMC9000 options:
|
---|
77 | # -DINCLUDE_SMC9000 - Include SMC9000 driver
|
---|
78 | # -DSMC9000_SCAN=list - List of I/O addresses to probe
|
---|
79 | #
|
---|
80 | # TIARA (Fujitsu Etherstar) options:
|
---|
81 | # -DINCLUDE_TIARA - Include Tiara support
|
---|
82 | #
|
---|
83 | # NI5010 options:
|
---|
84 | # -DINCLUDE_NI5010 - Include NI5010 support
|
---|
85 | #
|
---|
86 | # TULIP options:
|
---|
87 | # -DINCLUDE_TULIP - Include Tulip support
|
---|
88 | #
|
---|
89 | # RTL8139 options:
|
---|
90 | # -DINCLUDE_RTL8139 - Include RTL8139 support
|
---|
91 | #
|
---|
92 | # SIS900 options:
|
---|
93 | # -DINCLUDE_SIS900 - Include SIS900 support
|
---|
94 | #
|
---|
95 | # NATSEMI options:
|
---|
96 | # -DINCLUDE_NATSEMI - Include NATSEMI support
|
---|
97 | #
|
---|
98 |
|
---|
99 | SRCS:=
|
---|
100 | BOBJS:=
|
---|
101 |
|
---|
102 | MAKEROM= $(PERL) ./util/makerom.pl
|
---|
103 | VERSION_MAJOR= 5
|
---|
104 | VERSION_MINOR= 4
|
---|
105 | VERSION_PATCH= 2
|
---|
106 | EXTRAVERSION= cvs
|
---|
107 | VERSION= $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH)$(EXTRAVERSION)
|
---|
108 | MM_VERSION= $(VERSION_MAJOR).$(VERSION_MINOR)
|
---|
109 | CFLAGS+= -DVERSION_MAJOR=$(VERSION_MAJOR) \
|
---|
110 | -DVERSION_MINOR=$(VERSION_MINOR) \
|
---|
111 | -DVERSION=\"$(VERSION)\" $(OLDGAS) \
|
---|
112 | -I include -I arch/$(ARCH)/include \
|
---|
113 | -DARCH=$(ARCH)
|
---|
114 | FILO=filo
|
---|
115 | FILO_PROGRAM_NAME = FILO
|
---|
116 | FILO_PROGRAM_VERSION = 0.4.1
|
---|
117 | FILO_BUILD_INFO = ($(shell whoami)@$(shell hostname)) $(shell LANG=C date)
|
---|
118 |
|
---|
119 | GCCINCDIR = $(shell $(CC) -print-search-dirs | head -n 1 | cut -d' ' -f2)include
|
---|
120 |
|
---|
121 | IDENT= '$(@F) $(VERSION) (GPL) etherboot.org'
|
---|
122 |
|
---|
123 | # Find out if we're using binutils 2.9.1 which uses a different syntax in some
|
---|
124 | # places (most prominently in the opcode prefix area).
|
---|
125 | OLDGAS:= $(shell $(AS) --version | grep -q '2\.9\.1' && echo -DGAS291)
|
---|
126 |
|
---|
127 | BUILD_LIBS= $(BLIB)
|
---|
128 | BUILD_IMGS= $(IMGS)
|
---|
129 |
|
---|
130 | 3C503FLAGS= -DINCLUDE_3C503 # -DT503_SHMEM
|
---|
131 | # Note that the suffix to MAKEROM_ is the (mixed case) basename of the ROM file
|
---|
132 | MAKEROM_3c503= -3
|
---|
133 | 3C507FLAGS= -DINCLUDE_3C507
|
---|
134 | 3C509FLAGS= -DINCLUDE_3C509
|
---|
135 | 3C529FLAGS= -DINCLUDE_3C529
|
---|
136 | 3C595FLAGS= -DINCLUDE_3C595
|
---|
137 | 3C90XFLAGS= -DINCLUDE_3C90X
|
---|
138 | CS89X0FLAGS= -DINCLUDE_CS89X0
|
---|
139 | EEPROFLAGS= -DINCLUDE_EEPRO
|
---|
140 | EEPRO100FLAGS= -DINCLUDE_EEPRO100
|
---|
141 | E1000FLAGS= -DINCLUDE_E1000
|
---|
142 | EPIC100FLAGS= -DINCLUDE_EPIC100
|
---|
143 | EXOS205FLAGS= -DINCLUDE_EXOS205
|
---|
144 | LANCEFLAGS= -DINCLUDE_LANCE # Lance/PCI!
|
---|
145 | MYRI10GEFLAGS= -DINCLUDE_MYRI10GE
|
---|
146 | NE2100FLAGS= -DINCLUDE_NE2100
|
---|
147 | NEFLAGS= -DINCLUDE_NE -DNE_SCAN=0x300,0x280,0x320,0x340,0x380
|
---|
148 | NS8390FLAGS= -DINCLUDE_NS8390 # NE2000/PCI!
|
---|
149 | NI5010FLAGS= -DINCLUDE_NI5010
|
---|
150 | NI5210FLAGS= -DINCLUDE_NI5210
|
---|
151 | NI6510FLAGS= -DINCLUDE_NI6510
|
---|
152 | RTL8139FLAGS= -DINCLUDE_RTL8139
|
---|
153 | SK_G16FLAGS= -DINCLUDE_SK_G16
|
---|
154 | SIS900FLAGS= -DINCLUDE_SIS900
|
---|
155 | NATSEMIFLAGS= -DINCLUDE_NATSEMI
|
---|
156 | SMC9000FLAGS= -DINCLUDE_SMC9000
|
---|
157 | SUNDANCEFLAGS= -DINCLUDE_SUNDANCE
|
---|
158 | TLANFLAGS= -DINCLUDE_TLAN
|
---|
159 | TIARAFLAGS= -DINCLUDE_TIARA
|
---|
160 | DEPCAFLAGS= -DINCLUDE_DEPCA # -DDEPCA_MODEL=DEPCA -DDEPCA_RAM_BASE=0xd0000
|
---|
161 | TULIPFLAGS= -DINCLUDE_TULIP
|
---|
162 | OTULIPFLAGS= -DINCLUDE_OTULIP
|
---|
163 | VIA_RHINEFLAGS= -DINCLUDE_VIA_RHINE
|
---|
164 | WDFLAGS= -DINCLUDE_WD -DWD_DEFAULT_MEM=0xCC000
|
---|
165 | W89C840FLAGS= -DINCLUDE_W89C840
|
---|
166 |
|
---|
167 | SRCS+= core/serial.c
|
---|
168 |
|
---|
169 | SRCS+= core/btext.c core/pc_kbd.c
|
---|
170 |
|
---|
171 | SRCS+= core/main.c core/pci.c core/osloader.c core/nfs.c
|
---|
172 | SRCS+= core/misc.c core/config.c core/isa_probe.c core/pci_probe.c
|
---|
173 | SRCS+= core/relocate.c core/heap.c
|
---|
174 | SRCS+= drivers/disk/floppy.c core/nic.c core/disk.c core/timer.c
|
---|
175 | SRCS+= core/proto_eth_slow.c core/proto_fsp.c
|
---|
176 | SRCS+= core/proto_slam.c core/proto_tftm.c core/proto_http.c
|
---|
177 | SRCS+= core/isapnp.c
|
---|
178 | SRCS+= core/pcmcia.c core/i82365.c
|
---|
179 | SRCS+= core/pxe_export.c core/dns_resolver.c
|
---|
180 |
|
---|
181 | FILO_SRCS+= $(FILO)/drivers/ide_x.c
|
---|
182 | FILO_SRCS+= $(FILO)/fs/blockdev.c $(FILO)/fs/eltorito.c $(FILO)/fs/fsys_ext2fs.c $(FILO)/fs/fsys_fat.c $(FILO)/fs/fsys_iso9660.c
|
---|
183 | FILO_SRCS+= $(FILO)/fs/fsys_reiserfs.c $(FILO)/fs/vfs.c $(FILO)/fs/fsys_jfs.c $(FILO)/fs/fsys_minix.c $(FILO)/fs/fsys_xfs.c
|
---|
184 | FILO_SRCS+= $(FILO)/main/elfload.c $(FILO)/main/elfnote.c $(FILO)/main/filo_x.c $(FILO)/main/lib.c $(FILO)/main/linuxbios_x.c
|
---|
185 | FILO_SRCS+= $(FILO)/main/pci_x.c $(FILO)/main/malloc_x.c $(FILO)/main/printf_x.c $(FILO)/main/console_x.c
|
---|
186 | FILO_SRCS+= $(FILO)/$(ARCH)/context.c $(FILO)/$(ARCH)/linux_load.c $(FILO)/$(ARCH)/segment.c $(FILO)/$(ARCH)/sys_info.c
|
---|
187 | FILO_SRCS+= $(FILO)/$(ARCH)/switch.S $(FILO)/usb/debug_x.c $(FILO)/usb/scsi_cmds.c $(FILO)/usb/uhci.c $(FILO)/usb/usb.c
|
---|
188 | FILO_SRCS+= $(FILO)/usb/ohci.c $(FILO)/usb/usb_scsi_low.c $(FILO)/usb/usb_x.c
|
---|
189 |
|
---|
190 |
|
---|
191 | BOBJS+= $(BIN)/main.o $(BIN)/osloader.o $(BIN)/nfs.o $(BIN)/misc.o
|
---|
192 | BOBJS+= $(BIN)/proto_slam.o $(BIN)/proto_tftm.o $(BIN)/proto_http.o
|
---|
193 | BOBJS+= $(BIN)/floppy.o $(BIN)/proto_fsp.o
|
---|
194 | BOBJS+= $(BIN)/serial.o $(BIN)/timer.o $(BIN)/relocate.o $(BIN)/heap.o
|
---|
195 | BOBJS+= $(BIN)/btext.o $(BIN)/pc_kbd.o
|
---|
196 | BOBJS+= $(BIN)/nic.o $(BIN)/disk.o
|
---|
197 | BOBJS+= $(BIN)/isapnp.o
|
---|
198 | BOBJS+= $(BIN)/pci.o $(BIN)/isa_probe.o $(BIN)/pci_probe.o
|
---|
199 | BOBJS+= $(BIN)/vsprintf.o $(BIN)/string.o
|
---|
200 | BOBJS+= $(BIN)/pcmcia.o $(BIN)/i82365.o
|
---|
201 | BOBJS+= $(BIN)/pxe_export.o $(BIN)/dns_resolver.o
|
---|
202 |
|
---|
203 | FILO_OBJS+= $(BIN)/ide_x.o $(BIN)/pci_x.o
|
---|
204 | FILO_OBJS+= $(BIN)/blockdev.o $(BIN)/eltorito.o $(BIN)/fsys_ext2fs.o $(BIN)/fsys_fat.o $(BIN)/fsys_iso9660.o $(BIN)/fsys_reiserfs.o $(BIN)/vfs.o
|
---|
205 | FILO_OBJS+= $(BIN)/fsys_jfs.o $(BIN)/fsys_minix.o $(BIN)/fsys_xfs.o
|
---|
206 | FILO_OBJS+= $(BIN)/elfload.o $(BIN)/elfnote.o $(BIN)/filo_x.o $(BIN)/lib.o $(BIN)/linuxbios_x.o $(BIN)/malloc_x.o $(BIN)/printf_x.o $(BIN)/console_x.o
|
---|
207 | FILO_OBJS+= $(BIN)/context.o $(BIN)/linux_load.o $(BIN)/segment.o $(BIN)/sys_info.o $(BIN)/switch.o
|
---|
208 | FILO_OBJS+= $(BIN)/debug_x.o $(BIN)/scsi_cmds.o $(BIN)/uhci.o $(BIN)/usb.o $(BIN)/ohci.o $(BIN)/usb_scsi_low.o $(BIN)/usb_x.o
|
---|
209 |
|
---|
210 | BLIB= $(BIN)/bootlib.a
|
---|
211 | FILOLIB= $(BIN)/filolib.a
|
---|
212 | LIBS= $(BLIB)
|
---|
213 | ifdef INCLUDE_FILO
|
---|
214 | LIBS+= $(FILOLIB)
|
---|
215 | endif
|
---|
216 | UTILS+= $(BIN)/nrv2b
|
---|
217 | STDDEPS= $(START) $(UTILS)
|
---|
218 | # MAKEDEPS is the one target that is depended by all ROMs, so we check gcc here
|
---|
219 | # If you are confident that gcc 2.96 works for you, you can remove the lines
|
---|
220 | # that check gcc in the toolcheck rule
|
---|
221 | MAKEDEPS+= Makefile Makefile.main Config genrules.pl Families
|
---|
222 | MAKEDEPS+= $(BIN)/toolcheck
|
---|
223 | MAKEDEPS+= arch/$(ARCH)/Makefile arch/$(ARCH)/Config
|
---|
224 |
|
---|
225 | # Start of targets
|
---|
226 |
|
---|
227 | .PHONY: noargs
|
---|
228 | noargs: $(BIN)/toolcheck
|
---|
229 | @echo '===================================================='
|
---|
230 | @echo 'No target specified. To specify a target, do: '
|
---|
231 | @echo
|
---|
232 | @echo ' $(MAKE) bin/<rom-name>.<output-format> '
|
---|
233 | @echo
|
---|
234 | @echo 'where <output-format> is one of {zdsk, zhd, zrom, iso, liso, zlilo, zpxe, elf, com}'
|
---|
235 | @echo
|
---|
236 | @echo 'or: '
|
---|
237 | @echo
|
---|
238 | @echo ' $(MAKE) all<output-format>s'
|
---|
239 | @echo
|
---|
240 | @echo 'to generate all possible images of format <output-format>'
|
---|
241 | @echo
|
---|
242 | @echo 'For example, '
|
---|
243 | @echo
|
---|
244 | @echo ' make allzroms '
|
---|
245 | @echo
|
---|
246 | @echo 'will generate all possible .zrom (rom burnable) images, and'
|
---|
247 | @echo
|
---|
248 | @echo ' make allzdsks'
|
---|
249 | @echo
|
---|
250 | @echo 'will generate all possible .zdsk (bootable floppy) images, or'
|
---|
251 | @echo
|
---|
252 | @echo '===================================================='
|
---|
253 | @exit 1
|
---|
254 |
|
---|
255 | $(BIN)/toolcheck: Makefile Config
|
---|
256 | @if $(CC) -v 2>&1 | grep -is 'gcc version 2\.96' > /dev/null; \
|
---|
257 | then \
|
---|
258 | echo 'gcc 2.96 is unsuitable for compiling Etherboot'; \
|
---|
259 | echo 'Use gcc 2.95 or gcc 3.x instead'; \
|
---|
260 | exit 1; \
|
---|
261 | else \
|
---|
262 | touch $(BIN)/toolcheck; \
|
---|
263 | fi; \
|
---|
264 | if [ `perl -e 'use bytes; print chr(255)' | wc -c` = 2 ]; \
|
---|
265 | then \
|
---|
266 | echo 'Your Perl version has a Unicode handling bug'; \
|
---|
267 | echo 'To workaround, execute this before compiling Etherboot:'; \
|
---|
268 | echo 'export LANG=$${LANG%.UTF-8}'; \
|
---|
269 | exit 1; \
|
---|
270 | fi
|
---|
271 |
|
---|
272 | include arch/$(ARCH)/Makefile
|
---|
273 |
|
---|
274 | # Common files
|
---|
275 |
|
---|
276 | $(BLIB): $(BOBJS)
|
---|
277 | $(AR) r $@ $(BOBJS)
|
---|
278 | $(RANLIB) $@
|
---|
279 |
|
---|
280 | $(FILOLIB): $(FILO_OBJS)
|
---|
281 | $(AR) r $@ $(FILO_OBJS)
|
---|
282 | $(RANLIB) $@
|
---|
283 |
|
---|
284 | # LinuxBIOS support code
|
---|
285 | $(BIN)/linuxbios.o: firmware/linuxbios/linuxbios.c include/etherboot.h include/dev.h firmware/linuxbios/linuxbios_tables.h
|
---|
286 |
|
---|
287 | # Do not add driver specific dependencies here unless it's something the
|
---|
288 | # genrules.pl script *can't* deal with, i.e. if it is not C code.
|
---|
289 |
|
---|
290 | $(FILO)/config.h: $(FILO)/Config
|
---|
291 | /bin/echo -e '/* GENERATED FILE, DO NOT EDIT */\n' >$@
|
---|
292 | sed -e 's/#.*//' -e '/=/!d' -e 's/\([^[:space:]]*\)[[:space:]]*=[[:space:]]*\(.*\).*/#define \1 \2/' -e 's/^#define \([^ ]*\) 0$$/#undef \1/' $^ >>$@
|
---|
293 |
|
---|
294 | filo_version: $(FILO)/main/version.h
|
---|
295 |
|
---|
296 | $(FILO)/main/version.h: FORCE
|
---|
297 | echo '#define PROGRAM_NAME "$(FILO_PROGRAM_NAME)"' > $@
|
---|
298 | echo '#define PROGRAM_VERSION "$(FILO_PROGRAM_VERSION) $(FILO_BUILD_INFO)"' >> $@
|
---|
299 |
|
---|
300 | FORCE:
|
---|
301 |
|
---|
302 |
|
---|
303 | # Utilities
|
---|
304 |
|
---|
305 | $(BIN)/lzhuf: util/lzhuf.c
|
---|
306 | $(HOST_CC) -O2 -DENCODE -DDECODE -DMAIN -DVERBOSE -o $@ $<
|
---|
307 |
|
---|
308 | # Roms file
|
---|
309 | # Builds almost silently because this rule is triggered for just about
|
---|
310 | # every modification to sources.
|
---|
311 |
|
---|
312 | $(BIN)/Roms $(BIN)/NIC: genrules.pl Families $(SRCS)
|
---|
313 | @mkdir -p $(@D)
|
---|
314 | @echo Scanning for ROMs and dependencies...
|
---|
315 | @$(PERL) ./genrules.pl Families $(BIN)/NIC $(ARCH) $(SRCS) > $(BIN)/Roms
|
---|
316 |
|
---|
317 | # Pattern Rules
|
---|
318 |
|
---|
319 | # general rules for compiling/assembling source files
|
---|
320 | $(BIN)/%.o: core/%.c $(MAKEDEPS)
|
---|
321 | $(CC) $(CFLAGS) -o $@ -c $<
|
---|
322 |
|
---|
323 | $(BIN)/%.s: core/%.c $(MAKEDEPS)
|
---|
324 | $(CC) $(CFLAGS) -S -o $@ -c $<
|
---|
325 |
|
---|
326 | $(BIN)/%.o: drivers/disk/%.c $(MAKEDEPS)
|
---|
327 | $(CC) $(CFLAGS) -o $@ -c $<
|
---|
328 |
|
---|
329 | $(BIN)/%.o: drivers/net/%.c $(MAKEDEPS)
|
---|
330 | $(CC) $(CFLAGS) -o $@ -c $<
|
---|
331 |
|
---|
332 | $(BIN)/%.o: firmware/linuxbios/%.c $(MAKEDEPS)
|
---|
333 | $(CC) $(CFLAGS) -o $@ -c $<
|
---|
334 |
|
---|
335 | $(BIN)/%.o: $(FILO)/drivers/%.c $(MAKEDEPS) $(FILO)/config.h
|
---|
336 | $(CC) $(CFLAGS) -imacros $(FILO)/config.h -o $@ -c $<
|
---|
337 |
|
---|
338 | $(BIN)/%.o: $(FILO)/fs/%.c $(MAKEDEPS) $(FILO)/config.h
|
---|
339 | $(CC) $(CFLAGS) -imacros $(FILO)/config.h -o $@ -c $<
|
---|
340 |
|
---|
341 | $(BIN)/%.o: $(FILO)/$(ARCH)/%.c $(MAKEDEPS) $(FILO)/config.h
|
---|
342 | $(CC) $(CFLAGS) -imacros $(FILO)/config.h -o $@ -c $<
|
---|
343 |
|
---|
344 | $(BIN)/%.o: $(FILO)/$(ARCH)/%.S $(MAKEDEPS) $(FILO)/config.h
|
---|
345 | $(CPP) $(CFLAGS) -Ui386 -D ASSEMBLY $< | $(AS) $(ASFLAGS) -o $@
|
---|
346 |
|
---|
347 | $(BIN)/%.o: $(FILO)/main/%.c $(MAKEDEPS) $(FILO)/config.h filo_version
|
---|
348 | $(CC) $(CFLAGS) -imacros $(FILO)/config.h -o $@ -c $<
|
---|
349 |
|
---|
350 | $(BIN)/%.o: $(FILO)/usb/%.c $(MAKEDEPS) $(FILO)/config.h
|
---|
351 | $(CC) $(CFLAGS) -imacros $(FILO)/config.h -o $@ -c $<
|
---|
352 |
|
---|
353 | # Rule for the super etherboot image.
|
---|
354 | $(BIN)/etherboot.o: $(DOBJS)
|
---|
355 | $(LD) $(LDFLAGS) -r $(DOBJS) -o $@
|
---|
356 |
|
---|
357 | $(BIN)/etherboot-pci.o: $(PCIOBJS)
|
---|
358 | $(LD) $(LDFLAGS) -r $(PCIOBJS) -o $@
|
---|
359 |
|
---|
360 | # General rules for generating runtime (rt) files
|
---|
361 | $(BIN)/%.rt.o: $(BIN)/%.o $(START) $(BIN)/config.o $(LIBS) $(STDDEPS) $(MAKEDEPS)
|
---|
362 | $(LD) $(LDFLAGS) -r $(START) $(BIN)/config.o $< $(LIBS) -o $@
|
---|
363 |
|
---|
364 | # Rule for $(BIN)/%.FORMAT.rt is architecture and target-format specific
|
---|
365 |
|
---|
366 | $(BIN)/%.rt.bin: $(BIN)/%.rt $(MAKEDEPS)
|
---|
367 | $(OBJCOPY) -O binary -R .prefix $< $@
|
---|
368 |
|
---|
369 | $(BIN)/%.rt1.bin: $(BIN)/%.rt $(MAKEDEPS)
|
---|
370 | $(OBJCOPY) -O binary -j .text.nocompress $< $@
|
---|
371 |
|
---|
372 | $(BIN)/%.rt2.bin: $(BIN)/%.rt $(MAKEDEPS)
|
---|
373 | $(OBJCOPY) -O binary -R .prefix -R .text.nocompress $< $@
|
---|
374 |
|
---|
375 | # Rules for generating prefix binary files
|
---|
376 |
|
---|
377 | # Rule for $(BIN)/%.FORMAT.prf is architecture and target-format specific
|
---|
378 | $(BIN)/%.prf.bin: $(BIN)/%.prf $(MAKEDEPS)
|
---|
379 | $(OBJCOPY) -j .prefix -O binary $< $@
|
---|
380 |
|
---|
381 | # general rule for .z (compressed binary code), may be overridden
|
---|
382 | $(BIN)/%.zbin: $(BIN)/%.bin $(BIN)/nrv2b $(MAKEDEPS)
|
---|
383 | $(BIN)/nrv2b e $< $@
|
---|
384 |
|
---|
385 | # Housekeeping
|
---|
386 |
|
---|
387 | clean:
|
---|
388 | $(RM) $(BIN)/*
|
---|
389 | $(RM) $(FILO)/config.h $(FILO)/main/version.h
|
---|
390 |
|
---|
391 | ../index.html: ../index.xhtml
|
---|
392 | (cd ..; m4 -P -DHOSTSITE=SOURCEFORGE index.xhtml > index.html)
|
---|
393 |
|
---|
394 | ../index-berlios.html: ../index.xhtml
|
---|
395 | (cd ..; m4 -P -DHOSTSITE=BERLIOS index.xhtml > index-berlios.html)
|
---|
396 |
|
---|
397 | tarball: ../index.html ../index-berlios.html
|
---|
398 | (echo -n $(VERSION) ''; date -u +'%Y-%m-%d') > ../VERSION
|
---|
399 | (cd ../..; tar cf /tmp/etherboot-$(VERSION).tar --exclude CVS --exclude etherboot-$(VERSION))
|
---|
400 | bzip2 -9 < /tmp/etherboot-$(VERSION).tar > /tmp/etherboot-$(VERSION).tar.bz2
|
---|
401 | gzip -9 < /tmp/etherboot-$(VERSION).tar > /tmp/etherboot-$(VERSION).tar.gz
|
---|
402 |
|
---|
403 | cvs-tarball: ../index.html ../index-berlios.html
|
---|
404 | (echo -n $(VERSION) ''; date -u +'%Y-%m-%d') > ../VERSION
|
---|
405 | rm -rf /tmp/etherboot-$(VERSION)
|
---|
406 | mkdir /tmp/etherboot-$(VERSION)
|
---|
407 | cp -rP .. /tmp/etherboot-$(VERSION)
|
---|
408 | ( cd /tmp; tar cf /tmp/etherboot-$(VERSION).tar --exclude CVS --exclude "#*" \
|
---|
409 | --exclude "*~" etherboot-$(VERSION) )
|
---|
410 | bzip2 -9 < /tmp/etherboot-$(VERSION).tar > /tmp/etherboot-$(VERSION).tar.bz2
|
---|
411 | gzip -9 < /tmp/etherboot-$(VERSION).tar > /tmp/etherboot-$(VERSION).tar.gz
|
---|
412 | ( cd /tmp; rm -rf /tmp/etherboot-$(VERSION) ; rm /tmp/etherboot-$(VERSION).tar ; \
|
---|
413 | tar -zxf /tmp/etherboot-$(VERSION).tar.gz )
|
---|
414 |
|
---|
415 | # If static boot info is used, all static values must be supplied
|
---|
416 |
|
---|
417 | ifneq ($(findstring -DUSE_STATIC_BOOT_INFO, $(CFLAGS)),)
|
---|
418 |
|
---|
419 | ifeq ($(findstring -DSTATIC_CLIENT_IP, $(CFLAGS)),)
|
---|
420 | $(error "-DUSE_STATIC_BOOT_INFO defined, but -DSTATIC_CLIENT_IP not defined!")
|
---|
421 | endif
|
---|
422 |
|
---|
423 | ifeq ($(findstring -DSTATIC_SUBNET_MASK, $(CFLAGS)),)
|
---|
424 | $(error "-DUSE_STATIC_BOOT_INFO defined, but -DSTATIC_SUBNET_MASK not defined!")
|
---|
425 | endif
|
---|
426 |
|
---|
427 | ifeq ($(findstring -DSTATIC_SERVER_IP, $(CFLAGS)),)
|
---|
428 | $(error "-DUSE_STATIC_BOOT_INFO defined, but -DSTATIC_SERVER_IP not defined!")
|
---|
429 | endif
|
---|
430 |
|
---|
431 | ifeq ($(findstring -DSTATIC_GATEWAY_IP, $(CFLAGS)),)
|
---|
432 | $(error "-DUSE_STATIC_BOOT_INFO defined, but -DSTATIC_GATEWAY_IP not defined!")
|
---|
433 | endif
|
---|
434 |
|
---|
435 | ifeq ($(findstring -DSTATIC_BOOTFILE, $(CFLAGS)),)
|
---|
436 | $(error "-DUSE_STATIC_BOOT_INFO defined, but -DSTATIC_BOOTFILE not defined!")
|
---|
437 | endif
|
---|
438 |
|
---|
439 | endif
|
---|
440 |
|
---|
441 | # PXE Support requires TFTP protocol
|
---|
442 | ifeq ($(findstring -DDOWNLOAD_PROTO_TFTP, $(CFLAGS)),)
|
---|
443 |
|
---|
444 | ifneq ($(findstring -DPXE_IMAGE, $(CFLAGS)),)
|
---|
445 | $(error "-DPXE_IMAGE support requires TFTP support (-DDOWNLOAD_PROTO_TFTP)")
|
---|
446 | endif
|
---|
447 |
|
---|
448 | ifneq ($(findstring -DPXE_EXPORT, $(CFLAGS)),)
|
---|
449 | $(error "-DPXE_EXPORT support requires TFTP support (-DDOWNLOAD_PROTO_TFTP)")
|
---|
450 | endif
|
---|
451 |
|
---|
452 | endif
|
---|
453 |
|
---|
454 | # Auto-incrementing build serial number. Is auto-incremented for each
|
---|
455 | # make run that specifies a final image file (e.g. bin/undi.zpxe) as a
|
---|
456 | # target, or a target of the form "all*". Enable via -DBUILD_SERIAL
|
---|
457 | # in Config.
|
---|
458 |
|
---|
459 | ifneq ($(findstring -DBUILD_SERIAL,$(CFLAGS)),)
|
---|
460 |
|
---|
461 | # If no make goals are specified, it means "make all"
|
---|
462 | REALGOALS = $(if $(MAKECMDGOALS),$(MAKECMDGOALS),all)
|
---|
463 |
|
---|
464 | # Filter to see if there are any targets to trigger an auto-increment
|
---|
465 | BUILDGOALS = $(filter all,$(REALGOALS)) $(filter all%,$(REALGOALS)) \
|
---|
466 | $(foreach SUFFIX,$(SUFFIXES),$(filter %.$(SUFFIX),$(REALGOALS)))
|
---|
467 |
|
---|
468 | ifneq ($(strip $(BUILDGOALS)),)
|
---|
469 | # This is an auto-incrementing build. Forcibly rebuild .buildserial.h
|
---|
470 | # and mark config.o as depending on it to force its rebuilding.
|
---|
471 | bin/config.o : include/.buildserial.h
|
---|
472 | .PHONY : include/.buildserial.h
|
---|
473 | endif # BUILDGOALS
|
---|
474 |
|
---|
475 | include/.buildserial.h :
|
---|
476 | @if [ ! -f $@ ]; then echo '#define BUILD_SERIAL_NUM 0' > $@; fi
|
---|
477 | @perl -pi -e 's/(BUILD_SERIAL_NUM)\s+(\d+)/"$${1} ".($${2}+1)/e' $@
|
---|
478 |
|
---|
479 | buildserial : include/.buildserial.h
|
---|
480 | @perl -n -e '/BUILD_SERIAL_NUM\s+(\d+)/ && ' \
|
---|
481 | -e 'print "Build serial number is $$1\n";' $<
|
---|
482 |
|
---|
483 | else # -DBUILD_SERIAL
|
---|
484 |
|
---|
485 | buildserial :
|
---|
486 | @echo Build serial number is disabled. Enable -DBUILD_SERIAL in Config.
|
---|
487 |
|
---|
488 | endif # -DBUILD_SERIAL
|
---|
489 |
|
---|
490 | bs : buildserial
|
---|
491 |
|
---|
492 | version:
|
---|
493 | @echo $(VERSION)
|
---|
494 |
|
---|
495 | romlimit:
|
---|
496 | @echo $(ROMLIMIT)
|
---|
497 |
|
---|
498 | sources:
|
---|
499 | @echo $(SRCS)
|
---|