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.
Merge pull request ocaml#8784 from frejsoya/ctypes-add-stubs-link-flags
Add link flags ocamlmklib when using ctypes stubs.
- Loading branch information
Showing
10 changed files
with
67 additions
and
1 deletion.
There are no files selected for viewing
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 @@ | ||
- Add link flags to to ocamlmklib for ctypes stubs (#8784, @frejsoya) |
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
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) |
23 changes: 23 additions & 0 deletions
23
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,23 @@ | ||
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 | ||
4 | ||
|
||
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 | ||
4 |
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