xref: /f-stack/freebsd/Makefile (revision a9643ea8)
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