-
Notifications
You must be signed in to change notification settings - Fork 2
/
INSTALL
236 lines (155 loc) · 7.92 KB
/
INSTALL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
# Tarball Install
Read this for installing from the tarball and for cross-installation.
For installing from git, read INSTALL.md.
TL;DR
./configure
make
sudo make install
Prerequisites
You need gcc version 2.0 or later to compile gforth.
For the (documented) libcc.fs C interface you need a C compiler and
libtool at run-time.
For the (undocumented ) lib.fs C interface you need to install either
the ffcall libraries or the libffi library. Libffi comes with recent
gccs, ffcall can be found on
ftp://ftp.santafe.edu/pub/gnu/ffcall-1.8.tar.gz (USA)
ftp://ftp.ilog.fr/pub/Users/haible/gnu/ffcall-1.8.tar.gz (Europe)
On many architectures (exceptions: 386, PPC, MIPS, Alpha) you need gdb
at run-time in order for the disassembler to work.
Building and Installing
First, type
./configure
(see Section Configuration Options below for details).
After configuration, type
make
This includes a check whether your shiny new Forth system works. If
you like to invoke the check alone, do
make check
You can run some benchmarks with
make bench
and compare them with the results in Benchres and in the manual.
If everything is all right, you may want to install gforth. Type
make install
For paper documentation, print gforth.ps (a Postscript file (300dpi
fonts, i.e., it works, but does not produce best quality on better
printers)), or say
make gforth.dvi
and print the resulting file gforth.dvi. You can also get the
documentation in HTML format by typing
make html
If you prefer plain ASCII documentation, you can
make doc/gforth.txt
or just concatenate the files gforth.info-* ('cat gforth.info-*' under
Unix); the result of the latter option is a little worse.
You can find binary distributions, documentation in HTML and plain
text format and information on known installation problems at
http://www.complang.tuwien.ac.at/forth/gforth/.
Configuration Options
If you use GNU make, you can build in a directory different from the
source directory by changing to the build directory and invoking
configure thus:
$srcdir/configure
where $srcdir is the source directory. (Note that we tested this only
for installation; i.e., if you want to hack the Gforth sources, you
should probably build in the source directory).
configure has the following useful parameters:
--prefix=PREFIX install architecture-independent files in PREFIX
[default: /usr/local]
--exec-prefix=PREFIX install architecture-dependent files in PREFIX
[default: same as prefix]
--help: tells you about other parameters.
The file Benchres shows the best gforth-fast performance that we
achieved.
If you don't like the defaults for the installation directories, you
should override them already during configure. E.g., if you want to
install in the /gnu hierarchy instead of in the default /usr/local
hierarchy, say
./configure --prefix=/gnu
Moreover, if your GCC is not called gcc (but, e.g., gcc-2.7.1), you
should say so during configuration. E.g.:
./configure CC=gcc-2.7.1
You can also pass additional options to gcc in this way, e.g., if you
want to generate an a.out executable under Linux with gcc-2.7.0:
./configure CC="gcc -b i486-linuxaout -V 2.7.0"
You can change the sizes of the various areas used in the default
image `gforth.fi' by passing the appropriate Gforth command line
options in the FORTHSIZES environment variable:
./configure "FORTHSIZES=--dictionary-size=1048576 --data-stack-size=16k --fp-stack-size=16K --return-stack-size=15k --locals-stack-size=14848b"
The line above reaffirms the default sizes. Note that the locals
stack area is also used as input buffer stack.
If C's "long long" do not work properly on your machine (i.e., if the
tests involving double-cell numbers fail), you can build Gforth such
that it does not use "long long":
./configure ac_cv_sizeof_long_long=0
For MacOS X on Core 2 processors, you might want to use the 64-bit
version for increased speed (more registers available); you have to
ask for that on configuration, as follows:
./configure CC='gcc-4.2 -arch x86_64' --build=x86_64-apple-darwin9.4.0
Cross-Installation
There is currently no simple way to do cross-installation of Gforth
(apart from Gforth EC). The current build process interleaves
compiling and running heavily, so multiple transfers between build and
target machine would be required. We don't have a testing environment
for cross-compilation, so we cannot fix this at the moment. If you
want to do cross-installation, please contact us.
In any case, you might find the following useful:
You need a cross-compilation toolchain for your target including gcc
(2.0 or later).
The first step in cross-installation is the cross-configuration. A
few tests made by the configure script do not work in a
cross-compilation situation. You have to provide the results of these
tests by hand. E.g., if you compile for an ARM:
env skipcode=".skip 16" ac_cv_sizeof_char_p=4 ac_cv_sizeof_void_p=4 \
ac_cv_sizeof_char=1 ac_cv_sizeof_short=2 ac_cv_sizeof_int=4 \
ac_cv_sizeof_long=4 ac_cv_sizeof_long_long=8 ac_cv_sizeof_intptr_t=4 \
ac_cv_sizeof_int128_t=0 ac_cv_sizeof_uint128_t=0 \
ac_cv_c_bigendian=no ./configure CC=arm-elf-gcc --host=arm-linux
The ac_cv_sizeof_... variables give the sizes of various C types;
ac_cv_sizeof_char_p is the same as "sizeof(char*)" in C code. The
ac_cv_c_bigendian variable gives the byte order. The skipcode
specifies how to skip 16 bytes in the code (use "skipcode=no" to
disable skipping and dynamic native code generation).
Preloading installation-specific code
If you want to have some installation-specific files loaded when
Gforth starts (e.g., an assembler for your processor), put commands
for loading them into /usr/local/share/gforth/site-forth/siteinit.fs
(if the commands work for all architectures) or
/usr/local/lib/gforth/site-forth/siteinit.fs (for
architecture-specific commands);
/usr/local/lib/gforth/site-forth/siteinit.fs takes precedence if both
files are present (unless you change the search path). The file names
given above are the defaults; if you have changed the prefix, you have
to replace "/usr/local" in these names with your prefix.
By default, the installation procedure creates an empty
/usr/local/share/gforth/site-forth/siteinit.fs if there is no such
file.
If you change the siteinit.fs file, you should run "make install"
again for the changes to take effect (Actually, the part of "make
install" starting with "rm gforth.fi" is sufficient).
Multiple Versions and Deinstallation
Several versions of Gforth can be installed and used at the same
time. Version `foo' can be invoked with `gforth-foo'. We recommend to
keep the old version for some time after a new one has been installed.
You can deinstall this version of Gforth with 'make uninstall' and
version foo with 'make uninstall VERSION=foo'. 'make uninstall' also
tells you how to uninstall Gforth completely.
Installing Info Files
Info is the GNU project on-line documentation format. You can read
info files either from within Emacs (Ctrl-h i) or using the
stand-alone Info reader, 'info'.
If you use the default install root of '/usr/local' then the info
files will be installed in '/usr/local/info'.
Many GNU/Linux distributions are set up to put all of their
documentation in '/usr/info', in which case you might have to do a
couple of things to get your environment set up to accommodate files
in both areas:
1. Add an INFOPATH environment variable. The easiest place to do
this is '/etc/profile', right next to PATH and MANPATH:
INFOPATH=/usr/local/info:/usr/info
2. Create a file called 'dir' in 'usr/local/info'. Use the file
'/usr/info/dir' as a template. You can add the line for gforth
manually, or use '/sbin/install-info' (man install-info for details).
Authors: Anton Ertl, Bernd Paysan, Neal Crook
Copyright (C) 2003,2007,2008,2016,2019,2022 Free Software Foundation, Inc.
This file is free documentation; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.