doc: Migration to Libera Chat.
[mes.git] / INSTALL
1                                                               -*- org -*-
2 #+TITLE: Building and Installing GNU Mes
3
4 Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
5
6   Copying and distribution of this file, with or without modification,
7   are permitted in any medium without royalty provided the copyright
8   notice and this notice are preserved.
9
10 Mes can be built in two modes: as a regulare package build or as a
11 bootstrap package.
12
13 After bootstrapping Mes it can be used to bootstrap TinyCC (tcc) in a
14 similar way.
15
16 * Get it
17    git clone [[git://git.savannah.gnu.org][git://git.savannah.gnu.org/mes.git]]
18
19 * Regular build
20 ** Prerequisites
21 *** Guix
22    #+BEGIN_SRC bash
23    guix environment -l guix.scm     #64 bit + 32bit
24    guix environment --system=i686-linux -l guix.scm #32 bit only
25    guix environment --system=armhf-linux -l guix.scm #32 bit only
26    #+END_SRC
27
28 *** Other GNU/Linux
29   - [[https://savannah.gnu.org/projects/mescc-tools/][mescc-tools]], 0.7.0 is known to work.
30   - [[https://savannah.gnu.org/projects/nyacc][Nyacc]], 1.00.2 is known to work.
31   - GNU Gcc, 7.5.0 is known to work.
32   - GNU Guile, version 3.0.4 is know to work.
33   - SH, /bin/sh, GNU Bash 5.0.16 is known to work.
34   - GNU coreutils
35   - sed, GNU sed 4.8 is known to work.
36   - Perl, 5.30 is known to work.
37
38 ** Build it
39
40    #+BEGIN_SRC bash
41    ./configure
42    make
43    #+END_SRC
44
45 If you get something like
46
47    #+BEGIN_SRC bash
48    mes.c:(.text+0x8da0): undefined reference to `__stack_chk_fail'
49    #+END_SRC
50
51 then your compiler inserts stack protection code.  The Mes C Library
52 does not support that.  Turn it off lik this
53
54    #+BEGIN_SRC bash
55    ./configure CFLAGS=-fno-stack-protector
56    #+END_SRC
57
58 ** Check it
59
60    #+BEGIN_SRC bash
61    make check
62    #+END_SRC
63
64 ** Install it
65
66    #+BEGIN_SRC bash
67    make install
68    #+END_SRC
69
70 * Guix it
71
72    #+BEGIN_SRC bash
73    guix build -f guix.scm
74    #+END_SRC
75
76 * Bootstrap build
77
78 The bootstrap build is part of Guix, see
79 https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/commencement.scm
80
81 ** Prerequisites
82   - [[https://savannah.gnu.org/projects/mescc-tools/][mescc-tools]], 0.6.1 is known to work.
83   - [[https://savannah.gnu.org/projects/nyacc][Nyacc]], 0.93.0 is known to work.
84
85 ** Build it
86
87    #+BEGIN_SRC bash
88    sh configure.sh [--prefix=<prefix>]
89    sh bootstrap.sh
90    #+END_SRC
91
92 ** Check it
93
94    #+BEGIN_SRC bash
95    sh check.sh
96    #+END_SRC
97
98 ** Install it
99
100    #+BEGIN_SRC bash
101    sh install.sh
102    #+END_SRC
103 * Regular build and bootstrap combine
104
105 To build mes.c using MesCC, configure using --with-bootstrap:
106
107    #+BEGIN_SRC bash
108    ./configure --with-bootstrap
109    make
110    #+END_SRC
111
112 This creates bin/mes-gcc and bin/mes-mescc.