diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0a123e7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,65 @@ +*.eps +*.go +*.log +*.pdf +*.png +*.tar.xz +*.tar.gz +*.tmp +*~ +.#* +\#*\# +,* +/ABOUT-NLS +/INSTALL +/aclocal.m4 +/autom4te.cache +/build-aux/ar-lib +/build-aux/compile +/build-aux/config.guess +/build-aux/config.rpath +/build-aux/config.sub +/build-aux/depcomp +/build-aux/install-sh +/build-aux/mdate-sh +/build-aux/missing +/build-aux/test-driver +/build-aux/texinfo.tex +/config.status +/configure +/doc/*.1 +/doc/.dirstamp +/doc/contributing.*.texi +/doc/*.aux +/doc/*.cp +/doc/*.cps +/doc/*.fn +/doc/*.fns +/doc/*.html +/doc/*.info +/doc/*.info-[0-9] +/doc/*.ky +/doc/*.pg +/doc/*.toc +/doc/*.t2p +/doc/*.tp +/doc/*.vr +/doc/*.vrs +/doc/stamp-vti +/doc/version.texi +/doc/version-*.texi +/m4/* +/pre-inst-env +/test-env +/test-tmp +/tests/*.trs +GPATH +GRTAGS +GTAGS +Makefile +Makefile.in +config.cache +stamp-h[0-9] +tmp +/.version +/doc/stamp-[0-9] diff --git a/HACKING b/HACKING new file mode 100644 index 0000000..8b7d68d --- /dev/null +++ b/HACKING @@ -0,0 +1,47 @@ +# -*- mode: org; coding: utf-8; -*- + +#+TITLE: Hacking prescheme + +* Contributing + +By far the easiest way to hack on prescheme is to develop using Guix: + +#+BEGIN_SRC bash + # Obtain the source code + cd /path/to/source-code + guix environment -l guix.scm + # In the new shell, run: + hall dist --execute && autoreconf -vif && ./configure && make check +#+END_SRC + +You can now hack this project's files to your heart's content, whilst +testing them from your `guix environment' shell. + +To try out any scripts in the project you can now use + +#+BEGIN_SRC bash + ./pre-inst-env scripts/${script-name} +#+END_SRC + +If you'd like to tidy the project again, but retain the ability to test the +project from the commandline, simply run: + +#+BEGIN_SRC bash + ./hall clean --skip "scripts/${script-name},pre-inst-env" --execute +#+END_SRC + +** Manual Installation + +If you do not yet use Guix, you will have to install this project's +dependencies manually: + - autoconf + - automake + - pkg-config + - texinfo + - guile-hall + +Once those dependencies are installed you can run: + +#+BEGIN_SRC bash + hall dist -x && autoreconf -vif && ./configure && make check +#+END_SRC diff --git a/guix.scm b/guix.scm new file mode 100644 index 0000000..bd2f778 --- /dev/null +++ b/guix.scm @@ -0,0 +1,30 @@ +(use-modules + (guix packages) + ((guix licenses) #:prefix license:) + (guix download) + (guix build-system gnu) + (gnu packages) + (gnu packages autotools) + (gnu packages guile) + (gnu packages guile-xyz) + (gnu packages pkg-config) + (gnu packages texinfo)) + +(package + (name "guile-prescheme") + (version "0.1") + (source "./guile-prescheme-0.1.tar.gz") + (build-system gnu-build-system) + (arguments `()) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("pkg-config" ,pkg-config) + ("texinfo" ,texinfo))) + (inputs `(("guile" ,guile-3.0))) + (propagated-inputs `()) + (synopsis "") + (description "") + (home-page "") + (license license:gpl3+)) + diff --git a/hall.scm b/hall.scm new file mode 100644 index 0000000..d892001 --- /dev/null +++ b/hall.scm @@ -0,0 +1,40 @@ +(hall-description + (name "prescheme") + (prefix "guile") + (version "0.1-pre") + (author "Andrew Whatson") + (copyright (2022)) + (synopsis "Guile port of Pre-Scheme, a Scheme-like systems language") + (description "guile-prescheme is a port of the Pre-Scheme compiler from +Scheme 48. Pre-Scheme is a statically typed dialect of Scheme which +offers the efficiency and low-level machine access of C while +retaining many of the desirable features of Scheme.") + (home-page "https://gitlab.com/flatwhatson/guile-prescheme") + (license bsd-3) + (dependencies `()) + (skip ()) + (files (libraries + ((directory + "prescheme" + ((scheme-file "prescheme") + (scheme-file "s48-defrecord") + (scheme-file "syntax-utils") + (scheme-file "ps-record-types") + (scheme-file "platform") + (scheme-file "record-discloser") + (scheme-file "ps-defenum") + (scheme-file "s48-defenum") + (scheme-file "memory") + (scheme-file "scheme48"))))) + (tests ((directory "tests" ()))) + (programs ((directory "scripts" ()))) + (documentation + ((directory "doc" ((texi-file "prescheme"))) + (text-file "COPYING") + (text-file "HACKING") + (symlink "README" "README.org") + (org-file "README"))) + (infrastructure + ((scheme-file "hall") + (text-file ".gitignore") + (scheme-file "guix")))))