__init__.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. from devtools.yamaker.modules import Linkable, Switch, Words
  2. from devtools.yamaker.project import CMakeNinjaNixProject
  3. def post_install(self):
  4. m = self.yamakes["."]
  5. m.CFLAGS.remove("-DAWS_AFFINITY_METHOD=AWS_AFFINITY_METHOD_PTHREAD_ATTR")
  6. m.after(
  7. "CFLAGS",
  8. Switch(
  9. # musl does not provide pthread_attr_setaffinity_np,
  10. # use pthread_setaffinity_np after thread creation
  11. MUSL=Linkable(
  12. CFLAGS=["-DAWS_AFFINITY_METHOD=AWS_AFFINITY_METHOD_PTHREAD"],
  13. ),
  14. OS_DARWIN=Linkable(
  15. # MacOS does not provide cpu_set_t structure
  16. CFLAGS=["-DAWS_AFFINITY_METHOD=AWS_AFFINITY_METHOD_NONE"],
  17. # aws_wrapped_cf_allocator uses CFAllocator.
  18. LDFLAGS=[Words("-framework", "CoreFoundation")],
  19. ),
  20. OS_WINDOWS=Linkable(
  21. CFLAGS=["-DAWS_COMMON_EXPORTS"],
  22. ),
  23. default=Linkable(
  24. CFLAGS=["-DAWS_AFFINITY_METHOD=AWS_AFFINITY_METHOD_PTHREAD_ATTR"],
  25. ),
  26. ),
  27. )
  28. # handle arch-specific SRCS
  29. m.SRCS.remove("source/arch/intel/asm/cpuid.c")
  30. m.SRCS.remove("source/arch/intel/cpuid.c")
  31. m.SRCS.remove("source/arch/intel/encoding_avx2.c")
  32. if_intel = Linkable(
  33. SRCS=[
  34. "source/arch/intel/asm/cpuid.c",
  35. "source/arch/intel/cpuid.c",
  36. ],
  37. SRC_C_AVX2=[
  38. [
  39. "source/arch/intel/encoding_avx2.c",
  40. ]
  41. ],
  42. )
  43. if_arm = Linkable(
  44. SRCS=[
  45. "source/arch/arm/asm/cpuid.c",
  46. ]
  47. )
  48. m.after(
  49. "SRCS",
  50. Switch(
  51. ARCH_X86_64=if_intel,
  52. ARCH_ARM=if_arm,
  53. ),
  54. )
  55. posix_srcs = []
  56. for src in sorted(m.SRCS):
  57. if "/posix/" in src:
  58. m.SRCS.remove(src)
  59. posix_srcs.append(src)
  60. m.after(
  61. "SRCS",
  62. Switch(
  63. {
  64. "NOT OS_WINDOWS": Linkable(SRCS=posix_srcs),
  65. }
  66. ),
  67. )
  68. # handle arch-specific CFLAGS
  69. m.CFLAGS.remove("-DHAVE_MM256_EXTRACT_EPI64")
  70. m.CFLAGS.remove("-DHAVE_AVX2_INTRINSICS")
  71. m.CFLAGS.remove("-DUSE_SIMD_ENCODING")
  72. m.after(
  73. "CFLAGS",
  74. Switch(
  75. ARCH_X86_64=Linkable(
  76. CFLAGS=[
  77. "-DHAVE_MM256_EXTRACT_EPI64",
  78. "-DHAVE_AVX2_INTRINSICS",
  79. "-DUSE_SIMD_ENCODING",
  80. ],
  81. )
  82. ),
  83. )
  84. aws_c_common = CMakeNinjaNixProject(
  85. arcdir="contrib/restricted/aws/aws-c-common",
  86. nixattr="aws-c-common",
  87. owners=["g:cpp-contrib"],
  88. flags=["-DAWS_HAVE_EXECINFO=OFF"],
  89. copy_sources=[
  90. "include/aws/common/*.inl",
  91. "source/arch/arm/asm/**/*",
  92. ],
  93. install_targets=["aws-c-common"],
  94. post_install=post_install,
  95. )