__init__.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. from devtools.yamaker.modules import Linkable, Switch
  2. from devtools.yamaker.project import CMakeNinjaNixProject
  3. def post_install(self):
  4. with self.yamakes["."] as m:
  5. pclmul_srcs = []
  6. avx2_srcs = []
  7. avx2_asm_srcs = []
  8. avx512_srcs = []
  9. for src in sorted(m.SRCS):
  10. if src.endswith("_pclmul.c"):
  11. m.SRCS.remove(src)
  12. pclmul_srcs.append(src)
  13. elif src.endswith("_avx2.c"):
  14. m.SRCS.remove(src)
  15. avx2_srcs.append(src)
  16. elif src.endswith("_avx2.S"):
  17. m.SRCS.remove(src)
  18. avx2_asm_srcs.append(src)
  19. elif src.endswith("_avx512.c"):
  20. m.SRCS.remove(src)
  21. avx512_srcs.append(src)
  22. x86_flags = [
  23. "-DS2N_CPUID_AVAILABLE",
  24. "-DS2N_KYBER512R3_AVX2_BMI2",
  25. ]
  26. for flag in x86_flags:
  27. m.CFLAGS.remove(flag)
  28. x86_only_section = Linkable(
  29. CFLAGS=x86_flags,
  30. SRCS=avx2_asm_srcs,
  31. )
  32. for src in pclmul_srcs:
  33. x86_only_section.after("SRCS", f"SRC_C_PCLMUL({src})")
  34. for src in avx2_srcs:
  35. x86_only_section.after("SRCS", f"SRC_C_AVX2({src})")
  36. for src in avx512_srcs:
  37. x86_only_section.after("SRCS", f"SRC_C_AVX512({src})")
  38. # Support Darwin.
  39. m.CFLAGS.remove("-DS2N_FEATURES_AVAILABLE")
  40. m.CFLAGS.remove("-DS2N_LINUX_SENDFILE")
  41. m.CFLAGS.remove("-DS2N_KTLS_SUPPORTED")
  42. m.after(
  43. "CFLAGS",
  44. Switch(
  45. OS_LINUX=Linkable(
  46. CFLAGS=[
  47. "-DS2N_FEATURES_AVAILABLE",
  48. "-DS2N_LINUX_SENDFILE",
  49. "-DS2N_KTLS_SUPPORTED",
  50. ],
  51. )
  52. ),
  53. )
  54. # Support musl.
  55. m.CFLAGS.remove("-DS2N_STACKTRACE")
  56. m.after("CFLAGS", Switch({"NOT MUSL": Linkable(CFLAGS=["-DS2N_STACKTRACE"])}))
  57. m.after(
  58. "CFLAGS",
  59. Switch({"ARCH_X86_64": x86_only_section}),
  60. )
  61. s2n = CMakeNinjaNixProject(
  62. arcdir="contrib/restricted/aws/s2n",
  63. nixattr="s2n",
  64. disable_includes=[
  65. "openssl/mem.h",
  66. "openssl/provider.h",
  67. "openssl/hkdf.h",
  68. "sys/isa_defs.h",
  69. ],
  70. post_install=post_install,
  71. )