1string(APPEND _ANDROID_ABI_INIT_CFLAGS 2 " -funwind-tables" 3 " -no-canonical-prefixes" 4 ) 5 6if(CMAKE_ANDROID_NDK AND NOT CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED AND NOT CMAKE_ANDROID_NDK_DEPRECATED_HEADERS) 7 string(APPEND _ANDROID_ABI_INIT_CFLAGS " -D__ANDROID_API__=${CMAKE_SYSTEM_VERSION}") 8endif() 9 10if(NOT DEFINED CMAKE_POSITION_INDEPENDENT_CODE 11 AND NOT CMAKE_SYSTEM_VERSION VERSION_LESS 16) 12 set(CMAKE_POSITION_INDEPENDENT_CODE ON) 13endif() 14 15cmake_policy(GET CMP0083 _CMP0083) 16if(_CMP0083 STREQUAL NEW) 17 # PIE Flags are managed by compiler configuration files 18 if(CMAKE_SYSTEM_VERSION VERSION_GREATER_EQUAL 16) 19 # ensure PIE flags are passed to the linker 20 set(CMAKE_C_LINK_PIE_SUPPORTED YES CACHE INTERNAL "PIE (C)") 21 set(CMAKE_CXX_LINK_PIE_SUPPORTED YES CACHE INTERNAL "PIE (CXX)") 22 if(CMAKE_SYSTEM_VERSION VERSION_GREATER_EQUAL 21) 23 # no PIE executable are no longer supported 24 set(CMAKE_C_LINK_NO_PIE_SUPPORTED NO CACHE INTERNAL "NO_PIE (C)") 25 set(CMAKE_CXX_LINK_NO_PIE_SUPPORTED NO CACHE INTERNAL "NO_PIE (CXX)") 26 endif() 27 endif() 28else() 29 if(CMAKE_POSITION_INDEPENDENT_CODE) 30 string(APPEND _ANDROID_ABI_INIT_EXE_LDFLAGS " -fPIE -pie") 31 endif() 32endif() 33unset(_CMP0083) 34 35string(APPEND _ANDROID_ABI_INIT_EXE_LDFLAGS " -Wl,--gc-sections") 36 37if(NOT _ANDROID_ABI_INIT_EXE_LDFLAGS_NO_nocopyreloc) 38 string(APPEND _ANDROID_ABI_INIT_EXE_LDFLAGS " -Wl,-z,nocopyreloc") 39endif() 40