Skip to content
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
114 lines (67 sloc) 5.84 KB

Draft document generated by the IDEAS xSDK project.

We are actively soliciting suggestions from the community at

xSDK Community Installation Policies

Version 0.5.0, June 27, 2019


What is software configuration? and How to configure software.


Combinations of multiple software packages developed by different groups have become essential for large-scale computational science, where the capabilities needed for modeling, simulation, and analysis are broader than any single team has resources to address. The often-tedious trial-and-error process of obtaining, configuring, and installing any single tool may arguably be manageable. From the perspective of an end-user application scientist, however, handling each tool’s installation idiosyncrasies can easily become overwhelming when dealing with several packages in combination. Worse, such problems are compounded by the need for consistency among packages to be used within the same application in terms of compiler, compiler version, exotic compiler optimization options, and common third-party packages such as BLAS and HDF5.


A key aspect of work in the IDEAS software productivity project is developing an Extreme-scale Scientific Software Development Kit (xSDK). As an initial step in this work, our goal is to define and implement a standard subset1 of configure and CMake2 options for xSDK and other HPC packages in order to make the configuration and installation process as efficient as possible on standard Linux distributions and Mac OS, as well as on target machines at DOE computing facilities (ALCF, NERSC, OLCF). Note that we are not requiring that all packages use the same installation software, merely that they follow the same standard procedure with the same option names for installation. This approach provides maximum flexibility for each package to select the most suitable toolchain to use for its package.


Development of a standard xSDK package installation interface is a foundational step toward the seamless combined use of multiple xSDK libraries. The impact of this work is that all xSDK packages will have standard configuration and build instructions, as well as a tester to ensure that all functionality works properly. In addition, because new packages in the xSDK will follow the same standard, it is possible to make the installations "scriptable," that is, to write tools to install many packages automatically. This work is part of the xSDK Community Package Policies.

xSDK Standard Configure and CMake Options3

  1. Implement the xSDK defaults option.

  2. Identify location to install package.

  3. Select compilers and compiler flags.

  4. Create libraries with debugging information and possible additional error checking.

  5. Select option used for indicating whether to build shared libraries.

  6. Build interface for a particular additional language.

  7. Determine precision for packages that build only for one precision. Packages that handle all precisions automatically are free to ignore this option.

  8. Determine index size for packages that build only for one index size. Packages that handle all precisions automatically are free to ignore this option.

  9. Set location of BLAS and LAPACK libraries.

  10. Determine other package libraries and include directories.

  11. In the XSDK mode, XSDK projects should not rely on users providing any library path information in environmental variables.

  12. Provide commands for compiling, installing, and "smoke" testing.

  13. Package should provide a machine-readable output to show provenance.

For further discussion and examples of the xSDK standard Configure and CMake options see

  • Changes in version 0.5.0, June 27, 2019:
    • Changed installation policies 13 and 10 and examples in 10


This document was prepared by Roscoe Bartlett, Jason Sarich, and Barry Smith, with key input from Todd Gamblin. We thank xSDK software developers and the IDEAS team for insightful discussion about issues and approaches.


This material is based upon work supported by the U.S. Department of Energy Office of Science, Advanced Scientific Computing Research and Biological and Environmental Research programs.

1 Packages are free to support their own additional options, but using the standard options should be all that is needed to get correct builds.

2 A subset of these standard behaviors is implemented in the XSDKDefaults.cmake module and is demonstrated and tested in the CMake project

3 This standard is related only to arguments to CMake and GNU Autoconf; there is no requirement regarding the make system used (for example, that it be GNU make) nor that the make system accepts any particular arguments, such as make LIBS+=-lz.

You can’t perform that action at this time.