Date: Fri, 17 Feb 2012 13:26:29 +0000 (UTC) From: Brooks Davis <brooks@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r231876 - in user/brooks/tchacks: . share/mk Message-ID: <201202171326.q1HDQT1X080069@svn.freebsd.org>
index | next in thread | raw e-mail
Author: brooks Date: Fri Feb 17 13:26:29 2012 New Revision: 231876 URL: http://svn.freebsd.org/changeset/base/231876 Log: Introduce a new variable, TCPATH which overrides other path elements during a full world build. This allows portions of the toolchain to be replaced with external components. It has been tested with cc, c++, nm, and ld replaced. TCPATH is used by installed the tools you with to use under their common names and then building world with a command like: make TCPATH=/tmp/tc buildworld TCPATH support depends on the ability to call cc/c++ with --sysroot which in turn requires that the linker the compiler users (hard coded at compile time) also support --sysroot. In the case of GNU ld this is non-default. You can produce a linker that works exactly like normal but also supports --sysroot by building binutils with the configure argument "--with-sysroot=/". The current patch is quite inefficient. It still builds all crossbuild tools including copies of gcc and clang. A more efficient and selective approach is certainly possible. Modified: user/brooks/tchacks/Makefile.inc1 user/brooks/tchacks/share/mk/bsd.dep.mk user/brooks/tchacks/share/mk/sys.mk Modified: user/brooks/tchacks/Makefile.inc1 ============================================================================== --- user/brooks/tchacks/Makefile.inc1 Fri Feb 17 13:24:28 2012 (r231875) +++ user/brooks/tchacks/Makefile.inc1 Fri Feb 17 13:26:29 2012 (r231876) @@ -180,7 +180,11 @@ WORLDTMP= ${OBJTREE}${.CURDIR}/tmp BPATH= ${WORLDTMP}/legacy/usr/sbin:${WORLDTMP}/legacy/usr/bin:${WORLDTMP}/legacy/usr/games XPATH= ${WORLDTMP}/usr/sbin:${WORLDTMP}/usr/bin:${WORLDTMP}/usr/games STRICTTMPPATH= ${BPATH}:${XPATH} +.if defined(TCPATH) +TMPPATH= ${TCPATH}:${STRICTTMPPATH}:${PATH} +.else TMPPATH= ${STRICTTMPPATH}:${PATH} +.endif # # Avoid running mktemp(1) unless actually needed. @@ -272,6 +276,9 @@ WMAKEENV= ${CROSSENV} \ WMAKEENV+= NO_CTF=1 .endif WMAKE= ${WMAKEENV} ${MAKE} -f Makefile.inc1 DESTDIR=${WORLDTMP} +.if defined(TCPATH) +WMAKE+= SYSROOT=${WORLDTMP} +.endif .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64" # 32 bit world Modified: user/brooks/tchacks/share/mk/bsd.dep.mk ============================================================================== --- user/brooks/tchacks/share/mk/bsd.dep.mk Fri Feb 17 13:24:28 2012 (r231875) +++ user/brooks/tchacks/share/mk/bsd.dep.mk Fri Feb 17 13:26:29 2012 (r231876) @@ -125,8 +125,8 @@ depend: beforedepend ${DEPENDFILE} after # Different types of sources are compiled with slightly different flags. # Split up the sources, and filter out headers and non-applicable flags. -MKDEP_CFLAGS= ${CFLAGS:M-nostdinc*} ${CFLAGS:M-[BIDU]*} ${CFLAGS:M-std=*} ${CFLAGS:M-ansi} -MKDEP_CXXFLAGS= ${CXXFLAGS:M-nostdinc*} ${CXXFLAGS:M-[BIDU]*} ${CXXFLAGS:M-std=*} ${CXXFLAGS:M-ansi} +MKDEP_CFLAGS= ${CFLAGS:M-nostdinc*} ${CFLAGS:M-[BIDU]*} ${CFLAGS:M-std=*} ${CFLAGS:M-ansi} ${CFLAGS:M--sysroot*} +MKDEP_CXXFLAGS= ${CXXFLAGS:M-nostdinc*} ${CXXFLAGS:M-[BIDU]*} ${CXXFLAGS:M-std=*} ${CXXFLAGS:M-ansi} ${CFLAGS:M--sysroot*} DPSRCS+= ${SRCS} ${DEPENDFILE}: ${DPSRCS} Modified: user/brooks/tchacks/share/mk/sys.mk ============================================================================== --- user/brooks/tchacks/share/mk/sys.mk Fri Feb 17 13:24:28 2012 (r231875) +++ user/brooks/tchacks/share/mk/sys.mk Fri Feb 17 13:26:29 2012 (r231876) @@ -53,6 +53,9 @@ CFLAGS ?= -O -pipe .else CFLAGS ?= -O2 -pipe .endif +.if defined(SYSROOT) +CFLAGS += --sysroot=${SYSROOT} +.endif .if defined(NO_STRICT_ALIASING) CFLAGS += -fno-strict-aliasing .endifhelp
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201202171326.q1HDQT1X080069>
