AtlatestRepositorysigil-ffi
1
;;; sigil-ffi - Dynamic Foreign Function Interface2
;;;3
;;; Provides dynamic FFI so Sigil programs can call C library functions4
;;; at runtime without writing C glue code. Uses dyncall for portable5
;;; calling convention support including struct-by-value passing.7
(package8
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: (list17
)19
;; Native library definition20
libraries: (list21
(library22
name: 'sigil-ffi23
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: (list39
(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: (list43
(task44
name: 'build45
description: "Build the sigil-ffi native library"46
steps: (list47
;; Compile FFI native code + vendored dyncall48
(compile-c-sources49
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 library70
(create-static-library71
name: "sigil-ffi")73
;; Compile Scheme wrapper module74
(compile-sigil-modules75
sources: "src/**/*.sgl")77
(copy-package-docs)))))