1
0
mirror of https://git.zap.org.au/git/trader.git synced 2024-11-03 17:27:29 -05:00
trader/INSTALL
2019-01-05 08:10:28 +11:00

368 lines
16 KiB
Plaintext

**************************************************************************
* *
* Star Traders: A Game of Interstellar Trading *
* Copyright (C) 1990-2019, John Zaitseff *
* *
**************************************************************************
Star Traders is written in the C99 programming language and uses Autoconf
and Automake to handle compilation and installation. Assuming you have
the needed tools, all you should need to do is run the following commands
from the source directory:
./configure
make
make install
The first two commands may be run as an ordinary user; the last may need
to be done as the system administrator (root).
Prerequisites
=============
Star Traders requires the following components for successful compilation
and installation:
1. A working C compiler conforming to ISO/IEC 9899:1999 (also known as
C99). Any recent version of the GNU Compiler Collection (GCC) or the
Clang LLVM Compiler is more than adequate.
2. An operating system ideally conforming to ISO/IEC 9945-1:2008 (POSIX)
or to the Open Group Single UNIX Specification version 4 or later. In
short, any modern Unix or Unix-like system like Linux almost certainly
qualifies.
In actual fact, Star Traders uses the GNU Portability Library, so many
older systems may also work without modification.
3. A working X/Open Curses-compatible library, such as Ncurses. Ncurses
is preferred over system-native libraries, if present. Locales with
multibyte character sequences (such as UTF-8) require a wide-character
version of Curses, such as NcursesW, to work correctly.
4. The GNU Gettext library, version 0.19.8 or later, to allow the game to
use languages other than English; this is also called Native Language
Support. If you do not have this library (and do not wish to install
it), you may pass "--disable-nls" to the configure script.
5. The GNU libiconv library for supporting multiple character encodings,
if required by the GNU Gettext library. This is not needed on systems
with the GNU C Library (glibc) version 2.2 or later, or on Mac OS X
(now called macOS) 10.3 or newer.
6. Development libraries and header files for all of the above. On many
systems, these files are part of XXX-dev or XXX-devel packages.
7. The GNU Perfect Hash Function Generator, gperf. This utility program
may be required for parts of the GNU Portability Library.
Installation
============
The installation of Star Traders can be broken down into three main steps:
configuration, compilation and the installation proper.
The first step is configuring the package for your compiler and operating
system environment. As Star Traders uses Autoconf and Automake, all you
need to do in most cases is run "./configure" from the top-level directory
of the Star Traders source tree. The configure script understands all of
the usual Autoconf options; these are explained in detail in the Autoconf
manual:
https://www.gnu.org/software/autoconf/manual/autoconf.html#Running-configure-Scripts
This version of the configure script understands the following additional
command line options:
--disable-nls
Don't use Native Language Support. Star Traders will only
show untranslated US English text and only accept US ASCII
keyboard input.
--with-libintl-prefix=DIR
Find the GNU Gettext library installed in the DIR/lib and
DIR/include directories. This option is needed if your
library is not installed in /usr/lib and /usr/include (or,
more precisely, if the C compiler cannot find the library
".so" or ".a" archive file using the standard "-l" command
line parameter or the relevant header files using standard
"#include" directives).
--with-libiconv-prefix=DIR
Find the GNU libiconv library installed in the DIR/lib and
DIR/include directories. This option is needed if the GNU
Gettext library requires libiconv on your system, and that
library is not installed in /usr/lib and /usr/include.
--with-ncurses
Force the use of Ncurses over the system's Curses library.
In other words, do not search for a native Curses library
at all.
--with-ncursesw
Force the use of the NcursesW library with wide-character
support. If NcursesW cannot be found, abort the configure
script.
--without-ncursesw
Don't use the NcursesW library. This will prevent non-8-
bit character encodings like UTF-8 from working correctly
and is thus not recommended.
--without-ncurses
Don't use the Ncurses library: use either NcursesW (unless
"--without-ncursesw" is also specified) or the system's
normal Curses library. This option is not recommended.
--disable-assert
Turn off all debugging assert() statements.
By default, configure uses "/usr/local" as the top-level (prefix) install
directory. You can change this by specifying "--prefix=DIR" to use DIR
instead. For example, you can use a directory in your own home directory
by specifying something like:
./configure --prefix=$HOME/opt/trader
You may also specify certain configuration and/or compilation variables on
the command line to override choices made by configure. For example, you
can specify the compiler flags to use by passing the CFLAGS variable:
./configure CFLAGS="-g -O2 -Wall"
The configure script has many other options. You may obtain a list of
these by running:
./configure --help
You can also run configure in a separate build-only directory tree. This
feature requires GNU Make and allows you to keep the source code tree from
being modified by the compilation process. To use this option, create a
separate build directory, then run configure. For example, if you placed
the Star Traders source code tree in $HOME/src/trader-7.13, you could run
something like:
mkdir $HOME/build/trader-build-7.13
cd $HOME/build/trader-build-7.13
$HOME/src/trader-7.13/configure
Once again, the Autoconf manual describes these options (and many others):
https://www.gnu.org/software/autoconf/manual/autoconf.html#Running-configure-Scripts
Once the package has been configured, you can type "make" to compile it,
then "make install" to install it. You can specify the following command
lines, amongst others:
make all
make install
make clean
make distclean
make uninstall
The command "make all" does the same thing as running "make" by itself:
compile the package source code into an executable.
Running "make install" copies the executable program and all associated
data and documentation files to those directories specified during
configuration. If any of these directories require system administrator
access privileges for writing, you will need to run "make install" as
system administrator (root).
If you like, you can specify the DESTDIR variable to copy all installation
files to a temporary location before installing them later. For example,
if the prefix directory is "/usr/local", typing:
make install DESTDIR=/tmp/trader-install
will copy the final program "trader" to /tmp/trader-install/usr/local/bin,
the manual page to /tmp/trader-install/usr/local/share/man/man6 and so on.
The "make clean" command will remove most build-generated files, such as
object files generated by the compiler, from the source code or build
directory. Running "make distclean" will do the same, but will remove the
Makefiles generated by configure as well. In other words, if you run
"make distclean", you will need to rerun "configure" if you would like to
recompile Star Traders at a later date.
Finally, "make uninstall" will remove the executable program "trader" and
associated data and documentation files from their final installation
location. This assumes, of course, that you have NOT run "make distclean"
to remove the Makefiles that know the path to which those files were
installed!
Tested Systems
==============
The following operating systems and compilers have been successfully test-
ed with this version of Star Traders:
+-------------------------+--------+-------+-------------------------+---+
| Linux distribution | Arch | Glibc | Compiler | N |
+-------------------------+--------+-------+-------------------------+---+
| Debian GNU/Linux Sid | x86_64 | 2.27 | GNU C Compiler 8.2.0 | |
| Debian GNU/Linux Sid | i686 | 2.27 | GNU C Compiler 8.2.0 | |
| Debian GNU/Linux 9.5 | x86_64 | 2.24 | GNU C Compiler 6.3.0 | |
| Ubuntu 18.04 | x86_64 | 2.27 | GNU C Compiler 7.3.0 | |
| Ubuntu 18.04 | x86_64 | 2.27 | Clang (LLVM) 6.0.0 | |
| Ubuntu 18.04 | x86_64 | 2.27 | Portland PGI C/C++ 18.5 | |
| Fedora 28 | x86_64 | 2.27 | GNU C Compiler 8.1.1 | |
| CentOS 7.5 | x86_64 | 2.17 | GNU C Compiler 4.8.5 | |
| CentOS 6.10 | x86_64 | 2.12 | GNU C Compiler 4.4.7 | |
| CentOS 6.10 | x86_64 | 2.12 | Portland PGI C/C++ 18.3 | |
| CentOS 6.9 | x86_64 | 2.12 | Intel C/C++ 18.0.3 | |
| OpenSUSE Leap 15.0 | x86_64 | 2.26 | GNU C Compiler 7.3.1 | |
+-------------------------+--------+-------+-------------------------+---+
+-------------------------+--------+---------------------------------+---+
| Operating system | Arch | Compiler | N |
+-------------------------+--------+---------------------------------+---+
| FreeBSD 11.2 | x86_64 | Clang (LLVM) 6.0.0 | 1 |
| NetBSD 8.0 | x86_64 | GNU C Compiler 5.5.0 | 2 |
| macOS 10.13 | x86_64 | Apple Clang (LLVM) 9.1.0 | 3 |
| Solaris 11.3 (x86_64) | i386 | GNU C Compiler 4.8.2 | |
| Solaris 11.3 (x86_64) | x86_64 | GNU C Compiler 4.8.2 | 4 |
| Solaris 11.3 (x86_64) | i386 | Oracle Developer Studio 12.6 | 5 |
| Solaris 11.3 (x86_64) | x86_64 | Oracle Developer Studio 12.6 | 6 |
| Cygwin 2.10.0 (Win7SP1) | i686 | GNU C Compiler 7.3.0 | |
+-------------------------+--------+---------------------------------+---+
Notes:
1. FreeBSD with the gettext, gettext-runtime, gettext-tools and libiconv
binary packages installed with "pkg", using:
./configure --with-libiconv-prefix=/usr/local \
--with-libintl-prefix=/usr/local
2. NetBSD with the gettext, libiconv and ncursesw packages installed with
"pkg_add", using:
./configure --with-libiconv-prefix=/usr/pkg \
--with-libintl-prefix=/usr/pkg \
--with-ncursesw --with-ncurses \
CURSES_CFLAGS=-I/usr/pkg/include \
LDFLAGS=-L/usr/pkg/lib
3. macOS with the gettext package installed with Homebrew, using:
./configure --with-libintl-prefix=/usr/local/opt/gettext
4. Using "./configure CC='gcc -m64'" for 64-bit user-space.
5. Using "./configure CC='/opt/developerstudio12.6/bin/cc'".
6. Using "./configure CC='/opt/developerstudio12.6/bin/cc -m64'".
The following systems are known not to work at the current time; this list
is almost certainly not exhaustive:
+-------------------------+--------+---------------------------------+---+
| Operating system | Arch | Compiler | N |
+-------------------------+--------+---------------------------------+---+
| OpenBSD 6.3 | x86_64 | GNU C Compiler 4.2.1 | 1 |
| OpenBSD 6.3 | x86_64 | Clang (LLVM) 5.0.1 | 1 |
+-------------------------+--------+---------------------------------+---+
Notes:
1. The OpenBSD C library does not include <monetary.h> nor its associated
functions, particularly strfmon().
Git Repository
==============
You can always download the latest version of Star Traders directly from
the Git repository on the ZAP Group server:
git clone git://git.zap.org.au/data/git/trader.git
Released versions of Star Traders include all scripts and files needed for
installation. If you are cloning the source code from the Git repository,
however, you will need to update these files yourself. You will need the
following additional tools installed on your system to do so:
1. Autoconf v2.69 or later (https://www.gnu.org/software/autoconf/)
2. Automake v1.15 or later (https://www.gnu.org/software/automake/)
3. pkg-config v0.9.0 or later (https://pkg-config.freedesktop.org/)
4. GNU Portability Library (https://www.gnu.org/software/gnulib/)
The GNU Portability Library may be installed by retrieving the latest
Gnulib source code from the Git repository:
git clone git://git.savannah.gnu.org/gnulib.git
Once you have these tools, change to the Star Traders source code tree and
type:
PATH=${PATH}:/path/to/gnulib-tool ./build-aux/bootstrap
where "/path/to/gnulib-tool" is, of course, the directory containing the
Gnulib "gnulib-tool" script. You should be ready to run "./configure &&
make && make install" now.
For Translators
===============
Thank you for even considering to translate Star Traders into your native
language! You may use either a released version of Star Traders, or an
unreleased one, as discussed in the Git Repository section above. In
either case, you may find the following workflow useful.
First, run "./build-aux/bootstrap" if needed (only for unreleased versions
of Star Traders).
Next, configure and install Star Traders into your home directory:
./configure --prefix=$HOME/opt/trader
make
make install
If you are adding a new translation, add its GNU Gettext language code to
the file po/LINGUAS, then create the template file for that language ("zz"
is used here):
(cd po; msginit --locale=zz --width=132)
Now, modify the PO file for your language using your favourite editor or
translation tool. Please note that the generated PO file has extensive
documentation in its translator comments. If anything is unclear, please
feel free to ask the author and maintainer; contact details are available
in the README file.
To test your PO file, compile and run Star Traders (replace "zz" with your
language code, of course):
make && make -C po zz.gmo && make install
LANGUAGE=zz $HOME/opt/trader/bin/trader
The "make -C po zz.gmo" forces the rebuilding of the GMO output file; the
"LANGUAGE=zz" parameter sets the language of the messages to use.
This process of editing and testing the PO file can be done iteratively,
of course: make a change, recompile, run the program to see the changes,
repeat as needed.
Once you have finished your translation, please submit the PO file to the
Translation Project. The relevant web page for Star Traders is:
https://translationproject.org/domain/trader.html
More information for translators is available at:
https://translationproject.org/html/translators.html
To clean up your install directory, simply run:
rm -fr $HOME/opt/trader
By the way, as mentioned in the translator comments, formatting the help
text is probably the most complicated and tedious part of translating Star
Traders. The author and maintainer of this game is more than happy to
help you with this task: if you are able to provide a translation, even if
it is not formatted correctly, the maintainer will perform the necessary
adjustments for word-wrapping and justification.