AtlatestRepositorysigil-ffi

sigil-ffi / treepackage.sgl

1;;; sigil-ffi - Dynamic Foreign Function Interface
2;;;
3;;; Provides dynamic FFI so Sigil programs can call C library functions
4;;; at runtime without writing C glue code. Uses dyncall for portable
5;;; calling convention support including struct-by-value passing.
6
7(package
8 name: "sigil-ffi"
9 version: "0.16.3"
10 sigil: "^0.17"
11 description: "Dynamic foreign function interface for Sigil"
12 url: "https://codeberg.org/sigil/sigil-ffi"
13 license: "BSD-3-Clause"
14 authors: (list "David Wilson <[email protected]>")
16 dependencies: (list
17 )
19 ;; Native library definition
20 libraries: (list
21 (library
22 name: 'sigil-ffi
23 c-sources: '("native/ffi.c"
24 "vendor/dyncall/dyncall/dyncall_api.c"
25 "vendor/dyncall/dyncall/dyncall_callvm.c"
26 "vendor/dyncall/dyncall/dyncall_callvm_base.c"
27 "vendor/dyncall/dyncall/dyncall_vector.c"
28 "vendor/dyncall/dyncall/dyncall_callf.c"
29 "vendor/dyncall/dyncall/dyncall_aggregate.c"
30 "vendor/dyncall/dyncall/dyncall_call.S"
31 "vendor/dyncall/dyncallback/dyncall_callback.c"
32 "vendor/dyncall/dyncallback/dyncall_thunk.c"
33 "vendor/dyncall/dyncallback/dyncall_args.c"
34 "vendor/dyncall/dyncallback/dyncall_alloc_wx.c"
35 "vendor/dyncall/dyncallback/dyncall_callback_arch.S")
36 native-init: "sigil__init_sigil_ffi_module"))
38 dev-dependencies: (list
39 (from-git url: "codeberg:sigil/sigil" package: "sigil-test" version: "^0.17")
40 (from-git url: "codeberg:sigil/sigil" package: "sigil-test-runner" version: "^0.17"))
42 tasks: (list
43 (task
44 name: 'build
45 description: "Build the sigil-ffi native library"
46 steps: (list
47 ;; Compile FFI native code + vendored dyncall
48 (compile-c-sources
49 sources: '("native/ffi.c"
50 "vendor/dyncall/dyncall/dyncall_api.c"
51 "vendor/dyncall/dyncall/dyncall_callvm.c"
52 "vendor/dyncall/dyncall/dyncall_callvm_base.c"
53 "vendor/dyncall/dyncall/dyncall_vector.c"
54 "vendor/dyncall/dyncall/dyncall_callf.c"
55 "vendor/dyncall/dyncall/dyncall_aggregate.c"
56 "vendor/dyncall/dyncall/dyncall_call.S"
57 "vendor/dyncall/dyncallback/dyncall_callback.c"
58 "vendor/dyncall/dyncallback/dyncall_thunk.c"
59 "vendor/dyncall/dyncallback/dyncall_args.c"
60 "vendor/dyncall/dyncallback/dyncall_alloc_wx.c"
61 "vendor/dyncall/dyncallback/dyncall_callback_arch.S")
62 include-dirs: '("vendor/dyncall/dyncall"
63 "vendor/dyncall/dyncallback")
64 flags: (with-sigil-c-flags '("-std=c99"
65 "-Wall" "-Wextra"
66 "-Wno-unused-parameter"
67 "-D_GNU_SOURCE")))
69 ;; Create static library
70 (create-static-library
71 name: "sigil-ffi")
73 ;; Compile Scheme wrapper module
74 (compile-sigil-modules
75 sources: "src/**/*.sgl")
77 (copy-package-docs)))))