abi-common.cmake 1.4 KB

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