Provide Trilinos-global CMake options to make it easier for apps to disable float & complex Scalar types
Created by: bartlettroscoe
Next Action Status:
Pushed to 'develop' branch as part of #482 (closed). Complete!
CC: @trilinos/framework, @trilinos/tpetra
Blocked By: #158 (closed)
Blocking: #482 (closed)
Description:
By default, in release and development mode, Trilinos provides support for float and complex (std::complex<float>
and std::complex<double>
) scalar types. When ETI is used, this massively increases the compile and link times for Trilinos. Most Trilihnos users don't even need float or complex scalar types.
Currently, to disable float and complex , the user has to set a bunch of separate Teuchos and Tpetra options. Very few users know what options these are so they get long build times by default and no idea how to disable them.
This story is to change the default for Trilinos to not build float or complex types by default. This story will also provide top level build options Trilinos_ENABLE_FLOAT
and Trilinos_ENABLE_COMPLEX
(and Trilinos_ENABLE_COMPLEX_FLOAT
and Trilinos_ENABLE_COMPLEX_DOUBLE
with obvious defaults based on Trilinos_ENABLE_FLOAT
and Trilinos_ENABLE_COMPLEX
) that all Trilinos packages that currently have their own variables will respond to.
Definition of Done:
- By default Trilinos builds without support for (or ETI instantiations for) float or complex scalar types.
- Users can turn on support for float and/or complex types by setting
-DTrilinos_ENABLE_FLOAT=ON
and/or-DTrilinos_ENABLE_COMPLEX=ON
, respectively (or something similar).
Tasks:
- Made a decision if support and explicit instantations for float and/or complex should be enabled by default or not. [DONE]
- Add Trilinos repository options
Trilinos_ENABLE_FLOAT
,Trilinos_ENABLE_COMPLEX
,Trilinos_ENABLE_COMPLEX_FLOAT
andTrilinos_ENABLE_COMPLEX_DOUBLE
and make Teuchos, Tpetra, Thyra, and other packages set their defaults based on this. (These should be Trilinos repository level options so that they can be set in meta projects like CASL VERA, MPACT, SCALE, as well) [Done] - Explicitly turn on
Trilinos_ENABLE_FLOAT
,Trilinos_ENABLE_COMPLEX
,Trilinos_ENABLE_COMPLEX_FLOAT
andTrilinos_ENABLE_COMPLEX_DOUBLE
in a few automated Trilinos builds ... Not going to do this in this story