build.rs 4.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. fn main() {
  2. cxx_build::bridge("src/lib.rs")
  3. .file("src/AssociativeContainers.cc")
  4. .file("src/Ciphertext.cc")
  5. .file("src/CryptoContext.cc")
  6. .file("src/CryptoParametersBase.cc")
  7. .file("src/DCRTPoly.cc")
  8. .file("src/DecryptResult.cc")
  9. .file("src/EncodingParams.cc")
  10. .file("src/EvalKey.cc")
  11. .file("src/KeyPair.cc")
  12. .file("src/LWEPrivateKey.cc")
  13. .file("src/Params.cc")
  14. .file("src/Plaintext.cc")
  15. .file("src/PrivateKey.cc")
  16. .file("src/PublicKey.cc")
  17. .file("src/SchemeBase.cc")
  18. .file("src/SequenceContainers.cc")
  19. .file("src/SerialDeserial.cc")
  20. .file("src/Trapdoor.cc")
  21. .include("/usr/local/include/openfhe")
  22. .include("/usr/local/include/openfhe/third-party/include")
  23. .include("/usr/local/include/openfhe/core")
  24. .include("/usr/local/include/openfhe/pke")
  25. .include("/usr/local/include/openfhe/binfhe")
  26. .include("./openfhe-development/install/include") // GitHub Actions
  27. .include("./openfhe-development/install/include/openfhe") // GitHub Actions
  28. .include("./openfhe-development/install/include/openfhe/third-party/include") // GitHub Actions
  29. .include("./openfhe-development/install/include/openfhe/core") // GitHub Actions
  30. .include("./openfhe-development/install/include/openfhe/pke") // GitHub Actions
  31. .include("./openfhe-development/install/include/openfhe/binfhe") // GitHub Actions
  32. .flag_if_supported("-std=c++17")
  33. .flag_if_supported("-Wall")
  34. .flag_if_supported("-Werror")
  35. .flag_if_supported("-O3")
  36. .flag_if_supported("-fopenmp") // [-Wunknown-pragmas]
  37. .flag_if_supported("-Wno-parentheses") // [-Wparentheses]
  38. .flag_if_supported("-Wno-unused-parameter") // [-Wunused-parameter]
  39. .flag_if_supported("-Wno-missing-field-initializers") // [-Wmissing-field-initializers]
  40. .flag_if_supported("-Wno-unused-function") // [-Wunused-function]
  41. .compile("openfhe");
  42. println!("cargo::rerun-if-changed=src/lib.rs");
  43. println!("cargo::rerun-if-changed=src/AssociativeContainers.h");
  44. println!("cargo::rerun-if-changed=src/AssociativeContainers.cc");
  45. println!("cargo::rerun-if-changed=src/Ciphertext.h");
  46. println!("cargo::rerun-if-changed=src/Ciphertext.cc");
  47. println!("cargo::rerun-if-changed=src/CryptoContext.h");
  48. println!("cargo::rerun-if-changed=src/CryptoContext.cc");
  49. println!("cargo::rerun-if-changed=src/CryptoParametersBase.h");
  50. println!("cargo::rerun-if-changed=src/CryptoParametersBase.cc");
  51. println!("cargo::rerun-if-changed=src/DCRTPoly.h");
  52. println!("cargo::rerun-if-changed=src/DCRTPoly.cc");
  53. println!("cargo::rerun-if-changed=src/DecryptResult.h");
  54. println!("cargo::rerun-if-changed=src/DecryptResult.cc");
  55. println!("cargo::rerun-if-changed=src/EncodingParams.h");
  56. println!("cargo::rerun-if-changed=src/EncodingParams.cc");
  57. println!("cargo::rerun-if-changed=src/EvalKey.h");
  58. println!("cargo::rerun-if-changed=src/EvalKey.cc");
  59. println!("cargo::rerun-if-changed=src/KeyPair.h");
  60. println!("cargo::rerun-if-changed=src/KeyPair.cc");
  61. println!("cargo::rerun-if-changed=src/LWEPrivateKey.h");
  62. println!("cargo::rerun-if-changed=src/LWEPrivateKey.cc");
  63. println!("cargo::rerun-if-changed=src/Params.h");
  64. println!("cargo::rerun-if-changed=src/Params.cc");
  65. println!("cargo::rerun-if-changed=src/Plaintext.h");
  66. println!("cargo::rerun-if-changed=src/Plaintext.cc");
  67. println!("cargo::rerun-if-changed=src/PrivateKey.h");
  68. println!("cargo::rerun-if-changed=src/PrivateKey.cc");
  69. println!("cargo::rerun-if-changed=src/PublicKey.h");
  70. println!("cargo::rerun-if-changed=src/PublicKey.cc");
  71. println!("cargo::rerun-if-changed=src/SchemeBase.h");
  72. println!("cargo::rerun-if-changed=src/SchemeBase.cc");
  73. println!("cargo::rerun-if-changed=src/SequenceContainers.h");
  74. println!("cargo::rerun-if-changed=src/SequenceContainers.cc");
  75. println!("cargo::rerun-if-changed=src/SerialDeserial.h");
  76. println!("cargo::rerun-if-changed=src/SerialDeserial.cc");
  77. // linking openFHE
  78. println!("cargo::rustc-link-arg=-L/usr/local/lib");
  79. println!("cargo::rustc-link-arg=-L./openfhe-development/install/lib"); // GitHub Actions
  80. println!("cargo::rustc-link-arg=-lOPENFHEpke");
  81. println!("cargo::rustc-link-arg=-lOPENFHEbinfhe");
  82. println!("cargo::rustc-link-arg=-lOPENFHEcore");
  83. // linking OpenMP
  84. println!("cargo::rustc-link-arg=-fopenmp");
  85. // necessary to avoid LD_LIBRARY_PATH
  86. println!("cargo::rustc-link-arg=-Wl,-rpath,/usr/local/lib");
  87. }