freebsd kernel with SKQ
Go to file
Bryan Drewery 6120aabd32 Opportunistically skip building a cross-compiler with SYSTEM_COMPILER set.
This will still build the compiler for the target but will not build the
bootstrap cross-compiler in the cross-tools phase.  Other toolchain
bootstrapping, such as elftoolchan and binutils, currently still occurs.

This will utilize the default CC (cc, /usr/bin/cc) as an external compiler.

This is planned to be on-by-default eventually.

This will utilize the __FreeBSD_cc_version compiler macro defined in the
source tree and compare it to CC's version.  If they match then the
cross-compiler is skipped.  If [X]CC is an external compiler (absolute
path) or WITHOUT_CROSS_COMPILER is already set, then this logic is skipped.
If the expected bootstrap compiler type no longer matches the found CC
compiler type (clang vs gcc), then the logic is skipped.  As an extra
safety check the version number is also compared from the compiler to
the tree version.

Clang:
  The macro FREEBSD_CC_VERSION is defined in:
    lib/clang/include/clang/Basic/Version.inc
  For clang -target will be used if TARGET_ARCH != MACHINE_ARCH.  This
  is from the current external toolchain logic.  There is currently an
  assumption that the host compiler can build the TARGET_ARCH.  This
  will usually be the case since we don't conditionalize target arch
  support in clang, but it will break when introducing new
  architectures.  This problem is mitigated by incrementing the version
  when adding new architectures.

GCC:
  The macro FBSD_CC_VER is defined in:
    gnu/usr.bin/cc/cc_tools/freebsd-native.h
  For GCC there is no simple -target support when TARGET_ARCH !=
  MACHINE_ARCH.  In this case the opportunistic skip is not done.  If we
  add proper support for this case in external toolchain logic then it
  will be fine to enable.

This relies on the macros being incremented whenever any change occurs
to these compilers that warrant rebuilding files.  It also should never
repeat earlier values.

Reviewed by:	brooks, bapt, imp
Sponsored by:	EMC / Isilon Storage Division
Differential Revision:	https://reviews.freebsd.org/D6357
2016-05-21 01:32:23 +00:00
bin ed(1): simplify by using arc4random_buf(). 2016-05-21 00:45:42 +00:00
cddl Remove the old version of the DTraceToolkit from the source tree. 2016-05-19 19:51:39 +00:00
contrib elftoolchain: backwards compatability for EM_RISCV definition 2016-05-20 20:27:30 +00:00
crypto libkrb5: Fix potential double-free 2016-05-11 23:25:59 +00:00
etc Remove DTrace tooklkit from the mtree and add the files to remove 2016-05-20 01:38:31 +00:00
gnu WITH_META_MODE: Avoid rebuilds of cc_tools during target build. 2016-05-21 01:32:01 +00:00
include WITH_META_MODE: Disable cookie handling for include installation. 2016-05-21 01:31:57 +00:00
kerberos5 Remove the old depend (mkdep) code and make FAST_DEPEND the one true way. 2016-03-30 23:50:23 +00:00
lib Add FREEBSD_CC_VERSION which will be used to define __FreeBSD_cc_version. 2016-05-21 01:32:20 +00:00
libexec Declare line[] in the outermost scope of retrieve() instead of 2016-05-13 01:52:41 +00:00
release Document r296633, OpenSSH updated to 7.2p2. 2016-05-12 19:32:40 +00:00
rescue Split /rescue into its own package. 2016-02-08 14:27:45 +00:00
sbin Add support for managing Shingled Magnetic Recording (SMR) drives. 2016-05-19 14:08:36 +00:00
secure Regen x86 assembly files for r299480. 2016-05-11 20:11:21 +00:00
share Opportunistically skip building a cross-compiler with SYSTEM_COMPILER set. 2016-05-21 01:32:23 +00:00
sys WITH_META_MODE: Fix suffix transformation rules with guessed dependencies. 2016-05-21 01:31:48 +00:00
targets targets/Makefile: fix a typo (derrived -> derived). 2016-05-18 10:59:16 +00:00
tests kern_descrip_test: Fix trivial buffer overrun with readlink(2) 2016-05-12 03:44:29 +00:00
tools Opportunistically skip building a cross-compiler with SYSTEM_COMPILER set. 2016-05-21 01:32:23 +00:00
usr.bin Add the density code for LTO-7 to libmt and the mt(1) man page. 2016-05-20 19:30:52 +00:00
usr.sbin Adjust a couple of error cases in camdd(8). 2016-05-19 19:13:43 +00:00
.arcconfig Remove project.name which is a product of a bygone era. 2016-04-21 04:33:07 +00:00
.arclint phabricator related changes: 2015-04-20 20:33:22 +00:00
COPYRIGHT Bump copyright year. 2015-12-31 11:21:45 +00:00
LOCKS
MAINTAINERS Add myself to MAINTAINERS. 2016-03-14 16:27:43 +00:00
Makefile Import bmake-20160512 2016-05-20 16:19:56 +00:00
Makefile.inc1 Opportunistically skip building a cross-compiler with SYSTEM_COMPILER set. 2016-05-21 01:32:23 +00:00
Makefile.libcompat Set CPP from XCPP for the libcompat build. 2016-04-15 18:32:05 +00:00
ObsoleteFiles.inc Drop trailing asterisks. 2016-05-20 17:41:12 +00:00
README README: remove nonexistent 'games' directory. 2016-05-18 10:43:13 +00:00
UPDATING Remove brk and sbrk from arm64. They were defined in The Single UNIX 2016-05-20 15:04:48 +00:00

This is the top level of the FreeBSD source directory.  This file
was last revised on:
$FreeBSD$

For copyright information, please see the file COPYRIGHT in this
directory (additional copyright information also exists for some
sources in this tree - please see the specific source directories for
more information).

The Makefile in this directory supports a number of targets for
building components (or all) of the FreeBSD source tree.  See build(7)
and http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html
for more information, including setting make(1) variables.

The `buildkernel` and `installkernel` targets build and install
the kernel and the modules (see below).  Please see the top of
the Makefile in this directory for more information on the
standard build targets and compile-time flags.

Building a kernel is a somewhat more involved process.  See build(7), config(8),
and http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html
for more information.

Note: If you want to build and install the kernel with the
`buildkernel` and `installkernel` targets, you might need to build
world before.  More information is available in the handbook.

The kernel configuration files reside in the sys/<arch>/conf
sub-directory.  GENERIC is the default configuration used in release builds.
NOTES contains entries and documentation for all possible
devices, not just those commonly used.


Source Roadmap:
---------------

bin		System/user commands.

cddl		Various commands and libraries under the Common Development
		and Distribution License.

contrib		Packages contributed by 3rd parties.

crypto		Cryptography stuff (see crypto/README).

etc		Template files for /etc.

gnu		Various commands and libraries under the GNU Public License.
		Please see gnu/COPYING* for more information.

include		System include files.

kerberos5	Kerberos5 (Heimdal) package.

lib		System libraries.

libexec		System daemons.

release		Release building Makefile & associated tools.

rescue		Build system for statically linked /rescue utilities.

sbin		System commands.

secure		Cryptographic libraries and commands.

share		Shared resources.

sys		Kernel sources.

tests		Regression tests which can be run by Kyua.  See tests/README
		for additional information.

tools		Utilities for regression testing and miscellaneous tasks.

usr.bin		User commands.

usr.sbin	System administration commands.


For information on synchronizing your source tree with one or more of
the FreeBSD Project's development branches, please see:

  http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/synching.html