ya.make 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. RESOURCES_LIBRARY()
  2. LICENSE(Service-Prebuilt-Tool)
  3. IF (CLANG16)
  4. DEFAULT(LLD_VERSION 16)
  5. ELSE()
  6. DEFAULT(LLD_VERSION 14)
  7. ENDIF()
  8. IF (LLD_VERSION == 14)
  9. DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE_BY_JSON(LLD_ROOT lld14.json)
  10. ELSEIF (LLD_VERSION == 16)
  11. DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE_BY_JSON(LLD_ROOT lld16.json)
  12. ENDIF()
  13. IF (OS_ANDROID)
  14. # Use LLD shipped with Android NDK.
  15. LDFLAGS(
  16. -fuse-ld=lld
  17. )
  18. IF (ANDROID_API < 29)
  19. # Dynamic linker on Android does not support lld's default rosegment
  20. # prior to API Level 29 (Android Q)
  21. # See:
  22. # https://android.googlesource.com/platform/ndk/+/master/docs/BuildSystemMaintainers.md#additional-required-arguments
  23. # https://github.com/android/ndk/issues/1196
  24. LDFLAGS(
  25. -Wl,--no-rosegment
  26. )
  27. ENDIF()
  28. # Enable optimized relocations format (e.g. .rela.dyn section) to reduce binary size
  29. # See:
  30. # https://android.googlesource.com/platform/ndk/+/master/docs/BuildSystemMaintainers.md#relr-and-relocation-packing
  31. IF (ANDROID_API >= 30)
  32. LDFLAGS(-Wl,--pack-dyn-relocs=android+relr)
  33. ELSEIF (ANDROID_API >= 28)
  34. LDFLAGS(-Wl,--pack-dyn-relocs=android+relr,--use-android-relr-tags)
  35. ELSEIF (ANDROID_API >= 23)
  36. LDFLAGS(-Wl,--pack-dyn-relocs=android)
  37. ENDIF()
  38. ELSEIF (OS_LINUX)
  39. LDFLAGS(
  40. -fuse-ld=lld
  41. --ld-path=${LLD_ROOT_RESOURCE_GLOBAL}/ld.lld
  42. # dynlinker on auld ubuntu versions can not handle .rodata stored in standalone segment [citation needed]
  43. -Wl,--no-rosegment
  44. # add build-id to binaries to allow external tools check equality of binaries
  45. -Wl,--build-id=sha1
  46. )
  47. ELSEIF (OS_DARWIN OR OS_IOS)
  48. IF (MAPSMOBI_BUILD_TARGET AND XCODE)
  49. LDFLAGS(
  50. -fuse-ld=${LLD_ROOT_RESOURCE_GLOBAL}/ld64.lld
  51. )
  52. ELSEIF (XCODE)
  53. LDFLAGS(-DYA_XCODE)
  54. ELSE()
  55. LDFLAGS(
  56. -fuse-ld=lld
  57. --ld-path=${LLD_ROOT_RESOURCE_GLOBAL}/ld64.lld
  58. # FIXME: Remove fake linker version flag when clang 16 version arrives
  59. -mlinker-version=705
  60. )
  61. ENDIF()
  62. ELSEIF (OS_EMSCRIPTEN)
  63. LDFLAGS(
  64. -fuse-ld=${LLD_ROOT_RESOURCE_GLOBAL}/wasm-ld
  65. # FIXME: Linker does not capture "ld-path" and therefore it can not find "wasm-ld"
  66. )
  67. ENDIF()
  68. END()