BUCK
 1  # src/examples/haskell-cxx/BUCK
 2  #
 3  # Haskell calling C++ via FFI
 4  #
 5  # Demonstrates:
 6  #   - foreign import ccall for C++ functions
 7  #   - Pointer passing (arrays, strings)
 8  #   - Opaque handle pattern for C++ objects
 9  #   - Memory management across language boundary
10  #
11  # Build: buck2 build //src/examples/haskell-cxx:test_ffi
12  # Run:   buck2 run //src/examples/haskell-cxx:test_ffi
13  
14  load("@toolchains//:haskell.bzl", "haskell_ffi_binary")
15  
16  haskell_ffi_binary(
17      name = "test_ffi",
18      hs_srcs = [
19          "FFI.hs",
20          "Main.hs",
21      ],
22      cxx_srcs = ["ffi.cpp"],
23      cxx_headers = ["ffi.h"],
24      visibility = ["PUBLIC"],
25  )