xref: /f-stack/lib/Makefile (revision 34b2fad4)
1a9643ea8Slogwang#
2a9643ea8Slogwang# Copyright (c) 2013 Patrick Kelsey. All rights reserved.
3a9643ea8Slogwang# Copyright (C) 2017 THL A29 Limited, a Tencent company.
4a9643ea8Slogwang# All rights reserved.
5a9643ea8Slogwang#
6a9643ea8Slogwang# Derived in part from libuinet's Makefile.
7a9643ea8Slogwang#
8a9643ea8Slogwang# Derived from FreeBSD auto-generated kernel Makefile and
9a9643ea8Slogwang# machine-specific Makefile templates
10a9643ea8Slogwang#
11a9643ea8Slogwang
12a9643ea8SlogwangTOPDIR?=${CURDIR}/..
13a9643ea8SlogwangS=${TOPDIR}/freebsd
14a9643ea8SlogwangMACHINE_INCLUDES_ROOT:=${CURDIR}/machine_include
15a9643ea8SlogwangOVERRIDE_INCLUDES_ROOT:=${CURDIR}/include
16a9643ea8SlogwangX86_INCLUDES=0
17a9643ea8Slogwang
18a9643ea8SlogwangHOST_OS:=$(shell uname -s)
195f3825efSlogwang#DEBUG=-O0 -gdwarf-2 -g3
20a9643ea8Slogwang
21a9643ea8Slogwangifeq ($(FF_DPDK),)
22a9643ea8Slogwang    FF_DPDK=${TOPDIR}/dpdk/x86_64-native-linuxapp-gcc
23a9643ea8Slogwangendif
24a9643ea8Slogwang
25a9643ea8SlogwangDPDK_CFLAGS= -Wall -Werror -include ${FF_DPDK}/include/rte_config.h
26a9643ea8SlogwangDPDK_CFLAGS+= -march=native -DRTE_MACHINE_CPUFLAG_SSE -DRTE_MACHINE_CPUFLAG_SSE2 -DRTE_MACHINE_CPUFLAG_SSE3
27a9643ea8SlogwangDPDK_CFLAGS+= -DRTE_MACHINE_CPUFLAG_SSSE3 -DRTE_MACHINE_CPUFLAG_SSE4_1 -DRTE_MACHINE_CPUFLAG_SSE4_2
28a9643ea8SlogwangDPDK_CFLAGS+= -DRTE_COMPILE_TIME_CPUFLAGS=RTE_CPUFLAG_SSE,RTE_CPUFLAG_SSE2,RTE_CPUFLAG_SSE3,RTE_CPUFLAG_SSSE3,RTE_CPUFLAG_SSE4_1,RTE_CPUFLAG_SSE4_2
29a9643ea8SlogwangDPDK_CFLAGS+= -I${FF_DPDK}/include
30a9643ea8Slogwang
31a9643ea8Slogwanginclude ${TOPDIR}/mk/kern.pre.mk
32a9643ea8Slogwang
33a9643ea8SlogwangKERNPREINCLUDES:= ${INCLUDES}
34a9643ea8SlogwangINCLUDES= -I${OVERRIDE_INCLUDES_ROOT} ${KERNPREINCLUDES}
35a9643ea8SlogwangINCLUDES+= -I./machine_include
36a9643ea8SlogwangINCLUDES+= -I./opt
37a9643ea8Slogwang
38a9643ea8Slogwang# Include search path for files that only include host OS headers
39a9643ea8SlogwangHOST_INCLUDES= -I.
40a9643ea8Slogwangifndef DEBUG
41a9643ea8SlogwangHOST_CFLAGS = -O2 -frename-registers  -funswitch-loops -fweb
42a9643ea8Slogwangelse
43a9643ea8SlogwangHOST_CFLAGS = ${DEBUG}
44a9643ea8Slogwangendif
45a9643ea8SlogwangHOST_CFLAGS+= ${DPDK_CFLAGS}
46*34b2fad4SYuYangHOST_CFLAGS+= ${CONF_CFLAGS}
47a9643ea8SlogwangHOST_C= ${CC} -c $(HOST_CFLAGS) ${HOST_INCLUDES} ${WERROR} ${PROF} $<
48a9643ea8Slogwang
49a9643ea8Slogwang
50a9643ea8Slogwangifneq ($(filter amd64 i386,${MACHINE_CPUARCH}),)
51a9643ea8SlogwangX86_INCLUDES=1
52a9643ea8Slogwangendif
53a9643ea8Slogwang
54a9643ea8Slogwang
55a9643ea8Slogwang#
56a9643ea8Slogwang# Distilled from FreeBSD src/sys/conf/Makefile.amd64
57a9643ea8Slogwang#
58a9643ea8Slogwangifeq (${MACHINE_CPUARCH},amd64)
59a9643ea8Slogwangendif
60a9643ea8Slogwang
61a9643ea8Slogwang#
62a9643ea8Slogwang# Distilled from FreeBSD src/sys/conf/Makefile.arm
63a9643ea8Slogwang#
64a9643ea8Slogwangifeq (${MACHINE_CPUARCH},arm)
65a9643ea8Slogwang
66a9643ea8Slogwangifneq (${COMPILER_TYPE},clang)
67a9643ea8SlogwangCFLAGS += -mno-thumb-interwork
68a9643ea8Slogwangendif
69a9643ea8Slogwang
70a9643ea8Slogwangendif
71a9643ea8Slogwang
72a9643ea8Slogwang
73a9643ea8Slogwang#
74a9643ea8Slogwang# Distilled from FreeBSD src/sys/conf/Makefile.i386
75a9643ea8Slogwang#
76a9643ea8Slogwangifeq (${MACHINE_CPUARCH},i386)
77a9643ea8SlogwangMACHINE=i386
78a9643ea8Slogwangendif
79a9643ea8Slogwang
80a9643ea8Slogwang
81a9643ea8Slogwang#
82a9643ea8Slogwang# Distilled from FreeBSD src/sys/conf/Makefile.mips
83a9643ea8Slogwang#
84a9643ea8Slogwangifeq (${MACHINE_CPUARCH},mips)
85a9643ea8Slogwang
86a9643ea8Slogwang# We default to the MIPS32 ISA, if none specified in the
87a9643ea8Slogwang# kernel configuration file.
88a9643ea8SlogwangARCH_FLAGS?=-march=mips32
89a9643ea8Slogwang
90a9643ea8SlogwangHACK_EXTRA_FLAGS=-shared
91a9643ea8Slogwang
92a9643ea8SlogwangCFLAGS+=${EXTRA_FLAGS} $(ARCH_FLAGS)
93a9643ea8SlogwangHACK_EXTRA_FLAGS+=${EXTRA_FLAGS} $(ARCH_FLAGS)
94a9643ea8Slogwangendif
95a9643ea8Slogwang
96a9643ea8SlogwangCFLAGS+= -DFSTACK
97a9643ea8Slogwang
9808dba010SAndy# add for LVS tcp option toa, disabled by default
9908dba010SAndy# CFLAGS+= -DLVS_TCPOPT_TOA
10008dba010SAndy
101a9643ea8SlogwangVPATH+= $S/${MACHINE_CPUARCH}/${MACHINE_CPUARCH}
102a9643ea8SlogwangVPATH+= $S/kern
103a9643ea8SlogwangVPATH+= $S/crypto
104a9643ea8SlogwangVPATH+= $S/crypto/aesni
105a9643ea8SlogwangVPATH+= $S/crypto/blowfish
106a9643ea8SlogwangVPATH+= $S/crypto/camellia
107a9643ea8SlogwangVPATH+= $S/crypto/des
108a9643ea8SlogwangVPATH+= $S/crypto/rijndael
109a9643ea8SlogwangVPATH+= $S/crypto/sha2
110a9643ea8SlogwangVPATH+= $S/crypto/siphash
111a9643ea8SlogwangVPATH+= $S/net
112a9643ea8SlogwangVPATH+= $S/netinet
113a9643ea8SlogwangVPATH+= $S/netinet/cc
114a9643ea8SlogwangVPATH+= $S/netipsec
115a9643ea8SlogwangVPATH+= $S/opencrypto
116a9643ea8SlogwangVPATH+= $S/vm
117a9643ea8SlogwangVPATH+= $S/libkern
118a9643ea8Slogwang
119a9643ea8Slogwang
120a9643ea8SlogwangFF_SRCS+=			\
121a9643ea8Slogwang	ff_compat.c    \
122a9643ea8Slogwang	ff_glue.c      \
123a9643ea8Slogwang	ff_freebsd_init.c      \
124a9643ea8Slogwang	ff_init_main.c \
125a9643ea8Slogwang	ff_kern_condvar.c \
126a9643ea8Slogwang	ff_kern_environment.c  \
127a9643ea8Slogwang	ff_kern_intr.c  \
128a9643ea8Slogwang	ff_kern_subr.c \
129a9643ea8Slogwang	ff_kern_synch.c \
130a9643ea8Slogwang	ff_kern_timeout.c \
131a9643ea8Slogwang	ff_lock.c      \
132a9643ea8Slogwang	ff_syscall_wrapper.c \
133a9643ea8Slogwang	ff_subr_prf.c    \
134a9643ea8Slogwang	ff_vfs_ops.c  \
135a9643ea8Slogwang	ff_veth.c  \
136144c6bcdSlogwang	ff_route.c
137a9643ea8Slogwang
138a9643ea8SlogwangFF_HOST_SRCS+= \
139a9643ea8Slogwang	ff_host_interface.c \
140a9643ea8Slogwang	ff_config.c    \
141a9643ea8Slogwang	ff_ini_parser.c  \
142a9643ea8Slogwang	ff_dpdk_if.c \
143a9643ea8Slogwang	ff_dpdk_kni.c \
144a9643ea8Slogwang	ff_dpdk_pcap.c \
1451a78ce8eSRon	ff_epoll.c \
146a9643ea8Slogwang	ff_init.c
147a9643ea8Slogwang
148a9643ea8Slogwangifdef FF_IPSEC
149a9643ea8SlogwangCRYPTO_ASM_SRCS+=			\
150a9643ea8Slogwang	aesencdec_${MACHINE_CPUARCH}.S	\
151a9643ea8Slogwang	aeskeys_${MACHINE_CPUARCH}.S
152a9643ea8Slogwang
153a9643ea8SlogwangCRYPTO_SRCS+=			\
154a9643ea8Slogwang	aesni.c			\
155a9643ea8Slogwang	aesni_wrap.c		\
156a9643ea8Slogwang	bf_ecb.c		\
157a9643ea8Slogwang	bf_enc.c		\
158a9643ea8Slogwang	bf_skey.c		\
159a9643ea8Slogwang	camellia.c		\
160a9643ea8Slogwang	camellia-api.c		\
161a9643ea8Slogwang	des_ecb.c		\
162a9643ea8Slogwang	des_enc.c		\
163a9643ea8Slogwang	des_setkey.c		\
164a9643ea8Slogwang	rijndael-alg-fst.c	\
165a9643ea8Slogwang	rijndael-api.c		\
166a9643ea8Slogwang	sha1.c			    \
167a9643ea8Slogwang	sha256c.c           \
168a9643ea8Slogwang	sha512c.c           \
169a9643ea8Slogwang	siphash.c
170a9643ea8Slogwangelse
171a9643ea8SlogwangCRYPTO_SRCS+=			\
172a9643ea8Slogwang	sha1.c              \
173a9643ea8Slogwang	siphash.c
174a9643ea8Slogwangendif
175a9643ea8Slogwang
176a9643ea8SlogwangKERN_SRCS+=			\
177a9643ea8Slogwang	kern_descrip.c		\
178a9643ea8Slogwang	kern_event.c		\
179a9643ea8Slogwang	kern_fail.c		\
180a9643ea8Slogwang	kern_khelp.c		\
181a9643ea8Slogwang	kern_hhook.c		\
182a9643ea8Slogwang	kern_linker.c		\
183a9643ea8Slogwang	kern_mbuf.c		\
184a9643ea8Slogwang	kern_module.c		\
185a9643ea8Slogwang	kern_mtxpool.c		\
186a9643ea8Slogwang	kern_ntptime.c		\
187a9643ea8Slogwang	kern_osd.c		\
188a9643ea8Slogwang	kern_sysctl.c		\
189a9643ea8Slogwang	kern_tc.c		\
190a9643ea8Slogwang	kern_uuid.c		\
191a9643ea8Slogwang	link_elf.c		\
192a9643ea8Slogwang	md5c.c			\
193a9643ea8Slogwang	subr_capability.c   \
194a9643ea8Slogwang	subr_counter.c      \
195a9643ea8Slogwang	subr_eventhandler.c	\
196a9643ea8Slogwang	subr_kobj.c		\
197a9643ea8Slogwang	subr_lock.c		\
198a9643ea8Slogwang	subr_module.c		\
199a9643ea8Slogwang	subr_param.c		\
200a9643ea8Slogwang	subr_pcpu.c		\
201a9643ea8Slogwang	subr_sbuf.c		\
202a9643ea8Slogwang	subr_taskqueue.c	\
203a9643ea8Slogwang	subr_unit.c		\
204a9643ea8Slogwang	sys_capability.c	\
205a9643ea8Slogwang	sys_generic.c		\
206a9643ea8Slogwang	sys_socket.c		\
207a9643ea8Slogwang	uipc_accf.c		\
208a9643ea8Slogwang	uipc_mbuf.c		\
209a9643ea8Slogwang	uipc_mbuf2.c		\
210a9643ea8Slogwang	uipc_domain.c		\
211a9643ea8Slogwang	uipc_sockbuf.c		\
212a9643ea8Slogwang	uipc_socket.c       \
213a9643ea8Slogwang    uipc_syscalls.c
214a9643ea8Slogwang
215a9643ea8Slogwang
216a9643ea8SlogwangKERN_MHEADERS+=		\
217a9643ea8Slogwang	bus_if.m	\
218a9643ea8Slogwang	device_if.m	\
219a9643ea8Slogwang	linker_if.m
220a9643ea8Slogwang
221a9643ea8Slogwang
222a9643ea8SlogwangKERN_MSRCS+=		\
223a9643ea8Slogwang	linker_if.m
224a9643ea8Slogwang
225a9643ea8Slogwang
226a9643ea8SlogwangLIBKERN_SRCS+=		\
227a9643ea8Slogwang	bcd.c		\
228a9643ea8Slogwang	inet_ntoa.c	\
229a9643ea8Slogwang	jenkins_hash.c  \
230a9643ea8Slogwang	strlcpy.c	\
231a9643ea8Slogwang	strnlen.c
232a9643ea8Slogwang
233a9643ea8Slogwang
234a9643ea8SlogwangMACHINE_SRCS+=		\
235a9643ea8Slogwang	in_cksum.c
236a9643ea8Slogwang
237a9643ea8Slogwang
238a9643ea8SlogwangNET_SRCS+=		\
239a9643ea8Slogwang	bpf.c		\
240df6ad731Slogwang	bridgestp.c \
241a9643ea8Slogwang	if.c		\
242df6ad731Slogwang	if_bridge.c \
243a9643ea8Slogwang	if_clone.c	\
244a9643ea8Slogwang	if_dead.c	\
245a9643ea8Slogwang	if_ethersubr.c	\
246a9643ea8Slogwang	if_loop.c	\
247a9643ea8Slogwang	if_llatbl.c	\
248a9643ea8Slogwang	in_fib.c	\
249df6ad731Slogwang	in_gif.c    \
250a9643ea8Slogwang 	ip_reass.c	\
251df6ad731Slogwang	if_vlan.c   \
252df6ad731Slogwang	if_vxlan.c  \
253a9643ea8Slogwang	netisr.c	\
254a9643ea8Slogwang	pfil.c		\
255a9643ea8Slogwang	radix.c		\
256a9643ea8Slogwang	raw_cb.c	\
257a9643ea8Slogwang	raw_usrreq.c	\
258a9643ea8Slogwang	route.c		\
259a9643ea8Slogwang	rtsock.c
260a9643ea8Slogwang
261a9643ea8Slogwang
262a9643ea8SlogwangNETINET_SRCS+=		\
263a9643ea8Slogwang	ip_carp.c	\
264a9643ea8Slogwang	if_ether.c	\
265df6ad731Slogwang	if_gif.c    \
266a9643ea8Slogwang	igmp.c		\
267a9643ea8Slogwang	in.c		\
268a9643ea8Slogwang	in_mcast.c	\
269a9643ea8Slogwang	in_pcb.c	\
270a9643ea8Slogwang	in_proto.c	\
271a9643ea8Slogwang	in_rmx.c	\
272df6ad731Slogwang	ip_ecn.c    \
273a9643ea8Slogwang	ip_encap.c	\
274a9643ea8Slogwang	ip_fastfwd.c	\
275a9643ea8Slogwang	ip_icmp.c	\
276a9643ea8Slogwang	ip_id.c		\
277a9643ea8Slogwang	ip_input.c	\
2781eaf0ac3Slogwang	ip_mroute.c     \
279a9643ea8Slogwang	ip_options.c	\
280a9643ea8Slogwang	ip_output.c	\
281a9643ea8Slogwang	raw_ip.c	\
282a9643ea8Slogwang	tcp_debug.c	\
283a9643ea8Slogwang	tcp_fastopen.c	\
284a9643ea8Slogwang	tcp_hostcache.c	\
285a9643ea8Slogwang	tcp_input.c	\
286a9643ea8Slogwang	tcp_lro.c	\
287a9643ea8Slogwang	tcp_offload.c	\
288a9643ea8Slogwang	tcp_output.c	\
289a9643ea8Slogwang	tcp_reass.c	\
290a9643ea8Slogwang	tcp_sack.c	\
291a9643ea8Slogwang	tcp_subr.c	\
292a9643ea8Slogwang	tcp_syncache.c	\
293a9643ea8Slogwang	tcp_timer.c	\
294a9643ea8Slogwang	tcp_timewait.c	\
295a9643ea8Slogwang	tcp_usrreq.c	\
296a9643ea8Slogwang	udp_usrreq.c	\
297a9643ea8Slogwang	cc.c		    \
298a9643ea8Slogwang	cc_newreno.c    \
299a9643ea8Slogwang	cc_htcp.c       \
300a9643ea8Slogwang	cc_cubic.c
301a9643ea8Slogwang
302a9643ea8Slogwangifdef FF_IPSEC
303a9643ea8SlogwangNETINET_SRCS+=		\
304a9643ea8Slogwang	ip_ipsec.c
305a9643ea8Slogwangendif
306a9643ea8Slogwang
307a9643ea8Slogwang
308a9643ea8Slogwangifdef FF_IPSEC
309a9643ea8SlogwangNETIPSEC_SRCS+=		\
310a9643ea8Slogwang	ipsec.c		\
311a9643ea8Slogwang	ipsec_input.c	\
312a9643ea8Slogwang	ipsec_mbuf.c	\
313a9643ea8Slogwang	ipsec_output.c	\
314a9643ea8Slogwang	key.c		\
315a9643ea8Slogwang	key_debug.c	\
316a9643ea8Slogwang	keysock.c	\
317a9643ea8Slogwang	xform_ah.c	\
318a9643ea8Slogwang	xform_esp.c	\
319a9643ea8Slogwang	xform_ipcomp.c
320a9643ea8Slogwangendif
321a9643ea8Slogwang
322a9643ea8Slogwang# only if TCP_SIGNTAURE is defined
323a9643ea8Slogwang#xform_tcp.c
324a9643ea8Slogwang
325a9643ea8SlogwangNETINET6_SRCS+=
326a9643ea8Slogwang
327a9643ea8Slogwang
328a9643ea8Slogwangifdef FF_IPSEC
329a9643ea8SlogwangOPENCRYPTO_SRCS+=	\
330a9643ea8Slogwang	cast.c		\
331a9643ea8Slogwang	criov.c		\
332a9643ea8Slogwang	crypto.c	\
333a9643ea8Slogwang	cryptosoft.c	\
334a9643ea8Slogwang	deflate.c	\
335a9643ea8Slogwang	rmd160.c	\
336a9643ea8Slogwang	skipjack.c	\
337a9643ea8Slogwang	xform.c
338a9643ea8Slogwangendif
339a9643ea8Slogwang
340a9643ea8Slogwang#	cryptodev.c
341a9643ea8Slogwang
342a9643ea8SlogwangOPENCRYPTO_MHEADERS= cryptodev_if.m
343a9643ea8SlogwangOPENCRYPTO_MSRCS= cryptodev_if.m
344a9643ea8Slogwang
345a9643ea8SlogwangVM_SRCS+=		\
346a9643ea8Slogwang	uma_core.c
347a9643ea8Slogwang
348a9643ea8Slogwang
349a9643ea8SlogwangMHEADERS= $(patsubst %.m,%.h,${KERN_MHEADERS})
350a9643ea8SlogwangMHEADERS+= vnode_if.h vnode_if_newproto.h vnode_if_typedef.h
351a9643ea8SlogwangMHEADERS+= $(patsubst %.m,%.h,${OPENCRYPTO_MHEADERS})
352a9643ea8Slogwang
353a9643ea8SlogwangMSRCS= $(patsubst %.m,%.c,${KERN_MSRCS})
354a9643ea8SlogwangMSRCS+= $(patsubst %.m,%.c,${OPENCRYPTO_MSRCS})
355a9643ea8Slogwang
356a9643ea8SlogwangASM_SRCS = ${CRYPTO_ASM_SRCS}
357a9643ea8Slogwang
358a9643ea8SlogwangSRCS=  ${FF_SRCS} ${CRYPTO_SRCS} ${KERN_SRCS} ${LIBKERN_SRCS} ${MACHINE_SRCS}
359a9643ea8SlogwangSRCS+= ${MSRCS} ${NET_SRCS} ${NETINET_SRCS} ${NETINET6_SRCS} ${NETIPSEC_SRCS} ${OPENCRYPTO_SRCS} ${VM_SRCS}
360a9643ea8Slogwang
361a9643ea8Slogwang# If witness is enabled.
362a9643ea8Slogwang# SRCS+= ${KERN_WITNESS_SRCS}
363a9643ea8Slogwang
364a9643ea8SlogwangHOST_SRCS = ${FF_HOST_SRCS}
365a9643ea8Slogwang
366a9643ea8SlogwangASM_OBJS+= $(patsubst %.S,%.o,${ASM_SRCS})
367a9643ea8SlogwangOBJS+= $(patsubst %.c,%.o,${SRCS})
368a9643ea8SlogwangHOST_OBJS+= $(patsubst %.c,%.o,${HOST_SRCS})
369a9643ea8Slogwang
370a9643ea8Slogwangall: libfstack.a
371a9643ea8Slogwang
372a9643ea8Slogwang#
373a9643ea8Slogwang# The library is built by first incrementally linking all the object
374a9643ea8Slogwang# to resolve internal references.  Then, all symbols are made local.
375a9643ea8Slogwang# Then, only the symbols that are part of the  API are made
376a9643ea8Slogwang# externally available.
377a9643ea8Slogwang#
378a9643ea8Slogwanglibfstack.a: machine_includes ff_api.symlist ${MHEADERS} ${MSRCS} ${HOST_OBJS} ${ASM_OBJS} ${OBJS}
379a9643ea8Slogwang	${LD} -r -o $*.ro ${ASM_OBJS} ${OBJS}
380a9643ea8Slogwang	nm $*.ro  | grep -v ' U ' | cut -d ' ' -f 3 > $*_localize_list.tmp
381a9643ea8Slogwang	objcopy --localize-symbols=$*_localize_list.tmp $*.ro
382a9643ea8Slogwang	rm $*_localize_list.tmp
383a9643ea8Slogwang	objcopy --globalize-symbols=ff_api.symlist $*.ro
384a9643ea8Slogwang	rm -f $@
385a9643ea8Slogwang	ar -cqs $@ $*.ro ${HOST_OBJS}
386a9643ea8Slogwang	rm -f $*.ro
387a9643ea8Slogwang
388a9643ea8Slogwang${HOST_OBJS}: %.o: %.c
389a9643ea8Slogwang	${HOST_C}
390a9643ea8Slogwang
391a9643ea8Slogwang${ASM_OBJS}: %.o: %.S ${IMACROS_FILE}
392a9643ea8Slogwang	${NORMAL_S}
393a9643ea8Slogwang
394a9643ea8Slogwang${OBJS}: %.o: %.c ${IMACROS_FILE}
395a9643ea8Slogwang	${NORMAL_C}
396a9643ea8Slogwang
397a9643ea8Slogwang
398a9643ea8Slogwang.SUFFIXES: .m
399a9643ea8Slogwang
400a9643ea8Slogwang.m.c:
401a9643ea8Slogwang	${AWK} -f $S/tools/makeobjops.awk $< -c
402a9643ea8Slogwang
403a9643ea8Slogwang.m.h:
404a9643ea8Slogwang	${AWK} -f $S/tools/makeobjops.awk $< -h
405a9643ea8Slogwang
406a9643ea8Slogwang.PHONY: clean
407a9643ea8Slogwangclean:
408a9643ea8Slogwang	rm -f libfstack.a
409a9643ea8Slogwang	rm -f ${MHEADERS} ${MSRCS} ${HOST_OBJS} ${ASM_OBJS} ${OBJS} ${PROGRAM} ${IMACROS_FILE}
410a9643ea8Slogwang	rm -rf ${MACHINE_INCLUDES_ROOT}
411a9643ea8Slogwang
412a9643ea8Slogwang
413a9643ea8Slogwang.PHONY: machine_includes
414a9643ea8Slogwangmachine_includes:
415a9643ea8Slogwang	@rm -rf ${MACHINE_INCLUDES_ROOT}
416a9643ea8Slogwang	@mkdir -p ${MACHINE_INCLUDES_ROOT}/machine
417a9643ea8Slogwang	@cp -r $S/${MACHINE_CPUARCH}/include/* ${MACHINE_INCLUDES_ROOT}/machine
418a9643ea8Slogwang	@if [ "${X86_INCLUDES}" != "0" ]; then 				\
419a9643ea8Slogwang		mkdir -p ${MACHINE_INCLUDES_ROOT}/x86;			\
420a9643ea8Slogwang		cp -r $S/x86/include/* ${MACHINE_INCLUDES_ROOT}/x86;	\
421a9643ea8Slogwang	fi
422a9643ea8Slogwang
423a9643ea8Slogwang#
424a9643ea8Slogwang# Distilled from FreeBSD src/sys/conf/kern.post.mk
425a9643ea8Slogwang#
426a9643ea8Slogwangvnode_if.h vnode_if_newproto.h vnode_if_typedef.h: $S/tools/vnode_if.awk \
427a9643ea8Slogwang    $S/kern/vnode_if.src
428a9643ea8Slogwangvnode_if.h: vnode_if_newproto.h vnode_if_typedef.h
429a9643ea8Slogwang	${AWK} -f $S/tools/vnode_if.awk $S/kern/vnode_if.src -h
430a9643ea8Slogwangvnode_if_newproto.h:
431a9643ea8Slogwang	${AWK} -f $S/tools/vnode_if.awk $S/kern/vnode_if.src -p
432a9643ea8Slogwangvnode_if_typedef.h:
433a9643ea8Slogwang	${AWK} -f $S/tools/vnode_if.awk $S/kern/vnode_if.src -q
434a9643ea8Slogwang
435a9643ea8Slogwanginclude ${TOPDIR}/mk/kern.mk
436a9643ea8Slogwang
437