bsd.dep.mk revision 30113
1# $Id: bsd.dep.mk,v 1.14 1997/08/26 16:54:33 bde Exp $ 2# 3# The include file <bsd.dep.mk> handles Makefile dependencies. 4# 5# 6# +++ variables +++ 7# 8# DEPENDFILE dependencies file [.depend] 9# 10# MKDEP Options for ${MKDEPCMD} [not set] 11# 12# MKDEPCMD Makefile dependency list program [mkdep] 13# 14# SRCS List of source files (c, c++, assembler) 15# 16# 17# +++ targets +++ 18# 19# cleandepend: 20# Remove depend and tags file 21# 22# depend: 23# Make the dependencies for the source files, and store 24# them in the file ${DEPENDFILE}. 25# 26# tags: 27# Create a (GLOBAL) gtags file for the source files. 28# If HTML is defined, htags is also run after gtags. 29 30 31MKDEPCMD?= mkdep 32DEPENDFILE?= .depend 33 34# some of the rules involve .h sources, so remove them from mkdep line 35.if !target(depend) 36.if defined(SRCS) 37depend: beforedepend ${DEPENDFILE} afterdepend _SUBDIR 38 39# .if defined ${SRCS:M*.[sS]} does not work 40__depend_s= ${SRCS:M*.[sS]} 41__depend_c= ${SRCS:M*.c} 42__depend_cc= ${SRCS:M*.cc} ${SRCS:M*.C} ${SRCS:M*.cxx} 43 44${DEPENDFILE}: ${SRCS} 45 rm -f ${DEPENDFILE} 46.if defined(__depend_s) && !empty(__depend_s) 47 ${MKDEPCMD} -f ${DEPENDFILE} -a ${MKDEP} ${CFLAGS:M-[BID]*} ${AINC} \ 48 ${.ALLSRC:M*.[sS]} 49.endif 50.if defined(__depend_c) && !empty(__depend_c) 51 ${MKDEPCMD} -f ${DEPENDFILE} -a ${MKDEP} ${CFLAGS:M-[BID]*} \ 52 ${.ALLSRC:M*.c} 53.endif 54.if defined(__depend_cc) && !empty(__depend_cc) 55 ${MKDEPCMD} -f ${DEPENDFILE} -a ${MKDEP} \ 56 ${CXXFLAGS:M-nostd*} ${CXXFLAGS:M-[BID]*} \ 57 ${.ALLSRC:M*.cc} ${.ALLSRC:M*.C} ${.ALLSRC:M*.cxx} 58.endif 59.if target(_EXTRADEPEND) 60 cd ${.CURDIR}; ${MAKE} _EXTRADEPEND 61.endif 62 63.ORDER: ${DEPENDFILE} afterdepend 64.else 65depend: beforedepend afterdepend _SUBDIR 66.endif 67.if !target(beforedepend) 68beforedepend: 69.else 70.ORDER: beforedepend ${DEPENDFILE} 71.ORDER: beforedepend afterdepend 72.endif 73.if !target(afterdepend) 74afterdepend: 75.endif 76.endif 77 78.if defined(NOTAGS) 79tags: 80.endif 81 82.if !target(tags) 83tags: ${SRCS} _SUBDIR 84 @cd ${.CURDIR} && gtags ${GTAGSFLAGS} 85.if defined(HTML) 86 @cd ${.CURDIR} && htags ${HTAGSFLAGS} 87.endif 88.endif 89 90.if !target(cleandepend) 91cleandepend: _SUBDIR 92.if defined(SRCS) 93 rm -f ${DEPENDFILE} 94 rm -f ${.CURDIR}/GRTAGS ${.CURDIR}/GTAGS 95.if defined(HTML) 96 rm -rf ${.CURDIR}/HTML 97.endif 98.endif 99.endif 100 101_SUBDIR: .USE 102.if defined(SUBDIR) && !empty(SUBDIR) 103 @for entry in ${SUBDIR}; do \ 104 (${ECHODIR} "===> ${DIRPRFX}$$entry"; \ 105 if test -d ${.CURDIR}/$${entry}.${MACHINE}; then \ 106 cd ${.CURDIR}/$${entry}.${MACHINE}; \ 107 else \ 108 cd ${.CURDIR}/$${entry}; \ 109 fi; \ 110 ${MAKE} ${.TARGET:S/realinstall/install/:S/.depend/depend/} DIRPRFX=${DIRPRFX}$$entry/); \ 111 done 112.endif 113