Skip to content

Commit

Permalink
Add test for C source depending on Haskell C stub
Browse files Browse the repository at this point in the history
  • Loading branch information
alt-romes committed Jan 9, 2024
1 parent 6389954 commit 27da2ee
Show file tree
Hide file tree
Showing 6 changed files with 57 additions and 0 deletions.
13 changes: 13 additions & 0 deletions cabal-testsuite/PackageTests/FFI/CSourceDependsStub/Lib.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{-# LANGUAGE ForeignFunctionInterface #-}

module Lib where

import Foreign.C (CInt (..))

hello :: IO CInt
hello = do
putStrLn "hello!"
return 11

foreign export ccall "hello" hello :: IO CInt

16 changes: 16 additions & 0 deletions cabal-testsuite/PackageTests/FFI/CSourceDependsStub/Main.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{-# LANGUAGE ForeignFunctionInterface #-}

module Main where

import Foreign.C (CInt (..))

foreign import ccall "meaning_of_life_c"
meaning_of_life_c :: IO CInt

main :: IO ()
main = do
secret <- meaning_of_life_c
-- The value 11 comes from the exported Lib.hello
if (secret == 11)
then putStrLn ("The secret is " ++ show secret)
else error ("Expected value 11, got " ++ show secret)
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
packages: .
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
-- Tests whether an extra C source can depend on a _stub header generated by
-- GHC compiling a Haskell module with a foreign export declaration

import Test.Cabal.Prelude
main = cabalTest $ do
cabal "v2-build" []
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#include "Lib_stub.h"

int meaning_of_life_c() {
return hello();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
cabal-version: 2.2
name: csourcedepsstub
version: 0.1
build-type: Simple

library
build-depends: base
default-language: Haskell2010
include-dirs: cbits
c-sources: cbits/clib.c
exposed-modules: Lib

executable csourcedeps-exe
main-is: Main.hs
build-depends: base, csourcedepsstub
default-language: Haskell2010

0 comments on commit 27da2ee

Please sign in to comment.