freebsd-dev/sys/Makefile
Rui Paulo fb256796eb Add a new target cscope-hook.
This adds a Mercurial hook to automatically update the cscope data base every
time you pull, switch branch, or update.
2014-05-15 03:47:52 +00:00

86 lines
2.4 KiB
Makefile

# $FreeBSD$
.include <src.opts.mk>
# The boot loader
.if ${MK_BOOT} != "no"
SUBDIR= boot
.endif
# Directories to include in cscope name file and TAGS.
CSCOPEDIRS= boot bsm cam cddl compat conf contrib crypto ddb dev fs gdb \
geom gnu isa kern libkern modules net net80211 \
netgraph netinet netinet6 netipsec netnatm netpfil \
netsmb nfs nfsclient nfsserver nlm ofed opencrypto \
pci rpc security sys ufs vm xdr xen ${CSCOPE_ARCHDIR}
.if !defined(CSCOPE_ARCHDIR)
.if defined(ALL_ARCH)
CSCOPE_ARCHDIR = amd64 arm i386 ia64 mips pc98 powerpc sparc64 x86
.else
CSCOPE_ARCHDIR = ${MACHINE}
.if ${MACHINE} != ${MACHINE_CPUARCH}
CSCOPE_ARCHDIR += ${MACHINE_CPUARCH}
.endif
.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
CSCOPE_ARCHDIR += x86
.endif
.endif
.endif
# Loadable kernel modules
.if defined(MODULES_WITH_WORLD)
SUBDIR+=modules
.endif
HTAGSFLAGS+= -at `awk -F= '/^RELEASE *=/{release=$2}; END {print "FreeBSD", release, "kernel"}' < conf/newvers.sh`
# You need the devel/cscope port for this.
cscope: cscope.out
cscope.out: ${.CURDIR}/cscope.files
cd ${.CURDIR}; cscope -k -buq -p4 -v
${.CURDIR}/cscope.files: .PHONY
cd ${.CURDIR}; \
find ${CSCOPEDIRS} -name "*.[chSsly]" -a -type f > ${.TARGET}
cscope-clean:
rm -f cscope.files cscope.out cscope.in.out cscope.po.out
#
# Installs SCM hooks to update the cscope database every time the source tree
# is updated.
# cscope understands incremental updates, so it's considerably faster when only
# a few files have changed.
#
HG_DIR=${.CURDIR}/../.hg
HG_HOOK=if [ \$$HG_ERROR -eq 0 ]; then cd sys && make -m ../share/mk cscope; fi
cscope-hook:
@if [ -d ${HG_DIR} ]; then \
if [ "`grep hooks ${HG_DIR}/hgrc`" = "" ]; then \
echo "[hooks]" >> ${HG_DIR}/hgrc; \
echo "update = ${HG_HOOK}" >> ${HG_DIR}/hgrc; \
echo "Hook installed in ${HG_DIR}/hgrc"; \
else \
echo "Mercurial update hook already exists."; \
fi; \
fi
# You need the devel/global and one of editor/emacs* ports for that.
TAGS ${.CURDIR}/TAGS: ${.CURDIR}/cscope.files
rm -f ${.CURDIR}/TAGS
cd ${.CURDIR}; xargs etags -a < ${.CURDIR}/cscope.files
# You need the textproc/glimpse ports for this.
glimpse:
.if !exists(${.CURDIR}/.glimpse_exclude)
echo .svn > ${.CURDIR}/.glimpse_exclude
echo /compile/ >> ${.CURDIR}/.glimpse_exclude
.endif
cd ${.CURDIR}; glimpseindex -H . -B -f -o .
glimpse-clean:
cd ${.CURDIR}; rm -f .glimpse_*
.include <bsd.subdir.mk>