bsd.dep.mk revision 33681
1# $Id: bsd.dep.mk,v 1.16 1997/12/14 15:38:47 wosch 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} ${.CURDIR}/GRTAGS ${.CURDIR}/GSYMS ${.CURDIR}/GTAGS 94.if defined(HTML) 95 rm -rf ${.CURDIR}/HTML 96.endif 97.endif 98.endif 99 100_SUBDIR: .USE 101.if defined(SUBDIR) && !empty(SUBDIR) 102 @for entry in ${SUBDIR}; do \ 103 (${ECHODIR} "===> ${DIRPRFX}$$entry"; \ 104 if test -d ${.CURDIR}/$${entry}.${MACHINE}; then \ 105 cd ${.CURDIR}/$${entry}.${MACHINE}; \ 106 else \ 107 cd ${.CURDIR}/$${entry}; \ 108 fi; \ 109 ${MAKE} ${.TARGET:S/realinstall/install/:S/.depend/depend/} DIRPRFX=${DIRPRFX}$$entry/); \ 110 done 111.endif 112