git clone https://github.com/SDL-Hercules-390/hyperion.git
sudo apt-get -y install git wget time
sudo apt-get -y install build-essential cmake flex gawk m4 autoconf automake libtool libltdl-dev libtool-bin
sudo apt-get -y install libbz2-dev zlib1g-dev
sudo apt-get -y install libcap2-bin
Note: For Regina REXX to run the included tests:
sudo apt-get -y install libregina3-dev
sudo apt-get install libtool-bin
Verify you have all of the correct versions of the more important packages installed:
Please note that SDL Hyperion comes pre-delivered with an already pre-generated ./configure script, so doing a ./autogen.sh is not necessary and is in fact now strongly discouraged. An autogen would only be necessary if you were to manually make some changes to the Hercules default Makefile.am and/or configure.ac files (which under normal circumstances you should never need to do).
Download and build all External Packages, if needed:
Hercules links with several pre-built "External Package" static link libraries that have been pre-built for you and come distributed with Hercules (i.e. they are a part of the Hercules repository).
Currently all of the external package static link libraries for the Intel x86 (32-bit) and x64 (64-bit) architectures for both Windows and Linux for both normal optimized Release builds as well as unoptimized Debug builds are already provided as part of the distribution. Thus to build Hercules you should not need to do anything special. Simply build Hercules just as you normally would.
In some unusual situations however, you MIGHT need to rebuild ALL existing external packages for your particular system. Exactly what those situations are and what causes them to occur is unclear, but one thing is certain: it will never hurt to build all of the external packages anyway just to be safe.
If you wish to modify or debug any of the external packages themselves (or need to build a non-Intel x86/x64 architecture build of Hercules however, such as arm, mips, ppc, sparc, xscale, etc), then you will need to manually build each of the external packages first in order to create the static link libraries that Hercules will need to link with, before you can then build Hercules.
For more detailed External Package build information please refer to the README.EXTPKG document.
Configure Hercules for your system:
By default, the configure script will attempt to guess appropriate compiler optimization flags for your system. If its guesses turn out to be wrong, you can disable all optimization by passing the --disable-optimization option to configure, or specify your own optimization flags with --enable-optimization=FLAGS. For additional configuration options, run: ./configure --help=short.
For Apple MacOS, these additional configure switches are recommended:
Build the executables:
(Optional) Install the programs:
sudo make install
This is an optional step because once Hercules is built, you should be able to run Hercules directly from the Hercules build directory itself without needing to install anything beforehand. But if you want to officially install it somewhere, then by all means do so.
It should be mentioned however, that if you do decide to run directly out of the build directory, you should first set the 'cap_sys_nice' capabilities on the Hercules executables and start Hercules as root. This will allow Hercules to properly set the priorities of its internal threads:
sudo setcap 'cap_sys_nice=eip' ./hercules
sudo setcap 'cap_sys_nice=eip' ./herclin
sudo setcap 'cap_net_admin+ep' ./hercifc
You don't need to do this if you do sudo make install however since the makefile does this for you. You only need to do this when you decide to not install the results of the build and run directly out of the build directory instead.
Q: hercules: error while loading shared libraries: libherc.so: cannot open shared object file: No such file or directory
A: please do a sudo ldconfig after hercules build step. Then restart sysgen with --skip-hercules