bsd.dep.mk revision 1.40
1#	$NetBSD: bsd.dep.mk,v 1.40 2003/05/08 20:39:00 christos Exp $
2
3##### Basic targets
4.PHONY:		cleandepend
5cleandir:	cleandepend
6realdepend:	beforedepend .depend afterdepend
7.ORDER:		beforedepend .depend afterdepend
8
9beforedepend .depend afterdepend: # ensure existence
10
11##### Default values
12MKDEP?=		mkdep
13
14##### Build rules
15# some of the rules involve .h sources, so remove them from mkdep line
16
17.if defined(SRCS)
18__acpp_flags=	-traditional-cpp
19.NOPATH:	.depend
20.if empty(HOST_CYGWIN)
21.depend: ${SRCS} ${DPSRCS}
22	@rm -f .depend
23	@files="${.ALLSRC:M*.s} ${.ALLSRC:M*.S}"; \
24	if [ "$$files" != " " ]; then \
25	  echo ${MKDEP} -a ${MKDEPFLAGS} \
26	    ${AFLAGS:M-[ID]*:Q} ${CPPFLAGS:Q} ${__acpp_flags} ${AINC:Q} \
27	    $$files; \
28	  ${MKDEP} -a ${MKDEPFLAGS} \
29	    ${AFLAGS:M-[ID]*} ${CPPFLAGS} ${__acpp_flags} ${AINC} $$files; \
30	fi
31	@files="${.ALLSRC:M*.c}"; \
32	if [ "$$files" != "" ]; then \
33	  echo ${MKDEP} -a ${MKDEPFLAGS} \
34	    ${CFLAGS:M-[ID]*:Q} ${CPPFLAGS:Q} $$files; \
35	  ${MKDEP} -a ${MKDEPFLAGS} \
36	    ${CFLAGS:M-[ID]*} ${CPPFLAGS} $$files; \
37	fi
38	@files="${.ALLSRC:M*.m}"; \
39	if [ "$$files" != "" ]; then \
40	  echo ${MKDEP} -a ${MKDEPFLAGS} \
41	    ${OBJCFLAGS:M-[ID]*:Q} ${CPPFLAGS:Q} $$files; \
42	  ${MKDEP} -a ${MKDEPFLAGS} \
43	    ${OBJCFLAGS:M-[ID]*} ${CPPFLAGS} $$files; \
44	fi
45	@files="${.ALLSRC:M*.cc} ${.ALLSRC:M*.C} ${.ALLSRC:M*.cxx}"; \
46	if [ "$$files" != "  " ]; then \
47	  echo ${MKDEP} -a ${MKDEPFLAGS} \
48	    ${CXXFLAGS:M-[ID]*:Q} ${CPPFLAGS:Q} $$files; \
49	  ${MKDEP} -a ${MKDEPFLAGS} \
50	    ${CXXFLAGS:M-[ID]*} ${DESTDIR:D-nostdinc++ ${CPPFLAG_ISYSTEM} ${DESTDIR}/usr/include/g++} ${CPPFLAGS} $$files; \
51	fi
52.else
53#
54# Cygwin workarounds for limited environment & command line space
55#
56
57SRCS_S = ${SRCS:M*.[sS]} ${DPSRCS:M*.[sS]}
58SRCS_C = ${SRCS:M*.c} ${DPSRCS:M*.c}
59SRCS_M = ${SRCS:M*.m} ${DPSRCS:M*.m}
60SRCS_X = ${SRCS:M*.C} ${DPSRCS:M*.C} \
61         ${SRCS:M*.cc} ${DPSRCS:M*.cc} \
62	 ${SRCS:M*.cxx} ${DPSRCS:M*.cxx} 
63
64.depend: ${SRCS} ${DPSRCS} \
65	 ${SRCS_S:C/(.*)/\1.dep/g:S/^.dep$//g} \
66	 ${SRCS_C:C/(.*)/\1.dep/g:S/^.dep$//g} \
67	 ${SRCS_M:C/(.*)/\1.dep/g:S/^.dep$//g} \
68	 ${SRCS_X:C/(.*)/\1.dep/g:S/^.dep$//g}
69	@rm -f .depend
70	@cat ${.ALLSRC:M*.dep} > .depend
71
72.for F in ${SRCS_S:O:u}
73.NOPATH: ${F:C/(.*)/\1.dep/g}
74${F:C/(.*)/\1.dep/g}: ${F}
75	@echo ${MKDEP} -a -f $@ ${MKDEPFLAGS} \
76	    ${AFLAGS:M-[ID]*:Q} ${CPPFLAGS:Q} ${__acpp_flags} ${AINC:Q} \
77	    ${.ALLSRC}
78	@${MKDEP} -a -f $@ ${MKDEPFLAGS} ${AFLAGS:M-[ID]*} ${CPPFLAGS} \
79	    ${__acpp_flags} ${AINC} ${.ALLSRC}
80.endfor
81
82.for F in ${SRCS_C:O:u}
83.NOPATH: ${F:C/(.*)/\1.dep/g}
84${F:C/(.*)/\1.dep/g}: ${F}
85	@echo ${MKDEP} -a -f $@ ${MKDEPFLAGS} ${CFLAGS:M-[ID]*:Q} \
86	    ${CPPFLAGS:Q} ${.ALLSRC}
87	@${MKDEP} -a -f $@ ${MKDEPFLAGS} ${CFLAGS:M-[ID]*} ${CPPFLAGS} \
88	    ${.ALLSRC}
89.endfor
90
91.for F in ${SRCS_M:O:u}
92.NOPATH: ${F:C/(.*)/\1.dep/g}
93${F:C/(.*)/\1.dep/g}: ${F}
94	@echo ${MKDEP} -a -f $@ ${MKDEPFLAGS} ${OBJCFLAGS:M-[ID]*:Q} \
95	    ${CPPFLAGS:Q} ${.ALLSRC}
96	@${MKDEP} -a -f $@ ${MKDEPFLAGS} ${OBJCFLAGS:M-[ID]*} ${CPPFLAGS} \
97	    ${.ALLSRC}
98.endfor
99
100.for F in ${SRCS_X:O:u}
101.NOPATH: ${F:C/(.*)/\1.dep/g}
102${F:C/(.*)/\1.dep/g}: ${F}
103	@echo ${MKDEP} -a -f $@ ${MKDEPFLAGS} \
104	    ${CXXFLAGS:M-[ID]*:Q} ${CPPFLAGS:Q} ${.ALLSRC}
105	@${MKDEP} -a -f $@ ${MKDEPFLAGS} ${CXXFLAGS:M-[ID]*} \
106	    ${DESTDIR:D-nostdinc++ ${CPPFLAG_ISYSTEM} \
107	    ${DESTDIR}/usr/include/g++} ${CPPFLAGS} ${.ALLSRC}
108.endfor
109
110.endif # Cygwin
111.endif # defined(SRCS)
112
113##### Clean rules
114cleandepend:
115.if defined(SRCS)
116	rm -f .depend ${.CURDIR}/tags ${CLEANDEPEND}
117.endif
118
119##### Custom rules
120.if !target(tags)
121tags: ${SRCS}
122.if defined(SRCS)
123	-cd ${.CURDIR}; ctags -f /dev/stdout ${.ALLSRC:N*.h} | \
124	    sed "s;\${.CURDIR}/;;" > tags
125.endif
126.endif
127