1 # This does the same job as bsd.hostlib.mk except .c files are bult with c++
2 # and it does not contain "afterdepend: all" which forces everything to be
3 # built under the "depend" target
8 .SUFFIXES: .out .no .c .cc .cpp .cxx .C .y .l
10 .c.no .cc.no .C.no .cpp.no .cxx.no:
11 ${NXCXX} ${_${.IMPSRC}_FLAGS} ${NXCXXFLAGS:N-std=*:N-flto} -c ${.IMPSRC} -o ${.TARGET}
12 @${NXLD} -o ${.TARGET}.tmp -x -r ${.TARGET}
13 @mv ${.TARGET}.tmp ${.TARGET}
17 .if defined(LIB) && !empty(LIB) && !empty(SRCS)
18 OBJS+= ${SRCS:N*.h:R:S/$/.no/g}
21 .if defined(LIB) && !empty(LIB)
24 lib${LIB}.na: ${OBJS} ${STATICOBJS}
25 @${ECHO} building native static ${LIB} library
27 ${NXAR} ${ARFLAGS} ${.TARGET} `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD}
28 ${NXRANLIB} ${.TARGET}
34 # HEAD: embedded equivalent bsd.dep.mk
38 MKDEPCMD?= CC=c++ mkdep
44 .if !target(tags) && defined(SRCS) && !defined(NOTAGS)
46 . if ${CTAGS:T} == "ctags"
47 @${CTAGS} ${CTAGSFLAGS} -f /dev/stdout \
48 ${.ALLSRC:N*.h} | sed "s;${.CURDIR}/;;" > ${.TARGET}
49 . elif ${CTAGS:T} == "gtags"
50 @cd ${.CURDIR} && ${CTAGS} ${GTAGSFLAGS} ${.OBJDIR}
52 @cd ${.CURDIR} && htags ${HTAGSFLAGS} -d ${.OBJDIR} ${.OBJDIR}
61 . for _LSRC in ${SRCS:M*.l:N*/*}
62 . for _LC in ${_LSRC:R}.c
64 ${LEX} -t ${LFLAGS} ${.ALLSRC} > ${.TARGET}
65 SRCS:= ${SRCS:S/${_LSRC}/${_LC}/}
70 . for _YSRC in ${SRCS:M*.y:N*/*}
71 . for _YC in ${_YSRC:R}.c
72 SRCS:= ${SRCS:S/${_YSRC}/${_YC}/}
74 . if !empty(YFLAGS:M-d) && !empty(SRCS:My.tab.h)
75 .ORDER: ${_YC} y.tab.h
76 ${_YC} y.tab.h: ${_YSRC}
77 ${YACC} ${YFLAGS} ${.ALLSRC}
79 CLEANFILES+= y.tab.c y.tab.h
80 . elif !empty(YFLAGS:M-d)
81 . for _YH in ${_YC:S/.c/.h/}
84 ${YACC} ${YFLAGS} -o ${_YC} ${.ALLSRC}
90 ${YACC} ${YFLAGS} -o ${_YC} ${.ALLSRC}
98 depend: beforedepend _dependincs ${DEPENDFILE} afterdepend
100 .NOPATH: ${DEPENDFILE}
103 __FLAGS_FILES= ${SRCS}
104 . for _FG in ${FLAGS_GROUPS}
105 . for _FFILE in ${${_FG}_FLAGS_FILES}
106 __FLAGS_FILES:= ${__FLAGS_FILES:N${_FFILE}}
110 _DEPENDFILES= ${FLAGS_GROUPS:S/^/.depend_/g}
112 ${DEPENDFILE}: ${_DEPENDFILES}
114 _ALL_DEPENDS=${__FLAGS_FILES:N*.[sS]:N*.c:N*.cc:N*.C:N*.cpp:N*.cpp:N*.cxx:N*.m}
116 . for _FG in _ ${FLAGS_GROUPS}
117 .depend${_FG:S/^/_/:N__}: ${${_FG}_FLAGS_FILES} ${_ALL_DEPENDS}
120 . if ${${_FG}_FLAGS_FILES:M*.[sS]} != ""
121 ${MKDEPCMD} -f ${.TARGET} -a ${MKDEP} \
123 ${CFLAGS:M-nostdinc*} ${CFLAGS:M-[BID]*} \
127 . if ${${_FG}_FLAGS_FILES:M*.cc} != "" || \
128 ${${_FG}_FLAGS_FILES:M*.C} != "" || \
129 ${${_FG}_FLAGS_FILES:M*.c} != "" || \
130 ${${_FG}_FLAGS_FILES:M*.cpp} != "" || \
131 ${${_FG}_FLAGS_FILES:M*.cxx} != ""
132 ${MKDEPCMD} -f ${.TARGET} -a ${MKDEP} \
134 ${CXXFLAGS:M-nostdinc*} ${CXXFLAGS:M-[BID]*} \
136 ${.ALLSRC:M*.cc} ${.ALLSRC:M*.C} ${.ALLSRC:M*.cpp} ${.ALLSRC:M*.cxx}
138 . if ${${_FG}_FLAGS_FILES:M*.m} != ""
139 ${MKDEPCMD} -f ${.TARGET} -a ${MKDEP} \
141 ${OBJCFLAGS:M-nostdinc*} ${OBJCFLAGS:M-[BID]*} \
142 ${OBJCFLAGS:M-Wno-import*} \
145 . if !empty(${_FG:M_}) && !empty(_DEPENDFILES)
146 cat ${_DEPENDFILES} >> ${.TARGET}
150 . if target(_EXTRADEPEND)
152 ${DEPENDFILE}: _EXTRADEPEND
156 depend: beforedepend _dependincs afterdepend
158 . if !target(beforedepend)
161 . if !target(afterdepend)
166 .if !target(cleandepend)
169 . if ${CTAGS:T} == "ctags"
170 rm -f ${DEPENDFILE} ${_DEPENDFILES} tags
171 . elif ${CTAGS:T} == "gtags"
172 rm -f ${DEPENDFILE} ${_DEPENDFILES} GPATH GRTAGS GSYMS GTAGS
180 .if !target(checkdpadd) && (defined(DPADD) || defined(LDADD))
182 @ldadd=`echo \`for lib in ${DPADD} ; do \
183 echo $$lib | sed 's;^/usr/lib/lib\(.*\)\.a;-l\1;' ; \
185 ldadd1=`echo ${LDADD}` ; \
186 if [ "$$ldadd" != "$$ldadd1" ] ; then \
188 echo "DPADD -> $$ldadd" ; \
189 echo "LDADD -> $$ldadd1" ; \
193 .if defined(INCS) && make(depend)
194 _dependincs: buildincludes .WAIT installincludes
199 .ORDER: beforedepend _dependincs ${DEPENDFILE} afterdepend
202 # TAIL: embedded equivalent bsd.dep.mk
205 .if !exists(${.OBJDIR}/${DEPENDFILE})
206 . if defined(LIB) && !empty(LIB)
207 ${OBJS} ${STATICOBJS}: ${SRCS:M*.h}
213 . if defined(CLEANFILES) && !empty(CLEANFILES)
216 . if defined(LIB) && !empty(LIB)
217 rm -f a.out ${OBJS} ${OBJS:S/$/.tmp/} ${STATICOBJS}
219 . if defined(_LIBS) && !empty(_LIBS)
222 . if defined(CLEANDIRS) && !empty(CLEANDIRS)
227 .include <bsd.obj.mk>
228 .include <bsd.sys.mk>