1
2override XEN_TARGET_ARCH = x86_32
3XEN_ROOT = $(CURDIR)/../../..
4include $(XEN_ROOT)/tools/Rules.mk
5include Config
6
7IPXE_GIT_URL ?= https://github.com/ipxe/ipxe.git
8
9# put an updated tar.gz on xenbits after changes to this variable
10IPXE_GIT_TAG := 1d1cf74a5e58811822bee4b3da3cff7282fcdfca
11
12IPXE_TARBALL_URL ?= $(XEN_EXTFILES_URL)/ipxe-git-$(IPXE_GIT_TAG).tar.gz
13
14D=ipxe
15T=ipxe.tar.gz
16
17ROMS = $(addprefix $D/src/bin/, $(addsuffix .rom, $(ETHERBOOT_NICS)))
18ROM = $D/src/bin/ipxe.bin
19
20.NOTPARALLEL:
21
22.PHONY: all
23all: $(ROM)
24
25$(ROM): $(ROMS)
26	cat $^ > $@.tmp
27	mv -f $@.tmp $@
28
29%.rom: $D/src/arch/i386/Makefile
30	$(MAKE) -C $D/src bin/$(*F).rom
31
32$T:
33	set -e; if ! $(FETCHER) _$T $(IPXE_TARBALL_URL); then \
34		$(GIT) clone $(IPXE_GIT_URL) $D.git; \
35		(cd $D.git && $(GIT) archive --format=tar --prefix=$D/ \
36		$(IPXE_GIT_TAG) | gzip -n >../_$T); \
37		rm -rf $D.git; \
38	fi
39	mv _$T $T
40
41$D/src/arch/i386/Makefile: $T Config
42	rm -rf $D
43	gzip -dc $T | tar xf -
44	for i in $$(cat patches/series) ; do                 \
45	    patch -d $D -p1 --quiet <patches/$$i || exit 1 ; \
46	done
47	cat Config >>$@
48
49$D/src/bin/NIC: $D/src/arch/i386/Makefile
50	$(MAKE) -C $D/src bin/NIC
51
52.PHONY: clean
53clean:
54	rm -rf $D $D.git *~ _$T $T
55
56.PHONY: distclean
57distclean: clean
58	rm -rf $T
59