12233c95bSzrj# This does the same job as bsd.hostlib.mk except .c files are bult with c++
22233c95bSzrj# and it does not contain "afterdepend: all" which forces everything to be
32233c95bSzrj# built under the "depend" target
42233c95bSzrj
52233c95bSzrj.include <bsd.init.mk>
62233c95bSzrj
72233c95bSzrj.SUFFIXES:
82233c95bSzrj.SUFFIXES: .out .no .c .cc .cpp .cxx .C .y .l
92233c95bSzrj
102233c95bSzrj.c.no .cc.no .C.no .cpp.no .cxx.no:
112233c95bSzrj	${NXCXX} ${_${.IMPSRC}_FLAGS} ${NXCXXFLAGS:N-std=*:N-flto} -c ${.IMPSRC} -o ${.TARGET}
122233c95bSzrj	@${NXLD} -o ${.TARGET}.tmp -x -r ${.TARGET}
132233c95bSzrj	@mv ${.TARGET}.tmp ${.TARGET}
142233c95bSzrj
152233c95bSzrjall: objwarn
162233c95bSzrj
172233c95bSzrj.if defined(LIB) && !empty(LIB) && !empty(SRCS)
181bc877a0SSascha WildnerOBJS+=  ${SRCS:N*.h:R:S/$/.no/g}
192233c95bSzrj.endif
202233c95bSzrj
212233c95bSzrj.if defined(LIB) && !empty(LIB)
222233c95bSzrj_LIBS=		lib${LIB}.na
232233c95bSzrj
242233c95bSzrjlib${LIB}.na: ${OBJS} ${STATICOBJS}
252233c95bSzrj	@${ECHO} building native static ${LIB} library
262233c95bSzrj	rm -f ${.TARGET}
27*49feb856Szrj	${NXAR} ${ARFLAGS} ${.TARGET} `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD}
28*49feb856Szrj	${NXRANLIB} ${.TARGET}
292233c95bSzrj.endif
302233c95bSzrj
312233c95bSzrjall: ${_LIBS}
322233c95bSzrj
332233c95bSzrj##
342233c95bSzrj#  HEAD: embedded equivalent bsd.dep.mk
352233c95bSzrj##
362233c95bSzrj
372233c95bSzrjCTAGS?=		gtags
382233c95bSzrjMKDEPCMD?=	CC=c++ mkdep
392233c95bSzrjDEPENDFILE?=	.depend
402233c95bSzrjGTAGSFLAGS?=	-o
412233c95bSzrjCTAGSFLAGS?=
422233c95bSzrjHTAGSFLAGS?=
432233c95bSzrj
442233c95bSzrj.if !target(tags) && defined(SRCS) && !defined(NOTAGS)
452233c95bSzrjtags: ${SRCS}
462233c95bSzrj. if ${CTAGS:T} == "ctags"
472233c95bSzrj	@${CTAGS} ${CTAGSFLAGS} -f /dev/stdout \
482233c95bSzrj	    ${.ALLSRC:N*.h} | sed "s;${.CURDIR}/;;" > ${.TARGET}
492233c95bSzrj. elif ${CTAGS:T} == "gtags"
502233c95bSzrj	@cd ${.CURDIR} && ${CTAGS} ${GTAGSFLAGS} ${.OBJDIR}
512233c95bSzrj.  if defined(HTML)
522233c95bSzrj	@cd ${.CURDIR} && htags ${HTAGSFLAGS} -d ${.OBJDIR} ${.OBJDIR}
532233c95bSzrj.  endif
542233c95bSzrj. endif
552233c95bSzrj.endif
562233c95bSzrj
572233c95bSzrj.if defined(SRCS)
582233c95bSzrj
592233c95bSzrjCLEANFILES?=
602233c95bSzrj
612233c95bSzrj. for _LSRC in ${SRCS:M*.l:N*/*}
622233c95bSzrj.  for _LC in ${_LSRC:R}.c
632233c95bSzrj${_LC}: ${_LSRC}
642233c95bSzrj	${LEX} -t ${LFLAGS} ${.ALLSRC} > ${.TARGET}
652233c95bSzrjSRCS:=	${SRCS:S/${_LSRC}/${_LC}/}
662233c95bSzrjCLEANFILES+= ${_LC}
672233c95bSzrj.  endfor
682233c95bSzrj. endfor
692233c95bSzrj
702233c95bSzrj. for _YSRC in ${SRCS:M*.y:N*/*}
712233c95bSzrj.  for _YC in ${_YSRC:R}.c
722233c95bSzrjSRCS:=	${SRCS:S/${_YSRC}/${_YC}/}
732233c95bSzrjCLEANFILES+= ${_YC}
742233c95bSzrj.   if !empty(YFLAGS:M-d) && !empty(SRCS:My.tab.h)
752233c95bSzrj.ORDER: ${_YC} y.tab.h
762233c95bSzrj${_YC} y.tab.h: ${_YSRC}
772233c95bSzrj	${YACC} ${YFLAGS} ${.ALLSRC}
782233c95bSzrj	cp y.tab.c ${_YC}
792233c95bSzrjCLEANFILES+= y.tab.c y.tab.h
802233c95bSzrj.   elif !empty(YFLAGS:M-d)
812233c95bSzrj.     for _YH in ${_YC:S/.c/.h/}
822233c95bSzrj${_YH}: ${_YC}
832233c95bSzrj${_YC}: ${_YSRC}
842233c95bSzrj	${YACC} ${YFLAGS} -o ${_YC} ${.ALLSRC}
852233c95bSzrjSRCS+= ${_YH}
862233c95bSzrjCLEANFILES+= ${_YH}
872233c95bSzrj.     endfor
882233c95bSzrj.   else
892233c95bSzrj${_YC}: ${_YSRC}
902233c95bSzrj	${YACC} ${YFLAGS} -o ${_YC} ${.ALLSRC}
912233c95bSzrj.   endif
922233c95bSzrj.  endfor
932233c95bSzrj. endfor
942233c95bSzrj.endif
952233c95bSzrj
962233c95bSzrj.if !target(depend)
972233c95bSzrj. if defined(SRCS)
982233c95bSzrjdepend: beforedepend _dependincs ${DEPENDFILE} afterdepend
992233c95bSzrj
1002233c95bSzrj.NOPATH: ${DEPENDFILE}
1012233c95bSzrj
1022233c95bSzrj__FLAGS=
1032233c95bSzrj__FLAGS_FILES=	${SRCS}
1042233c95bSzrj.  for _FG in ${FLAGS_GROUPS}
1052233c95bSzrj.   for _FFILE in ${${_FG}_FLAGS_FILES}
1062233c95bSzrj__FLAGS_FILES:=	${__FLAGS_FILES:N${_FFILE}}
1072233c95bSzrj.   endfor
1082233c95bSzrj.  endfor
1092233c95bSzrj
1102233c95bSzrj_DEPENDFILES=	${FLAGS_GROUPS:S/^/.depend_/g}
1112233c95bSzrj
1122233c95bSzrj${DEPENDFILE}: ${_DEPENDFILES}
1132233c95bSzrj
1142233c95bSzrj_ALL_DEPENDS=${__FLAGS_FILES:N*.[sS]:N*.c:N*.cc:N*.C:N*.cpp:N*.cpp:N*.cxx:N*.m}
1152233c95bSzrj
1162233c95bSzrj.  for _FG in _ ${FLAGS_GROUPS}
1172233c95bSzrj.depend${_FG:S/^/_/:N__}: ${${_FG}_FLAGS_FILES} ${_ALL_DEPENDS}
1182233c95bSzrj	-rm -f ${.TARGET}
1192233c95bSzrj	-> ${.TARGET}
1202233c95bSzrj.   if ${${_FG}_FLAGS_FILES:M*.[sS]} != ""
1212233c95bSzrj	${MKDEPCMD} -f ${.TARGET} -a ${MKDEP} \
1222233c95bSzrj	    ${${_FG}_FLAGS} \
1232233c95bSzrj	    ${CFLAGS:M-nostdinc*} ${CFLAGS:M-[BID]*} \
1242233c95bSzrj	    ${CFLAGS:M-std=*} \
1252233c95bSzrj	    ${.ALLSRC:M*.[sS]}
1262233c95bSzrj.   endif
1272233c95bSzrj.   if ${${_FG}_FLAGS_FILES:M*.cc} != "" || \
1282233c95bSzrj    ${${_FG}_FLAGS_FILES:M*.C} != "" || \
1292233c95bSzrj    ${${_FG}_FLAGS_FILES:M*.c} != "" || \
1302233c95bSzrj    ${${_FG}_FLAGS_FILES:M*.cpp} != "" || \
1312233c95bSzrj    ${${_FG}_FLAGS_FILES:M*.cxx} != ""
1322233c95bSzrj	${MKDEPCMD} -f ${.TARGET} -a ${MKDEP} \
1332233c95bSzrj	    ${${_FG}_FLAGS} \
1342233c95bSzrj	    ${CXXFLAGS:M-nostdinc*} ${CXXFLAGS:M-[BID]*} \
1352233c95bSzrj	    ${.ALLSRC:M*.c} \
1362233c95bSzrj	    ${.ALLSRC:M*.cc} ${.ALLSRC:M*.C} ${.ALLSRC:M*.cpp} ${.ALLSRC:M*.cxx}
1372233c95bSzrj.   endif
1382233c95bSzrj.   if ${${_FG}_FLAGS_FILES:M*.m} != ""
1392233c95bSzrj	${MKDEPCMD} -f ${.TARGET} -a ${MKDEP} \
1402233c95bSzrj	    ${${_FG}_FLAGS} \
1412233c95bSzrj	    ${OBJCFLAGS:M-nostdinc*} ${OBJCFLAGS:M-[BID]*} \
1422233c95bSzrj	    ${OBJCFLAGS:M-Wno-import*} \
1432233c95bSzrj	    ${.ALLSRC:M*.m}
1442233c95bSzrj.   endif
1452233c95bSzrj.   if !empty(${_FG:M_}) && !empty(_DEPENDFILES)
1462233c95bSzrj	cat ${_DEPENDFILES} >> ${.TARGET}
1472233c95bSzrj.   endif
1482233c95bSzrj.  endfor
1492233c95bSzrj
1502233c95bSzrj.  if target(_EXTRADEPEND)
1512233c95bSzrj_EXTRADEPEND: .USE
1522233c95bSzrj${DEPENDFILE}: _EXTRADEPEND
1532233c95bSzrj.  endif
1542233c95bSzrj
1552233c95bSzrj. else
1562233c95bSzrjdepend: beforedepend _dependincs afterdepend
1572233c95bSzrj. endif
1582233c95bSzrj. if !target(beforedepend)
1592233c95bSzrjbeforedepend:
1602233c95bSzrj. endif
1612233c95bSzrj. if !target(afterdepend)
1622233c95bSzrjafterdepend:
1632233c95bSzrj. endif
1642233c95bSzrj.endif
1652233c95bSzrj
1662233c95bSzrj.if !target(cleandepend)
1672233c95bSzrjcleandepend:
1682233c95bSzrj. if defined(SRCS)
1692233c95bSzrj.  if ${CTAGS:T} == "ctags"
1702233c95bSzrj	rm -f ${DEPENDFILE} ${_DEPENDFILES} tags
1712233c95bSzrj.  elif ${CTAGS:T} == "gtags"
1722233c95bSzrj	rm -f ${DEPENDFILE} ${_DEPENDFILES} GPATH GRTAGS GSYMS GTAGS
1732233c95bSzrj.   if defined(HTML)
1742233c95bSzrj	rm -rf HTML
1752233c95bSzrj.   endif
1762233c95bSzrj.  endif
1772233c95bSzrj. endif
1782233c95bSzrj.endif
1792233c95bSzrj
1802233c95bSzrj.if !target(checkdpadd) && (defined(DPADD) || defined(LDADD))
1812233c95bSzrjcheckdpadd:
1822233c95bSzrj	@ldadd=`echo \`for lib in ${DPADD} ; do \
1832233c95bSzrj		echo $$lib | sed 's;^/usr/lib/lib\(.*\)\.a;-l\1;' ; \
1842233c95bSzrj	done \`` ; \
1852233c95bSzrj	ldadd1=`echo ${LDADD}` ; \
1862233c95bSzrj	if [ "$$ldadd" != "$$ldadd1" ] ; then \
1872233c95bSzrj		echo ${.CURDIR} ; \
1882233c95bSzrj		echo "DPADD -> $$ldadd" ; \
1892233c95bSzrj		echo "LDADD -> $$ldadd1" ; \
1902233c95bSzrj	fi
1912233c95bSzrj.endif
1922233c95bSzrj
1932233c95bSzrj.if defined(INCS) && make(depend)
1942233c95bSzrj_dependincs: buildincludes .WAIT installincludes
1952233c95bSzrj.else
1962233c95bSzrj_dependincs:
1972233c95bSzrj.endif
1982233c95bSzrj
1992233c95bSzrj.ORDER: beforedepend _dependincs ${DEPENDFILE} afterdepend
2002233c95bSzrj
2012233c95bSzrj##
2022233c95bSzrj#  TAIL: embedded equivalent bsd.dep.mk
2032233c95bSzrj##
2042233c95bSzrj
2052233c95bSzrj.if !exists(${.OBJDIR}/${DEPENDFILE})
2062233c95bSzrj. if defined(LIB) && !empty(LIB)
2072233c95bSzrj${OBJS} ${STATICOBJS}: ${SRCS:M*.h}
2082233c95bSzrj. endif
2092233c95bSzrj.endif
2102233c95bSzrj
2112233c95bSzrj.if !target(clean)
2122233c95bSzrjclean:
2132233c95bSzrj. if defined(CLEANFILES) && !empty(CLEANFILES)
2142233c95bSzrj	rm -f ${CLEANFILES}
2152233c95bSzrj. endif
2162233c95bSzrj. if defined(LIB) && !empty(LIB)
2172233c95bSzrj	rm -f a.out ${OBJS} ${OBJS:S/$/.tmp/} ${STATICOBJS}
2182233c95bSzrj. endif
2192233c95bSzrj. if defined(_LIBS) && !empty(_LIBS)
2202233c95bSzrj	rm -f ${_LIBS}
2212233c95bSzrj. endif
2222233c95bSzrj. if defined(CLEANDIRS) && !empty(CLEANDIRS)
2232233c95bSzrj	rm -rf ${CLEANDIRS}
2242233c95bSzrj. endif
2252233c95bSzrj.endif
2262233c95bSzrj
2272233c95bSzrj.include <bsd.obj.mk>
2282233c95bSzrj.include <bsd.sys.mk>
229