xref: /f-stack/lib/Makefile (revision 744d7fa8)
1a9643ea8Slogwang#
2a9643ea8Slogwang# Copyright (c) 2013 Patrick Kelsey. All rights reserved.
32317ada5Sfengbojiang# Copyright (C) 2017-2021 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
1422ce4affSfengbojiangC=${TOPDIR}/freebsd/contrib/ck/include
15a9643ea8SlogwangMACHINE_INCLUDES_ROOT:=${CURDIR}/machine_include
16a9643ea8SlogwangOVERRIDE_INCLUDES_ROOT:=${CURDIR}/include
17a9643ea8SlogwangX86_INCLUDES=0
185af66259Sjfb8856606PREFIX=/usr/local
195af66259Sjfb8856606PREFIX_LIB=${PREFIX}/lib
205af66259Sjfb8856606PREFIX_INCLUDE=/usr/local/include
215af66259Sjfb8856606PREFIX_BIN=/usr/local/bin
225af66259Sjfb8856606F-STACK_CONF=/etc/f-stack.conf
23ba22d55cSfengbojiangF-STACK_VERSION=1.22
24a9643ea8Slogwang
25a9643ea8SlogwangHOST_OS:=$(shell uname -s)
26dc42d452Swhl739
27*744d7fa8SfengbojiangDEBUG=-O0 -gdwarf-2 -g3 -Wno-format-truncation
28dc42d452Swhl739
295523938cSrootFF_KNI=1
3077ab9738Sfengbojiang
312474e163SHawker#FF_FLOW_ISOLATE=1
3277ab9738Sfengbojiang
3377ab9738Sfengbojiang# NETGRAPH drivers ipfw
34127dd473Swhl739#FF_NETGRAPH=1
35127dd473Swhl739#FF_IPFW=1
3677ab9738Sfengbojiang
375bf882b4S10077240#FF_USE_PAGE_ARRAY=1
381f5a5310Sfengbojiang#FF_ZC_SEND=1
39d7140ab7Sfengbojiang(姜凤波)FF_INET6=1
405bf882b4S10077240
4177ab9738Sfengbojiang# TCPHPTS drivers rack and bbr
4277ab9738SfengbojiangFF_TCPHPTS=1
4377ab9738SfengbojiangFF_EXTRA_TCP_STACKS=1
44a9643ea8Slogwang
45cac36022SDonBearHinclude ${TOPDIR}/mk/kern.pre.mk
46cac36022SDonBearH
478d76b62eSfengbojiangifneq ($(shell pkg-config --exists libdpdk && echo 0),0)
488d76b62eSfengbojiang$(error "no installation of DPDK found, maybe you shuld export environment variable `PKG_CONFIG_PATH`")
49a9643ea8Slogwangendif
50a9643ea8Slogwang
518d76b62eSfengbojiangPKGCONF ?= pkg-config
527230b27cSmorishima311
538d76b62eSfengbojiangDPDK_CFLAGS= -Wall -Wno-deprecated-declarations -Werror $(shell $(PKGCONF) --cflags libdpdk)
54a9643ea8Slogwang
55a9643ea8SlogwangKERNPREINCLUDES:= ${INCLUDES}
56a9643ea8SlogwangINCLUDES= -I${OVERRIDE_INCLUDES_ROOT} ${KERNPREINCLUDES}
57a9643ea8SlogwangINCLUDES+= -I./machine_include
58a9643ea8SlogwangINCLUDES+= -I./opt
59a9643ea8Slogwang
60a9643ea8Slogwang# Include search path for files that only include host OS headers
61a9643ea8SlogwangHOST_INCLUDES= -I.
62a9643ea8Slogwangifndef DEBUG
63dc42d452Swhl739HOST_CFLAGS = -O2 -frename-registers  -funswitch-loops -fweb -Wno-format-truncation
64a9643ea8Slogwangelse
65a9643ea8SlogwangHOST_CFLAGS = ${DEBUG}
66a9643ea8Slogwangendif
673b2bd0f6Slogwang
68dc42d452Swhl739ifdef FF_KNI
69dc42d452Swhl739HOST_CFLAGS+= -DFF_KNI
70dc42d452Swhl739endif
71dc42d452Swhl739
72a9643ea8SlogwangHOST_CFLAGS+= ${DPDK_CFLAGS}
7334b2fad4SYuYangHOST_CFLAGS+= ${CONF_CFLAGS}
743b2bd0f6Slogwang
752474e163SHawkerifdef FF_FLOW_ISOLATE
762474e163SHawkerHOST_CFLAGS+= -DFF_FLOW_ISOLATE
772474e163SHawkerendif
782474e163SHawker
793b2bd0f6Slogwangifdef FF_NETGRAPH
803b2bd0f6SlogwangHOST_CFLAGS+= -DFF_NETGRAPH
813b2bd0f6Slogwangendif
823b2bd0f6Slogwang
83127dd473Swhl739ifdef FF_IPFW
84127dd473Swhl739HOST_CFLAGS+= -DFF_IPFW
85127dd473Swhl739endif
86127dd473Swhl739
875bf882b4S10077240ifdef FF_USE_PAGE_ARRAY
885bf882b4S10077240HOST_CFLAGS+= -DFF_USE_PAGE_ARRAY
895bf882b4S10077240endif
905bf882b4S10077240
9122ce4affSfengbojiangHOST_CFLAGS+= -DINET
9222ce4affSfengbojiangCFLAGS+= -DINET
9322ce4affSfengbojiang
94d7140ab7Sfengbojiang(姜凤波)ifdef FF_INET6
95d7140ab7Sfengbojiang(姜凤波)HOST_CFLAGS+= -DINET6
96d7140ab7Sfengbojiang(姜凤波)CFLAGS+= -DINET6
97d7140ab7Sfengbojiang(姜凤波)endif
98d7140ab7Sfengbojiang(姜凤波)
9977ab9738Sfengbojiangifdef FF_TCPHPTS
10077ab9738SfengbojiangCFLAGS+= -DTCPHPTS -DRATELIMIT
10177ab9738Sfengbojiangendif
10277ab9738Sfengbojiang
103a9643ea8SlogwangHOST_C= ${CC} -c $(HOST_CFLAGS) ${HOST_INCLUDES} ${WERROR} ${PROF} $<
104a9643ea8Slogwang
105a9643ea8Slogwang
106a9643ea8Slogwangifneq ($(filter amd64 i386,${MACHINE_CPUARCH}),)
107a9643ea8SlogwangX86_INCLUDES=1
108a9643ea8Slogwangendif
109a9643ea8Slogwang
110a9643ea8Slogwang
111a9643ea8Slogwang#
112a9643ea8Slogwang# Distilled from FreeBSD src/sys/conf/Makefile.amd64
113a9643ea8Slogwang#
114a9643ea8Slogwangifeq (${MACHINE_CPUARCH},amd64)
115a9643ea8Slogwangendif
116a9643ea8Slogwang
117a9643ea8Slogwang#
118a9643ea8Slogwang# Distilled from FreeBSD src/sys/conf/Makefile.arm
119a9643ea8Slogwang#
120a9643ea8Slogwangifeq (${MACHINE_CPUARCH},arm)
121a9643ea8Slogwang
122a9643ea8Slogwangifneq (${COMPILER_TYPE},clang)
123a9643ea8SlogwangCFLAGS += -mno-thumb-interwork
124a9643ea8Slogwangendif
125a9643ea8Slogwang
126a9643ea8Slogwangendif
127a9643ea8Slogwang
1289bd490e8Sdongbo4#
1299bd490e8Sdongbo4# fix the MACHINE_CPUARCH to match the FreeBSD directory name
1309bd490e8Sdongbo4#
1319bd490e8Sdongbo4ifeq (${MACHINE_CPUARCH},aarch64)
1329bd490e8Sdongbo4MACHINE_CPUARCH=arm64
1339bd490e8Sdongbo4endif
1349bd490e8Sdongbo4
135a9643ea8Slogwang
136a9643ea8Slogwang#
137a9643ea8Slogwang# Distilled from FreeBSD src/sys/conf/Makefile.i386
138a9643ea8Slogwang#
139a9643ea8Slogwangifeq (${MACHINE_CPUARCH},i386)
140a9643ea8SlogwangMACHINE=i386
141a9643ea8Slogwangendif
142a9643ea8Slogwang
143a9643ea8Slogwang#
144a9643ea8Slogwang# Distilled from FreeBSD src/sys/conf/Makefile.mips
145a9643ea8Slogwang#
146a9643ea8Slogwangifeq (${MACHINE_CPUARCH},mips)
147a9643ea8Slogwang
148a9643ea8Slogwang# We default to the MIPS32 ISA, if none specified in the
149a9643ea8Slogwang# kernel configuration file.
150a9643ea8SlogwangARCH_FLAGS?=-march=mips32
151a9643ea8Slogwang
152a9643ea8SlogwangHACK_EXTRA_FLAGS=-shared
153a9643ea8Slogwang
154a9643ea8SlogwangCFLAGS+=${EXTRA_FLAGS} $(ARCH_FLAGS)
155a9643ea8SlogwangHACK_EXTRA_FLAGS+=${EXTRA_FLAGS} $(ARCH_FLAGS)
156a9643ea8Slogwangendif
157a9643ea8Slogwang
158a9643ea8SlogwangCFLAGS+= -DFSTACK
159a9643ea8Slogwang
1601f5a5310Sfengbojiangifdef FF_ZC_SEND
1611f5a5310SfengbojiangCFLAGS+= -DFSTACK_ZC_SEND
1621f5a5310Sfengbojiangendif
1631f5a5310Sfengbojiang
16408dba010SAndy# add for LVS tcp option toa, disabled by default
16508dba010SAndy# CFLAGS+= -DLVS_TCPOPT_TOA
16608dba010SAndy
167a9643ea8SlogwangVPATH+= $S/${MACHINE_CPUARCH}/${MACHINE_CPUARCH}
168a9643ea8SlogwangVPATH+= $S/kern
16922ce4affSfengbojiangVPATH+= $S/x86
170a9643ea8SlogwangVPATH+= $S/crypto
171a9643ea8SlogwangVPATH+= $S/crypto/aesni
172a9643ea8SlogwangVPATH+= $S/crypto/blowfish
173a9643ea8SlogwangVPATH+= $S/crypto/camellia
174a9643ea8SlogwangVPATH+= $S/crypto/des
175a9643ea8SlogwangVPATH+= $S/crypto/rijndael
176a9643ea8SlogwangVPATH+= $S/crypto/sha2
177a9643ea8SlogwangVPATH+= $S/crypto/siphash
178a9643ea8SlogwangVPATH+= $S/net
17922ce4affSfengbojiangVPATH+= $S/net/route
180a416aa08Slogwangifdef FF_NETGRAPH
181a1fd9364SlogwangVPATH+= $S/netgraph
182a416aa08Slogwangendif
183a9643ea8SlogwangVPATH+= $S/netinet
184a1fd9364SlogwangVPATH+= $S/netinet/libalias
185a9643ea8SlogwangVPATH+= $S/netinet/cc
186d7140ab7Sfengbojiang(姜凤波)ifdef FF_INET6
187d7140ab7Sfengbojiang(姜凤波)VPATH+= $S/netinet6
188d7140ab7Sfengbojiang(姜凤波)endif
18977ab9738Sfengbojiangifdef FF_EXTRA_TCP_STACKS
19077ab9738SfengbojiangVPATH+= $S/netinet/tcp_stacks
19177ab9738Sfengbojiangendif
192a9643ea8SlogwangVPATH+= $S/netipsec
193127dd473Swhl739ifdef FF_IPFW
194127dd473Swhl739VPATH+= $S/netpfil/ipfw
195127dd473Swhl739endif
196a9643ea8SlogwangVPATH+= $S/opencrypto
197a9643ea8SlogwangVPATH+= $S/vm
198a9643ea8SlogwangVPATH+= $S/libkern
199a9643ea8Slogwang
200a9643ea8Slogwang
201a9643ea8SlogwangFF_SRCS+=                     \
202a9643ea8Slogwang	ff_compat.c           \
203a9643ea8Slogwang	ff_glue.c             \
204a9643ea8Slogwang	ff_freebsd_init.c     \
205a9643ea8Slogwang	ff_init_main.c        \
206a9643ea8Slogwang	ff_kern_condvar.c     \
207a9643ea8Slogwang	ff_kern_environment.c \
208a9643ea8Slogwang	ff_kern_intr.c        \
209a9643ea8Slogwang	ff_kern_subr.c        \
210a9643ea8Slogwang	ff_kern_synch.c       \
211a9643ea8Slogwang	ff_kern_timeout.c     \
212617ef36bSfengbojiang	ff_subr_epoch.c       \
213a9643ea8Slogwang	ff_lock.c             \
214a9643ea8Slogwang	ff_syscall_wrapper.c  \
215a9643ea8Slogwang	ff_subr_prf.c         \
216a9643ea8Slogwang	ff_vfs_ops.c          \
217a9643ea8Slogwang	ff_veth.c             \
218144c6bcdSlogwang	ff_route.c
219a9643ea8Slogwang
2203b2bd0f6Slogwangifdef FF_NETGRAPH
2213b2bd0f6SlogwangFF_SRCS+=                   \
2223b2bd0f6Slogwang        ff_ng_base.c        \
2233b2bd0f6Slogwang        ff_ngctl.c
2243b2bd0f6Slogwangendif
2253b2bd0f6Slogwang
226a9643ea8SlogwangFF_HOST_SRCS+=              \
227a9643ea8Slogwang	ff_host_interface.c \
228a9643ea8Slogwang	ff_config.c         \
229a9643ea8Slogwang	ff_ini_parser.c     \
230a9643ea8Slogwang	ff_dpdk_if.c        \
231a9643ea8Slogwang	ff_dpdk_pcap.c      \
2321a78ce8eSRon	ff_epoll.c          \
233a9643ea8Slogwang	ff_init.c
234a9643ea8Slogwang
235dc42d452Swhl739ifdef FF_KNI
236dc42d452Swhl739FF_HOST_SRCS+=              \
237dc42d452Swhl739	ff_dpdk_kni.c
238dc42d452Swhl739endif
239dc42d452Swhl739
2405bf882b4S10077240ifdef FF_USE_PAGE_ARRAY
2415bf882b4S10077240FF_HOST_SRCS+=              \
2425bf882b4S10077240  ff_memory.c
2435bf882b4S10077240endif
2445bf882b4S10077240
245a9643ea8Slogwangifdef FF_IPSEC
246a9643ea8SlogwangCRYPTO_ASM_SRCS+=                       \
247a9643ea8Slogwang	aesencdec_${MACHINE_CPUARCH}.S  \
248a9643ea8Slogwang	aeskeys_${MACHINE_CPUARCH}.S
249a9643ea8Slogwang
250a9643ea8SlogwangCRYPTO_SRCS+=               \
251a9643ea8Slogwang	aesni.c	            \
252a9643ea8Slogwang	aesni_wrap.c        \
253a9643ea8Slogwang	bf_ecb.c            \
254a9643ea8Slogwang	bf_enc.c            \
255a9643ea8Slogwang	bf_skey.c           \
256a9643ea8Slogwang	camellia.c          \
257a9643ea8Slogwang	camellia-api.c      \
258a9643ea8Slogwang	des_ecb.c           \
259a9643ea8Slogwang	des_enc.c           \
260a9643ea8Slogwang	des_setkey.c        \
261a9643ea8Slogwang	rijndael-alg-fst.c  \
262a9643ea8Slogwang	rijndael-api.c      \
263a9643ea8Slogwang	sha1.c              \
264a9643ea8Slogwang	sha256c.c           \
265a9643ea8Slogwang	sha512c.c           \
266a9643ea8Slogwang	siphash.c
267a9643ea8Slogwangelse
268a9643ea8SlogwangCRYPTO_SRCS+=               \
269a9643ea8Slogwang	sha1.c              \
270a9643ea8Slogwang	siphash.c
271a9643ea8Slogwangendif
272a9643ea8Slogwang
273a9643ea8SlogwangKERN_SRCS+=                 \
274a9643ea8Slogwang	kern_descrip.c      \
275a9643ea8Slogwang	kern_event.c        \
276a9643ea8Slogwang	kern_fail.c         \
277a9643ea8Slogwang	kern_khelp.c        \
278a9643ea8Slogwang	kern_hhook.c        \
279a9643ea8Slogwang	kern_linker.c       \
280a9643ea8Slogwang	kern_mbuf.c         \
281a9643ea8Slogwang	kern_module.c       \
282a9643ea8Slogwang	kern_mtxpool.c      \
283a9643ea8Slogwang	kern_ntptime.c      \
284a9643ea8Slogwang	kern_osd.c          \
285a9643ea8Slogwang	kern_sysctl.c       \
286a9643ea8Slogwang	kern_tc.c           \
287a9643ea8Slogwang	kern_uuid.c         \
288a9643ea8Slogwang	link_elf.c          \
289a9643ea8Slogwang	md5c.c              \
290a9643ea8Slogwang	subr_capability.c   \
291a9643ea8Slogwang	subr_counter.c      \
292a9643ea8Slogwang	subr_eventhandler.c \
293a9643ea8Slogwang	subr_kobj.c         \
294a9643ea8Slogwang	subr_lock.c         \
295a9643ea8Slogwang	subr_module.c       \
296a9643ea8Slogwang	subr_param.c        \
297a9643ea8Slogwang	subr_pcpu.c         \
298a9643ea8Slogwang	subr_sbuf.c         \
299a9643ea8Slogwang	subr_taskqueue.c    \
300a9643ea8Slogwang	subr_unit.c         \
30122ce4affSfengbojiang	subr_smr.c          \
302a9643ea8Slogwang	sys_capability.c    \
303a9643ea8Slogwang	sys_generic.c       \
304a9643ea8Slogwang	sys_socket.c        \
305a9643ea8Slogwang	uipc_accf.c         \
306a9643ea8Slogwang	uipc_mbuf.c         \
307a9643ea8Slogwang	uipc_mbuf2.c        \
308a9643ea8Slogwang	uipc_domain.c       \
309a9643ea8Slogwang	uipc_sockbuf.c      \
310a9643ea8Slogwang	uipc_socket.c       \
311a9643ea8Slogwang	uipc_syscalls.c
312a9643ea8Slogwang
313a9643ea8Slogwang
314a9643ea8SlogwangKERN_MHEADERS+=		\
315a9643ea8Slogwang	bus_if.m	\
316a9643ea8Slogwang	device_if.m	\
317a9643ea8Slogwang	linker_if.m
318a9643ea8Slogwang
319a9643ea8Slogwang
320a9643ea8SlogwangKERN_MSRCS+=		\
321a9643ea8Slogwang	linker_if.m
322a9643ea8Slogwang
3239bd490e8Sdongbo4ifeq (${MACHINE_CPUARCH},arm64)
3249bd490e8Sdongbo4LIBKERN_SRCS+=		 \
3259bd490e8Sdongbo4	bcd.c		 \
3269bd490e8Sdongbo4	inet_ntoa.c	 \
3279bd490e8Sdongbo4	jenkins_hash.c   \
3289bd490e8Sdongbo4	strlcpy.c	 \
3299bd490e8Sdongbo4	strnlen.c        \
3309bd490e8Sdongbo4	fls.c		 \
3319bd490e8Sdongbo4	flsl.c
3329bd490e8Sdongbo4else
333a9643ea8SlogwangLIBKERN_SRCS+=		 \
334a9643ea8Slogwang	bcd.c		 \
33522ce4affSfengbojiang	gsb_crc32.c	 \
336a9643ea8Slogwang	inet_ntoa.c	 \
337a9643ea8Slogwang	jenkins_hash.c   \
338a9643ea8Slogwang	strlcpy.c	 \
33922ce4affSfengbojiang	strnlen.c
3409bd490e8Sdongbo4endif
341a9643ea8Slogwang
342a9643ea8Slogwang
343a9643ea8SlogwangMACHINE_SRCS+=		 \
344a9643ea8Slogwang	in_cksum.c
345a9643ea8Slogwang
346a9643ea8Slogwang
347a9643ea8SlogwangNET_SRCS+=		 \
348a9643ea8Slogwang	bpf.c		 \
349df6ad731Slogwang	bridgestp.c      \
350a9643ea8Slogwang	if.c		 \
351df6ad731Slogwang	if_bridge.c      \
352a9643ea8Slogwang	if_clone.c	 \
353a9643ea8Slogwang	if_dead.c	 \
354a9643ea8Slogwang	if_ethersubr.c	 \
355a9643ea8Slogwang	if_loop.c	 \
356a9643ea8Slogwang	if_llatbl.c	 \
357a1fd9364Slogwang	if_media.c       \
358a1fd9364Slogwang	if_spppfr.c      \
359a1fd9364Slogwang	if_spppsubr.c    \
360a1fd9364Slogwang	if_vlan.c        \
361a1fd9364Slogwang	if_vxlan.c       \
362a9643ea8Slogwang	in_fib.c	 \
363df6ad731Slogwang	in_gif.c         \
364a9643ea8Slogwang	ip_reass.c	 \
365a9643ea8Slogwang	netisr.c	 \
366a9643ea8Slogwang	pfil.c		 \
367a9643ea8Slogwang	radix.c		 \
368a9643ea8Slogwang	raw_cb.c	 \
369a9643ea8Slogwang	raw_usrreq.c	 \
370a9643ea8Slogwang	route.c		 \
37122ce4affSfengbojiang	route_ctl.c	 \
37222ce4affSfengbojiang	route_tables.c	 \
37322ce4affSfengbojiang	route_helpers.c	 \
37422ce4affSfengbojiang	route_ifaddrs.c	 \
37522ce4affSfengbojiang	route_temporal.c \
37622ce4affSfengbojiang	nhop_utils.c	 \
37722ce4affSfengbojiang	nhop.c		 \
37822ce4affSfengbojiang	nhop_ctl.c	 \
379a1fd9364Slogwang	rtsock.c         \
380a1fd9364Slogwang	slcompress.c
381a9643ea8Slogwang
382a416aa08Slogwangifdef FF_NETGRAPH
383a1fd9364SlogwangNETGRAPH_SRCS +=         \
384a1fd9364Slogwang	ng_async.c       \
385a1fd9364Slogwang	ng_atmllc.c      \
386a1fd9364Slogwang	ng_bridge.c      \
387a1fd9364Slogwang	ng_car.c         \
388a1fd9364Slogwang	ng_cisco.c       \
389a1fd9364Slogwang	ng_deflate.c     \
390a1fd9364Slogwang	ng_echo.c        \
391a1fd9364Slogwang	ng_eiface.c      \
392a1fd9364Slogwang	ng_etf.c         \
393a1fd9364Slogwang	ng_ether.c       \
394a1fd9364Slogwang	ng_ether_echo.c  \
395a1fd9364Slogwang	ng_frame_relay.c \
396a1fd9364Slogwang	ng_gif.c         \
397a1fd9364Slogwang	ng_gif_demux.c   \
398a1fd9364Slogwang	ng_hole.c        \
399a1fd9364Slogwang	ng_hub.c         \
400a1fd9364Slogwang	ng_iface.c       \
401a1fd9364Slogwang	ng_ip_input.c    \
402a1fd9364Slogwang	ng_ipfw.c        \
403a1fd9364Slogwang	ng_ksocket.c     \
404a1fd9364Slogwang	ng_l2tp.c        \
405a1fd9364Slogwang	ng_lmi.c         \
406a1fd9364Slogwang	ng_nat.c         \
407a1fd9364Slogwang	ng_one2many.c    \
408a1fd9364Slogwang	ng_parse.c       \
409a1fd9364Slogwang	ng_patch.c       \
410a1fd9364Slogwang	ng_pipe.c        \
411a1fd9364Slogwang	ng_ppp.c         \
412a1fd9364Slogwang	ng_pppoe.c       \
413a1fd9364Slogwang	ng_pptpgre.c     \
414a1fd9364Slogwang	ng_pred1.c       \
415a1fd9364Slogwang	ng_rfc1490.c     \
416a1fd9364Slogwang	ng_sample.c      \
417a1fd9364Slogwang	ng_socket.c      \
418a1fd9364Slogwang	ng_source.c      \
419a1fd9364Slogwang	ng_split.c       \
420a1fd9364Slogwang	ng_sppp.c        \
421a1fd9364Slogwang	ng_tag.c         \
422a1fd9364Slogwang	ng_tcpmss.c      \
423a1fd9364Slogwang	ng_tee.c         \
424a1fd9364Slogwang	ng_UI.c          \
425a1fd9364Slogwang	ng_vjc.c         \
426a1fd9364Slogwang	ng_vlan.c
427a416aa08Slogwangendif
428a9643ea8Slogwang
429a9643ea8SlogwangNETINET_SRCS+=		\
430a9643ea8Slogwang	if_ether.c	\
431df6ad731Slogwang	if_gif.c        \
432a9643ea8Slogwang	igmp.c		\
433a9643ea8Slogwang	in.c		\
434a9643ea8Slogwang	in_mcast.c	\
435a9643ea8Slogwang	in_pcb.c	\
436a9643ea8Slogwang	in_proto.c	\
437a9643ea8Slogwang	in_rmx.c	\
438a1fd9364Slogwang	ip_carp.c	\
43962a0d716Slogwang	ip_divert.c     \
440df6ad731Slogwang	ip_ecn.c        \
441a9643ea8Slogwang	ip_encap.c	\
442a9643ea8Slogwang	ip_fastfwd.c	\
443a9643ea8Slogwang	ip_icmp.c	\
444a9643ea8Slogwang	ip_id.c		\
445a9643ea8Slogwang	ip_input.c	\
4461eaf0ac3Slogwang	ip_mroute.c     \
447a9643ea8Slogwang	ip_options.c	\
448a9643ea8Slogwang	ip_output.c	\
449a9643ea8Slogwang	raw_ip.c	\
450a9643ea8Slogwang	tcp_debug.c	\
451a9643ea8Slogwang	tcp_hostcache.c	\
452a9643ea8Slogwang	tcp_input.c	\
453a9643ea8Slogwang	tcp_lro.c	\
454a9643ea8Slogwang	tcp_offload.c	\
455a9643ea8Slogwang	tcp_output.c	\
456a9643ea8Slogwang	tcp_reass.c	\
457a9643ea8Slogwang	tcp_sack.c	\
458a9643ea8Slogwang	tcp_subr.c	\
459a9643ea8Slogwang	tcp_syncache.c	\
460a9643ea8Slogwang	tcp_timer.c	\
461a9643ea8Slogwang	tcp_timewait.c	\
462a9643ea8Slogwang	tcp_usrreq.c	\
463a9643ea8Slogwang	udp_usrreq.c	\
464a9643ea8Slogwang	cc.c		\
465a9643ea8Slogwang	cc_newreno.c    \
466a9643ea8Slogwang	cc_htcp.c       \
467a1fd9364Slogwang	cc_cubic.c      \
468a1fd9364Slogwang	alias.c         \
469a1fd9364Slogwang	alias_db.c      \
470a1fd9364Slogwang	alias_mod.c     \
471a1fd9364Slogwang	alias_proxy.c   \
472a1fd9364Slogwang	alias_sctp.c    \
473a1fd9364Slogwang	alias_util.c
474a9643ea8Slogwang
475d7140ab7Sfengbojiang(姜凤波)ifdef FF_INET6
476d7140ab7Sfengbojiang(姜凤波)NETINET6_SRCS+=		\
477d7140ab7Sfengbojiang(姜凤波)	dest6.c		\
478d7140ab7Sfengbojiang(姜凤波)	frag6.c		\
479d7140ab7Sfengbojiang(姜凤波)	icmp6.c		\
480d7140ab7Sfengbojiang(姜凤波)	in6.c		\
481d7140ab7Sfengbojiang(姜凤波)	in6_ifattach.c	\
482d7140ab7Sfengbojiang(姜凤波)	in6_mcast.c	\
483d7140ab7Sfengbojiang(姜凤波)	in6_pcb.c	\
484d7140ab7Sfengbojiang(姜凤波)	in6_pcbgroup.c	\
485d7140ab7Sfengbojiang(姜凤波)	in6_proto.c	\
486d7140ab7Sfengbojiang(姜凤波)	in6_rmx.c	\
487d7140ab7Sfengbojiang(姜凤波)	in6_src.c	\
488d7140ab7Sfengbojiang(姜凤波)	ip6_forward.c	\
489d7140ab7Sfengbojiang(姜凤波)	ip6_id.c	\
490d7140ab7Sfengbojiang(姜凤波)	ip6_input.c	\
4917b0de5a0Sfengbojiang	ip6_fastfwd.c	\
492d7140ab7Sfengbojiang(姜凤波)	ip6_mroute.c	\
493d7140ab7Sfengbojiang(姜凤波)	ip6_output.c	\
494d7140ab7Sfengbojiang(姜凤波)	mld6.c		\
495d7140ab7Sfengbojiang(姜凤波)	nd6.c		\
496d7140ab7Sfengbojiang(姜凤波)	nd6_nbr.c	\
497d7140ab7Sfengbojiang(姜凤波)	nd6_rtr.c	\
498d7140ab7Sfengbojiang(姜凤波)	raw_ip6.c	\
499d7140ab7Sfengbojiang(姜凤波)	route6.c	\
500d7140ab7Sfengbojiang(姜凤波)	scope6.c	\
501d7140ab7Sfengbojiang(姜凤波)	send.c		\
502d7140ab7Sfengbojiang(姜凤波)	udp6_usrreq.c	\
503d7140ab7Sfengbojiang(姜凤波)	in6_cksum.c	\
504d7140ab7Sfengbojiang(姜凤波)	in6_fib.c	\
505d7140ab7Sfengbojiang(姜凤波)	in6_gif.c
506d7140ab7Sfengbojiang(姜凤波)	#ip6_gre.c
507d7140ab7Sfengbojiang(姜凤波)	#ip6_ipsec.c
508d7140ab7Sfengbojiang(姜凤波)	#sctp6_usrreq.c
509d7140ab7Sfengbojiang(姜凤波)	#in6_rss.c
51077ab9738Sfengbojiang
511544273b7Sfengbojiangifdef FF_TCPHPTS
512544273b7SfengbojiangEXTRA_TCP_STACKS_SRCS+=		\
513544273b7Sfengbojiang	tcp_hpts.c
514544273b7Sfengbojiangendif
515544273b7Sfengbojiang
51677ab9738Sfengbojiangifdef FF_EXTRA_TCP_STACKS
51777ab9738SfengbojiangEXTRA_TCP_STACKS_SRCS+=		\
51877ab9738Sfengbojiang	subr_filter.c		\
51977ab9738Sfengbojiang	tcp_ratelimit.c		\
52077ab9738Sfengbojiang	arc4random_uniform.c	\
52177ab9738Sfengbojiang	sack_filter.c		\
52277ab9738Sfengbojiang	rack_bbr_common.c	\
52377ab9738Sfengbojiang	rack.c			\
52477ab9738Sfengbojiang	bbr.c
52577ab9738Sfengbojiangendif
52677ab9738Sfengbojiang
527b57a4d09Sjohnjiangifndef FF_KNI
52810b909a1Sfengbojiang(姜凤波)FF_HOST_SRCS+=         \
52910b909a1Sfengbojiang(姜凤波)        ff_dpdk_kni.c
53010b909a1Sfengbojiang(姜凤波)endif
531d7140ab7Sfengbojiang(姜凤波)endif
532d7140ab7Sfengbojiang(姜凤波)
533127dd473Swhl739ifdef FF_IPFW
534127dd473Swhl739NETIPFW_SRCS+=             \
535127dd473Swhl739	ip_fw_dynamic.c \
536127dd473Swhl739	ip_fw_eaction.c \
537127dd473Swhl739	ip_fw_iface.c   \
538127dd473Swhl739	ip_fw_log.c     \
539127dd473Swhl739	ip_fw_nat.c     \
540127dd473Swhl739	ip_fw_pfil.c    \
541127dd473Swhl739	ip_fw_sockopt.c \
542127dd473Swhl739	ip_fw_table.c   \
543127dd473Swhl739	ip_fw_table_algo.c  \
544127dd473Swhl739	ip_fw_table_value.c \
545127dd473Swhl739	ip_fw2.c
546127dd473Swhl739endif
547127dd473Swhl739
548a9643ea8Slogwangifdef FF_IPSEC
549a9643ea8SlogwangNETINET_SRCS+=		\
550a9643ea8Slogwang	ip_ipsec.c
551d7140ab7Sfengbojiang(姜凤波)ifdef FF_INET6
552d7140ab7Sfengbojiang(姜凤波)NETINET6_SRCS+=		\
553d7140ab7Sfengbojiang(姜凤波)	ip6_ipsec.c
554d7140ab7Sfengbojiang(姜凤波)endif
555a9643ea8Slogwangendif
556a9643ea8Slogwang
557a9643ea8Slogwang
558a9643ea8Slogwangifdef FF_IPSEC
559a9643ea8SlogwangNETIPSEC_SRCS+=		\
560a9643ea8Slogwang	ipsec.c		\
561a9643ea8Slogwang	ipsec_input.c	\
562a9643ea8Slogwang	ipsec_mbuf.c	\
563a9643ea8Slogwang	ipsec_output.c	\
564a9643ea8Slogwang	key.c		\
565a9643ea8Slogwang	key_debug.c	\
566a9643ea8Slogwang	keysock.c	\
567a9643ea8Slogwang	xform_ah.c	\
568a9643ea8Slogwang	xform_esp.c	\
569a9643ea8Slogwang	xform_ipcomp.c
570a9643ea8Slogwangendif
571a9643ea8Slogwang
572a9643ea8Slogwang# only if TCP_SIGNTAURE is defined
573a9643ea8Slogwang#xform_tcp.c
574a9643ea8Slogwang
575a9643ea8Slogwangifdef FF_IPSEC
576a9643ea8SlogwangOPENCRYPTO_SRCS+=	\
577a9643ea8Slogwang	cast.c		\
578a9643ea8Slogwang	criov.c		\
579a9643ea8Slogwang	crypto.c	\
580a9643ea8Slogwang	cryptosoft.c	\
581a9643ea8Slogwang	deflate.c	\
582a9643ea8Slogwang	rmd160.c	\
583a9643ea8Slogwang	skipjack.c	\
584a9643ea8Slogwang	xform.c
585a9643ea8Slogwangendif
586a9643ea8Slogwang
587a9643ea8Slogwang#	cryptodev.c
588a9643ea8Slogwang
589a9643ea8SlogwangOPENCRYPTO_MHEADERS= cryptodev_if.m
590a9643ea8SlogwangOPENCRYPTO_MSRCS= cryptodev_if.m
591a9643ea8Slogwang
592a9643ea8SlogwangVM_SRCS+=		\
593a9643ea8Slogwang	uma_core.c
594a9643ea8Slogwang
595a9643ea8Slogwang
596a9643ea8SlogwangMHEADERS= $(patsubst %.m,%.h,${KERN_MHEADERS})
597a9643ea8SlogwangMHEADERS+= vnode_if.h vnode_if_newproto.h vnode_if_typedef.h
598a9643ea8SlogwangMHEADERS+= $(patsubst %.m,%.h,${OPENCRYPTO_MHEADERS})
599a9643ea8Slogwang
600a9643ea8SlogwangMSRCS= $(patsubst %.m,%.c,${KERN_MSRCS})
601a9643ea8SlogwangMSRCS+= $(patsubst %.m,%.c,${OPENCRYPTO_MSRCS})
602a9643ea8Slogwang
603a9643ea8SlogwangASM_SRCS = ${CRYPTO_ASM_SRCS}
604a9643ea8Slogwang
605a9643ea8SlogwangSRCS=  ${FF_SRCS} ${CRYPTO_SRCS} ${KERN_SRCS} ${LIBKERN_SRCS} ${MACHINE_SRCS}
60677ab9738SfengbojiangSRCS+= ${MSRCS} ${NET_SRCS} ${NETGRAPH_SRCS} ${NETINET_SRCS} ${NETINET6_SRCS} ${EXTRA_TCP_STACKS_SRCS}
607127dd473Swhl739SRCS+= ${NETIPSEC_SRCS} ${NETIPFW_SRCS} ${OPENCRYPTO_SRCS} ${VM_SRCS}
608a9643ea8Slogwang
609a9643ea8Slogwang# If witness is enabled.
610a9643ea8Slogwang# SRCS+= ${KERN_WITNESS_SRCS}
611a9643ea8Slogwang
612c36e692aSlogwang# Extra FreeBSD kernel module srcs.
613c36e692aSlogwangSRCS+= ${KMOD_SRCS}
614c36e692aSlogwang
615a9643ea8SlogwangHOST_SRCS = ${FF_HOST_SRCS}
616a9643ea8Slogwang
617a9643ea8SlogwangASM_OBJS+= $(patsubst %.S,%.o,${ASM_SRCS})
618a9643ea8SlogwangOBJS+= $(patsubst %.c,%.o,${SRCS})
619a9643ea8SlogwangHOST_OBJS+= $(patsubst %.c,%.o,${HOST_SRCS})
620a9643ea8Slogwang
621a9643ea8Slogwangall: libfstack.a
622a9643ea8Slogwang
623a9643ea8Slogwang#
624a9643ea8Slogwang# The library is built by first incrementally linking all the object
625a9643ea8Slogwang# to resolve internal references.  Then, all symbols are made local.
626a9643ea8Slogwang# Then, only the symbols that are part of the  API are made
627a9643ea8Slogwang# externally available.
628a9643ea8Slogwang#
629a9643ea8Slogwanglibfstack.a: machine_includes ff_api.symlist ${MHEADERS} ${MSRCS} ${HOST_OBJS} ${ASM_OBJS} ${OBJS}
6308cf1d457Slogwang	${LD} -d -r -o $*.ro ${ASM_OBJS} ${OBJS}
631a9643ea8Slogwang	nm $*.ro  | grep -v ' U ' | cut -d ' ' -f 3 > $*_localize_list.tmp
632a9643ea8Slogwang	objcopy --localize-symbols=$*_localize_list.tmp $*.ro
633a9643ea8Slogwang	rm $*_localize_list.tmp
634a9643ea8Slogwang	objcopy --globalize-symbols=ff_api.symlist $*.ro
635a9643ea8Slogwang	rm -f $@
636a9643ea8Slogwang	ar -cqs $@ $*.ro ${HOST_OBJS}
637a9643ea8Slogwang	rm -f $*.ro
638a9643ea8Slogwang
639a9643ea8Slogwang${HOST_OBJS}: %.o: %.c
640a9643ea8Slogwang	${HOST_C}
641a9643ea8Slogwang
642a9643ea8Slogwang${ASM_OBJS}: %.o: %.S ${IMACROS_FILE}
643a9643ea8Slogwang	${NORMAL_S}
644a9643ea8Slogwang
645a9643ea8Slogwang${OBJS}: %.o: %.c ${IMACROS_FILE}
646a9643ea8Slogwang	${NORMAL_C}
647a9643ea8Slogwang
648a9643ea8Slogwang
649a9643ea8Slogwang.SUFFIXES: .m
650a9643ea8Slogwang
651a9643ea8Slogwang.m.c:
652a9643ea8Slogwang	${AWK} -f $S/tools/makeobjops.awk $< -c
653a9643ea8Slogwang
654a9643ea8Slogwang.m.h:
655a9643ea8Slogwang	${AWK} -f $S/tools/makeobjops.awk $< -h
656a9643ea8Slogwang
657a9643ea8Slogwang.PHONY: clean
658a9643ea8Slogwangclean:
659a9643ea8Slogwang	rm -f libfstack.a
660a9643ea8Slogwang	rm -f ${MHEADERS} ${MSRCS} ${HOST_OBJS} ${ASM_OBJS} ${OBJS} ${PROGRAM} ${IMACROS_FILE}
661a9643ea8Slogwang	rm -rf ${MACHINE_INCLUDES_ROOT}
662a9643ea8Slogwang
663a9643ea8Slogwang
664a9643ea8Slogwang.PHONY: machine_includes
665a9643ea8Slogwangmachine_includes:
666a9643ea8Slogwang	@rm -rf ${MACHINE_INCLUDES_ROOT}
667a9643ea8Slogwang	@mkdir -p ${MACHINE_INCLUDES_ROOT}/machine
668a9643ea8Slogwang	@cp -r $S/${MACHINE_CPUARCH}/include/* ${MACHINE_INCLUDES_ROOT}/machine
669a9643ea8Slogwang	@if [ "${X86_INCLUDES}" != "0" ]; then 				\
670a9643ea8Slogwang		mkdir -p ${MACHINE_INCLUDES_ROOT}/x86;			\
671a9643ea8Slogwang		cp -r $S/x86/include/* ${MACHINE_INCLUDES_ROOT}/x86;	\
672a9643ea8Slogwang	fi
673a9643ea8Slogwang
674a9643ea8Slogwang#
675a9643ea8Slogwang# Distilled from FreeBSD src/sys/conf/kern.post.mk
676a9643ea8Slogwang#
677a9643ea8Slogwangvnode_if.h vnode_if_newproto.h vnode_if_typedef.h: $S/tools/vnode_if.awk \
678a9643ea8Slogwang    $S/kern/vnode_if.src
679a9643ea8Slogwangvnode_if.h: vnode_if_newproto.h vnode_if_typedef.h
680a9643ea8Slogwang	${AWK} -f $S/tools/vnode_if.awk $S/kern/vnode_if.src -h
681a9643ea8Slogwangvnode_if_newproto.h:
682a9643ea8Slogwang	${AWK} -f $S/tools/vnode_if.awk $S/kern/vnode_if.src -p
683a9643ea8Slogwangvnode_if_typedef.h:
684a9643ea8Slogwang	${AWK} -f $S/tools/vnode_if.awk $S/kern/vnode_if.src -q
685a9643ea8Slogwang
686a9643ea8Slogwanginclude ${TOPDIR}/mk/kern.mk
687a9643ea8Slogwang
6885af66259Sjfb8856606install:
6895af66259Sjfb8856606	rm -rf ${PREFIX_LIB}/libfstack.a.${F-STACK_VERSION}
6905af66259Sjfb8856606	rm -rf ${PREFIX_LIB}/libfstack.a
6915af66259Sjfb8856606	rm -rf ${PREFIX_INCLUDE}/ff_config.h
6925af66259Sjfb8856606	rm -rf ${PREFIX_INCLUDE}/ff_api.h
6935af66259Sjfb8856606	rm -rf ${PREFIX_INCLUDE}/ff_event.h
6945af66259Sjfb8856606	rm -rf ${PREFIX_INCLUDE}/ff_errno.h
6955af66259Sjfb8856606	rm -rf ${PREFIX_INCLUDE}/ff_epoll.h
6965af66259Sjfb8856606	rm -rf ${PREFIX_BIN}/ff_start
6975af66259Sjfb8856606
6985af66259Sjfb8856606	cp -f libfstack.a ${PREFIX_LIB}/libfstack.a.${F-STACK_VERSION}
6995af66259Sjfb8856606	ln -sf ${PREFIX_LIB}/libfstack.a.${F-STACK_VERSION} ${PREFIX_LIB}/libfstack.a
7005af66259Sjfb8856606	cp -f ff_config.h ${PREFIX_INCLUDE}/ff_config.h
7015af66259Sjfb8856606	cp -f ff_api.h ${PREFIX_INCLUDE}/ff_api.h
7025af66259Sjfb8856606	cp -f ff_event.h ${PREFIX_INCLUDE}/ff_event.h
7035af66259Sjfb8856606	cp -f ff_errno.h ${PREFIX_INCLUDE}/ff_errno.h
7045af66259Sjfb8856606	cp -f ff_epoll.h ${PREFIX_INCLUDE}/ff_epoll.h
7055af66259Sjfb8856606	cp -f ${TOPDIR}/start.sh ${PREFIX_BIN}/ff_start
7065af66259Sjfb8856606	test -f '${F-STACK_CONF}' || cp -f ${TOPDIR}/config.ini ${F-STACK_CONF}
7075af66259Sjfb8856606
7085af66259Sjfb8856606uninstall:
7095af66259Sjfb8856606	rm -rf ${PREFIX_LIB}/libfstack.a.${F-STACK_VERSION}
7105af66259Sjfb8856606	rm -rf ${PREFIX_LIB}/libfstack.a
7115af66259Sjfb8856606	rm -rf ${PREFIX_INCLUDE}/ff_config.h
7125af66259Sjfb8856606	rm -rf ${PREFIX_INCLUDE}/ff_api.h
7135af66259Sjfb8856606	rm -rf ${PREFIX_INCLUDE}/ff_event.h
7145af66259Sjfb8856606	rm -rf ${PREFIX_INCLUDE}/ff_errno.h
7155af66259Sjfb8856606	rm -rf ${PREFIX_INCLUDE}/ff_epoll.h
7165af66259Sjfb8856606	rm -rf ${PREFIX_BIN}/ff_start
7175af66259Sjfb8856606	rm -rf ${F-STACK_CONF}
7185af66259Sjfb8856606
719