                                                              -*- org -*-
#+TITLE: Building and Installing GNU Mes

Copyright © 2016, 2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>

  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
  notice and this notice are preserved.

Mes can be built in two modes: as a regulare package build or as a
bootstrap package.

After bootstrapping Mes it can be used to bootstrap TinyCC (tcc) in a
similar way.

* Get it
   git clone [[git://git.savannah.gnu.org][git://git.savannah.gnu.org/mes.git]]

* Regular build
** Prerequisites
*** Guix
    guix environment -l .guix.scm     #64 bit + 32bit
    guix environment --system=i686-linux -l .guix.scm #32 bit only

*** Other GNU/Linux
  - [[https://github.com/oriansj/mescc-tools][mescc-tools]], 0.5 is known to work.
  - [[https://savannah.gnu.org/projects/nyacc][Nyacc]], [[https://gitlab.com/janneke/nyacc][patched Nyacc]] 0.80.42 is known to work.
  - GNU Gcc, 4.9.3 is known to work.
  - GNU Guile, version 2.0.12 or is know to work.
  - SH, /bin/sh, GNU Bash 4.3 is known to work.
  - GNU coreutils
  - sed, GNU sed 4.2 is known to work.
  - git, 2.10 is known to work.
  - Perl, 5.22 is known to work.

** Build it
   ./configure
   make

** Check it
   make check

** Install it
   make install

* Guix it
   guix package -f .guix.scm

* Bootstrap build

The bootstrap build is being developed in Guix, on wip-bootstrap, see
http://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/mes.scm?h=wip-bootstrap

** Prerequisites
  - [[https://github.com/oriansj/mescc-tools][mescc-tools]], 0.5 is known to work.
  - [[https://savannah.gnu.org/projects/nyacc][Nyacc]], [[https://gitlab.com/janneke/nyacc][patched Nyacc]] 0.80.42 is known to work.
  - [[https://gitlab.com/janneke/mes-seed][mes-seed]], 0.17.1 is known to work.

** Build it
   <setup environment, e.g. prefix, MES_SEED>
   ./configure.sh [--prefix=<prefix>]
   ./build.sh

** Check it

   ./check.sh

** Install it

   ./install.sh
