feat(third_party/bazel): Check in rules_haskell from Tweag
This commit is contained in:
parent
2eb1dc26e4
commit
f723b8b878
479 changed files with 51484 additions and 0 deletions
52
third_party/bazel/rules_haskell/tests/indirect-link/BUILD.bazel
vendored
Normal file
52
third_party/bazel/rules_haskell/tests/indirect-link/BUILD.bazel
vendored
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
load("@io_tweag_rules_haskell//haskell:haskell.bzl", "haskell_library", "haskell_test", "haskell_toolchain_library")
|
||||
|
||||
cc_library(
|
||||
name = "cbits-indirect",
|
||||
srcs = ["cbits/impl.c"],
|
||||
)
|
||||
|
||||
cc_library(
|
||||
name = "cbits",
|
||||
srcs = ["cbits/intf.c"],
|
||||
deps = ["cbits-indirect"],
|
||||
)
|
||||
|
||||
haskell_library(
|
||||
name = "mypkg",
|
||||
srcs = ["src/MyModule.hs"],
|
||||
src_strip_prefix = "src",
|
||||
deps = [
|
||||
":cbits",
|
||||
"//tests/hackage:base",
|
||||
],
|
||||
)
|
||||
|
||||
haskell_test(
|
||||
name = "indirect-link-static",
|
||||
srcs = ["test/Main.hs"],
|
||||
linkstatic = True,
|
||||
src_strip_prefix = "test",
|
||||
deps = [
|
||||
":mypkg",
|
||||
"//tests/hackage:base",
|
||||
],
|
||||
)
|
||||
|
||||
haskell_test(
|
||||
name = "indirect-link-dynamic",
|
||||
srcs = ["test/Main.hs"],
|
||||
linkstatic = False,
|
||||
src_strip_prefix = "test",
|
||||
deps = [
|
||||
":mypkg",
|
||||
"//tests/hackage:base",
|
||||
],
|
||||
)
|
||||
|
||||
test_suite(
|
||||
name = "indirect-link",
|
||||
tests = [
|
||||
":indirect-link-dynamic",
|
||||
":indirect-link-static",
|
||||
],
|
||||
)
|
||||
9
third_party/bazel/rules_haskell/tests/indirect-link/cbits/impl.c
vendored
Normal file
9
third_party/bazel/rules_haskell/tests/indirect-link/cbits/impl.c
vendored
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
static int thing;
|
||||
|
||||
int real_get_thing(void) {
|
||||
return thing;
|
||||
}
|
||||
|
||||
void real_set_thing(int value) {
|
||||
thing = value;
|
||||
}
|
||||
10
third_party/bazel/rules_haskell/tests/indirect-link/cbits/intf.c
vendored
Normal file
10
third_party/bazel/rules_haskell/tests/indirect-link/cbits/intf.c
vendored
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
extern int real_get_thing(void);
|
||||
extern void real_set_thing(int value);
|
||||
|
||||
int get_thing(void) {
|
||||
return real_get_thing();
|
||||
}
|
||||
|
||||
void set_thing(int value) {
|
||||
real_set_thing(value);
|
||||
}
|
||||
11
third_party/bazel/rules_haskell/tests/indirect-link/src/MyModule.hs
vendored
Normal file
11
third_party/bazel/rules_haskell/tests/indirect-link/src/MyModule.hs
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
module MyModule where
|
||||
|
||||
foreign import ccall get_thing :: IO Int
|
||||
|
||||
getThing :: IO Int
|
||||
getThing = get_thing
|
||||
|
||||
foreign import ccall set_thing :: Int -> IO ()
|
||||
|
||||
setThing :: Int -> IO ()
|
||||
setThing = set_thing
|
||||
9
third_party/bazel/rules_haskell/tests/indirect-link/test/Main.hs
vendored
Normal file
9
third_party/bazel/rules_haskell/tests/indirect-link/test/Main.hs
vendored
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
module Main (main) where
|
||||
|
||||
import qualified MyModule
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
print =<< MyModule.getThing
|
||||
MyModule.setThing 123
|
||||
print =<< MyModule.getThing
|
||||
Loading…
Add table
Add a link
Reference in a new issue