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