Commit c54fc821 authored by Brad King's avatar Brad King

Merge branch 'android-pie-cmp0083' into release-3.14

Merge-request: !3459
parents f3e9a6ff 9e99a95c
......@@ -28,6 +28,12 @@ This policy was introduced in CMake version 3.14. Use the
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
......
......@@ -12,6 +12,26 @@ if(NOT DEFINED CMAKE_POSITION_INDEPENDENT_CODE
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
endif()
cmake_policy(GET CMP0083 _CMP0083)
if(_CMP0083 STREQUAL NEW)
# PIE Flags are managed by compiler configuration files
if(CMAKE_SYSTEM_VERSION VERSION_GREATER_EQUAL 16)
# ensure PIE flags are passed to the linker
set(CMAKE_C_LINK_PIE_SUPPORTED YES CACHE INTERNAL "PIE (C)")
set(CMAKE_CXX_LINK_PIE_SUPPORTED YES CACHE INTERNAL "PIE (CXX)")
if(CMAKE_SYSTEM_VERSION VERSION_GREATER_EQUAL 21)
# no PIE executable are no longer supported
set(CMAKE_C_LINK_NO_PIE_SUPPORTED NO CACHE INTERNAL "NO_PIE (C)")
set(CMAKE_CXX_LINK_NO_PIE_SUPPORTED NO CACHE INTERNAL "NO_PIE (CXX)")
endif()
endif()
else()
if(CMAKE_POSITION_INDEPENDENT_CODE)
string(APPEND _ANDROID_ABI_INIT_EXE_LDFLAGS " -fPIE -pie")
endif()
endif()
unset(_CMP0083)
string(APPEND _ANDROID_ABI_INIT_EXE_LDFLAGS " -Wl,--gc-sections")
if(NOT _ANDROID_ABI_INIT_EXE_LDFLAGS_NO_nocopyreloc)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment