From 0b63a8e4950e4628c36f812210cfdf40a28be034 Mon Sep 17 00:00:00 2001 From: Miguel Date: Sat, 30 Mar 2019 16:23:07 +0100 Subject: added simple ffi example calling c from hask --- ffi/Bar.c | 3 +++ ffi/Makefile | 4 +++- ffi/barmain.hs | 6 ++++++ 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 ffi/Bar.c create mode 100644 ffi/barmain.hs (limited to 'ffi') diff --git a/ffi/Bar.c b/ffi/Bar.c new file mode 100644 index 0000000..3bf5008 --- /dev/null +++ b/ffi/Bar.c @@ -0,0 +1,3 @@ +double bar(double v){ + return v+v*v; +} diff --git a/ffi/Makefile b/ffi/Makefile index 6f098a6..849a8de 100644 --- a/ffi/Makefile +++ b/ffi/Makefile @@ -1,9 +1,11 @@ hask_from_c: Foo.hs foomain.c stack ghc -- Foo.hs stack ghc -- -no-hs-main Foo.o foomain.c -o hask_from_c - +c_from_hask: Bar.c barmain.hs + stack ghc -- barmain.hs Bar.c -o c_from_hask clean: - rm *.o - rm *.hi - rm Foo_stub.h - rm hask_from_c + - rm c_from_hask diff --git a/ffi/barmain.hs b/ffi/barmain.hs new file mode 100644 index 0000000..07e81ae --- /dev/null +++ b/ffi/barmain.hs @@ -0,0 +1,6 @@ +foreign import ccall "exp" c_exp :: Double -> Double +foreign import ccall "bar" c_bar :: Double -> Double + +main = do + print $ c_exp 2 + print $ c_bar 2 -- cgit v1.2.3