diff options
author | Vincent Ambo <tazjin@google.com> | 2019-07-04T10·18+0100 |
---|---|---|
committer | Vincent Ambo <tazjin@google.com> | 2019-07-04T10·18+0100 |
commit | f723b8b878a3c4a4687b9e337a875500bebb39b1 (patch) | |
tree | e85204cf042c355e90cff61c111e7d8cd15df311 /third_party/bazel/rules_haskell/tests/cc_haskell_import/BUILD.bazel | |
parent | 2eb1dc26e42ffbdc168f05ef744bd4b4f3e4c36f (diff) |
feat(third_party/bazel): Check in rules_haskell from Tweag r/17
Diffstat (limited to 'third_party/bazel/rules_haskell/tests/cc_haskell_import/BUILD.bazel')
-rw-r--r-- | third_party/bazel/rules_haskell/tests/cc_haskell_import/BUILD.bazel | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/third_party/bazel/rules_haskell/tests/cc_haskell_import/BUILD.bazel b/third_party/bazel/rules_haskell/tests/cc_haskell_import/BUILD.bazel new file mode 100644 index 000000000000..c89631450059 --- /dev/null +++ b/third_party/bazel/rules_haskell/tests/cc_haskell_import/BUILD.bazel @@ -0,0 +1,70 @@ +load( + "@io_tweag_rules_haskell//haskell:haskell.bzl", + "haskell_library", +) + +package(default_testonly = 1) + +haskell_library( + name = "hs-lib-a", + srcs = ["LibA.hs"], + deps = [ + "//tests/data:ourclibrary", + "//tests/hackage:base", + ], +) + +haskell_library( + name = "hs-lib-b", + srcs = ["LibB.hs"], + deps = [ + ":hs-lib-a", + "//tests/hackage:base", + ], +) + +cc_binary( + name = "cc-bin", + srcs = [ + "main.c", + ], + # TODO support linking with static haskell libraries. + linkstatic = False, + tags = ["requires_threaded_rts"], + visibility = ["//tests:__subpackages__"], + deps = [ + ":hs-lib-b", + "@ghc//:threaded-rts", + ], +) + +# We go one step further and use the Haskell library from above +# to build a static .so which is then loaded with a Python script +# and calls the Haskell function constructed from GHC C FFI. + +# shared library which python will dlopen +cc_binary( + name = "hs-lib-b-wrapped.so", + linkshared = 1, + linkstatic = 0, + tags = ["requires_threaded_rts"], + visibility = ["//tests:__subpackages__"], + deps = [ + ":hs-lib-b", + "@ghc//:threaded-rts", + ], +) + +# just dlopens hb-lib-b-wrapped.so and prints it +py_binary( + name = "python_add_one", + srcs = ["python_add_one.py"], + data = [ + ":hs-lib-b-wrapped.so", + ], + default_python_version = "PY3", + srcs_version = "PY3ONLY", + tags = ["requires_threaded_rts"], + visibility = ["//tests:__subpackages__"], + deps = ["@bazel_tools//tools/python/runfiles"], +) |