feat(third_party/bazel): Check in rules_haskell from Tweag

This commit is contained in:
Vincent Ambo 2019-07-04 11:18:12 +01:00
parent 2eb1dc26e4
commit f723b8b878
479 changed files with 51484 additions and 0 deletions

View 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",
],
)

View file

@ -0,0 +1,9 @@
static int thing;
int real_get_thing(void) {
return thing;
}
void real_set_thing(int value) {
thing = value;
}

View 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);
}

View 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

View 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