Setting up the Software (for Unix/Linux platforms)The E.R.I.K.A. Snapshots need the GNU Makefile to compile in the correct way the source code of the project.
Download the last snapshot of the Project, and decompress it on your Hard Disk.
Finally, you need to install the Development Environment for the H8/300 platform.
Building the H8 development environmentFirst of all you have to get the GCC (Gnu C Compiler) which is generally distribuited as two separate packages: gcc (which is the C/C++ compiler) and binutils (which contains assembler, linker and some other tools). These packages are distribuited from the GNU project ftp server (ftp.gnu.org). To obtain the versions we used to test and develop ERIKA you can click on the links below:
Faster way to install the H8 development environment is to use a
script file: click here
to see it.
Note that it was developed and tested on Linux Red Hat 9.0 system. You can use it at your own risk.... obviously! :-)
If you do not like to use script, in the follow you can see the main
steps needed for the installation (for a detailed list of the steps you
should look at the script).
Once you get the packages you have to extract them using the tar command:
> tar xfz binutils-2.11.2.tar.gz
This will create two subdirectories: binutils-2.11.2 and gcc-2.95.2.
> export H8_INSTALL_DIR=$HOME/hitachi
If you want the tools to be installed elsewhere, say /usr/local/hitachi,
just specify /usr/local/hitachi instead of $HOME/hitachi.
> cd binutils-2.11.2
Since we want gcc to work as a cross-compiler, we also need the assembler and the linker to generate code for Hitachi H8/300. This is what the --target=h8300-hitachi-hms option specifies. The option --prefix=$H8_INSTALL_DIR specifies that binutils is to be installed relative to the directory $H8_INSTALL_DIR. This means that executable files are installed in $H8_INSTALL_DIR/bin, libraries in $H8_INSTALL_DIR/lib and documentation and other files in other subdirectories of $H8_INSTALL_DIR.When configure finishes checking the system setup and provided no problems were detected, binutils is now ready to be compiled. This is done using make:
When the compilation is finished, binutils can be installed, which is accomplished with the make command again:
> make install
The installation process creates a number of subdirectories of $H8_INSTALL_DIR, and copies the newly built executable files, libraries, documentation and other files to these.
Having installed binutils, gcc can be compiled in a way such this:
> cd ../gcc-2.95.2
For the same reasons as above, target and prefix is specified as shown. The option --with-newlib specifies that gcc should not expect to find a standard C library for the Hitachi H8/300 architecture.
When configure finishes, gcc can be compiled. However, during the compilation, make must be able to access the executable files from binutils, so $H8_INSTALL_DIR/bin should be added to the path. One way to do this is to invoke make as:
> export PATH=$H8_INSTALL_DIR/bin:$PATH
When this is done, gcc can be installed:
> make install
As for binutils, this will install executable files and
other files in subdirectories of $H8_INSTALL_DIR.
Compiling E.R.I.K.A.Once you have downloaded and unzipped E.R.I.K.A. you should be able to compile it (the Snapshots contains a set of tests that can be found under the tests directory under the E.R.I.K.A. tree).
Suppose that E.R.I.K.A. is installed into the /home/abc/erika directory, so you have to set the following environment variables:
> export ERIKABASE=/home/abc/erikaNote that you can add the two lines above to your .bash_profile file (such a solution avoid you to set manually these variables through different sessions): in that case you have to substitute $H8_INSTALL_DIR with its value (for example, if $H8_INSTALL_DIR=/local/share/h8 then you can insert a line such this: export H8BASE=/local/share/h8).
Now you can go to a test directory and run make. The Makefile will create another directory called out, where all object files will be put. If you have any problem, please send a mail to the erika-help mailing list.