On Thu, Sep 01, 2016 at 02:42:11AM +0000, Ngie Cooper wrote: > Author: ngie > Date: Thu Sep 1 02:42:11 2016 > New Revision: 305170 > URL: https://svnweb.freebsd.org/changeset/base/305170 > > Log: > Don't bake all of CC/CPP/CXX into CFLAGS > > Capture executable names for CC, CPP, CXX (assumed to be the > first non-CCACHE_BIN word). > > This change strips out all of the cross-compiler arguments, (-target, > -B, etc), added to ${CC}, etc via ${CROSSENV} in Makefile.inc1, so it > doesn't infect the build and subsequently the test. > > Add comments noting why this logic is being added, and why the logic in > r305041 was necessary/what it was trying to achieve. > > This is required after recent changes made to the toolchain to always > specify --sysroot, -target, -B, etc with clang in buildworld (presumably > r304681). > > Reviewed by: rodrigc (earlier version) > Reported by: Jenkins (FreeBSD_HEAD job from 559+) > MFC after: 12 days > X-MFC with: r304681, r305041 > Sponsored by: EMC / Isilon Storage Division > Differential Revision: https://reviews.freebsd.org/D7732 > > Modified: > head/lib/atf/libatf-c/Makefile > > Modified: head/lib/atf/libatf-c/Makefile > ============================================================================== > --- head/lib/atf/libatf-c/Makefile Thu Sep 1 02:05:46 2016 > (r305169) > +++ head/lib/atf/libatf-c/Makefile Thu Sep 1 02:42:11 2016 > (r305170) > @@ -28,6 +28,18 @@ > .include <src.opts.mk> > .include <bsd.init.mk> > > +# Store the toolchain executable in ATF_BUILD_{CC,CPP,CXX} to ensure other > +# values -- like -target, -B ..., etc -- don't get leaked into the tests. > +# > +# Be sure to omit ${CCACHE_BIN} (if specified) from the variable as it gets > +# automatically appended to the variables in bsd.compiler.mk when > +# ${MK_CCACHE_BUILD} != no. > +ATF_BUILD_CC:= ${CC:N${CCACHE_BIN}:[1]} > +ATF_BUILD_CPP:= ${CPP:N${CCACHE_BIN}:[1]} > +ATF_BUILD_CXX:= ${CXX:N${CCACHE_BIN}:[1]} > + > +# Only capture defines, includes, linker flags, optimization levels, warnings > +# and preprocessor flags when building ATF_BUILD_{C,CPP,CXX}FLAGS. > ATF_BUILD_CFLAGS:= ${CFLAGS:M-[DILOWf]*} > ATF_BUILD_CPPFLAGS:= ${CPPFLAGS:M-[DILOWf]*} > ATF_BUILD_CXXFLAGS:= ${CXXFLAGS:M-[DILOWf]*} > @@ -41,11 +53,11 @@ ATF= ${SRCTOP}/contrib/atf > .PATH: ${ATF}/atf-c > .PATH: ${ATF}/atf-c/detail > > -CFLAGS+= -DATF_BUILD_CC='"${CC}"' > +CFLAGS+= -DATF_BUILD_CC='"${ATF_BUILD_CC}"' > CFLAGS+= -DATF_BUILD_CFLAGS='"${ATF_BUILD_CFLAGS}"' > -CFLAGS+= -DATF_BUILD_CPP='"${CPP}"' > +CFLAGS+= -DATF_BUILD_CPP='"${ATF_BUILD_CPP}"' > CFLAGS+= -DATF_BUILD_CPPFLAGS='"${ATF_BUILD_CPPFLAGS}"' > -CFLAGS+= -DATF_BUILD_CXX='"${CXX}"' > +CFLAGS+= -DATF_BUILD_CXX='"${ATF_BUILD_CXX}"' > CFLAGS+= -DATF_BUILD_CXXFLAGS='"${ATF_BUILD_CXXFLAGS}"' > CFLAGS+= -I${ATF} > CFLAGS+= -I${.CURDIR} >
Are these the variables used to control the tests that try to compile things? I've run into to some problems with them on CheriBSD because the external compiler isn't available on the test target, but isn't listed as a dependency. These tests should declare a dependency on CC, etc as appropriate and be skipped if it isn't there. I'm not actually convinced this shouldn't just use cc, cpp, and c++. (That would be wrong for CheriBSD, but closer to right for current cases in FreeBSD). -- Brooks
signature.asc
Description: PGP signature