xref: /f-stack/lib/Makefile (revision 7230b27c)
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)
19dc42d452Swhl739
20dc42d452Swhl739#DEBUG=-O0 -gdwarf-2 -g3 -Wno-format-truncation
21dc42d452Swhl739
225523938cSrootFF_KNI=1
23127dd473Swhl739#FF_NETGRAPH=1
24127dd473Swhl739#FF_IPFW=1
25a9643ea8Slogwang
26a9643ea8Slogwangifeq ($(FF_DPDK),)
27a9643ea8Slogwang    FF_DPDK=${TOPDIR}/dpdk/x86_64-native-linuxapp-gcc
28a9643ea8Slogwangendif
29a9643ea8Slogwang
30*7230b27cSmorishima311ifdef RTE_SDK
31*7230b27cSmorishima311    FF_DPDK=${RTE_SDK}/x86_64-native-linuxapp-gcc
32*7230b27cSmorishima311endif
33*7230b27cSmorishima311
34a9643ea8SlogwangDPDK_CFLAGS= -Wall -Werror -include ${FF_DPDK}/include/rte_config.h
35a9643ea8SlogwangDPDK_CFLAGS+= -march=native -DRTE_MACHINE_CPUFLAG_SSE -DRTE_MACHINE_CPUFLAG_SSE2 -DRTE_MACHINE_CPUFLAG_SSE3
36a9643ea8SlogwangDPDK_CFLAGS+= -DRTE_MACHINE_CPUFLAG_SSSE3 -DRTE_MACHINE_CPUFLAG_SSE4_1 -DRTE_MACHINE_CPUFLAG_SSE4_2
37a9643ea8SlogwangDPDK_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
38a9643ea8SlogwangDPDK_CFLAGS+= -I${FF_DPDK}/include
39a9643ea8Slogwang
40a9643ea8Slogwanginclude ${TOPDIR}/mk/kern.pre.mk
41a9643ea8Slogwang
42a9643ea8SlogwangKERNPREINCLUDES:= ${INCLUDES}
43a9643ea8SlogwangINCLUDES= -I${OVERRIDE_INCLUDES_ROOT} ${KERNPREINCLUDES}
44a9643ea8SlogwangINCLUDES+= -I./machine_include
45a9643ea8SlogwangINCLUDES+= -I./opt
46a9643ea8Slogwang
47a9643ea8Slogwang# Include search path for files that only include host OS headers
48a9643ea8SlogwangHOST_INCLUDES= -I.
49a9643ea8Slogwangifndef DEBUG
50dc42d452Swhl739HOST_CFLAGS = -O2 -frename-registers  -funswitch-loops -fweb -Wno-format-truncation
51a9643ea8Slogwangelse
52a9643ea8SlogwangHOST_CFLAGS = ${DEBUG}
53a9643ea8Slogwangendif
543b2bd0f6Slogwang
55dc42d452Swhl739ifdef FF_KNI
56dc42d452Swhl739HOST_CFLAGS+= -DFF_KNI
57dc42d452Swhl739endif
58dc42d452Swhl739
59a9643ea8SlogwangHOST_CFLAGS+= ${DPDK_CFLAGS}
6034b2fad4SYuYangHOST_CFLAGS+= ${CONF_CFLAGS}
613b2bd0f6Slogwang
623b2bd0f6Slogwangifdef FF_NETGRAPH
633b2bd0f6SlogwangHOST_CFLAGS+= -DFF_NETGRAPH
643b2bd0f6Slogwangendif
653b2bd0f6Slogwang
66127dd473Swhl739ifdef FF_IPFW
67127dd473Swhl739HOST_CFLAGS+= -DFF_IPFW
68127dd473Swhl739endif
69127dd473Swhl739
70a9643ea8SlogwangHOST_C= ${CC} -c $(HOST_CFLAGS) ${HOST_INCLUDES} ${WERROR} ${PROF} $<
71a9643ea8Slogwang
72a9643ea8Slogwang
73a9643ea8Slogwangifneq ($(filter amd64 i386,${MACHINE_CPUARCH}),)
74a9643ea8SlogwangX86_INCLUDES=1
75a9643ea8Slogwangendif
76a9643ea8Slogwang
77a9643ea8Slogwang
78a9643ea8Slogwang#
79a9643ea8Slogwang# Distilled from FreeBSD src/sys/conf/Makefile.amd64
80a9643ea8Slogwang#
81a9643ea8Slogwangifeq (${MACHINE_CPUARCH},amd64)
82a9643ea8Slogwangendif
83a9643ea8Slogwang
84a9643ea8Slogwang#
85a9643ea8Slogwang# Distilled from FreeBSD src/sys/conf/Makefile.arm
86a9643ea8Slogwang#
87a9643ea8Slogwangifeq (${MACHINE_CPUARCH},arm)
88a9643ea8Slogwang
89a9643ea8Slogwangifneq (${COMPILER_TYPE},clang)
90a9643ea8SlogwangCFLAGS += -mno-thumb-interwork
91a9643ea8Slogwangendif
92a9643ea8Slogwang
93a9643ea8Slogwangendif
94a9643ea8Slogwang
95a9643ea8Slogwang
96a9643ea8Slogwang#
97a9643ea8Slogwang# Distilled from FreeBSD src/sys/conf/Makefile.i386
98a9643ea8Slogwang#
99a9643ea8Slogwangifeq (${MACHINE_CPUARCH},i386)
100a9643ea8SlogwangMACHINE=i386
101a9643ea8Slogwangendif
102a9643ea8Slogwang
103a9643ea8Slogwang
104a9643ea8Slogwang#
105a9643ea8Slogwang# Distilled from FreeBSD src/sys/conf/Makefile.mips
106a9643ea8Slogwang#
107a9643ea8Slogwangifeq (${MACHINE_CPUARCH},mips)
108a9643ea8Slogwang
109a9643ea8Slogwang# We default to the MIPS32 ISA, if none specified in the
110a9643ea8Slogwang# kernel configuration file.
111a9643ea8SlogwangARCH_FLAGS?=-march=mips32
112a9643ea8Slogwang
113a9643ea8SlogwangHACK_EXTRA_FLAGS=-shared
114a9643ea8Slogwang
115a9643ea8SlogwangCFLAGS+=${EXTRA_FLAGS} $(ARCH_FLAGS)
116a9643ea8SlogwangHACK_EXTRA_FLAGS+=${EXTRA_FLAGS} $(ARCH_FLAGS)
117a9643ea8Slogwangendif
118a9643ea8Slogwang
119a9643ea8SlogwangCFLAGS+= -DFSTACK
120a9643ea8Slogwang
12108dba010SAndy# add for LVS tcp option toa, disabled by default
12208dba010SAndy# CFLAGS+= -DLVS_TCPOPT_TOA
12308dba010SAndy
124a9643ea8SlogwangVPATH+= $S/${MACHINE_CPUARCH}/${MACHINE_CPUARCH}
125a9643ea8SlogwangVPATH+= $S/kern
126a9643ea8SlogwangVPATH+= $S/crypto
127a9643ea8SlogwangVPATH+= $S/crypto/aesni
128a9643ea8SlogwangVPATH+= $S/crypto/blowfish
129a9643ea8SlogwangVPATH+= $S/crypto/camellia
130a9643ea8SlogwangVPATH+= $S/crypto/des
131a9643ea8SlogwangVPATH+= $S/crypto/rijndael
132a9643ea8SlogwangVPATH+= $S/crypto/sha2
133a9643ea8SlogwangVPATH+= $S/crypto/siphash
134a9643ea8SlogwangVPATH+= $S/net
135a416aa08Slogwangifdef FF_NETGRAPH
136a1fd9364SlogwangVPATH+= $S/netgraph
137a416aa08Slogwangendif
138a9643ea8SlogwangVPATH+= $S/netinet
139a1fd9364SlogwangVPATH+= $S/netinet/libalias
140a9643ea8SlogwangVPATH+= $S/netinet/cc
141a9643ea8SlogwangVPATH+= $S/netipsec
142127dd473Swhl739ifdef FF_IPFW
143127dd473Swhl739VPATH+= $S/netpfil/ipfw
144127dd473Swhl739endif
145a9643ea8SlogwangVPATH+= $S/opencrypto
146a9643ea8SlogwangVPATH+= $S/vm
147a9643ea8SlogwangVPATH+= $S/libkern
148a9643ea8Slogwang
149a9643ea8Slogwang
150a9643ea8SlogwangFF_SRCS+=                     \
151a9643ea8Slogwang	ff_compat.c           \
152a9643ea8Slogwang	ff_glue.c             \
153a9643ea8Slogwang	ff_freebsd_init.c     \
154a9643ea8Slogwang	ff_init_main.c        \
155a9643ea8Slogwang	ff_kern_condvar.c     \
156a9643ea8Slogwang	ff_kern_environment.c \
157a9643ea8Slogwang	ff_kern_intr.c        \
158a9643ea8Slogwang	ff_kern_subr.c        \
159a9643ea8Slogwang	ff_kern_synch.c       \
160a9643ea8Slogwang	ff_kern_timeout.c     \
161a9643ea8Slogwang	ff_lock.c             \
162a9643ea8Slogwang	ff_syscall_wrapper.c  \
163a9643ea8Slogwang	ff_subr_prf.c         \
164a9643ea8Slogwang	ff_vfs_ops.c          \
165a9643ea8Slogwang	ff_veth.c             \
166144c6bcdSlogwang	ff_route.c
167a9643ea8Slogwang
1683b2bd0f6Slogwangifdef FF_NETGRAPH
1693b2bd0f6SlogwangFF_SRCS+=                   \
1703b2bd0f6Slogwang        ff_ng_base.c        \
1713b2bd0f6Slogwang        ff_ngctl.c
1723b2bd0f6Slogwangendif
1733b2bd0f6Slogwang
174a9643ea8SlogwangFF_HOST_SRCS+=              \
175a9643ea8Slogwang	ff_host_interface.c \
176a9643ea8Slogwang	ff_config.c         \
177a9643ea8Slogwang	ff_ini_parser.c     \
178a9643ea8Slogwang	ff_dpdk_if.c        \
179a9643ea8Slogwang	ff_dpdk_pcap.c      \
1801a78ce8eSRon	ff_epoll.c          \
181a9643ea8Slogwang	ff_init.c
182a9643ea8Slogwang
183dc42d452Swhl739ifdef FF_KNI
184dc42d452Swhl739FF_HOST_SRCS+=              \
185dc42d452Swhl739	ff_dpdk_kni.c
186dc42d452Swhl739endif
187dc42d452Swhl739
188a9643ea8Slogwangifdef FF_IPSEC
189a9643ea8SlogwangCRYPTO_ASM_SRCS+=                       \
190a9643ea8Slogwang	aesencdec_${MACHINE_CPUARCH}.S  \
191a9643ea8Slogwang	aeskeys_${MACHINE_CPUARCH}.S
192a9643ea8Slogwang
193a9643ea8SlogwangCRYPTO_SRCS+=               \
194a9643ea8Slogwang	aesni.c	            \
195a9643ea8Slogwang	aesni_wrap.c        \
196a9643ea8Slogwang	bf_ecb.c            \
197a9643ea8Slogwang	bf_enc.c            \
198a9643ea8Slogwang	bf_skey.c           \
199a9643ea8Slogwang	camellia.c          \
200a9643ea8Slogwang	camellia-api.c      \
201a9643ea8Slogwang	des_ecb.c           \
202a9643ea8Slogwang	des_enc.c           \
203a9643ea8Slogwang	des_setkey.c        \
204a9643ea8Slogwang	rijndael-alg-fst.c  \
205a9643ea8Slogwang	rijndael-api.c      \
206a9643ea8Slogwang	sha1.c              \
207a9643ea8Slogwang	sha256c.c           \
208a9643ea8Slogwang	sha512c.c           \
209a9643ea8Slogwang	siphash.c
210a9643ea8Slogwangelse
211a9643ea8SlogwangCRYPTO_SRCS+=               \
212a9643ea8Slogwang	sha1.c              \
213a9643ea8Slogwang	siphash.c
214a9643ea8Slogwangendif
215a9643ea8Slogwang
216a9643ea8SlogwangKERN_SRCS+=                 \
217a9643ea8Slogwang	kern_descrip.c      \
218a9643ea8Slogwang	kern_event.c        \
219a9643ea8Slogwang	kern_fail.c         \
220a9643ea8Slogwang	kern_khelp.c        \
221a9643ea8Slogwang	kern_hhook.c        \
222a9643ea8Slogwang	kern_linker.c       \
223a9643ea8Slogwang	kern_mbuf.c         \
224a9643ea8Slogwang	kern_module.c       \
225a9643ea8Slogwang	kern_mtxpool.c      \
226a9643ea8Slogwang	kern_ntptime.c      \
227a9643ea8Slogwang	kern_osd.c          \
228a9643ea8Slogwang	kern_sysctl.c       \
229a9643ea8Slogwang	kern_tc.c           \
230a9643ea8Slogwang	kern_uuid.c         \
231a9643ea8Slogwang	link_elf.c          \
232a9643ea8Slogwang	md5c.c              \
233a9643ea8Slogwang	subr_capability.c   \
234a9643ea8Slogwang	subr_counter.c      \
235a9643ea8Slogwang	subr_eventhandler.c \
236a9643ea8Slogwang	subr_kobj.c         \
237a9643ea8Slogwang	subr_lock.c         \
238a9643ea8Slogwang	subr_module.c       \
239a9643ea8Slogwang	subr_param.c        \
240a9643ea8Slogwang	subr_pcpu.c         \
241a9643ea8Slogwang	subr_sbuf.c         \
242a9643ea8Slogwang	subr_taskqueue.c    \
243a9643ea8Slogwang	subr_unit.c         \
244a9643ea8Slogwang	sys_capability.c    \
245a9643ea8Slogwang	sys_generic.c       \
246a9643ea8Slogwang	sys_socket.c        \
247a9643ea8Slogwang	uipc_accf.c         \
248a9643ea8Slogwang	uipc_mbuf.c         \
249a9643ea8Slogwang	uipc_mbuf2.c        \
250a9643ea8Slogwang	uipc_domain.c       \
251a9643ea8Slogwang	uipc_sockbuf.c      \
252a9643ea8Slogwang	uipc_socket.c       \
253a9643ea8Slogwang	uipc_syscalls.c
254a9643ea8Slogwang
255a9643ea8Slogwang
256a9643ea8SlogwangKERN_MHEADERS+=		\
257a9643ea8Slogwang	bus_if.m	\
258a9643ea8Slogwang	device_if.m	\
259a9643ea8Slogwang	linker_if.m
260a9643ea8Slogwang
261a9643ea8Slogwang
262a9643ea8SlogwangKERN_MSRCS+=		\
263a9643ea8Slogwang	linker_if.m
264a9643ea8Slogwang
265a9643ea8Slogwang
266a9643ea8SlogwangLIBKERN_SRCS+=		 \
267a9643ea8Slogwang	bcd.c		 \
268a1fd9364Slogwang	crc32.c          \
269a9643ea8Slogwang	inet_ntoa.c	 \
270a9643ea8Slogwang	jenkins_hash.c   \
271a9643ea8Slogwang	strlcpy.c	 \
272a1fd9364Slogwang	strnlen.c        \
273a1fd9364Slogwang	zlib.c
274a9643ea8Slogwang
275a9643ea8Slogwang
276a9643ea8SlogwangMACHINE_SRCS+=		 \
277a9643ea8Slogwang	in_cksum.c
278a9643ea8Slogwang
279a9643ea8Slogwang
280a9643ea8SlogwangNET_SRCS+=		 \
281a9643ea8Slogwang	bpf.c		 \
282df6ad731Slogwang	bridgestp.c      \
283a9643ea8Slogwang	if.c		 \
284df6ad731Slogwang	if_bridge.c      \
285a9643ea8Slogwang	if_clone.c	 \
286a9643ea8Slogwang	if_dead.c	 \
287a9643ea8Slogwang	if_ethersubr.c	 \
288a9643ea8Slogwang	if_loop.c	 \
289a9643ea8Slogwang	if_llatbl.c	 \
290a1fd9364Slogwang	if_media.c       \
291a1fd9364Slogwang	if_spppfr.c      \
292a1fd9364Slogwang	if_spppsubr.c    \
293a1fd9364Slogwang	if_vlan.c        \
294a1fd9364Slogwang	if_vxlan.c       \
295a9643ea8Slogwang	in_fib.c	 \
296df6ad731Slogwang	in_gif.c         \
297a9643ea8Slogwang	ip_reass.c	 \
298a9643ea8Slogwang	netisr.c	 \
299a9643ea8Slogwang	pfil.c		 \
300a9643ea8Slogwang	radix.c		 \
301a9643ea8Slogwang	raw_cb.c	 \
302a9643ea8Slogwang	raw_usrreq.c	 \
303a9643ea8Slogwang	route.c		 \
304a1fd9364Slogwang	rtsock.c         \
305a1fd9364Slogwang	slcompress.c
306a9643ea8Slogwang
307a416aa08Slogwangifdef FF_NETGRAPH
308a1fd9364SlogwangNETGRAPH_SRCS +=         \
309a1fd9364Slogwang	ng_async.c       \
310a1fd9364Slogwang	ng_atmllc.c      \
311a1fd9364Slogwang	ng_bridge.c      \
312a1fd9364Slogwang	ng_car.c         \
313a1fd9364Slogwang	ng_cisco.c       \
314a1fd9364Slogwang	ng_deflate.c     \
315a1fd9364Slogwang	ng_echo.c        \
316a1fd9364Slogwang	ng_eiface.c      \
317a1fd9364Slogwang	ng_etf.c         \
318a1fd9364Slogwang	ng_ether.c       \
319a1fd9364Slogwang	ng_ether_echo.c  \
320a1fd9364Slogwang	ng_frame_relay.c \
321a1fd9364Slogwang	ng_gif.c         \
322a1fd9364Slogwang	ng_gif_demux.c   \
323a1fd9364Slogwang	ng_hole.c        \
324a1fd9364Slogwang	ng_hub.c         \
325a1fd9364Slogwang	ng_iface.c       \
326a1fd9364Slogwang	ng_ip_input.c    \
327a1fd9364Slogwang	ng_ipfw.c        \
328a1fd9364Slogwang	ng_ksocket.c     \
329a1fd9364Slogwang	ng_l2tp.c        \
330a1fd9364Slogwang	ng_lmi.c         \
331a1fd9364Slogwang	ng_nat.c         \
332a1fd9364Slogwang	ng_one2many.c    \
333a1fd9364Slogwang	ng_parse.c       \
334a1fd9364Slogwang	ng_patch.c       \
335a1fd9364Slogwang	ng_pipe.c        \
336a1fd9364Slogwang	ng_ppp.c         \
337a1fd9364Slogwang	ng_pppoe.c       \
338a1fd9364Slogwang	ng_pptpgre.c     \
339a1fd9364Slogwang	ng_pred1.c       \
340a1fd9364Slogwang	ng_rfc1490.c     \
341a1fd9364Slogwang	ng_sample.c      \
342a1fd9364Slogwang	ng_socket.c      \
343a1fd9364Slogwang	ng_source.c      \
344a1fd9364Slogwang	ng_split.c       \
345a1fd9364Slogwang	ng_sppp.c        \
346a1fd9364Slogwang	ng_tag.c         \
347a1fd9364Slogwang	ng_tcpmss.c      \
348a1fd9364Slogwang	ng_tee.c         \
349a1fd9364Slogwang	ng_UI.c          \
350a1fd9364Slogwang	ng_vjc.c         \
351a1fd9364Slogwang	ng_vlan.c
352a416aa08Slogwangendif
353a9643ea8Slogwang
354a9643ea8SlogwangNETINET_SRCS+=		\
355a9643ea8Slogwang	if_ether.c	\
356df6ad731Slogwang	if_gif.c        \
357a9643ea8Slogwang	igmp.c		\
358a9643ea8Slogwang	in.c		\
359a9643ea8Slogwang	in_mcast.c	\
360a9643ea8Slogwang	in_pcb.c	\
361a9643ea8Slogwang	in_proto.c	\
362a9643ea8Slogwang	in_rmx.c	\
363a1fd9364Slogwang	ip_carp.c	\
36462a0d716Slogwang	ip_divert.c     \
365df6ad731Slogwang	ip_ecn.c        \
366a9643ea8Slogwang	ip_encap.c	\
367a9643ea8Slogwang	ip_fastfwd.c	\
368a9643ea8Slogwang	ip_icmp.c	\
369a9643ea8Slogwang	ip_id.c		\
370a9643ea8Slogwang	ip_input.c	\
3711eaf0ac3Slogwang	ip_mroute.c     \
372a9643ea8Slogwang	ip_options.c	\
373a9643ea8Slogwang	ip_output.c	\
374a9643ea8Slogwang	raw_ip.c	\
375a9643ea8Slogwang	tcp_debug.c	\
376a9643ea8Slogwang	tcp_fastopen.c	\
377a9643ea8Slogwang	tcp_hostcache.c	\
378a9643ea8Slogwang	tcp_input.c	\
379a9643ea8Slogwang	tcp_lro.c	\
380a9643ea8Slogwang	tcp_offload.c	\
381a9643ea8Slogwang	tcp_output.c	\
382a9643ea8Slogwang	tcp_reass.c	\
383a9643ea8Slogwang	tcp_sack.c	\
384a9643ea8Slogwang	tcp_subr.c	\
385a9643ea8Slogwang	tcp_syncache.c	\
386a9643ea8Slogwang	tcp_timer.c	\
387a9643ea8Slogwang	tcp_timewait.c	\
388a9643ea8Slogwang	tcp_usrreq.c	\
389a9643ea8Slogwang	udp_usrreq.c	\
390a9643ea8Slogwang	cc.c		\
391a9643ea8Slogwang	cc_newreno.c    \
392a9643ea8Slogwang	cc_htcp.c       \
393a1fd9364Slogwang	cc_cubic.c      \
394a1fd9364Slogwang	alias.c         \
395a1fd9364Slogwang	alias_db.c      \
396a1fd9364Slogwang	alias_mod.c     \
397a1fd9364Slogwang	alias_proxy.c   \
398a1fd9364Slogwang	alias_sctp.c    \
399a1fd9364Slogwang	alias_util.c
400a9643ea8Slogwang
401127dd473Swhl739ifdef FF_IPFW
402127dd473Swhl739NETIPFW_SRCS+=             \
403127dd473Swhl739	ip_fw_dynamic.c \
404127dd473Swhl739	ip_fw_eaction.c \
405127dd473Swhl739	ip_fw_iface.c   \
406127dd473Swhl739	ip_fw_log.c     \
407127dd473Swhl739	ip_fw_nat.c     \
408127dd473Swhl739	ip_fw_pfil.c    \
409127dd473Swhl739	ip_fw_sockopt.c \
410127dd473Swhl739	ip_fw_table.c   \
411127dd473Swhl739	ip_fw_table_algo.c  \
412127dd473Swhl739	ip_fw_table_value.c \
413127dd473Swhl739	ip_fw2.c
414127dd473Swhl739endif
415127dd473Swhl739
416a9643ea8Slogwangifdef FF_IPSEC
417a9643ea8SlogwangNETINET_SRCS+=		\
418a9643ea8Slogwang	ip_ipsec.c
419a9643ea8Slogwangendif
420a9643ea8Slogwang
421a9643ea8Slogwang
422a9643ea8Slogwangifdef FF_IPSEC
423a9643ea8SlogwangNETIPSEC_SRCS+=		\
424a9643ea8Slogwang	ipsec.c		\
425a9643ea8Slogwang	ipsec_input.c	\
426a9643ea8Slogwang	ipsec_mbuf.c	\
427a9643ea8Slogwang	ipsec_output.c	\
428a9643ea8Slogwang	key.c		\
429a9643ea8Slogwang	key_debug.c	\
430a9643ea8Slogwang	keysock.c	\
431a9643ea8Slogwang	xform_ah.c	\
432a9643ea8Slogwang	xform_esp.c	\
433a9643ea8Slogwang	xform_ipcomp.c
434a9643ea8Slogwangendif
435a9643ea8Slogwang
436a9643ea8Slogwang# only if TCP_SIGNTAURE is defined
437a9643ea8Slogwang#xform_tcp.c
438a9643ea8Slogwang
439a9643ea8SlogwangNETINET6_SRCS+=
440a9643ea8Slogwang
441a9643ea8Slogwang
442a9643ea8Slogwangifdef FF_IPSEC
443a9643ea8SlogwangOPENCRYPTO_SRCS+=	\
444a9643ea8Slogwang	cast.c		\
445a9643ea8Slogwang	criov.c		\
446a9643ea8Slogwang	crypto.c	\
447a9643ea8Slogwang	cryptosoft.c	\
448a9643ea8Slogwang	deflate.c	\
449a9643ea8Slogwang	rmd160.c	\
450a9643ea8Slogwang	skipjack.c	\
451a9643ea8Slogwang	xform.c
452a9643ea8Slogwangendif
453a9643ea8Slogwang
454a9643ea8Slogwang#	cryptodev.c
455a9643ea8Slogwang
456a9643ea8SlogwangOPENCRYPTO_MHEADERS= cryptodev_if.m
457a9643ea8SlogwangOPENCRYPTO_MSRCS= cryptodev_if.m
458a9643ea8Slogwang
459a9643ea8SlogwangVM_SRCS+=		\
460a9643ea8Slogwang	uma_core.c
461a9643ea8Slogwang
462a9643ea8Slogwang
463a9643ea8SlogwangMHEADERS= $(patsubst %.m,%.h,${KERN_MHEADERS})
464a9643ea8SlogwangMHEADERS+= vnode_if.h vnode_if_newproto.h vnode_if_typedef.h
465a9643ea8SlogwangMHEADERS+= $(patsubst %.m,%.h,${OPENCRYPTO_MHEADERS})
466a9643ea8Slogwang
467a9643ea8SlogwangMSRCS= $(patsubst %.m,%.c,${KERN_MSRCS})
468a9643ea8SlogwangMSRCS+= $(patsubst %.m,%.c,${OPENCRYPTO_MSRCS})
469a9643ea8Slogwang
470a9643ea8SlogwangASM_SRCS = ${CRYPTO_ASM_SRCS}
471a9643ea8Slogwang
472a9643ea8SlogwangSRCS=  ${FF_SRCS} ${CRYPTO_SRCS} ${KERN_SRCS} ${LIBKERN_SRCS} ${MACHINE_SRCS}
473a1fd9364SlogwangSRCS+= ${MSRCS} ${NET_SRCS} ${NETGRAPH_SRCS} ${NETINET_SRCS} ${NETINET6_SRCS}
474127dd473Swhl739SRCS+= ${NETIPSEC_SRCS} ${NETIPFW_SRCS} ${OPENCRYPTO_SRCS} ${VM_SRCS}
475a9643ea8Slogwang
476a9643ea8Slogwang# If witness is enabled.
477a9643ea8Slogwang# SRCS+= ${KERN_WITNESS_SRCS}
478a9643ea8Slogwang
479c36e692aSlogwang# Extra FreeBSD kernel module srcs.
480c36e692aSlogwangSRCS+= ${KMOD_SRCS}
481c36e692aSlogwang
482a9643ea8SlogwangHOST_SRCS = ${FF_HOST_SRCS}
483a9643ea8Slogwang
484a9643ea8SlogwangASM_OBJS+= $(patsubst %.S,%.o,${ASM_SRCS})
485a9643ea8SlogwangOBJS+= $(patsubst %.c,%.o,${SRCS})
486a9643ea8SlogwangHOST_OBJS+= $(patsubst %.c,%.o,${HOST_SRCS})
487a9643ea8Slogwang
488a9643ea8Slogwangall: libfstack.a
489a9643ea8Slogwang
490a9643ea8Slogwang#
491a9643ea8Slogwang# The library is built by first incrementally linking all the object
492a9643ea8Slogwang# to resolve internal references.  Then, all symbols are made local.
493a9643ea8Slogwang# Then, only the symbols that are part of the  API are made
494a9643ea8Slogwang# externally available.
495a9643ea8Slogwang#
496a9643ea8Slogwanglibfstack.a: machine_includes ff_api.symlist ${MHEADERS} ${MSRCS} ${HOST_OBJS} ${ASM_OBJS} ${OBJS}
4978cf1d457Slogwang	${LD} -d -r -o $*.ro ${ASM_OBJS} ${OBJS}
498a9643ea8Slogwang	nm $*.ro  | grep -v ' U ' | cut -d ' ' -f 3 > $*_localize_list.tmp
499a9643ea8Slogwang	objcopy --localize-symbols=$*_localize_list.tmp $*.ro
500a9643ea8Slogwang	rm $*_localize_list.tmp
501a9643ea8Slogwang	objcopy --globalize-symbols=ff_api.symlist $*.ro
502a9643ea8Slogwang	rm -f $@
503a9643ea8Slogwang	ar -cqs $@ $*.ro ${HOST_OBJS}
504a9643ea8Slogwang	rm -f $*.ro
505a9643ea8Slogwang
506a9643ea8Slogwang${HOST_OBJS}: %.o: %.c
507a9643ea8Slogwang	${HOST_C}
508a9643ea8Slogwang
509a9643ea8Slogwang${ASM_OBJS}: %.o: %.S ${IMACROS_FILE}
510a9643ea8Slogwang	${NORMAL_S}
511a9643ea8Slogwang
512a9643ea8Slogwang${OBJS}: %.o: %.c ${IMACROS_FILE}
513a9643ea8Slogwang	${NORMAL_C}
514a9643ea8Slogwang
515a9643ea8Slogwang
516a9643ea8Slogwang.SUFFIXES: .m
517a9643ea8Slogwang
518a9643ea8Slogwang.m.c:
519a9643ea8Slogwang	${AWK} -f $S/tools/makeobjops.awk $< -c
520a9643ea8Slogwang
521a9643ea8Slogwang.m.h:
522a9643ea8Slogwang	${AWK} -f $S/tools/makeobjops.awk $< -h
523a9643ea8Slogwang
524a9643ea8Slogwang.PHONY: clean
525a9643ea8Slogwangclean:
526a9643ea8Slogwang	rm -f libfstack.a
527a9643ea8Slogwang	rm -f ${MHEADERS} ${MSRCS} ${HOST_OBJS} ${ASM_OBJS} ${OBJS} ${PROGRAM} ${IMACROS_FILE}
528a9643ea8Slogwang	rm -rf ${MACHINE_INCLUDES_ROOT}
529a9643ea8Slogwang
530a9643ea8Slogwang
531a9643ea8Slogwang.PHONY: machine_includes
532a9643ea8Slogwangmachine_includes:
533a9643ea8Slogwang	@rm -rf ${MACHINE_INCLUDES_ROOT}
534a9643ea8Slogwang	@mkdir -p ${MACHINE_INCLUDES_ROOT}/machine
535a9643ea8Slogwang	@cp -r $S/${MACHINE_CPUARCH}/include/* ${MACHINE_INCLUDES_ROOT}/machine
536a9643ea8Slogwang	@if [ "${X86_INCLUDES}" != "0" ]; then 				\
537a9643ea8Slogwang		mkdir -p ${MACHINE_INCLUDES_ROOT}/x86;			\
538a9643ea8Slogwang		cp -r $S/x86/include/* ${MACHINE_INCLUDES_ROOT}/x86;	\
539a9643ea8Slogwang	fi
540a9643ea8Slogwang
541a9643ea8Slogwang#
542a9643ea8Slogwang# Distilled from FreeBSD src/sys/conf/kern.post.mk
543a9643ea8Slogwang#
544a9643ea8Slogwangvnode_if.h vnode_if_newproto.h vnode_if_typedef.h: $S/tools/vnode_if.awk \
545a9643ea8Slogwang    $S/kern/vnode_if.src
546a9643ea8Slogwangvnode_if.h: vnode_if_newproto.h vnode_if_typedef.h
547a9643ea8Slogwang	${AWK} -f $S/tools/vnode_if.awk $S/kern/vnode_if.src -h
548a9643ea8Slogwangvnode_if_newproto.h:
549a9643ea8Slogwang	${AWK} -f $S/tools/vnode_if.awk $S/kern/vnode_if.src -p
550a9643ea8Slogwangvnode_if_typedef.h:
551a9643ea8Slogwang	${AWK} -f $S/tools/vnode_if.awk $S/kern/vnode_if.src -q
552a9643ea8Slogwang
553a9643ea8Slogwanginclude ${TOPDIR}/mk/kern.mk
554a9643ea8Slogwang
555