Compiling and installing SCALAPACKFX

In order to compile SCALAPACKFX, you need following prerequisites:

  • Fortran 2003 compiler [*],

  • GNU M4 macro interpreter,

  • GNU Make.

There are basically two different ways of using the library in your project:

Both are described below.

Precompiling the library

In order to create a precompiled library

  1. Copy the file make.arch.template to make.arch in the root directory of the source and customize the settings for the compilers and the linker according to your system.

  2. Change to the src/ folder.

  3. Issue make to build the library.

  4. Copy all module files (usually ending on .mod and the library libscalapackfx.a to a place, where your Fortran compiler and your linker can recognize them.

During the build process of your project, you may link the library with the -lscalapackfx option. Eventually, you may need to specify options for your compiler and your linker to specify the location of those directories. Assuming you’ve put the module files in the directory <MODFILEDIR> and the library file in <LIBRARYDIR>, you would typically invoke your compiler for the source files using the libscalapackfx_module as:

F2003_COMPILER -I<MODFILEDIR> -c somesource.f90

and link your object files at the end with:

LINKER -I<LIBRARYDIR> somesource.o ... -L<LIBRARYDIR> -lscalapackfx

Compiling the library during your build process

In order to build the library during the build process of your project:

  1. Copy the content of the src/ folder into a separate folder within your project.

  2. During the make process of your project, invoke the library makefile (Makefile.lib) to build the module files and the library in the folder where you’ve put the library sources.

    You must pass the compiler and linker options via variable defintions at the make command line. Assuming that the variables $(FXX), $(FXXOPT), $(LN) and $(LNOPT), $(M4) and $(M4OPT) contain the Fortran compiler, the Fortran compiler options, the linker, the linker options, the M4 preprocessor and its options, respectively, you would have something like:

    $(SCALAPACKFX_SRCDIR)/libscalapackfx.a:
            $(MAKE) -C $(SCALAPACKFX_SRCDIR) \
                FXX="$(FXX)" FXXOPT="$(FXXOPT)" \
                LN="$(LN)" LNOPT="$(LNOPT)" \
                M4="$(M4)" M4OPT="$(M4OPT)" \
                -f Makefile.lib
    

    in the makefile of your project with $(SCALAPACKFX_SRCDIR) being the directory where you’ve put the source of SCALAPACKFX.

You should also have a look at the GNUmakefile in the test/ folder of SCALAPACKFX, which uses exactly the same technique to compile the library during the build process for the tests.