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 17*5af66259Sjfb8856606PREFIX=/usr/local 18*5af66259Sjfb8856606PREFIX_LIB=${PREFIX}/lib 19*5af66259Sjfb8856606PREFIX_INCLUDE=/usr/local/include 20*5af66259Sjfb8856606PREFIX_BIN=/usr/local/bin 21*5af66259Sjfb8856606F-STACK_CONF=/etc/f-stack.conf 22*5af66259Sjfb8856606F-STACK_VERSION=1.20 23a9643ea8Slogwang 24a9643ea8SlogwangHOST_OS:=$(shell uname -s) 25dc42d452Swhl739 26dc42d452Swhl739#DEBUG=-O0 -gdwarf-2 -g3 -Wno-format-truncation 27dc42d452Swhl739 285523938cSrootFF_KNI=1 29127dd473Swhl739#FF_NETGRAPH=1 30127dd473Swhl739#FF_IPFW=1 315bf882b4S10077240#FF_USE_PAGE_ARRAY=1 325bf882b4S10077240 33a9643ea8Slogwang 34cac36022SDonBearHinclude ${TOPDIR}/mk/kern.pre.mk 35cac36022SDonBearH 36a9643ea8Slogwangifeq ($(FF_DPDK),) 37cac36022SDonBearHifeq (${MACHINE_CPUARCH},aarch64) 389bd490e8Sdongbo4 FF_DPDK=${TOPDIR}/dpdk/build 399bd490e8Sdongbo4else 40bf05b3b7SDonBearH FF_DPDK=${TOPDIR}/dpdk/x86_64-native-linuxapp-gcc 419bd490e8Sdongbo4endif 42a9643ea8Slogwangendif 43a9643ea8Slogwang 447230b27cSmorishima311ifdef RTE_SDK 45cac36022SDonBearHifeq (${MACHINE_CPUARCH},aarch64) 469bd490e8Sdongbo4 FF_DPDK=${RTE_SDK}/build 479bd490e8Sdongbo4else 48bf05b3b7SDonBearH FF_DPDK=${RTE_SDK}/x86_64-native-linuxapp-gcc 499bd490e8Sdongbo4endif 507230b27cSmorishima311endif 517230b27cSmorishima311 52e8591dc5Sfengbojiang(姜凤波)DPDK_CFLAGS= -Wall -Wno-deprecated-declarations -Werror -include ${FF_DPDK}/include/rte_config.h 53a9643ea8SlogwangDPDK_CFLAGS+= -march=native -DRTE_MACHINE_CPUFLAG_SSE -DRTE_MACHINE_CPUFLAG_SSE2 -DRTE_MACHINE_CPUFLAG_SSE3 54a9643ea8SlogwangDPDK_CFLAGS+= -DRTE_MACHINE_CPUFLAG_SSSE3 -DRTE_MACHINE_CPUFLAG_SSE4_1 -DRTE_MACHINE_CPUFLAG_SSE4_2 55a9643ea8SlogwangDPDK_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 56a9643ea8SlogwangDPDK_CFLAGS+= -I${FF_DPDK}/include 57a9643ea8Slogwang 58a9643ea8SlogwangKERNPREINCLUDES:= ${INCLUDES} 59a9643ea8SlogwangINCLUDES= -I${OVERRIDE_INCLUDES_ROOT} ${KERNPREINCLUDES} 60a9643ea8SlogwangINCLUDES+= -I./machine_include 61a9643ea8SlogwangINCLUDES+= -I./opt 62a9643ea8Slogwang 63a9643ea8Slogwang# Include search path for files that only include host OS headers 64a9643ea8SlogwangHOST_INCLUDES= -I. 65a9643ea8Slogwangifndef DEBUG 66dc42d452Swhl739HOST_CFLAGS = -O2 -frename-registers -funswitch-loops -fweb -Wno-format-truncation 67a9643ea8Slogwangelse 68a9643ea8SlogwangHOST_CFLAGS = ${DEBUG} 69a9643ea8Slogwangendif 703b2bd0f6Slogwang 71dc42d452Swhl739ifdef FF_KNI 72dc42d452Swhl739HOST_CFLAGS+= -DFF_KNI 73dc42d452Swhl739endif 74dc42d452Swhl739 75a9643ea8SlogwangHOST_CFLAGS+= ${DPDK_CFLAGS} 7634b2fad4SYuYangHOST_CFLAGS+= ${CONF_CFLAGS} 773b2bd0f6Slogwang 783b2bd0f6Slogwangifdef FF_NETGRAPH 793b2bd0f6SlogwangHOST_CFLAGS+= -DFF_NETGRAPH 803b2bd0f6Slogwangendif 813b2bd0f6Slogwang 82127dd473Swhl739ifdef FF_IPFW 83127dd473Swhl739HOST_CFLAGS+= -DFF_IPFW 84127dd473Swhl739endif 85127dd473Swhl739 865bf882b4S10077240ifdef FF_USE_PAGE_ARRAY 875bf882b4S10077240HOST_CFLAGS+= -DFF_USE_PAGE_ARRAY 885bf882b4S10077240endif 895bf882b4S10077240 90a9643ea8SlogwangHOST_C= ${CC} -c $(HOST_CFLAGS) ${HOST_INCLUDES} ${WERROR} ${PROF} $< 91a9643ea8Slogwang 92a9643ea8Slogwang 93a9643ea8Slogwangifneq ($(filter amd64 i386,${MACHINE_CPUARCH}),) 94a9643ea8SlogwangX86_INCLUDES=1 95a9643ea8Slogwangendif 96a9643ea8Slogwang 97a9643ea8Slogwang 98a9643ea8Slogwang# 99a9643ea8Slogwang# Distilled from FreeBSD src/sys/conf/Makefile.amd64 100a9643ea8Slogwang# 101a9643ea8Slogwangifeq (${MACHINE_CPUARCH},amd64) 102a9643ea8Slogwangendif 103a9643ea8Slogwang 104a9643ea8Slogwang# 105a9643ea8Slogwang# Distilled from FreeBSD src/sys/conf/Makefile.arm 106a9643ea8Slogwang# 107a9643ea8Slogwangifeq (${MACHINE_CPUARCH},arm) 108a9643ea8Slogwang 109a9643ea8Slogwangifneq (${COMPILER_TYPE},clang) 110a9643ea8SlogwangCFLAGS += -mno-thumb-interwork 111a9643ea8Slogwangendif 112a9643ea8Slogwang 113a9643ea8Slogwangendif 114a9643ea8Slogwang 1159bd490e8Sdongbo4# 1169bd490e8Sdongbo4# fix the MACHINE_CPUARCH to match the FreeBSD directory name 1179bd490e8Sdongbo4# 1189bd490e8Sdongbo4ifeq (${MACHINE_CPUARCH},aarch64) 1199bd490e8Sdongbo4MACHINE_CPUARCH=arm64 1209bd490e8Sdongbo4endif 1219bd490e8Sdongbo4 122a9643ea8Slogwang 123a9643ea8Slogwang# 124a9643ea8Slogwang# Distilled from FreeBSD src/sys/conf/Makefile.i386 125a9643ea8Slogwang# 126a9643ea8Slogwangifeq (${MACHINE_CPUARCH},i386) 127a9643ea8SlogwangMACHINE=i386 128a9643ea8Slogwangendif 129a9643ea8Slogwang 130a9643ea8Slogwang 131a9643ea8Slogwang# 132a9643ea8Slogwang# Distilled from FreeBSD src/sys/conf/Makefile.mips 133a9643ea8Slogwang# 134a9643ea8Slogwangifeq (${MACHINE_CPUARCH},mips) 135a9643ea8Slogwang 136a9643ea8Slogwang# We default to the MIPS32 ISA, if none specified in the 137a9643ea8Slogwang# kernel configuration file. 138a9643ea8SlogwangARCH_FLAGS?=-march=mips32 139a9643ea8Slogwang 140a9643ea8SlogwangHACK_EXTRA_FLAGS=-shared 141a9643ea8Slogwang 142a9643ea8SlogwangCFLAGS+=${EXTRA_FLAGS} $(ARCH_FLAGS) 143a9643ea8SlogwangHACK_EXTRA_FLAGS+=${EXTRA_FLAGS} $(ARCH_FLAGS) 144a9643ea8Slogwangendif 145a9643ea8Slogwang 146a9643ea8SlogwangCFLAGS+= -DFSTACK 147a9643ea8Slogwang 14808dba010SAndy# add for LVS tcp option toa, disabled by default 14908dba010SAndy# CFLAGS+= -DLVS_TCPOPT_TOA 15008dba010SAndy 151a9643ea8SlogwangVPATH+= $S/${MACHINE_CPUARCH}/${MACHINE_CPUARCH} 152a9643ea8SlogwangVPATH+= $S/kern 153a9643ea8SlogwangVPATH+= $S/crypto 154a9643ea8SlogwangVPATH+= $S/crypto/aesni 155a9643ea8SlogwangVPATH+= $S/crypto/blowfish 156a9643ea8SlogwangVPATH+= $S/crypto/camellia 157a9643ea8SlogwangVPATH+= $S/crypto/des 158a9643ea8SlogwangVPATH+= $S/crypto/rijndael 159a9643ea8SlogwangVPATH+= $S/crypto/sha2 160a9643ea8SlogwangVPATH+= $S/crypto/siphash 161a9643ea8SlogwangVPATH+= $S/net 162a416aa08Slogwangifdef FF_NETGRAPH 163a1fd9364SlogwangVPATH+= $S/netgraph 164a416aa08Slogwangendif 165a9643ea8SlogwangVPATH+= $S/netinet 166a1fd9364SlogwangVPATH+= $S/netinet/libalias 167a9643ea8SlogwangVPATH+= $S/netinet/cc 168a9643ea8SlogwangVPATH+= $S/netipsec 169127dd473Swhl739ifdef FF_IPFW 170127dd473Swhl739VPATH+= $S/netpfil/ipfw 171127dd473Swhl739endif 172a9643ea8SlogwangVPATH+= $S/opencrypto 173a9643ea8SlogwangVPATH+= $S/vm 174a9643ea8SlogwangVPATH+= $S/libkern 175a9643ea8Slogwang 176a9643ea8Slogwang 177a9643ea8SlogwangFF_SRCS+= \ 178a9643ea8Slogwang ff_compat.c \ 179a9643ea8Slogwang ff_glue.c \ 180a9643ea8Slogwang ff_freebsd_init.c \ 181a9643ea8Slogwang ff_init_main.c \ 182a9643ea8Slogwang ff_kern_condvar.c \ 183a9643ea8Slogwang ff_kern_environment.c \ 184a9643ea8Slogwang ff_kern_intr.c \ 185a9643ea8Slogwang ff_kern_subr.c \ 186a9643ea8Slogwang ff_kern_synch.c \ 187a9643ea8Slogwang ff_kern_timeout.c \ 188a9643ea8Slogwang ff_lock.c \ 189a9643ea8Slogwang ff_syscall_wrapper.c \ 190a9643ea8Slogwang ff_subr_prf.c \ 191a9643ea8Slogwang ff_vfs_ops.c \ 192a9643ea8Slogwang ff_veth.c \ 193144c6bcdSlogwang ff_route.c 194a9643ea8Slogwang 1953b2bd0f6Slogwangifdef FF_NETGRAPH 1963b2bd0f6SlogwangFF_SRCS+= \ 1973b2bd0f6Slogwang ff_ng_base.c \ 1983b2bd0f6Slogwang ff_ngctl.c 1993b2bd0f6Slogwangendif 2003b2bd0f6Slogwang 201a9643ea8SlogwangFF_HOST_SRCS+= \ 202a9643ea8Slogwang ff_host_interface.c \ 203a9643ea8Slogwang ff_config.c \ 204a9643ea8Slogwang ff_ini_parser.c \ 205a9643ea8Slogwang ff_dpdk_if.c \ 206a9643ea8Slogwang ff_dpdk_pcap.c \ 2071a78ce8eSRon ff_epoll.c \ 208a9643ea8Slogwang ff_init.c 209a9643ea8Slogwang 210dc42d452Swhl739ifdef FF_KNI 211dc42d452Swhl739FF_HOST_SRCS+= \ 212dc42d452Swhl739 ff_dpdk_kni.c 213dc42d452Swhl739endif 214dc42d452Swhl739 2155bf882b4S10077240ifdef FF_USE_PAGE_ARRAY 2165bf882b4S10077240FF_HOST_SRCS+= \ 2175bf882b4S10077240 ff_memory.c 2185bf882b4S10077240endif 2195bf882b4S10077240 220a9643ea8Slogwangifdef FF_IPSEC 221a9643ea8SlogwangCRYPTO_ASM_SRCS+= \ 222a9643ea8Slogwang aesencdec_${MACHINE_CPUARCH}.S \ 223a9643ea8Slogwang aeskeys_${MACHINE_CPUARCH}.S 224a9643ea8Slogwang 225a9643ea8SlogwangCRYPTO_SRCS+= \ 226a9643ea8Slogwang aesni.c \ 227a9643ea8Slogwang aesni_wrap.c \ 228a9643ea8Slogwang bf_ecb.c \ 229a9643ea8Slogwang bf_enc.c \ 230a9643ea8Slogwang bf_skey.c \ 231a9643ea8Slogwang camellia.c \ 232a9643ea8Slogwang camellia-api.c \ 233a9643ea8Slogwang des_ecb.c \ 234a9643ea8Slogwang des_enc.c \ 235a9643ea8Slogwang des_setkey.c \ 236a9643ea8Slogwang rijndael-alg-fst.c \ 237a9643ea8Slogwang rijndael-api.c \ 238a9643ea8Slogwang sha1.c \ 239a9643ea8Slogwang sha256c.c \ 240a9643ea8Slogwang sha512c.c \ 241a9643ea8Slogwang siphash.c 242a9643ea8Slogwangelse 243a9643ea8SlogwangCRYPTO_SRCS+= \ 244a9643ea8Slogwang sha1.c \ 245a9643ea8Slogwang siphash.c 246a9643ea8Slogwangendif 247a9643ea8Slogwang 248a9643ea8SlogwangKERN_SRCS+= \ 249a9643ea8Slogwang kern_descrip.c \ 250a9643ea8Slogwang kern_event.c \ 251a9643ea8Slogwang kern_fail.c \ 252a9643ea8Slogwang kern_khelp.c \ 253a9643ea8Slogwang kern_hhook.c \ 254a9643ea8Slogwang kern_linker.c \ 255a9643ea8Slogwang kern_mbuf.c \ 256a9643ea8Slogwang kern_module.c \ 257a9643ea8Slogwang kern_mtxpool.c \ 258a9643ea8Slogwang kern_ntptime.c \ 259a9643ea8Slogwang kern_osd.c \ 260a9643ea8Slogwang kern_sysctl.c \ 261a9643ea8Slogwang kern_tc.c \ 262a9643ea8Slogwang kern_uuid.c \ 263a9643ea8Slogwang link_elf.c \ 264a9643ea8Slogwang md5c.c \ 265a9643ea8Slogwang subr_capability.c \ 266a9643ea8Slogwang subr_counter.c \ 267a9643ea8Slogwang subr_eventhandler.c \ 268a9643ea8Slogwang subr_kobj.c \ 269a9643ea8Slogwang subr_lock.c \ 270a9643ea8Slogwang subr_module.c \ 271a9643ea8Slogwang subr_param.c \ 272a9643ea8Slogwang subr_pcpu.c \ 273a9643ea8Slogwang subr_sbuf.c \ 274a9643ea8Slogwang subr_taskqueue.c \ 275a9643ea8Slogwang subr_unit.c \ 276a9643ea8Slogwang sys_capability.c \ 277a9643ea8Slogwang sys_generic.c \ 278a9643ea8Slogwang sys_socket.c \ 279a9643ea8Slogwang uipc_accf.c \ 280a9643ea8Slogwang uipc_mbuf.c \ 281a9643ea8Slogwang uipc_mbuf2.c \ 282a9643ea8Slogwang uipc_domain.c \ 283a9643ea8Slogwang uipc_sockbuf.c \ 284a9643ea8Slogwang uipc_socket.c \ 285a9643ea8Slogwang uipc_syscalls.c 286a9643ea8Slogwang 287a9643ea8Slogwang 288a9643ea8SlogwangKERN_MHEADERS+= \ 289a9643ea8Slogwang bus_if.m \ 290a9643ea8Slogwang device_if.m \ 291a9643ea8Slogwang linker_if.m 292a9643ea8Slogwang 293a9643ea8Slogwang 294a9643ea8SlogwangKERN_MSRCS+= \ 295a9643ea8Slogwang linker_if.m 296a9643ea8Slogwang 2979bd490e8Sdongbo4ifeq (${MACHINE_CPUARCH},arm64) 2989bd490e8Sdongbo4LIBKERN_SRCS+= \ 2999bd490e8Sdongbo4 bcd.c \ 3009bd490e8Sdongbo4 crc32.c \ 3019bd490e8Sdongbo4 inet_ntoa.c \ 3029bd490e8Sdongbo4 jenkins_hash.c \ 3039bd490e8Sdongbo4 strlcpy.c \ 3049bd490e8Sdongbo4 strnlen.c \ 3059bd490e8Sdongbo4 zlib.c \ 3069bd490e8Sdongbo4 fls.c \ 3079bd490e8Sdongbo4 flsl.c 3089bd490e8Sdongbo4else 309a9643ea8SlogwangLIBKERN_SRCS+= \ 310a9643ea8Slogwang bcd.c \ 311a1fd9364Slogwang crc32.c \ 312a9643ea8Slogwang inet_ntoa.c \ 313a9643ea8Slogwang jenkins_hash.c \ 314a9643ea8Slogwang strlcpy.c \ 315a1fd9364Slogwang strnlen.c \ 316a1fd9364Slogwang zlib.c 3179bd490e8Sdongbo4endif 318a9643ea8Slogwang 319a9643ea8Slogwang 320a9643ea8SlogwangMACHINE_SRCS+= \ 321a9643ea8Slogwang in_cksum.c 322a9643ea8Slogwang 323a9643ea8Slogwang 324a9643ea8SlogwangNET_SRCS+= \ 325a9643ea8Slogwang bpf.c \ 326df6ad731Slogwang bridgestp.c \ 327a9643ea8Slogwang if.c \ 328df6ad731Slogwang if_bridge.c \ 329a9643ea8Slogwang if_clone.c \ 330a9643ea8Slogwang if_dead.c \ 331a9643ea8Slogwang if_ethersubr.c \ 332a9643ea8Slogwang if_loop.c \ 333a9643ea8Slogwang if_llatbl.c \ 334a1fd9364Slogwang if_media.c \ 335a1fd9364Slogwang if_spppfr.c \ 336a1fd9364Slogwang if_spppsubr.c \ 337a1fd9364Slogwang if_vlan.c \ 338a1fd9364Slogwang if_vxlan.c \ 339a9643ea8Slogwang in_fib.c \ 340df6ad731Slogwang in_gif.c \ 341a9643ea8Slogwang ip_reass.c \ 342a9643ea8Slogwang netisr.c \ 343a9643ea8Slogwang pfil.c \ 344a9643ea8Slogwang radix.c \ 345a9643ea8Slogwang raw_cb.c \ 346a9643ea8Slogwang raw_usrreq.c \ 347a9643ea8Slogwang route.c \ 348a1fd9364Slogwang rtsock.c \ 349a1fd9364Slogwang slcompress.c 350a9643ea8Slogwang 351a416aa08Slogwangifdef FF_NETGRAPH 352a1fd9364SlogwangNETGRAPH_SRCS += \ 353a1fd9364Slogwang ng_async.c \ 354a1fd9364Slogwang ng_atmllc.c \ 355a1fd9364Slogwang ng_bridge.c \ 356a1fd9364Slogwang ng_car.c \ 357a1fd9364Slogwang ng_cisco.c \ 358a1fd9364Slogwang ng_deflate.c \ 359a1fd9364Slogwang ng_echo.c \ 360a1fd9364Slogwang ng_eiface.c \ 361a1fd9364Slogwang ng_etf.c \ 362a1fd9364Slogwang ng_ether.c \ 363a1fd9364Slogwang ng_ether_echo.c \ 364a1fd9364Slogwang ng_frame_relay.c \ 365a1fd9364Slogwang ng_gif.c \ 366a1fd9364Slogwang ng_gif_demux.c \ 367a1fd9364Slogwang ng_hole.c \ 368a1fd9364Slogwang ng_hub.c \ 369a1fd9364Slogwang ng_iface.c \ 370a1fd9364Slogwang ng_ip_input.c \ 371a1fd9364Slogwang ng_ipfw.c \ 372a1fd9364Slogwang ng_ksocket.c \ 373a1fd9364Slogwang ng_l2tp.c \ 374a1fd9364Slogwang ng_lmi.c \ 375a1fd9364Slogwang ng_nat.c \ 376a1fd9364Slogwang ng_one2many.c \ 377a1fd9364Slogwang ng_parse.c \ 378a1fd9364Slogwang ng_patch.c \ 379a1fd9364Slogwang ng_pipe.c \ 380a1fd9364Slogwang ng_ppp.c \ 381a1fd9364Slogwang ng_pppoe.c \ 382a1fd9364Slogwang ng_pptpgre.c \ 383a1fd9364Slogwang ng_pred1.c \ 384a1fd9364Slogwang ng_rfc1490.c \ 385a1fd9364Slogwang ng_sample.c \ 386a1fd9364Slogwang ng_socket.c \ 387a1fd9364Slogwang ng_source.c \ 388a1fd9364Slogwang ng_split.c \ 389a1fd9364Slogwang ng_sppp.c \ 390a1fd9364Slogwang ng_tag.c \ 391a1fd9364Slogwang ng_tcpmss.c \ 392a1fd9364Slogwang ng_tee.c \ 393a1fd9364Slogwang ng_UI.c \ 394a1fd9364Slogwang ng_vjc.c \ 395a1fd9364Slogwang ng_vlan.c 396a416aa08Slogwangendif 397a9643ea8Slogwang 398a9643ea8SlogwangNETINET_SRCS+= \ 399a9643ea8Slogwang if_ether.c \ 400df6ad731Slogwang if_gif.c \ 401a9643ea8Slogwang igmp.c \ 402a9643ea8Slogwang in.c \ 403a9643ea8Slogwang in_mcast.c \ 404a9643ea8Slogwang in_pcb.c \ 405a9643ea8Slogwang in_proto.c \ 406a9643ea8Slogwang in_rmx.c \ 407a1fd9364Slogwang ip_carp.c \ 40862a0d716Slogwang ip_divert.c \ 409df6ad731Slogwang ip_ecn.c \ 410a9643ea8Slogwang ip_encap.c \ 411a9643ea8Slogwang ip_fastfwd.c \ 412a9643ea8Slogwang ip_icmp.c \ 413a9643ea8Slogwang ip_id.c \ 414a9643ea8Slogwang ip_input.c \ 4151eaf0ac3Slogwang ip_mroute.c \ 416a9643ea8Slogwang ip_options.c \ 417a9643ea8Slogwang ip_output.c \ 418a9643ea8Slogwang raw_ip.c \ 419a9643ea8Slogwang tcp_debug.c \ 420a9643ea8Slogwang tcp_fastopen.c \ 421a9643ea8Slogwang tcp_hostcache.c \ 422a9643ea8Slogwang tcp_input.c \ 423a9643ea8Slogwang tcp_lro.c \ 424a9643ea8Slogwang tcp_offload.c \ 425a9643ea8Slogwang tcp_output.c \ 426a9643ea8Slogwang tcp_reass.c \ 427a9643ea8Slogwang tcp_sack.c \ 428a9643ea8Slogwang tcp_subr.c \ 429a9643ea8Slogwang tcp_syncache.c \ 430a9643ea8Slogwang tcp_timer.c \ 431a9643ea8Slogwang tcp_timewait.c \ 432a9643ea8Slogwang tcp_usrreq.c \ 433a9643ea8Slogwang udp_usrreq.c \ 434a9643ea8Slogwang cc.c \ 435a9643ea8Slogwang cc_newreno.c \ 436a9643ea8Slogwang cc_htcp.c \ 437a1fd9364Slogwang cc_cubic.c \ 438a1fd9364Slogwang alias.c \ 439a1fd9364Slogwang alias_db.c \ 440a1fd9364Slogwang alias_mod.c \ 441a1fd9364Slogwang alias_proxy.c \ 442a1fd9364Slogwang alias_sctp.c \ 443a1fd9364Slogwang alias_util.c 444a9643ea8Slogwang 445127dd473Swhl739ifdef FF_IPFW 446127dd473Swhl739NETIPFW_SRCS+= \ 447127dd473Swhl739 ip_fw_dynamic.c \ 448127dd473Swhl739 ip_fw_eaction.c \ 449127dd473Swhl739 ip_fw_iface.c \ 450127dd473Swhl739 ip_fw_log.c \ 451127dd473Swhl739 ip_fw_nat.c \ 452127dd473Swhl739 ip_fw_pfil.c \ 453127dd473Swhl739 ip_fw_sockopt.c \ 454127dd473Swhl739 ip_fw_table.c \ 455127dd473Swhl739 ip_fw_table_algo.c \ 456127dd473Swhl739 ip_fw_table_value.c \ 457127dd473Swhl739 ip_fw2.c 458127dd473Swhl739endif 459127dd473Swhl739 460a9643ea8Slogwangifdef FF_IPSEC 461a9643ea8SlogwangNETINET_SRCS+= \ 462a9643ea8Slogwang ip_ipsec.c 463a9643ea8Slogwangendif 464a9643ea8Slogwang 465a9643ea8Slogwang 466a9643ea8Slogwangifdef FF_IPSEC 467a9643ea8SlogwangNETIPSEC_SRCS+= \ 468a9643ea8Slogwang ipsec.c \ 469a9643ea8Slogwang ipsec_input.c \ 470a9643ea8Slogwang ipsec_mbuf.c \ 471a9643ea8Slogwang ipsec_output.c \ 472a9643ea8Slogwang key.c \ 473a9643ea8Slogwang key_debug.c \ 474a9643ea8Slogwang keysock.c \ 475a9643ea8Slogwang xform_ah.c \ 476a9643ea8Slogwang xform_esp.c \ 477a9643ea8Slogwang xform_ipcomp.c 478a9643ea8Slogwangendif 479a9643ea8Slogwang 480a9643ea8Slogwang# only if TCP_SIGNTAURE is defined 481a9643ea8Slogwang#xform_tcp.c 482a9643ea8Slogwang 483a9643ea8SlogwangNETINET6_SRCS+= 484a9643ea8Slogwang 485a9643ea8Slogwang 486a9643ea8Slogwangifdef FF_IPSEC 487a9643ea8SlogwangOPENCRYPTO_SRCS+= \ 488a9643ea8Slogwang cast.c \ 489a9643ea8Slogwang criov.c \ 490a9643ea8Slogwang crypto.c \ 491a9643ea8Slogwang cryptosoft.c \ 492a9643ea8Slogwang deflate.c \ 493a9643ea8Slogwang rmd160.c \ 494a9643ea8Slogwang skipjack.c \ 495a9643ea8Slogwang xform.c 496a9643ea8Slogwangendif 497a9643ea8Slogwang 498a9643ea8Slogwang# cryptodev.c 499a9643ea8Slogwang 500a9643ea8SlogwangOPENCRYPTO_MHEADERS= cryptodev_if.m 501a9643ea8SlogwangOPENCRYPTO_MSRCS= cryptodev_if.m 502a9643ea8Slogwang 503a9643ea8SlogwangVM_SRCS+= \ 504a9643ea8Slogwang uma_core.c 505a9643ea8Slogwang 506a9643ea8Slogwang 507a9643ea8SlogwangMHEADERS= $(patsubst %.m,%.h,${KERN_MHEADERS}) 508a9643ea8SlogwangMHEADERS+= vnode_if.h vnode_if_newproto.h vnode_if_typedef.h 509a9643ea8SlogwangMHEADERS+= $(patsubst %.m,%.h,${OPENCRYPTO_MHEADERS}) 510a9643ea8Slogwang 511a9643ea8SlogwangMSRCS= $(patsubst %.m,%.c,${KERN_MSRCS}) 512a9643ea8SlogwangMSRCS+= $(patsubst %.m,%.c,${OPENCRYPTO_MSRCS}) 513a9643ea8Slogwang 514a9643ea8SlogwangASM_SRCS = ${CRYPTO_ASM_SRCS} 515a9643ea8Slogwang 516a9643ea8SlogwangSRCS= ${FF_SRCS} ${CRYPTO_SRCS} ${KERN_SRCS} ${LIBKERN_SRCS} ${MACHINE_SRCS} 517a1fd9364SlogwangSRCS+= ${MSRCS} ${NET_SRCS} ${NETGRAPH_SRCS} ${NETINET_SRCS} ${NETINET6_SRCS} 518127dd473Swhl739SRCS+= ${NETIPSEC_SRCS} ${NETIPFW_SRCS} ${OPENCRYPTO_SRCS} ${VM_SRCS} 519a9643ea8Slogwang 520a9643ea8Slogwang# If witness is enabled. 521a9643ea8Slogwang# SRCS+= ${KERN_WITNESS_SRCS} 522a9643ea8Slogwang 523c36e692aSlogwang# Extra FreeBSD kernel module srcs. 524c36e692aSlogwangSRCS+= ${KMOD_SRCS} 525c36e692aSlogwang 526a9643ea8SlogwangHOST_SRCS = ${FF_HOST_SRCS} 527a9643ea8Slogwang 528a9643ea8SlogwangASM_OBJS+= $(patsubst %.S,%.o,${ASM_SRCS}) 529a9643ea8SlogwangOBJS+= $(patsubst %.c,%.o,${SRCS}) 530a9643ea8SlogwangHOST_OBJS+= $(patsubst %.c,%.o,${HOST_SRCS}) 531a9643ea8Slogwang 532a9643ea8Slogwangall: libfstack.a 533a9643ea8Slogwang 534a9643ea8Slogwang# 535a9643ea8Slogwang# The library is built by first incrementally linking all the object 536a9643ea8Slogwang# to resolve internal references. Then, all symbols are made local. 537a9643ea8Slogwang# Then, only the symbols that are part of the API are made 538a9643ea8Slogwang# externally available. 539a9643ea8Slogwang# 540a9643ea8Slogwanglibfstack.a: machine_includes ff_api.symlist ${MHEADERS} ${MSRCS} ${HOST_OBJS} ${ASM_OBJS} ${OBJS} 5418cf1d457Slogwang ${LD} -d -r -o $*.ro ${ASM_OBJS} ${OBJS} 542a9643ea8Slogwang nm $*.ro | grep -v ' U ' | cut -d ' ' -f 3 > $*_localize_list.tmp 543a9643ea8Slogwang objcopy --localize-symbols=$*_localize_list.tmp $*.ro 544a9643ea8Slogwang rm $*_localize_list.tmp 545a9643ea8Slogwang objcopy --globalize-symbols=ff_api.symlist $*.ro 546a9643ea8Slogwang rm -f $@ 547a9643ea8Slogwang ar -cqs $@ $*.ro ${HOST_OBJS} 548a9643ea8Slogwang rm -f $*.ro 549a9643ea8Slogwang 550a9643ea8Slogwang${HOST_OBJS}: %.o: %.c 551a9643ea8Slogwang ${HOST_C} 552a9643ea8Slogwang 553a9643ea8Slogwang${ASM_OBJS}: %.o: %.S ${IMACROS_FILE} 554a9643ea8Slogwang ${NORMAL_S} 555a9643ea8Slogwang 556a9643ea8Slogwang${OBJS}: %.o: %.c ${IMACROS_FILE} 557a9643ea8Slogwang ${NORMAL_C} 558a9643ea8Slogwang 559a9643ea8Slogwang 560a9643ea8Slogwang.SUFFIXES: .m 561a9643ea8Slogwang 562a9643ea8Slogwang.m.c: 563a9643ea8Slogwang ${AWK} -f $S/tools/makeobjops.awk $< -c 564a9643ea8Slogwang 565a9643ea8Slogwang.m.h: 566a9643ea8Slogwang ${AWK} -f $S/tools/makeobjops.awk $< -h 567a9643ea8Slogwang 568a9643ea8Slogwang.PHONY: clean 569a9643ea8Slogwangclean: 570a9643ea8Slogwang rm -f libfstack.a 571a9643ea8Slogwang rm -f ${MHEADERS} ${MSRCS} ${HOST_OBJS} ${ASM_OBJS} ${OBJS} ${PROGRAM} ${IMACROS_FILE} 572a9643ea8Slogwang rm -rf ${MACHINE_INCLUDES_ROOT} 573a9643ea8Slogwang 574a9643ea8Slogwang 575a9643ea8Slogwang.PHONY: machine_includes 576a9643ea8Slogwangmachine_includes: 577a9643ea8Slogwang @rm -rf ${MACHINE_INCLUDES_ROOT} 578a9643ea8Slogwang @mkdir -p ${MACHINE_INCLUDES_ROOT}/machine 579a9643ea8Slogwang @cp -r $S/${MACHINE_CPUARCH}/include/* ${MACHINE_INCLUDES_ROOT}/machine 580a9643ea8Slogwang @if [ "${X86_INCLUDES}" != "0" ]; then \ 581a9643ea8Slogwang mkdir -p ${MACHINE_INCLUDES_ROOT}/x86; \ 582a9643ea8Slogwang cp -r $S/x86/include/* ${MACHINE_INCLUDES_ROOT}/x86; \ 583a9643ea8Slogwang fi 584a9643ea8Slogwang 585a9643ea8Slogwang# 586a9643ea8Slogwang# Distilled from FreeBSD src/sys/conf/kern.post.mk 587a9643ea8Slogwang# 588a9643ea8Slogwangvnode_if.h vnode_if_newproto.h vnode_if_typedef.h: $S/tools/vnode_if.awk \ 589a9643ea8Slogwang $S/kern/vnode_if.src 590a9643ea8Slogwangvnode_if.h: vnode_if_newproto.h vnode_if_typedef.h 591a9643ea8Slogwang ${AWK} -f $S/tools/vnode_if.awk $S/kern/vnode_if.src -h 592a9643ea8Slogwangvnode_if_newproto.h: 593a9643ea8Slogwang ${AWK} -f $S/tools/vnode_if.awk $S/kern/vnode_if.src -p 594a9643ea8Slogwangvnode_if_typedef.h: 595a9643ea8Slogwang ${AWK} -f $S/tools/vnode_if.awk $S/kern/vnode_if.src -q 596a9643ea8Slogwang 597a9643ea8Slogwanginclude ${TOPDIR}/mk/kern.mk 598a9643ea8Slogwang 599*5af66259Sjfb8856606install: 600*5af66259Sjfb8856606 rm -rf ${PREFIX_LIB}/libfstack.a.${F-STACK_VERSION} 601*5af66259Sjfb8856606 rm -rf ${PREFIX_LIB}/libfstack.a 602*5af66259Sjfb8856606 rm -rf ${PREFIX_INCLUDE}/ff_config.h 603*5af66259Sjfb8856606 rm -rf ${PREFIX_INCLUDE}/ff_api.h 604*5af66259Sjfb8856606 rm -rf ${PREFIX_INCLUDE}/ff_event.h 605*5af66259Sjfb8856606 rm -rf ${PREFIX_INCLUDE}/ff_errno.h 606*5af66259Sjfb8856606 rm -rf ${PREFIX_INCLUDE}/ff_epoll.h 607*5af66259Sjfb8856606 rm -rf ${PREFIX_BIN}/ff_start 608*5af66259Sjfb8856606 609*5af66259Sjfb8856606 cp -f libfstack.a ${PREFIX_LIB}/libfstack.a.${F-STACK_VERSION} 610*5af66259Sjfb8856606 ln -sf ${PREFIX_LIB}/libfstack.a.${F-STACK_VERSION} ${PREFIX_LIB}/libfstack.a 611*5af66259Sjfb8856606 cp -f ff_config.h ${PREFIX_INCLUDE}/ff_config.h 612*5af66259Sjfb8856606 cp -f ff_api.h ${PREFIX_INCLUDE}/ff_api.h 613*5af66259Sjfb8856606 cp -f ff_event.h ${PREFIX_INCLUDE}/ff_event.h 614*5af66259Sjfb8856606 cp -f ff_errno.h ${PREFIX_INCLUDE}/ff_errno.h 615*5af66259Sjfb8856606 cp -f ff_epoll.h ${PREFIX_INCLUDE}/ff_epoll.h 616*5af66259Sjfb8856606 cp -f ${TOPDIR}/start.sh ${PREFIX_BIN}/ff_start 617*5af66259Sjfb8856606 test -f '${F-STACK_CONF}' || cp -f ${TOPDIR}/config.ini ${F-STACK_CONF} 618*5af66259Sjfb8856606 619*5af66259Sjfb8856606uninstall: 620*5af66259Sjfb8856606 rm -rf ${PREFIX_LIB}/libfstack.a.${F-STACK_VERSION} 621*5af66259Sjfb8856606 rm -rf ${PREFIX_LIB}/libfstack.a 622*5af66259Sjfb8856606 rm -rf ${PREFIX_INCLUDE}/ff_config.h 623*5af66259Sjfb8856606 rm -rf ${PREFIX_INCLUDE}/ff_api.h 624*5af66259Sjfb8856606 rm -rf ${PREFIX_INCLUDE}/ff_event.h 625*5af66259Sjfb8856606 rm -rf ${PREFIX_INCLUDE}/ff_errno.h 626*5af66259Sjfb8856606 rm -rf ${PREFIX_INCLUDE}/ff_epoll.h 627*5af66259Sjfb8856606 rm -rf ${PREFIX_BIN}/ff_start 628*5af66259Sjfb8856606 rm -rf ${F-STACK_CONF} 629*5af66259Sjfb8856606 630