CMP0069
-------

.. versionadded:: 3.9

:prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` is enforced when enabled.

CMake 3.9 and newer prefer to add IPO flags whenever the
:prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` target property is enabled and
produce an error if flags are not known to CMake for the current compiler.
Since a given compiler may not support IPO flags in all environments in which
it is used, it is now the project's responsibility to use the
:module:`CheckIPOSupported` module to check for support before enabling the
:prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` target property.  This approach
allows a project to conditionally activate IPO when supported.  It also
allows an end user to set the :variable:`CMAKE_INTERPROCEDURAL_OPTIMIZATION`
variable in an environment known to support IPO even if the project does
not enable the property.

Since CMake 3.8 and lower only honored :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION`
for the Intel compiler on Linux, some projects may unconditionally enable the
target property.  Policy ``CMP0069`` provides compatibility with such projects.

This policy takes effect whenever the IPO property is enabled.  The ``OLD``
behavior for this policy is to add IPO flags only for Intel compiler on Linux.
The ``NEW`` behavior for this policy is to add IPO flags for the current
compiler or produce an error if CMake does not know the flags.

This policy was introduced in CMake version 3.9.  CMake version
|release| warns when the policy is not set and uses ``OLD`` behavior.
Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
explicitly.

.. include:: DEPRECATED.txt

Examples
^^^^^^^^

Behave like CMake 3.8 and do not apply any IPO flags except for Intel compiler
on Linux:

.. code-block:: cmake

  cmake_minimum_required(VERSION 3.8)
  project(foo)

  # ...

  set_property(TARGET ... PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)

Use the :module:`CheckIPOSupported` module to detect whether IPO is
supported by the current compiler, environment, and CMake version.
Produce a fatal error if support is not available:

.. code-block:: cmake

  cmake_minimum_required(VERSION 3.9) # CMP0069 NEW
  project(foo)

  include(CheckIPOSupported)
  check_ipo_supported()

  # ...

  set_property(TARGET ... PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)

Apply IPO flags only if compiler supports it:

.. code-block:: cmake

  cmake_minimum_required(VERSION 3.9) # CMP0069 NEW
  project(foo)

  include(CheckIPOSupported)

  # ...

  check_ipo_supported(RESULT result)
  if(result)
    set_property(TARGET ... PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
  endif()

Apply IPO flags without any checks.  This may lead to build errors if IPO
is not supported by the compiler in the current environment.  Produce an
error if CMake does not know IPO flags for the current compiler:

.. code-block:: cmake

  cmake_minimum_required(VERSION 3.9) # CMP0069 NEW
  project(foo)

  # ...

  set_property(TARGET ... PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
