From owner-svn-src-head@freebsd.org Mon Aug 20 10:39:45 2018 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 7EF81108BDDD; Mon, 20 Aug 2018 10:39:45 +0000 (UTC) (envelope-from arichardson@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id CE85786346; Mon, 20 Aug 2018 10:39:44 +0000 (UTC) (envelope-from arichardson@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 857F71422E; Mon, 20 Aug 2018 10:39:43 +0000 (UTC) (envelope-from arichardson@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w7KAdhUZ079451; Mon, 20 Aug 2018 10:39:43 GMT (envelope-from arichardson@FreeBSD.org) Received: (from arichardson@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w7KAdhfX079450; Mon, 20 Aug 2018 10:39:43 GMT (envelope-from arichardson@FreeBSD.org) Message-Id: <201808201039.w7KAdhfX079450@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: arichardson set sender to arichardson@FreeBSD.org using -f From: Alex Richardson Date: Mon, 20 Aug 2018 10:39:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r338096 - head/tools/build/mk X-SVN-Group: head X-SVN-Commit-Author: arichardson X-SVN-Commit-Paths: head/tools/build/mk X-SVN-Commit-Revision: 338096 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.27 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Aug 2018 10:39:45 -0000 Author: arichardson Date: Mon Aug 20 10:39:42 2018 New Revision: 338096 URL: https://svnweb.freebsd.org/changeset/base/338096 Log: Avoid depending on system headers from the source tree during bootstrap This can cause surprising errors if the build tools is built against headers that don't match the host system. It is also required in order to allow building on non-FreeBSD systems where the headers in /usr/include/sys are usually completely incompatible with those in the source tree. I added an error to Makefile.boot if this is done and found this was only the case in libnv. With this error in the Makefile ABI breakages such as r336019 should no longer be possible. Reviewed By: bdrewery, kevans Approved By: jhb (mentor) Differential Revision: https://reviews.freebsd.org/D16186 Modified: head/tools/build/mk/Makefile.boot Modified: head/tools/build/mk/Makefile.boot ============================================================================== --- head/tools/build/mk/Makefile.boot Mon Aug 20 10:39:37 2018 (r338095) +++ head/tools/build/mk/Makefile.boot Mon Aug 20 10:39:42 2018 (r338096) @@ -7,3 +7,20 @@ LDFLAGS+= -L${WORLDTMP}/legacy/usr/lib # we do not want to capture dependencies referring to the above UPDATE_DEPENDFILE= no + +# When building host tools we should never pull in headers from the source sys +# directory to avoid any ABI issues that might cause the built binary to crash. +# The only exceptions to this are sys/cddl/compat for dtrace bootstrap tools and +# sys/crypto for libmd bootstrap. +.if !empty(CFLAGS:M*${SRCTOP}/sys*:N*${SRCTOP}/sys/cddl/compat*:N*${SRCTOP}/sys/crypto*) +.error Do not include $${SRCTOP}/sys when building bootstrap tools. \ + Copy the header to $${WORLDTMP}/legacy in tools/build/Makefile instead. \ + Error was caused by Makefile in ${.CURDIR} +.endif + +# ${SRCTOP}/include should also never be used to avoid ABI issues +.if !empty(CFLAGS:M*${SRCTOP}/include*) +.error Do not include $${SRCTOP}/include when building bootstrap tools. \ + Copy the header to $${WORLDTMP}/legacy in tools/build/Makefile instead. \ + Error was caused by Makefile in ${.CURDIR} +.endif