diff --git a/guix/cyclone.scm b/guix/cyclone.scm new file mode 100644 index 00000000..a1fc9ca8 --- /dev/null +++ b/guix/cyclone.scm @@ -0,0 +1,87 @@ +;; cyclone.scm +(use-modules + (gnu packages) + (gnu packages multiprecision) + ((guix licenses) + #:select (gpl2 gpl2+ lgpl2.0+ lgpl2.1 lgpl2.1+ lgpl3+ asl2.0 + bsd-0 bsd-3 cc-by-sa4.0 non-copyleft expat + public-domain)) + (guix gexp) + (guix packages) + (guix download) + (guix git-download) + (guix utils) + (guix build-system gnu) + (gnu packages c)) + +(define-public cyclone + (package + (name "cyclone") + (version "0.36.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/justinethier/cyclone-bootstrap") + (commit (string-append "v" version)))) + (sha256 + (base32 + "0fv0mnrn5shbx77383f4mbkvc4i9yyj1bjm3dfyhipnaqapbhqpi")) + (file-name (git-file-name name version)))) + (build-system gnu-build-system) + (arguments + (list + #:test-target "test" + #:make-flags #~(list (string-append + "CC=" #$(this-package-input "gcc-toolchain") + "/bin/gcc") + (string-append "PREFIX=" #$output) + (string-append "COMP_INCDIRS=-I$(PREFIX)/include -I" + #$(this-package-input "gcc-toolchain") + "/include") + (string-append + "COMP_LIBDIRS=-L$(PREFIX)/lib " + "-Wl,-rpath=" #$(this-package-input "ck") "/lib " + "-L" #$(this-package-input "ck") "/lib " + "-Wl,-rpath=" #$(this-package-input "libtommath") + "/lib " + "-L" #$(this-package-input "libtommath") "/lib " + "-Wl,-rpath=" + #$(this-package-input "gcc-toolchain") "/lib " + "-L" #$(this-package-input "gcc-toolchain") + "/lib")) + #:phases #~(modify-phases %standard-phases + (delete 'configure) ; no configure script + (add-before 'build 'replace-cyclonebn + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "Makefile" + (("-lcyclonebn") + "-ltommath") + (("^[$][(]CYC_BN_LIB[)] :") + "dont-build-cyclonebn :") + (("^ [$][(]INSTALL[)] .* [$][(]CYC_BN_LIB[)].*$") + "#dont-install-cyclonebn\n") + (("[$][(]CYC_BN_LIB[)]") + "")) + (substitute* "Makefile.config" + (("-lcyclonebn") + "-ltommath")))) + (add-after 'install 'wrap + (lambda _ + (wrap-program (string-append #$output "/bin/cyclone") + `("LIBRARY_PATH" ":" prefix + ,(list (string-append + #$(this-package-input "gcc-toolchain") + "/lib"))))))))) + (inputs (list ck libtommath (module-ref (resolve-interface + '(gnu packages commencement)) + 'gcc-toolchain))) + (home-page "https://justinethier.github.io/cyclone/") + (synopsis "R7RS Scheme to C compiler") + (description + "Cyclone Scheme is a R7RS Scheme-to-C compiler that uses a variant of +Cheney on the MTA to implement full tail recursion, continuations, and +generational garbage collection. It also includes the Winds package manager +for installing Cyclone libraries.") + (license expat))) + +cyclone