FreeBSD src
Go to file
Bryan Drewery 848d5e929b Cache compiler metadata and reuse it at installworld time.
Right after cross-tools, a compiler-metadata.mk file is created that
stores all of the bsd.compiler.mk metadata.  It is then read in
with a fail-safe during installworld time.

The file is explicitly removed when invoking cross-tools to ensure that
a stale file is not left around from odd manual 'make _cross-tools' ->
'make installworld' invocations.

This fixes several issues:
    - With WITH_SYSTEM_COMPILER (default yes on head and no on releng/11.0):
      If you build on a system where the bootstrap compiler does not
      build due to the host compiler matching the in-tree one, but then
      installworld on another system where that logic fails (a
      bootstrap compiler is needed), the installworld immediately fails
      with:
           sh: cc: not found
      Note that fixing this logic may then hit a case where a rebuild is
      attempted in installworld.  Normally cc would be ran with
      'CFLAGS+=ERROR-tried-to-rebuild-during-make-install' to cause an
      error such as:
          cc: error: no such file or directory: 'ERROR-tried-to-rebuild-during-make-install'
      However, now it will just fail with the 'cc: not found' error.
      Inspection of the compile line will show
      'ERROR-tried-to-rebuild-during-make-install';  It's not useful to
      set CC to anything other than 'cc' during install as it is more
      helpful to see the attempted compile rather than some other bogus
      error.
    - This now avoids running bsd.compiler.mk (cc executions) even more
      during installworld.  There are compiler-dependent SUBDIR in the
      tree which required having a compiler during install.

There is at least 1 case where CC is still executed in the install,
such as from a LOOKUP!= in secure/lib/libcrypto/Makefile.inc checking
for 'vzeroall' support.  This is not significant for installworld
as the lookup has a fallback (and hides its error) and only modifies CFLAGS,
thus it's not worth fixing.

PR:		212877
MFC after:	2 weeks
Sponsored by:	Dell EMC Isilon
2017-04-13 22:07:34 +00:00
bin sh: Reduce size of limits table. 2017-04-12 21:15:55 +00:00
cddl MFV r316693: 2017-04-10 22:56:38 +00:00
contrib Fix expectations for testcases per bsdgrep vs gnu grep from base/ports 2017-04-13 04:10:27 +00:00
crypto Fix linking with lld by marking OPENSSL_armcap_P as hidden. 2017-04-07 12:41:57 +00:00
etc Revert r316487. It is broken, causing boot to fail due to line 25 in 2017-04-06 12:52:05 +00:00
gnu Temporary readd GNU diff 2017-03-19 17:19:59 +00:00
include Implement the memset_s(3) function as specified by the C11 ISO/IEC 2017-03-30 04:57:26 +00:00
kerberos5 kerberos5: normalize paths using SRCTOP-relative paths or :H when possible 2017-03-04 11:34:36 +00:00
lib Fix an out-of-bounds write when a zero-length buffer is passed. 2017-04-13 15:52:45 +00:00
libexec Emply contemporary function prototypes in bootpd, rather than relying on 2017-03-26 14:37:12 +00:00
release - Increase the image size for RPI2 and IMX6-based boards from 1G 2017-04-07 16:55:13 +00:00
rescue Fix linking /rescue/rescue to multiple programs in usr.bin after r315113 2017-03-20 22:33:22 +00:00
sbin Document the "oneopenown" option added by r316792. 2017-04-13 22:05:24 +00:00
secure Upgrade to OpenSSH 7.4p1. 2017-03-06 01:37:05 +00:00
share Add UEFI support to vmrun.sh 2017-04-13 00:07:39 +00:00
sys Add an NFSv4.1 mount option for "use one openowner". 2017-04-13 21:54:19 +00:00
targets META_MODE: add additional reachover relative paths to DIRDEPS_BUILD 2017-04-07 07:46:21 +00:00
tests Remove the unportable -msse4 here too after fixing crc32_sse42.c to not 2017-04-02 09:24:58 +00:00
tools makeman: don't copy $FreeBSD$ tags from source files into output 2017-04-11 17:01:20 +00:00
usr.bin add a stub --speed-large-files for compatibility with GNU diff 2017-04-08 08:46:02 +00:00
usr.sbin Do not register in CTL portal groups without portals. 2017-04-10 10:38:12 +00:00
.arcconfig callsign isn't required anymore 2016-09-29 06:19:45 +00:00
.arclint phabricator related changes: 2015-04-20 20:33:22 +00:00
COPYRIGHT Bump copyright year. 2016-12-31 12:41:42 +00:00
LOCKS
MAINTAINERS As suggested by several people, note that I prefer to communicate by email. 2017-03-03 20:23:21 +00:00
Makefile Cache compiler metadata and reuse it at installworld time. 2017-04-13 22:07:34 +00:00
Makefile.inc1 Cache compiler metadata and reuse it at installworld time. 2017-04-13 22:07:34 +00:00
Makefile.libcompat META_MODE: Fix build-tools still sometimes rebuilding during target build. 2017-04-06 18:21:59 +00:00
ObsoleteFiles.inc Fix typos to stop removing new files. 2017-04-01 19:08:22 +00:00
README README: remove nonexistent 'games' directory. 2016-05-18 10:43:13 +00:00
README.md Remove hard line breaks from README.md 2017-03-01 15:39:58 +00:00
UPDATING do not require binutils port when using lld as ld 2017-04-07 23:37:22 +00:00

FreeBSD Source:

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