1# inherited
2VERSION?=	unknown
3MKDIR?=		mkdir
4WGET?=		wget
5
6# All the xnu releases which contain bsd/net/pfvar.h
7# Commented out are releases where the xnu version is known but the
8# corresponding source code has not been published by Apple yet.
9# If there were no API or ABI changes to the pf ioctl interface,
10# falling back to the latest published version should work fine.
11
12# Mac OS X Snow Leopard
13XNU_RELS+=	1456.1.26	# 10.6
14XNU_RELS+=	1456.1.26	# 10.6.1
15XNU_RELS+=	1486.2.11	# 10.6.2
16XNU_RELS+=	1504.3.12	# 10.6.3
17XNU_RELS+=	1504.7.4	# 10.6.4
18XNU_RELS+=	1504.9.17	# 10.6.5
19XNU_RELS+=	1504.9.26	# 10.6.6
20XNU_RELS+=	1504.9.37	# 10.6.7
21XNU_RELS+=	1504.15.3	# 10.6.8
22
23# Mac OS X Lion
24XNU_RELS+=	1699.22.73	# 10.7
25XNU_RELS+=	1699.22.81	# 10.7.1
26XNU_RELS+=	1699.24.8	# 10.7.2
27XNU_RELS+=	1699.24.23	# 10.7.3
28XNU_RELS+=	1699.26.8	# 10.7.4
29XNU_RELS+=	1699.32.7	# 10.7.5
30
31# OS X Mountain Lion
32XNU_RELS+=	2050.7.9	# 10.8
33XNU_RELS+=	2050.9.2	# 10.8.1
34XNU_RELS+=	2050.18.24	# 10.8.2
35XNU_RELS+=	2050.22.13	# 10.8.3
36XNU_RELS+=	2050.24.15	# 10.8.4
37XNU_RELS+=	2050.48.11	# 10.8.5
38
39# OS X Mavericks
40XNU_RELS+=	2422.1.72	# 10.9
41XNU_RELS+=	2422.1.72	# 10.9.1
42XNU_RELS+=	2422.90.20	# 10.9.2
43XNU_RELS+=	2422.100.13	# 10.9.3
44XNU_RELS+=	2422.110.17	# 10.9.4
45XNU_RELS+=	2422.115.4	# 10.9.5
46
47# OS X Yosemite
48XNU_RELS+=	2782.1.97	# 10.10
49XNU_RELS+=	2782.1.97	# 10.10.1
50XNU_RELS+=	2782.10.72	# 10.10.2
51XNU_RELS+=	2782.20.48	# 10.10.3
52XNU_RELS+=	2782.30.5	# 10.10.4
53XNU_RELS+=	2782.40.9	# 10.10.5
54
55# OS X El Capitan
56XNU_RELS+=	3247.1.106	# 10.11
57XNU_RELS+=	3247.10.11	# 10.11.1
58XNU_RELS+=	3248.20.55	# 10.11.2
59XNU_RELS+=	3248.30.4	# 10.11.3
60XNU_RELS+=	3248.40.184	# 10.11.4
61XNU_RELS+=	3248.50.21	# 10.11.5
62XNU_RELS+=	3248.60.10	# 10.11.6
63
64# macOS Sierra
65XNU_RELS+=	3789.1.32	# 10.12
66XNU_RELS+=	3789.21.4	# 10.12.1
67XNU_RELS+=	3789.31.2	# 10.12.2
68XNU_RELS+=	3789.41.3	# 10.12.3
69XNU_RELS+=	3789.51.2	# 10.12.4
70XNU_RELS+=	3789.60.24	# 10.12.5
71XNU_RELS+=	3789.70.16	# 10.12.6
72
73# macOS High Sierra
74XNU_RELS+=	4570.1.46	# 10.13
75XNU_RELS+=	4570.20.62	# 10.13.1
76XNU_RELS+=	4570.31.3	# 10.13.2
77XNU_RELS+=	4570.41.2	# 10.13.3
78XNU_RELS+=	4570.51.1	# 10.13.4
79XNU_RELS+=	4570.61.1	# 10.13.5
80XNU_RELS+=	4570.71.2	# 10.13.6
81
82# macOS Mojave
83#XNU_RELS+=	4903.201.2	# 10.14         # "coming soon!"
84XNU_RELS+=	4903.221.2	# 10.14.1
85XNU_RELS+=	4903.231.4	# 10.14.2
86XNU_RELS+=	4903.241.1	# 10.14.3
87#XNU_RELS+=	4903.251.3	# 10.14.4       # "coming soon!"
88#XNU_RELS+=	4903.261.4	# 10.14.5       # "coming soon!"
89
90# macOS Catalina
91
92# defaults
93XNURL?=		https://opensource.apple.com/source/xnu/
94XNU_IDIRS?=	libkern net
95XNU_FILES?=	APPLE_LICENSE \
96		libkern/libkern/tree.h bsd/net/radix.h bsd/net/pfvar.h
97
98all: fetch
99
100fetch: $(foreach ver,$(sort $(XNU_RELS)),xnu-$(ver))
101
102xnu-%:
103	$(MKDIR) -p $@ $(foreach dir,$(XNU_IDIRS),$@/$(dir))
104	for f in $(XNU_FILES); do \
105		ff=`echo "$$f"|sed 's/^[^/]*\///'`; \
106		$(WGET) -O- $(XNURL)$@/$$f?txt >$@/$$ff; \
107		done
108
109xnu-1456.%: XNU_IDIRS=sys net
110xnu-1456.%: XNU_FILES=APPLE_LICENSE bsd/sys/tree.h bsd/net/radix.h bsd/net/pfvar.h
111
112xnu-1486.%: XNU_IDIRS=sys net
113xnu-1486.%: XNU_FILES=APPLE_LICENSE bsd/sys/tree.h bsd/net/radix.h bsd/net/pfvar.h
114
115xnu-1504.%: XNU_IDIRS=sys net
116xnu-1504.%: XNU_FILES=APPLE_LICENSE bsd/sys/tree.h bsd/net/radix.h bsd/net/pfvar.h
117
118