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)
By default, in release and development mode, Trilinos provides support for float and complex (
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_COMPLEX_DOUBLE with obvious defaults based on
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_COMPLEX=ON, respectively (or something similar).
- 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_COMPLEX_DOUBLEand 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_COMPLEX_DOUBLEin a few automated Trilinos builds ... Not going to do this in this story