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