The file common/Make.global_options
exports several
make variables to other Makefiles which
include it. You will want to include this file into the Makefiles of
your project to use the same compiler flags and to access the paths
to libraries. This page documents available
flags, documents the values which are used
in your local installation, and shows
generic Makefiles which you may want to use
in your own projects.
Following is a list of all available flags which are exported to other Makefiles, sorted into different categories:
D
Path to the deal.II library
CXX
Executable name of the C++ compiler
CC
Executable name of the C compiler, which is used to generate shared libraries
GXX-VERSION
Name and version of the C++ compiler. Possible
names presently include egcs1.1
,
gcc2.95
, gcc2.96
,
gcc2.97
, gcc3.0
,
gcc3.1
, gcc3.2
,
gcc3.3
, gcc3.4
,
gcc4.0
,
ibm_xlc
, MIPSpro
,
sun_workshop
, sun_forte
,
intel_icc5
, intel_icc6
,
intel_icc7
, compaq_cxx
, and
probably a few more as well. Not all of
these compilers are actually supported (see the
ReadMe file for a
list of supported compilers and platforms), it is only a list of
recognized compilers.
Note that the naming of this variable is historical (it
should read CXX-VERSION
), since
it is also used even if the compiler is not the GNU C++
compiler.
GXX-VERSION-DETAILED
Like GXX-VERSION, just that it may also contain the dot version number, for example gcc3.3.3.
CC-VERSION
Name and version of the CC compiler. Possible names are similar to the ones listed above.
F77
Executable name of the F77 compiler; often, no Fortran compiler is needed, in which case the variable may be empty if none was found
F77-VERSION
Name and version of the Fortran 77 compiler. Possible
names presently include egcs1.1
,
gcc2.95
, gcc2.96
,
gcc2.97
, gcc3.0
, SunF77
,
AIXF77
, MIPSproF77
;
there may be others in the future, if we have access to
other systems
SHLIBLD
Executable name of compiler that is used to link object files to shared libraries. This will usually be the C++ compiler, but as this does not work for gcc 2.95, it is the C compiler in that case.
OBJEXT
Extension of object files. On unix, this is usually simply
o
, on Windows systems it is obj
.
EXEEXT
Extension of executables. On unix, this is usually the
empty strign, on Windows systems it is .exe
.
enable-shared
Determines whether shared or static libraries are used.
Set to yes
if you want to use shared
libraries.
PERL
Executable name of the `perl' program
DEAL_II_MAJOR
Major version number of the deal.II library, i.e. the number before the first dot. Note that this version number is also available in programs through a preprocessor variable
DEAL_II_MINOR
Minor version number of the deal.II library, i.e. the number after the first dot; if there are further numbers, like in version 3.0.1, then they are discarded as these versions only fix bugs but do not change features. Note that this version number is also available in programs through a preprocessor variable
TARGET
The target triplet as returned by config.guess. For example, on the system where I write this, it is i686-pc-linux-gnu, but it may also be sparc-sun-solaris2.7, or whatever config.guess determines for your system.
USE_CONTRIB_HSL
yes
indicates whether some subroutines from
the HSL have been explicitely installed and shall be used
by the library. no
otherwise.
(See the
ReadMe
file for more information on installation of HSL subroutines.)
USE_CONTRIB_PETSC
yes
indicates whether the interfaces to the PETSc
library shall be compiled. no
otherwise.
(See the
ReadMe
file for more information on installation of PETSc.)
DEAL_II_PETSC_DIR
If USE_CONTRIB_PETSC
is yes
, then this
variable has the path to the PETSc library, as either given by the
PETSC_DIR
environment variable, or the
--with-petsc
switch on the command line upon
configuration of the deal.II library.
DEAL_II_PETSC_ARCH
If USE_CONTRIB_PETSC
is yes
, then this
variable stores the architecture for which PETSc was compiled, as
either given by the PETSC_ARCH
environment variable,
or the --with-petsc-arch
switch on the command line
upon configuration of the deal.II library.
USE_CONTRIB_METIS
yes
indicates whether the METIS library has been
detected upon configuration, and whether we shall interface with
it. no
otherwise. (See the
ReadMe
file for more information on installation of METIS.)
DEAL_II_METIS_DIR
If USE_CONTRIB_METIS
is yes
, then this
variable has the path to the METIS library, as either given by the
METIS_DIR
environment variable, or the
--with-metis
switch on the command line upon
configuration of the deal.II library.
lib-path-base
Path to the library files of the /base library
lib-path-lac
Same for the /lac library
lib-path-deal2
Same for the /deal.II library
LIBPATH
All the library pathes prefixed by -L, i.e. the flags needed by the compiler to find the libraries when they are linked in using -lbase -llac -ldeal_II_2d (for example). These -L paths are appended to what was in $(LIBPATH) before.
LIBS
Additional libraries to be linked in, such as Fortran support, or Tecplot libraries when binary output is available.
F77LIBS
Libraries to be linked in when we link with Fortran
files. These libraries are checked at configuration time,
and are included into $(LIBS)
when they are
actually needed
static-lib-suffix
File extension of static libraries. Usually set to .a
shared-lib-suffix
File extension of shared libraries. If shared libraries
are supported, this suffix is usually .so, if shared
libraries are not supported, it is set to the same value
as static-lib-suffix
.
lib-suffix
File extension of libraries. Depending on the value of
enable-shared
, it is either set to
static-lib-suffix
or to
shared-lib-suffix
.
lib-base.o
Path and filename of the base library in optimized mode. depending on whether shared libraries were or were not enabled, the suffix of the value of this variable is either .so or .a
lib-base.g
Same, for the library in debug mode
lib-lac.o lib-lac.g
Same for the lac libraries
lib-deal2-1d.o lib-deal2-1d.g
lib-deal2-2d.o lib-deal2-2d.g
lib-deal2-3d.o lib-deal2-3d.g
Same for the deal.II libraries in the various dimensions
lib-contrib-hsl
Path and name of the library that contains the HSL subroutines explicitely installed. (See the ReadMe file for more information on installation of HSL subroutines.)
lib-contrib-petsc.g lib-contrib-petsc.o
Paths and names of the component libraries of the PETSc package, if found and used at configuration time. (See the ReadMe file for more information on installation of PETSc.)
lib-contrib-metis
Path and name of the METIS libraries, if found and used at configuration time. (See the ReadMe file for more information on installation of METIS.)
INCLUDE
All include paths figured out by the configure
script are now included into the variable
$(INCLUDE)
(which include the compiler option
-I in front of each directory). They are also
automatically included in your compiler calls as soon as you use
$(CXXFLAGS.g)
or $(CXXFLAGS.o)
.
An exception to this rule are paths listed below. These are
added to the variable $(INCLUDE)
only during make.
include-path-contrib-petsc
include-path-contrib-petsc-bmake
If PETSc is used, then these variables have the paths to the usual PETSc include files and the PETSc architecture dependent include files. (See the ReadMe file for more information on installation of PETSC.)
include-path-contrib-metis
If METIS is used, then this variable has the path to the METIS include files. (See the ReadMe file for more information on installation of METIS.)
INCLUDE
All the include pathes prefixed by -I
CXXFLAGS.g
C++ compiler flags for debug mode
CXXFLAGS.o
C++ compiler flags for optimized mode
CCFLAGS
C compiler flags. Since we only compiler C code for third-party libraries for which we assume that they and our interfaces to them are bug free, these flags are always for optimized mode.
F77FLAGS.g
Fortran 77 compiler flags for debug mode
F77FLAGS.o
Fortran 77 compiler flags for optimized mode
LDFLAGS
General linker flags
with-multithreading
This symbol is 'no' if the flag was not given to ./configure and 'posix' otherwise
Note that in multithread mode, the compiler flags are augmented by
the definition of the preprocessor variable
DEAL_II_USE_MT
, which you can use to find out whether
your program shall use multithreading or not.
If ./configure, detects a valid Tecplot API installation $(INCLUDE) and $(LIBS) are augmented by the Tecplot API include and library paths, and the following symbols are meaningful:
TECIO_INCLUDE
Path to the Tecplot API header files as found by ./configure
TECIO_LIBRARY
Path to the Tecplot API library