#| 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 . |# (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")))))))))