1*a9643ea8Slogwang# $FreeBSD$ 2*a9643ea8Slogwang 3*a9643ea8Slogwang# Directories to include in cscope name file and TAGS. 4*a9643ea8SlogwangCSCOPEDIRS= boot bsm cam cddl compat conf contrib crypto ddb dev fs gdb \ 5*a9643ea8Slogwang geom gnu isa kern libkern modules net net80211 \ 6*a9643ea8Slogwang netgraph netinet netinet6 netipsec netnatm netpfil \ 7*a9643ea8Slogwang netsmb nfs nfsclient nfsserver nlm ofed opencrypto \ 8*a9643ea8Slogwang rpc security sys ufs vm xdr xen ${CSCOPE_ARCHDIR} 9*a9643ea8Slogwang.if !defined(CSCOPE_ARCHDIR) 10*a9643ea8Slogwang.if defined(ALL_ARCH) 11*a9643ea8SlogwangCSCOPE_ARCHDIR = amd64 arm arm64 i386 mips pc98 powerpc riscv sparc64 x86 12*a9643ea8Slogwang.else 13*a9643ea8SlogwangCSCOPE_ARCHDIR = ${MACHINE} 14*a9643ea8Slogwang.if ${MACHINE} != ${MACHINE_CPUARCH} 15*a9643ea8SlogwangCSCOPE_ARCHDIR += ${MACHINE_CPUARCH} 16*a9643ea8Slogwang.endif 17*a9643ea8Slogwang.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64" 18*a9643ea8SlogwangCSCOPE_ARCHDIR += x86 19*a9643ea8Slogwang.endif 20*a9643ea8Slogwang.endif 21*a9643ea8Slogwang.endif 22*a9643ea8Slogwang 23*a9643ea8SlogwangHTAGSFLAGS+= -at `awk -F= '/^RELEASE *=/{release=$2}; END {print "FreeBSD", release, "kernel"}' < conf/newvers.sh` 24*a9643ea8Slogwang 25*a9643ea8Slogwang# You need the devel/cscope port for this. 26*a9643ea8Slogwangcscope: cscope.out 27*a9643ea8Slogwangcscope.out: ${.CURDIR}/cscope.files 28*a9643ea8Slogwang cd ${.CURDIR}; cscope -k -buq -p4 -v 29*a9643ea8Slogwang 30*a9643ea8Slogwang${.CURDIR}/cscope.files: .PHONY 31*a9643ea8Slogwang cd ${.CURDIR}; \ 32*a9643ea8Slogwang find ${CSCOPEDIRS} -name "*.[chSsly]" -a -type f > ${.TARGET} 33*a9643ea8Slogwang 34*a9643ea8Slogwangcscope-clean: 35*a9643ea8Slogwang rm -f cscope.files cscope.out cscope.in.out cscope.po.out 36*a9643ea8Slogwang 37*a9643ea8Slogwang# 38*a9643ea8Slogwang# Installs SCM hooks to update the cscope database every time the source tree 39*a9643ea8Slogwang# is updated. 40*a9643ea8Slogwang# cscope understands incremental updates, so it's considerably faster when only 41*a9643ea8Slogwang# a few files have changed. 42*a9643ea8Slogwang# 43*a9643ea8SlogwangHG_DIR=${.CURDIR}/../.hg 44*a9643ea8SlogwangHG_HOOK=if [ \$$HG_ERROR -eq 0 ]; then cd sys && make -m ../share/mk cscope; fi 45*a9643ea8Slogwangcscope-hook: 46*a9643ea8Slogwang @if [ -d ${HG_DIR} ]; then \ 47*a9643ea8Slogwang if [ "`grep hooks ${HG_DIR}/hgrc`" = "" ]; then \ 48*a9643ea8Slogwang echo "[hooks]" >> ${HG_DIR}/hgrc; \ 49*a9643ea8Slogwang echo "update = ${HG_HOOK}" >> ${HG_DIR}/hgrc; \ 50*a9643ea8Slogwang echo "Hook installed in ${HG_DIR}/hgrc"; \ 51*a9643ea8Slogwang else \ 52*a9643ea8Slogwang echo "Mercurial update hook already exists."; \ 53*a9643ea8Slogwang fi; \ 54*a9643ea8Slogwang fi 55*a9643ea8Slogwang 56*a9643ea8Slogwang# You need the devel/global and one of editor/emacs* ports for that. 57*a9643ea8SlogwangTAGS ${.CURDIR}/TAGS: ${.CURDIR}/cscope.files 58*a9643ea8Slogwang rm -f ${.CURDIR}/TAGS 59*a9643ea8Slogwang cd ${.CURDIR}; xargs etags -a < ${.CURDIR}/cscope.files 60*a9643ea8Slogwang 61*a9643ea8Slogwang# You need the textproc/glimpse ports for this. 62*a9643ea8Slogwangglimpse: 63*a9643ea8Slogwang.if !exists(${.CURDIR}/.glimpse_exclude) 64*a9643ea8Slogwang echo .svn > ${.CURDIR}/.glimpse_exclude 65*a9643ea8Slogwang echo /compile/ >> ${.CURDIR}/.glimpse_exclude 66*a9643ea8Slogwang.endif 67*a9643ea8Slogwang cd ${.CURDIR}; glimpseindex -H . -B -f -o . 68*a9643ea8Slogwang 69*a9643ea8Slogwangglimpse-clean: 70*a9643ea8Slogwang cd ${.CURDIR}; rm -f .glimpse_* 71*a9643ea8Slogwang 72*a9643ea8Slogwang.if !(make(cscope) || make(cscope-clean) || make(cscope-hook) || make(TAGS) || \ 73*a9643ea8Slogwang make(glimpse) || make(glimpse-clean)) 74*a9643ea8Slogwang.include <src.opts.mk> 75*a9643ea8Slogwang 76*a9643ea8Slogwang# The boot loader 77*a9643ea8Slogwang.if ${MK_BOOT} != "no" 78*a9643ea8SlogwangSUBDIR= boot 79*a9643ea8Slogwang.endif 80*a9643ea8Slogwang 81*a9643ea8Slogwang# Loadable kernel modules 82*a9643ea8Slogwang 83*a9643ea8Slogwang.if defined(MODULES_WITH_WORLD) 84*a9643ea8SlogwangSUBDIR+=modules 85*a9643ea8Slogwang.endif 86*a9643ea8Slogwang 87*a9643ea8Slogwang.include <bsd.subdir.mk> 88*a9643ea8Slogwang.endif 89