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