CMake Configuration Options

The following set of options are available to control how FleCSI is built.

Basic CMake options

  • BUILD_SHARED_LIBS [default: ON]
    Build shared library objects (as opposed to static).

  • CMAKE_BUILD_TYPE [default: Debug]
    Specify the build type (configuration) statically for this build tree. Possible choices are Debug, Release, RelWithDebInfo, and MinSizeRel.

  • CMAKE_CXX_COMPILER [default: g++]
    Specify the C++ compiler to use to build FleCSI.

  • CMAKE_CXX_FLAGS [default: “”]
    Specify the flags to pass to the C++ compiler when building FleCSI.

  • CMAKE_INSTALL_PREFIX [default: /usr/local]
    Specify the installation path to use when make install is invoked.

Flog (FleCSI logging utility) options

  • ENABLE_FLOG [default: OFF]
    This option enables support for the FleCSI logging utility (Flog). When OFF, functions in the flog namespace and the flog macros remain defined but produce no output.

  • FLOG_ENABLE_COLOR_OUTPUT [default: OFF]

    Warning

    This interface is deprecated. It can now be configured at runtime using flog::config::color. See also Runtime Model.

    Produce colorized Flog output instead of using the output device’s default colors.

  • FLOG_SERIALIZATION_INTERVAL [default: 100]

    Warning

    This interface is deprecated. It can now be configured at runtime using flog::config::serialization_interval. See also Runtime Model.

    The Flog serialization interval specifies the number of task executions after which FleCSI should check for buffered output to process. It should be set to a value that balances output timeliness (lower = more timely output) against performance (higher = less overhead from the requisite global reduction).

  • FLOG_SERIALIZATION_THRESHOLD

    Warning

    This interface is deprecated and not used anymore.

  • FLOG_STRIP_LEVEL [default: 0]

    Warning

    This interface is deprecated. It can now be configured at runtime using flog::config::strip_level. See also Runtime Model.

    Set the Flog strip level, which should an integer from 0 to 4. Like tag groups, strip levels are a mechanism for the user to control the amount of output that Flog generates: the higher the strip level, the fewer Flog messages will be output. There are five strip levels in Flog:

    Level

    Type

    0

    trace

    1

    info

    2

    warn

    3

    error

    4

    fatal

    Each number represents the largest value of FLOG_STRIP_LEVEL that will produce that type of output. That is, if the strip level is 0, all message types will be output; if the strip level is 3, only error and fatal log messages will be output. Regardless of the strip level, Flog messages that are designated fatal will generate a runtime error and will invoke std::exit.

Parallelization options

  • ENABLE_KOKKOS [default: OFF]
    If enabled, support the use of Kokkos for thread-level parallelism and GPU support.

  • ENABLE_MPI_CXX_BINDINGS [default: OFF]
    This option is a fall-back for codes that actually require the MPI C++ bindings. This interface is deprecated and should only be used if it is impossible to get rid of the dependency.

  • ENABLE_OPENMP [default: OFF]
    Enable OpenMP pragmas for thread-level parallelism. The appropriate flags will be passed to the C++ compiler to enable language support for OpenMP.

  • FLECSI_BACKEND [default: legion]
    Specify the backend to use. Currently, legion and mpi are the only valid options.

Documentation options

  • ENABLE_DOCUMENTATION [default: OFF]
    This option controls whether or not the FleCSI user- and developer-guide documentation is built. If enabled, CMake will generate these guides as PDFs in the doc subdirectory of the build. To build the documentation, run

$ make doc
  • ENABLE_DOXYGEN [default: OFF]

    If enabled, CMake will verify that a suitable doxygen binary is available on the system and will add a target for generating Doxygen-style interface documentation from the FleCSI source code (make doxygen, which becomes a dependency of make doc).

  • ENABLE_DOXYGEN_WARN
    This deprecated option is ignored for compatibility.

Miscellaneous options

  • ENABLE_COVERAGE_BUILD [default: OFF]
    Enable build mode to determine the code coverage of the current set of unit tests. This is useful for continuous integration (CI) test analysis.

  • ENABLE_GRAPHVIZ [default: OFF]
    If enabled, support the use of Graphviz to produce graphical visualizations of a FleCSI program’s control points and actions.

  • ENABLE_HDF5 [default: OFF]
    If enabled, support the use of HDF5 for checkpointing program state.

  • ENABLE_UNIT_TESTS [default: OFF]
    Enable FleCSI unit tests. If enabled, the unit test suite can be run by invoking:

$ make test
  • FLECSI_ID_TYPE [default: std::uint32_t]
    Specify the C++ type for FleCSI topologies to use for entity IDs.