| 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() |