diff options
| author | 2025-04-10 17:48:53 -0400 | |
|---|---|---|
| committer | 2025-04-10 17:48:53 -0400 | |
| commit | ee051aa84a57db3a6b2d19bc685c491d876e02b9 (patch) | |
| tree | a906943c05e4759674919500c9f10d383596c281 | |
| parent | chibi libraries (diff) | |
add r7rs-pffi example
| -rw-r--r-- | examples/hello-world.scm | 9 | ||||
| -rw-r--r-- | examples/pffi.scm | 83 |
2 files changed, 83 insertions, 9 deletions
diff --git a/examples/hello-world.scm b/examples/hello-world.scm index 19790d7..29ca55f 100644 --- a/examples/hello-world.scm +++ b/examples/hello-world.scm @@ -30,12 +30,3 @@ (build-system chibi-scheme-build-system) (inputs (list chibi-scheme-with-path))) -#;(pure-chibi-scheme-library (chibi/search-path) - "hello-world" - "1.0" - "Prints hello world" - "Prints hello world" - asl2.0 - "https://example.com" - "hello-world") - diff --git a/examples/pffi.scm b/examples/pffi.scm new file mode 100644 index 0000000..e68224d --- /dev/null +++ b/examples/pffi.scm @@ -0,0 +1,83 @@ +#| Copyright (C) 2025 Peter McGoron + | + | This program is free software: you can redistribute it and/or modify it + | under the terms of the GNU General Public License as published by the + | Free Software Foundation, either version 3 of the License, or (at your + | option) any later version. + | + | This program is distributed in the hope that it will be useful, but + | WITHOUT ANY WARRANTY; without even the implied warranty of + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + | General Public License for more details. + | + | You should have received a copy of the GNU General Public License along + | with this program. If not, see <https://www.gnu.org/licenses/>. + |# + +(use-modules (mcgoron guix chibi) + (gnu packages libffi) + (gnu packages commencement) + (gnu packages base) + (guix git-download) + (guix build-system gnu) + (guix packages) + (guix gexp) + (guix licenses)) + +(package + (name "pffi-chibi") + (version "0.5.0") + (synopsis "Portable Foreign Function Interface for R7RS") + (description "Portable Foreign Function Interface for R7RS") + (license lgpl3+) + (home-page "https://sr.ht/~retropikzel/r7rs-pffi") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://git.sr.ht/~retropikzel/r7rs-pffi/") + (commit "v0.5.0"))) + (file-name (git-file-name "r7rs-pffi" version)) + (sha256 + (base32 "1ggkafggyqqla6ba8dlhzvvf6v7i6scpa2xyr1mfxxy8iwnl70aa")))) + (build-system gnu-build-system) + (inputs (list chibi-scheme-with-path libffi)) + (native-inputs (list gcc-toolchain glibc)) + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'configure) + (replace 'build + (lambda* (#:key outputs #:allow-other-keys) + (invoke "chibi-ffi" + "retropikzel/r7rs-pffi/r7rs-pffi-chibi.stub") + (invoke "gcc" + "-o" + "retropikzel/r7rs-pffi/r7rs-pffi-chibi.so" + "-fPIC" + "-shared" + "retropikzel/r7rs-pffi/r7rs-pffi-chibi.c" + "-lchibi-scheme" + "-lffi"))) + (replace 'check + (lambda* (#:key (test-target "check") (tests? #t) #:allow-other-keys) + (display "tests don't work yet\n") + #;(when tests? + (invoke "chibi-scheme" "-A" "." "test.scm")))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (base-dir (string-append out + "/share/guix-chibi/retropikzel/")) + (copy (lambda (name) + (invoke "cp" + (string-append "retropikzel/" name) + (string-append base-dir name))))) + (invoke "mkdir" "-p" (string-append base-dir "/r7rs-pffi")) + (for-each copy + '("r7rs-pffi.sld" + "r7rs-pffi/r7rs-pffi-chibi.so" + "r7rs-pffi/chibi.scm" + "r7rs-pffi/main.scm" + "r7rs-pffi/struct.scm"))))))))) + |
