svn commit: r346738 - projects/runtime-coverage-v2

Enji Cooper ngie at FreeBSD.org
Fri Apr 26 11:29:01 UTC 2019


Author: ngie
Date: Fri Apr 26 11:28:59 2019
New Revision: 346738
URL: https://svnweb.freebsd.org/changeset/base/346738

Log:
  Make --coverage work by building the coverage libraries for the toolchain prior to building the rest of the libraries
  
  Geez louise this took a long time to get to this point. Sometimes the hammer solution is best ;).

Modified:
  projects/runtime-coverage-v2/Makefile.inc1

Modified: projects/runtime-coverage-v2/Makefile.inc1
==============================================================================
--- projects/runtime-coverage-v2/Makefile.inc1	Fri Apr 26 11:12:51 2019	(r346737)
+++ projects/runtime-coverage-v2/Makefile.inc1	Fri Apr 26 11:28:59 2019	(r346738)
@@ -722,7 +722,7 @@ TMAKE=		\
 XMAKE=		${BMAKE} \
 		TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
 		MK_GDB=no \
-		MK_TESTS=no MK_COVERAGE=no MK_COVERAGE_SUPPORT=${MK_COVERAGE}
+		MK_TESTS=no MK_COVERAGE=no
 
 # kernel-tools stage
 KTMAKEENV=	INSTALL="sh ${.CURDIR}/tools/install.sh" \
@@ -2466,9 +2466,6 @@ _elftctools=	lib/libelftc \
 .endif
 
 .if ${MK_CLANG_BOOTSTRAP} != "no"
-.if ${MK_COVERAGE_SUPPORT} != "no"
-_coverage_libs+= lib/libclang_rt/profile
-.endif
 _clang=		usr.bin/clang
 .endif
 .if ${MK_LLD_BOOTSTRAP} != "no"
@@ -2507,16 +2504,6 @@ cross-tools: .MAKE .PHONY
 		${MAKE} DIRPRFX=${_tool}/ all; \
 		${MAKE} DIRPRFX=${_tool}/ DESTDIR=${WORLDTMP} install
 .endfor
-	# Build coverage libraries for the target. This must be done here in
-	# order for the cross-toolchain to be able to find them with
-	# `make libraries` and the rest of buildworld.
-.for _tool in ${_coverage_libs}
-	${_+_}@${ECHODIR} "===> ${_tool} (obj,all,install)"; \
-		cd ${.CURDIR}/${_tool}; \
-		if [ -z "${NO_OBJWALK}" ]; then ${MAKE} DIRPRFX=${_tool}/ obj; fi; \
-		${CROSSENV} ${MAKE} DIRPRFX=${_tool}/ all; \
-		${CROSSENV} ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${WORLDTMP} install
-.endfor
 
 #
 # native-xtools is the current target for qemu-user cross builds of ports
@@ -2720,10 +2707,31 @@ hierarchy hier: .MAKE .PHONY
 #
 libraries: .MAKE .PHONY
 	${_+_}cd ${.CURDIR}; \
+	    ${MAKE} -f Makefile.inc1 _target_toolchain_libs MK_COVERAGE=no \
+	        MK_COVERAGE_SUPPORT=${MK_COVERAGE}; \
 	    ${MAKE} -f Makefile.inc1 _prereq_libs; \
 	    ${MAKE} -f Makefile.inc1 _startup_libs; \
 	    ${MAKE} -f Makefile.inc1 _prebuild_libs; \
 	    ${MAKE} -f Makefile.inc1 _generic_libs
+
+# Build coverage libraries for the target. This must be done here in
+# order for the cross-toolchain to be able to find them with
+# `make libraries` and the rest of buildworld.
+.if ${MK_CLANG_BOOTSTRAP} != "no"
+.if ${MK_COVERAGE_SUPPORT} != "no"
+_coverage_libs+= lib/libclang_rt/profile
+.endif
+.endif
+
+_target_toolchain_libs: .PHONY .MAKE
+.for _tool in \
+    ${_coverage_libs}
+	${_+_}@${ECHODIR} "===> ${_tool} (obj,all,install)"; \
+		cd ${.CURDIR}/${_tool}; \
+		if [ -z "${NO_OBJWALK}" ]; then ${MAKE} DIRPRFX=${_tool}/ obj; fi; \
+		${MAKE} DIRPRFX=${_tool}/ all; \
+		${MAKE} DIRPRFX=${_tool}/ DESTDIR=${WORLDTMP} install
+.endfor
 
 #
 # static libgcc.a prerequisite for shared libc


More information about the svn-src-projects mailing list