;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2022 Antero Mejr ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix 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. ;;; ;;; GNU Guix 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 GNU Guix. If not, see . (define-module (gnu packages hare) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system gnu) #:use-module (guix download) #:use-module (guix gexp) #:use-module (guix git-download) #:use-module (guix packages) #:use-module (guix utils) #:use-module (gnu packages base) #:use-module (gnu packages c) #:use-module (gnu packages man) #:use-module (gnu platform)) (define-public harec (let ((commit "43b34048dd83bde5d4d2a7d93d37a593a9c12fda") (revision "0")) (package (name "harec") (version (git-version "0.0" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://git.sr.ht/~sircmpwn/harec") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "0502xw96za7bvnqvh6jhfjwrw4ddqwppr4ihcn9f5jvjpgw95284")))) (native-inputs (list qbe)) (build-system gnu-build-system) (arguments `(#:tests? #f ;no test suite #:make-flags (list (string-append "CC=" ,(cc-for-target)) (string-append "DESTDIR=" (assoc-ref %outputs "out")) "PREFIX=") #:phases (modify-phases %standard-phases (replace 'configure (lambda* (#:key configure-flags #:allow-other-keys) (setenv "QBE" (string-append (assoc-ref %build-inputs "qbe") "/bin/qbe")) ;; configure rejects unrecognized options (apply invoke "./configure" configure-flags)))))) (home-page "https://harelang.org") (synopsis "Hare bootstrap compiler") (description "Hare compiler written in C11 for POSIX-compatible systems.") (license license:gpl3+)))) (define-public hare (let ((commit "5af4fbd5f2f552da47af0f8f765050e49b0ae73f") (revision "0")) (package (name "hare") (version (git-version "0.0" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://git.sr.ht/~sircmpwn/hare") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "1gj2v5p73f8y5gpglm6mmfdadc6ih2bnd80nyax1xipsfy0f82di")))) (build-system gnu-build-system) (arguments `(#:make-flags (list (string-append "DESTDIR=" (assoc-ref %outputs "out")) "BINDIR=/bin" "MANDIR=/share/man" "SRCDIR=/src" "LOCALSRCDIR=/src/hare" (string-append "HAREPATH=" (assoc-ref %outputs "out") "/src/hare/stdlib:" (assoc-ref %outputs "out") "/src/hare/third-party") (string-append "PLATFORM=" "linux") (string-append "ARCH=" ,(platform-linux-architecture (lookup-platform-by-target-or-system (or (%current-target-system) (%current-system))))) (string-append "HAREC=" (string-append (assoc-ref %build-inputs "harec") "/bin/harec")) "HAREFLAGS=" (string-append "QBE=" (string-append (assoc-ref %build-inputs "qbe") "/bin/qbe")) (string-append "AS=" (string-append (assoc-ref %build-inputs "binutils") "/bin/as")) (string-append "LD=" (string-append (assoc-ref %build-inputs "binutils") "/bin/ld")) (string-append "AR=" (string-append (assoc-ref %build-inputs "binutils") "/bin/ar")) (string-append "SCDOC=" (string-append (assoc-ref %build-inputs "scdoc") "/bin/scdoc")) "HARECACHE=.cache") #:phases (modify-phases %standard-phases (delete 'configure) ;No configuration script. ;; Use own make-flags instead of `config.mk`. (add-before 'build 'dont-include-config-mk (lambda _ (substitute* "Makefile" (("include config.mk") "")) #t))))) (native-inputs (list scdoc)) (propagated-inputs (list harec qbe binutils)) (home-page "https://harelang.org") (synopsis "Compiler for the Hare programming language") (description "Hare is a systems programming language.") (license (list license:gpl3+ license:mpl2.0)))))