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