string(APPEND _ANDROID_ABI_INIT_CFLAGS " -funwind-tables" " -no-canonical-prefixes" ) if(CMAKE_ANDROID_NDK AND NOT CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED AND NOT CMAKE_ANDROID_NDK_DEPRECATED_HEADERS) string(APPEND _ANDROID_ABI_INIT_CFLAGS " -D__ANDROID_API__=${CMAKE_SYSTEM_VERSION}") endif() if(NOT DEFINED CMAKE_POSITION_INDEPENDENT_CODE AND NOT CMAKE_SYSTEM_VERSION VERSION_LESS 16) 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) string(APPEND _ANDROID_ABI_INIT_EXE_LDFLAGS " -Wl,-z,nocopyreloc") endif()