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