# Building `atlc` from sources

atlc is highly portable program and should run on any UNIX system and some non-UNIX systems.

An early version for atlc forms part of the NetBSD project and has been ported to 23 different systems, including the Acorn 32, Amiga, Arm32, Atari, Cobalt, Dec Alpha, HP 300, i386 PC, Mac 68000, Power PC, Sun SPARC, VAX etc. atlc has even been run on a Sony Playstation 2!!. In addition to the systems running NetBSD UNIX, atlc has been run on the following operating systems

1. Solaris 2.5, 8 and Solaris 9 for SPARC
2. Solaris 8 for Intel
3. Linux 2.4.17 for a Dec Alpha
4. Tru64 UNIX 5.1B on a Dec Alpha 600a Personal Workstation
5. Redhat 7.2 Linux on PC
6. Redhat 6.2 on SPARC. Fails many tests if configured --with-threads. I think the thread library is broken
7. Debian 3.0 Linux on SPARC Fails many tests if configured --with-threads. I think the thread library is broken.
8. NetBSD 1.6 on SPARC
9. OpenBSD
10. AIX 5.2 on an IBM RS/6000. Fails one or two tests if configured with `--with-threads`, but the numerical results are fine and the images show no significant errors
11. IRIX 6.5.16 on an SGI Octane
12. x86 PC's run Windoze 98 and NT, although no deveopment is now done on these platforms.

To install altc you should download the souce code from `atlc`'s download area on SourceForge. It is preferable to also have following software too, although none, apart from a compatible version of `make`, are essential.

1. GNU make, sometimes installed as `gmake`. Sun's version of make in `/usr/ccs/bin/make` is not suitable, although IBM's version in AIX 5.2 works fine, as does HP's in HP-UX 11 and Tru64 5.1B. If you find you have an unsuitable version of make (and Sun's is the only one known), the GNU one (often called gmake) works fine.
2. If you have a system with more than one CPU, atlc can be configured to use any number of CPUs in parallel to speed execution, using a POSIX compatable thread library, or pthreads. Just add the option `--with-threads`. Sun's Solaris implementation works fine, as does IBM's AIX and SGI's IRIX, but any other POSIX library should work. If you have multiple CPUs and don't have a thread library, you should trying installing GNU Portable Threads, although atlc has not been tested with this. If your computer has only one CPU, there is no point in building atlc to use multiple threads, as it will run slower!

Extract the compressed file, using gunzip, or gzip -d.

    % gzip -d atlc-X.Y.tar.gz
    % tar xvf atlc-X.Y.tar
    % cd atlc-X.Y
    % ./configure
    % make
    % make check   // This is very important, as it checks the binaries.

The code tries to gather information about the hardware. This is by its very nature less portable than other parts of atlc. If a compilation or linking problem occurs during `make check` phase, then re-configure using `configure --disable-hardware-info`. Please let me know about such failures.

A total of 90 self-tests are performed in the `make check` stage. No tests should fail. Two tests are used to check the operation of the POSIX threads, so will be skipped unless configured with `--with-threads`.
Finally you can install the software if you wish.

    % su
    # make install.

The`make install` stage will install:

1. The executable programs (by default to`/usr/local/bin`)
2. The man pages (by default to `/usr/local/man/man1`)
3. Some HTML formatted documentation (generally similar to that on the atlc website. By default these are installed to`/usr/local/share/atlc/docs/html-docs`.
4. A copy of a paper published on atlc back in the December 1996 issue of QEX. That along with the C source for this very early version is installed to`/usr/local/share/atlc/docs/qex_december_199`6
5. Some example files (by default to`/usr/local/share/atlc/examples`)

Options to the `configure` script, can be listed by running `configure --help`. You should also conisider setting the variable `CC` to the compiler you wish to use and `CFLAGS` to any flags you need. Since the program `atlc` is quite CPU intensive, it is useful to test the effect of compiler optimisationflags. Running `make check` does this for you, since it runs a benchmark, giving you timing information. Some compiler optimisation options can break code, as they make assumptions that might not be valid. Hence always re-run `make check` if changing any compiler options.

atlc is written and supported by Dr. David Kirkby (G8WRB) It it issued under the GNU General Public License

The following is a trap for smammers, so they can gather loads of ficticious email address, so don't click anywhere o n this line th anks.