INSTALL 7.84 KB
Newer Older
Anton Ertl's avatar
Anton Ertl committed
1 2
Read this for installing from the tarball and for cross-installation.
For installing from git, read INSTALL.md.
anton's avatar
anton committed
3

Anton Ertl's avatar
Anton Ertl committed
4 5 6 7 8 9 10 11
                TL;DR

./configure
make
sudo make install



anton's avatar
anton committed
12 13
		Prerequisites

anton's avatar
anton committed
14
You need gcc version 2.0 or later to compile gforth.
anton's avatar
anton committed
15

anton's avatar
anton committed
16 17
For the (documented) libcc.fs C interface you need a C compiler and
libtool at run-time.
anton's avatar
anton committed
18 19 20 21

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
anton's avatar
anton committed
22 23 24 25

   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) 

anton's avatar
anton committed
26 27 28
On many architectures (exceptions: 386, PPC, MIPS, Alpha) you need gdb
at run-time in order for the disassembler to work.

anton's avatar
anton committed
29 30

		Building and Installing
31

anton's avatar
anton committed
32
First, type
33

34
./configure
anton's avatar
anton committed
35

anton's avatar
anton committed
36 37 38 39 40 41
(see Section Configuration Options below for details).

After configuration, type

make

42 43
This includes a check whether your shiny new Forth system works. If
you like to invoke the check alone, do
anton's avatar
anton committed
44

45
make check
anton's avatar
anton committed
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

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

68 69 70 71 72 73 74 75 76 77
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/.
anton's avatar
anton committed
78 79 80 81


		Configuration Options

anton's avatar
anton committed
82 83 84
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:
anton's avatar
anton committed
85 86 87

$srcdir/configure

anton's avatar
anton committed
88
where $srcdir is the source directory. (Note that we tested this only
anton's avatar
anton committed
89 90 91
for installation; i.e., if you want to hack the Gforth sources, you
should probably build in the source directory).

pazsan's avatar
pazsan committed
92
configure has the following useful parameters:
93 94 95 96
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [default: /usr/local]
  --exec-prefix=PREFIX    install architecture-dependent files in PREFIX
                          [default: same as prefix]
97
  --help: tells you about other parameters.
anton's avatar
anton committed
98

anton's avatar
anton committed
99 100
The file Benchres shows the best gforth-fast performance that we
achieved.
anton's avatar
anton committed
101

102 103 104
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
105
hierarchy, say
anton's avatar
anton committed
106

107 108
./configure --prefix=/gnu

109 110
Moreover, if your GCC is not called gcc (but, e.g., gcc-2.7.1), you
should say so during configuration. E.g.:
pazsan's avatar
pazsan committed
111

anton's avatar
anton committed
112
./configure CC=gcc-2.7.1
113

114 115
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:
pazsan's avatar
pazsan committed
116

anton's avatar
anton committed
117
./configure CC="gcc -b i486-linuxaout -V 2.7.0"
pazsan's avatar
pazsan committed
118

119 120 121 122
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:

anton's avatar
anton committed
123
./configure "FORTHSIZES=--dictionary-size=1048576 --data-stack-size=16k --fp-stack-size=16K --return-stack-size=15k --locals-stack-size=14848b"
124 125 126

The line above reaffirms the default sizes. Note that the locals
stack area is also used as input buffer stack.
127

128 129 130 131
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":

anton's avatar
anton committed
132
./configure ac_cv_sizeof_long_long=0
133

anton's avatar
anton committed
134 135 136 137 138 139
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

140

141
			Cross-Installation
142

anton's avatar
anton committed
143 144 145 146 147 148 149 150 151
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:

152 153 154 155 156
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
157
cross-compilation situation. You have to provide the results of these
158
tests by hand. E.g., if you compile for an ARM:
159

anton's avatar
anton committed
160 161 162 163
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 \
164
ac_cv_c_bigendian=no ./configure CC=arm-elf-gcc --host=arm-linux
165 166 167

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
168 169 170
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).
171 172


173 174 175 176
		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
177
for loading them into /usr/local/share/gforth/site-forth/siteinit.fs
178
(if the commands work for all architectures) or
179
/usr/local/lib/gforth/site-forth/siteinit.fs (for
180
architecture-specific commands);
181
/usr/local/lib/gforth/site-forth/siteinit.fs takes precedence if both
182 183 184 185 186
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
187
/usr/local/share/gforth/site-forth/siteinit.fs if there is no such
188 189
file.

190
If you change the siteinit.fs file, you should run "make install"
191 192 193 194
again for the changes to take effect (Actually, the part of "make
install" starting with "rm gforth.fi" is sufficient).


anton's avatar
anton committed
195 196 197 198 199
		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.
200

anton's avatar
anton committed
201 202 203
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.
204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227


		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).
Anton Ertl's avatar
Anton Ertl committed
228 229 230 231 232 233


Copyright (C) 2003,2007,2008,2016 Free Software Foundation, Inc.
This file is free documentation; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.