ya.make 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. LIBRARY()
  2. LICENSE(Apache-2.0)
  3. VERSION(1.0)
  4. LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
  5. OWNER(
  6. g:contrib
  7. g:cpp-contrib
  8. )
  9. NO_UTIL()
  10. NO_COMPILER_WARNINGS()
  11. NO_JOIN_SRC()
  12. IF (GCC AND USE_LTO)
  13. CFLAGS(-DCRCUTIL_FORCE_ASM_CRC32C=1)
  14. ENDIF()
  15. IF (ARCH_I386 OR ARCH_X86_64)
  16. IF (OS_WINDOWS)
  17. SRCS(
  18. multiword_64_64_cl_i386_mmx.cc
  19. )
  20. ELSEIF (OS_ANDROID AND ARCH_I386)
  21. # 32-bit Android has some problems with register allocation, so we fall back to default implementation
  22. ELSE()
  23. IF (CLANG)
  24. CFLAGS(-DCRCUTIL_USE_MM_CRC32=1)
  25. IF (ARCH_I386)
  26. # clang doesn't support this as optimization attribute and has problems with register allocation
  27. SRC(
  28. multiword_64_64_gcc_i386_mmx.cc
  29. -fomit-frame-pointer
  30. )
  31. ELSE()
  32. SRCS(
  33. multiword_64_64_gcc_i386_mmx.cc
  34. )
  35. ENDIF()
  36. ELSE()
  37. CFLAGS(
  38. -mcrc32
  39. -DCRCUTIL_USE_MM_CRC32=1
  40. )
  41. ENDIF()
  42. SRCS(
  43. multiword_128_64_gcc_amd64_sse2.cc
  44. multiword_64_64_gcc_amd64_asm.cc
  45. )
  46. ENDIF()
  47. IF (OS_WINDOWS)
  48. SRCS(
  49. crc32c_sse4.cc
  50. )
  51. ELSE()
  52. SRC_CPP_SSE4(crc32c_sse4.cc)
  53. ENDIF()
  54. ENDIF()
  55. SRCS(
  56. interface.cc
  57. multiword_64_64_intrinsic_i386_mmx.cc
  58. )
  59. END()