forked from ocaml/dune
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
test(ctypes): missing link flags to ocamlmklib
Signed-off-by: Frej Soya <frej.soya@gmail.com>
- Loading branch information
Showing
8 changed files
with
64 additions
and
0 deletions.
There are no files selected for viewing
4 changes: 4 additions & 0 deletions
4
test/blackbox-tests/test-cases/ctypes/bytecode-stubs-external-lib.t/dune
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
(executable | ||
(name example) | ||
(modes byte) | ||
(libraries examplelib)) |
3 changes: 3 additions & 0 deletions
3
test/blackbox-tests/test-cases/ctypes/bytecode-stubs-external-lib.t/dune-project
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
(lang dune 3.10) | ||
|
||
(using ctypes 0.3) |
2 changes: 2 additions & 0 deletions
2
test/blackbox-tests/test-cases/ctypes/bytecode-stubs-external-lib.t/example.ml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
let () = | ||
Printf.printf "%d\n" (Examplelib.C.Functions.add2 2) |
29 changes: 29 additions & 0 deletions
29
test/blackbox-tests/test-cases/ctypes/bytecode-stubs-external-lib.t/run.t
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
Build an example library as a DLL and set up the environment so that it looks | ||
like a system/distro library that can be probed with pkg-config and dynamically | ||
loaded. | ||
|
||
$ LIBEX=$(realpath "$PWD/../libexample") | ||
|
||
ocamlrun + requires CAML_LD_LIBRARY_PATH such that dlopen system call can find | ||
dllexamplelib_stub.so | ||
|
||
Explictly set {DYLD,LD}_LIBRARY_PATH at runtime for this testcase, otherwise | ||
dlopen cannot find libexample, after loading dllexamplelib_stub.so | ||
|
||
$ PKG_CONFIG_PATH="$LIBEX/pkgconfig" PKG_CONFIG_ARGN="--define-prefix" DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:$LIBEX" LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIBEX" CAML_LD_LIBRARY_PATH="$CAML_LD_LIBRARY_PATH:$PWD/_build/default/stubgen" dune exec ./example.bc | ||
Fatal error: cannot load shared library dllexamplelib_stubs | ||
Reason: $TESTCASE_ROOT/_build/default/stubgen/dllexamplelib_stubs.so: undefined symbol: example_add2 | ||
Aborted | ||
[134] | ||
|
||
Utop works with ctypes pkg-config external library. | ||
|
||
$ DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:$LIBEX" LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIBEX" PKG_CONFIG_PATH="$LIBEX/pkgconfig" PKG_CONFIG_ARGN="--define-prefix" dune utop --display=short ./ -- example.ml | ||
pkg-config stubgen/.pkg-config/libexample.cflags | ||
pkg-config stubgen/.pkg-config/libexample.libs | ||
ocamlc .utop/.utop.eobjs/byte/dune__exe__Utop.{cmi,cmo,cmt} | ||
ocamlc .utop/utop.bc | ||
Fatal error: cannot load shared library dllexamplelib_stubs | ||
Reason: $TESTCASE_ROOT/_build/default/stubgen/dllexamplelib_stubs.so: undefined symbol: example_add2 | ||
Aborted | ||
[134] |
14 changes: 14 additions & 0 deletions
14
test/blackbox-tests/test-cases/ctypes/bytecode-stubs-external-lib.t/stubgen/dune
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
(library | ||
(name examplelib) | ||
(flags (:standard -w -9-27)) | ||
(ctypes | ||
(external_library_name libexample) | ||
(build_flags_resolver pkg_config) | ||
(headers (include "example.h")) | ||
(type_description | ||
(instance Types) | ||
(functor Type_description)) | ||
(function_description | ||
(instance Functions) | ||
(functor Function_description)) | ||
(generated_entry_point C))) |
8 changes: 8 additions & 0 deletions
8
...box-tests/test-cases/ctypes/bytecode-stubs-external-lib.t/stubgen/function_description.ml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
open Ctypes | ||
|
||
module Types = Types_generated | ||
|
||
module Functions (F : Ctypes.FOREIGN) = struct | ||
open F | ||
let add2 = foreign "example_add2" (int @-> returning int) | ||
end |
3 changes: 3 additions & 0 deletions
3
...lackbox-tests/test-cases/ctypes/bytecode-stubs-external-lib.t/stubgen/type_description.ml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
module Types (F : Ctypes.TYPE) = struct | ||
|
||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters