add_includedirs("./include/")
add_requires("python 3.10", { alias = "python", system = false })
add_requires("pybind11")
add_requires("cuda")
add_requires("openmp")
set_targetdir("./python/")
add_cxxflags("-O3 -ftree-vectorize -fstrict-aliasing -march=native -mtune=native -fopt-info-vec-optimized")

target("proba_reach")
  set_kind("shared")
  add_files("./src/proba_reach.cpp", "./src/utils.cpp", "./src/random_levy.cpp")
  add_packages("python", "pybind11", "openmp")
  set_filename("proba_reach_cpp.so")

target("estimation")
  set_kind("shared")
  add_files("./src/estimation.cpp", "./src/utils.cpp")
  add_packages("python", "pybind11", "openmp")
  set_filename("estimation_cpp.so")

target("proba_reach_gpu")
  set_kind("shared")
  add_files("./src/proba_reach_gpu.cpp", "./src/proba_reach_gpu.cu", "./src/utils.cpp")
  add_packages("python", "pybind11", "cuda")
  add_cugencodes("native")
  set_filename("proba_reach_gpu.so")

target("delta_abs_alpha")
  set_kind("shared")
  add_files("./src/delta_abs_alpha.cu")
  add_packages("python", "pybind11", "cuda")
  add_cugencodes("native")
  set_filename("delta_abs_alpha.so")

