CMP0083
-------

To control generation of Position Independent Executable (``PIE``) or not, some
flags are required at link time.

CMake 3.13 and lower did not add these link flags when
:prop_tgt:`POSITION_INDEPENDENT_CODE` is set.

The ``OLD`` behavior for this policy is to not manage ``PIE`` link flags. The
``NEW`` behavior is to add link flags if :prop_tgt:`POSITION_INDEPENDENT_CODE`
is set:

* Set to ``TRUE``: flags to produce a position independent executable are
  passed to the linker step. For example ``-pie`` for ``GCC``.
* Set to ``FALSE``: flags not to produce a position independent executable are
  passed to the linker step. For example ``-no-pie`` for ``GCC``.
* Not set: no flags are passed to the linker step.

Since a given linker may not support ``PIE`` flags in all environments in
which it is used, it is the project's responsibility to use the
:module:`CheckPIESupported` module to check for support to ensure that the
:prop_tgt:`POSITION_INDEPENDENT_CODE` target property for executables will be
honored at link time.

This policy was introduced in CMake version 3.14. Use the
:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
Unlike most policies, CMake version |release| does not warn when this policy is
not set and simply uses ``OLD`` behavior.

.. Note::

   Android platform has a special handling of ``PIE`` so it is not required
   to use the :module:`CheckPIESupported` module to ensure flags are passed to
   the linker.

.. include:: DEPRECATED.txt

Examples
^^^^^^^^

Behave like CMake 3.13 and do not apply any ``PIE`` flags at link stage.

.. code-block:: cmake

  cmake_minimum_required(VERSION 3.13)
  project(foo)

  # ...

  add_executable(foo ...)
  set_property(TARGET foo PROPERTY POSITION_INDEPENDENT_CODE TRUE)

Use the :module:`CheckPIESupported` module to detect whether ``PIE`` is
supported by the current linker and environment.  Apply ``PIE`` flags only
if the linker supports them.

.. code-block:: cmake

  cmake_minimum_required(VERSION 3.14) # CMP0083 NEW
  project(foo)

  include(CheckPIESupported)
  check_pie_supported()

  # ...

  add_executable(foo ...)
  set_property(TARGET foo PROPERTY POSITION_INDEPENDENT_CODE TRUE)
