Compiler Setup and Handling in ATLAS Config
This is complicated as hell. Potentially, each architecture/OS combo has
unique compiler and flags for each supported compiler (more below), and the
user can override any/all of these. I'm changing the number of supported
compilers for greater flexability. These are:
- ICC
- : compiles all C interface routines.
Since it is not used for any kernel compilation
the performance impact of this compiler should be minimal.
- SMC
- : used to compile ATLAS single precision matmul kernels
- DMC
- : used to compile ATLAS double precision matmul kernels
- SKC
- : used to compile all non-interface, non-gemm-kernel
single precision ATLAS routines
- DKC
- : used to compile all non-interface, non-gemm-kernel
double precision ATLAS routines
- XCC
- : used to compile all front-end codes
- GCC
- : used to assemble assembly files and to compile kernels
that call for gcc
- F77
- : Valid fixed-format Fortran77 compiler that compiles
ATLAS's F77 interface routines. This should match the Fortran77
the user is using. This compiler's performance
does not affect ATLAS's performance, and so may be anything.
Here's my present design:
- Compiler defaults: are read in from atlcomp.txt, which
allows the user specify default compiler/flags, as well as specific
ones for particular architectures, and multiple compilers for a given
arch.
- Executable search: takes name of executable (in this case
a compiler name), and finds the path to it. Skipped if the user
provides the path as part of the compiler.
- C compiler interaction probe: separate probe that takes two or
more C compilers and their flags as arguments, and makes sure they
are able to call each other w/o problems.
- unimplemented: presently assumed to work
- F77/C calling convention probe: as in present config, but as
an independent probe.
- done: front-end is probe_f2c.c
Clint Whaley
2012-07-10