HEX
Server: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/8.4.25
System: Windows NT DESKTOP-4TAV2RJ 10.0 build 19045 (Windows 10) AMD64
User: fred (0)
PHP: 8.4.25
Disabled: NONE
Upload Files
File: C:/Users/fred/anaconda3/Library/share/b2/tools/features/lto-feature.jam
# Copyright 2019 Dmitry Arkhipov
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE.txt or copy at
# https://www.bfgroup.xyz/b2/LICENSE.txt)

import feature ;

#| tag::doc[]

[[bbv2.builtin.features.lto]]`lto`::
*Allowed values:* `on`.
+
Enables link time optimizations (also known as interprocedural optimizations or
whole-program optimizations). Currently supported toolsets are <<GNU {CPP}>>,
clang and <<Microsoft Visual {CPP}>>. The feature is optional.

|# # end::doc[]

feature.feature lto
    : on
    : optional propagated ;

#| tag::doc[]

[[bbv2.builtin.features.lto-mode]]`lto-mode`::
*Subfeature of* `lto`
+
*Allowed values:* `full`, `thin`, `fat`.
+
Specifies the type of LTO to use.
+
`full`::: Use the monolithic LTO: on linking all input is merged into a single
  module.
`thin`::: Use clang's ThinLTO: each compiled file contains a summary of the
  module, these summaries are merged into a single index. This allows to avoid
  merging all modules together, which greatly reduces linking time.
`fat`::: Produce gcc's fat LTO objects: compiled files contain both the
  intermidiate language suitable for LTO and object code suitable for regular
  linking.

|# # end::doc[]

feature.subfeature lto
    : mode
    : full thin fat
    : propagated ;