Customizing the Configuration File

The configuration file specifies information that the compiler uses when you invoke it. XL Fortran provides the default configuration file /etc/opt/ibmcmp/xlf/8.1/xlf.cfg at installation time.

If you are running on a single-user system, or if you already have a compilation environment with compilation scripts or makefiles, you may want to leave the default configuration file as it is.

Otherwise, especially if you want many users to be able to choose among several sets of compiler options, you may want to add new named stanzas to the configuration file and to create new commands that are links to existing commands. For example, you could specify something similar to the following to create a link to the xlf95 command:

ln -s /opt/ibmcmp/xlf/8.1/bin/xlf95 /Users/lisa/bin/my_xlf95

When you run the compiler under another name, it uses whatever options, libraries, and so on, that are listed in the corresponding stanza.

Notes:

  1. The configuration file contains other named stanzas to which you may want to link.

  2. If you make any changes to the default configuration file and then move or copy your makefiles to another system, you will also need to copy the changed configuration file.

  3. You cannot use tabs as separator characters in the configuration file. If you modify the configuration file, make sure that you use spaces for any indentation.

Attributes

The configuration file contains the following attributes:

use
The named and local stanzas provide the values for attributes. For single-valued attributes, values in the use attribute apply if there is no value in the local, or default, stanza. For comma-separated lists, the values from the use attribute are added to the values from the local stanza. You can only use a single level of the use attribute. Do not specify a use attribute that names a stanza with another use attribute.

crt
When invoked, the default (which is the path name of the object file that contains the startup code), passed as the first parameter to the linkage editor.

mcrt
Same as for crt, but the object file contains profiling code for the -p option.

gcrt
Same as crt, but the object file contains profiling code for the -pg option.

gcc_libs
When invoked, the linker options to specify the path to the GCC libraries and to link the GCC library.

gcc_path
Specifies the path to the tool chain.

cpp
The absolute path name of the C preprocessor, which is automatically called for files ending with a specific suffix (usually .F).

xlf
The absolute path name of the main compiler executable file. The compiler commands are driver programs that execute this file.

code
The absolute path name of the optimizing code generator.

xlfopt
Lists names of options that are assumed to be compiler options, for cases where, for example, a compiler option and a linker option use the same letter. The list is a concatenated set of single-letter flags. Any flag that takes an argument is followed by a colon, and the whole list is enclosed by double quotation marks.

as
The absolute path name of the assembler.

asopt
Lists names of options that are assumed to be assembler options for cases where, for example, a compiler option and an assembler option use the same letter. The list is a concatenated set of single-letter flags. Any flag that takes an argument is followed by a colon, and the whole list is enclosed by double quotation marks. You may find it more convenient to set up this attribute than to pass options to the assembler through the -W compiler option.

ld
The absolute path name of the linker.

ldopt
Lists names of options that are assumed to be linker options for cases where, for example, a compiler option and a linker option use the same letter. The list is a concatenated set of single-letter flags. Any flag that takes an argument is followed by a colon, and the whole list is enclosed by double quotation marks.

You may find it more convenient to set up this attribute than to pass options to the linker through the -W compiler option. However, most unrecognized options are passed to the linker anyway.

options
A string of options that are separated by commas. The compiler processes these options as if you entered them on the command line before any other option. This attribute lets you shorten the command line by including commonly used options in one central place.

cppoptions
A string of options that are separated by commas, to be processed by cpp as if you entered them on the command line before any other option. This attribute is needed because some cpp options are usually required to produce output that can be compiled by XL Fortran. The default options are -C (which preserves any C-style comments in the output) and -P (which prevents #line directives from being generated).

fsuffix
The allowed suffix for Fortran source files. The default is f. The compiler requires that all source files in a single compilation have the same suffix. Therefore, to compile files with other suffixes, such as f95, you must change this attribute in the configuration file or use the -qsuffix compiler option. For more information on -qsuffix, see -qsuffix Option.

cppsuffix
The suffix that indicates a file must be preprocessed by the C preprocessor (cpp) before being compiled by XL Fortran. The default is F.

osuffix
The suffix used to recognize object files that are specified as input files. The default is o.

ssuffix
The suffix used to recognize assembler files that are specified as input files. The default is s.

libraries
-l options, which are separated by commas, that specify the libraries used to link all programs.

hot
Absolute path name of the program that does array language optimizations when you specify the -qhot or -qipa options.

ipa
Absolute path name of the program that performs the following:

bolt
Absolute path name of the binder (fast linker).

defaultmsg
Absolute path name of the default message files.

include_32
Indicates the search path that is used for the compiler supplied header and .mod files.

What a Configuration File Looks Like

The following is an example of a configuration file:

xlf95:    use        = DEFLT
          libraries  = -lxlf90,-lxlopt,-lxlomp_ser,-lxl,-lxlfmath
          gcc_libs   = -lm,-lc,-lgcc,-lSystem
          options    = -qfree=f90
 
* Alias for standard Fortran compiler
f95:      use        = DEFLT
          libraries  = -lxlf90,-lxlopt,-lxlomp_ser,-lxl,-lxlfmath
          gcc_libs   = -lm,-lc,-lgcc,-lSystem
          options    = -qfree=f90
          fsuffix    = f95
 
* Fortran 90 compiler
xlf90:    use        = DEFLT
          libraries  = -lxlf90,-lxlopt,-lxlomp_ser,-lxl,-lxlfmath
          gcc_libs   = -lm,-lc,-lgcc,-lSystem
          options    = -qxlf90=noautodealloc:nosignedzero,-qfree=f90
 
* Alias for Fortran 90 compiler
f90:      use        = DEFLT
          libraries  = -lxlf90,-lxlopt,-lxlomp_ser,-lxl,-lxlfmath
          gcc_libs   = -lm,-lc,-lgcc,-lSystem
          options    = -qxlf90=noautodealloc:nosignedzero,-qfree=f90
          fsuffix    = f90
 
* Original Fortran compiler
xlf:      use        = DEFLT
          libraries  = -lxlf90,-lxlopt,-lxlomp_ser,-lxl,-lxlfmath
          gcc_libs   = -lm,-lc,-lgcc,-lSystem
          options    = -qnozerosize,-qsave,-qalias=intptr,-qposition=appendold,
                       -qxlf90=noautodealloc:nosignedzero,-qxlf77=intarg:intxor
                         :persistent:noleadzero:gedit77:noblankpad:oldboz:softeof
 
* Alias for original Fortran compiler
f77:      use        = DEFLT
          libraries  = -lxlf90,-lxlopt,-lxlomp_ser,-lxl,-lxlfmath
          gcc_libs   = -lm,-lc,-lgcc,-lSystem
          options    = -qnozerosize,-qsave,-qalias=intptr,-qposition=appendold,
                       -qxlf90=noautodealloc:nosignedzero,-qxlf77=intarg:intxor
                         :persistent:noleadzero:gedit77:noblankpad:oldboz:softeof
 
* Alias for original Fortran compiler, used for XPG4 compliance
fort77:   use        = DEFLT
          libraries  = -lxlf90,-lxlopt,-lxlomp_ser,-lxl,-lxlfmath
          gcc_libs   = -lm,-lc,-lgcc,-lSystem
          options    = -qnozerosize,-qsave,-qalias=intptr,-qposition=appendold,
                       -qxlf90=noautodealloc:nosignedzero,-qxlf77=intarg:intxor
                         :persistent:noleadzero:gedit77:noblankpad:oldboz:softeof
 
* xlf with links to thread-safe components
xlf_r:    use          = DEFLT
          libraries    = -lxlf90_r,-lxlopt,-lxlomp_ser,-lxl,-lxlfmath
          smplibraries = -lxlf90_r,-lxlopt,-lxlsmp,-lxl,-lxlfmath
          gcc_libs     = -lpthread,-lm,-lc,-lgcc,-lSystem
          options      = -qthreaded,-qnozerosize,-qsave,-qalias=intptr,
                         -qposition=appendold,-qxlf90=noautodealloc:nosignedzero,
                         -qxlf77=intarg:intxor:persistent:noleadzero:gedit77
                           :noblankpad:oldboz:softeof
 
* xlf90 with links to thread-safe components
xlf90_r:  use        = DEFLT
          libraries  = -lxlf90_r,-lxlopt,-lxlomp_ser,-lxl,-lxlfmath
          smplibraries = -lxlf90_r,-lxlopt,-lxlsmp,-lxl,-lxlfmath
          gcc_libs     = -lpthread,-lm,-lc,-lgcc,-lSystem
          options    = -qxlf90=noautodealloc:nosignedzero,-qfree=f90,-qthreaded
 
* xlf95 with links to thread-safe components
xlf95_r:  use          = DEFLT
          libraries    = -lxlf90_r,-lxlopt,-lxlomp_ser,-lxl,-lxlfmath
          smplibraries = -lxlf90_r,-lxlopt,-lxlsmp,-lxl,-lxlfmath
          gcc_libs     = -lpthread,-lm,-lc,-lgcc,-lSystem
          options      = -qfree=f90,-qthreaded
 
 
* Common definitions
DEFLT:    xlf         = /opt/ibmcmp/xlf/8.1/exe/xlfentry
          crt         = /usr/lib/crt1.o
          mcrt        = /usr/lib/gcrt1.o
          gcrt        = /usr/lib/gcrt1.o
          include_32  = -I/opt/ibmcmp/xlf/8.1/include
          dis         = /opt/ibmcmp/xlf/8.1/exe/dis
          code        = /opt/ibmcmp/xlf/8.1/exe/xlfcode
          hot         = /opt/ibmcmp/xlf/8.1/exe/xlfhot
          ipa         = /opt/ibmcmp/xlf/8.1/exe/ipa
          bolt        = /opt/ibmcmp/xlf/8.1/exe/bolt
          defaultmsg  = /opt/ibmcmp/xlf/8.1/msg/en_US
          as          = /usr/bin/as
          ld          = /usr/bin/ld
          cppoptions  = -C
          cpp         = /opt/ibmcmp/xlf/8.1/exe/cpp
          dynlib      = -dynamic
          libdirs     = -L/opt/ibmcmp/xlsmp/1.3/lib,-L/opt
                         /ibmcmp/xlf/8.1/lib,-L/opt/ibmcmp/xlsmp
                         /1.3/../../lib,-L/opt/ibmcmp/xlf/8.1/../../lib
          gcc_path    = /usr
          gcc_libdirs = -L/usr/lib/gcc/darwin/3.3,-L/usr/lib/gcc/darwin,-
                         L/usr/libexec/gcc/darwin/ppc/3.3/../../..
          options     =
        modes_configure = 32

XL Fortran provides the library libxlf90_r.dylib in addition to libxlf90_t.dylib. The library libxlf90_r.dylib is a superset of libxlf90_t.dylib, which is a partial thread-support run-time library. The file xlf.cfg has been set up to link to libxlf90_r.dylib automatically when you use the xlf90_r, xlf95_r, and xlf_r commands.

Related Information:
You can use the -F Option to select a different configuration file, a specific stanza in the configuration file, or both.

Contents

IBM Copyright 2003