LLNL Blt Versions Save

A streamlined CMake build system foundation for developing HPC software

v0.6.2

1 month ago

Added

  • Added output for CMake's implicitly added link libraries and directories.

Changed

  • OpenMP target now uses a generator expression for Fortran flags instead of replacing flags in Fortran targets created with BLT macros.
  • Remove setting CMP0076 to OLD which left relative paths in target_sources() instead of altering them to absolute paths.
  • Header-only libraries headers now show up under their own target in IDE project views instead of under downstream targets. This only works in CMake >= 3.19, otherwise they will not show up at all.
  • Raised version for base CMake version supported by BLT to 3.15 to support ALIAS targets across BLT.

v0.6.1

3 months ago

Fixed

  • Turned off GoogleTest finding Python

v0.6.0

3 months ago

Added

  • Added support for C++23. Note: XL and PGI do not support C++23.
  • Adds a clang_tidy_style CMake target to allow clang-tidy to fix errors in-place. This requires a CLANGAPPLYREPLACEMENTS_EXECUTABLE CMake variable to point to the clang-apply-replacements executable in addition to the CLANGTIDY_EXECUTABLE. Also adds a corresponding ENABLE_CLANGAPPLYREPLACEMENTS CMake option. Note that the clang_tidy_style target is not added to the style target and must be run separately.
  • Added the blt_install_tpl_setups macro, which installs files to setup and create targets for the third-party libraries OpenMP, MPI, CUDA, and HIP. This macro is meant to replace blt_export_tpl_targets as the preferred way to setup third-party libraries with BLT.
  • Added blt::`` namespaced aliases for BLT targets, cuda, cuda_runtime, mpi, and openmp. These targets still exist but but will be deprecated in a future release. It is recommended that you move to the new alias names, blt::cuda, blt::cuda_runtime, blt::mpi, and blt::openmp`

Changed

  • SetupHIP now searches for user-defined or environment variables before CMake paths to find the ROCM_PATH.

Fixed

  • Fixed infinite loop in blt_find_target_dependencies
  • blt_check_code_compiles now works with alias targets

v0.5.3

11 months ago

[Version 0.5.3] - Release date 2023-06-05

Changed

  • Updated Googletest to main from 04/13/2023. Commit: 12a5852e451baabc79c63a86c634912c563d57bc. Note: this version of Googletest requires C++14, and PGI is not supported. If you are using PGI, set ENABLE_GTEST OFF.
  • Updated GoogleBenchmark to 1.8

Added

  • Added blt_print_variables macro to print variables in current scope, with regex filtering on variable names and values
  • Added DEPENDS_ON optional parameter to blt_check_code_compiles macro to allow for checking if a feature is available in a third-party imported target.
  • Added CONFIGURATIONS and OMP_NUM_THREADS options to blt_add_benchmark

Fixed

  • Guard HIP compiler flag --rocm-path=/path/to/rocm against Crayftn compiler earlier than 15.0.0.
  • Fix doubling of INTERFACE_INCLUDE_DIRECTORIES in blt_patch_target(... TREAT_INCLUDES_AS_SYSTEM true).

Removed

  • Removed tracking all sources in a project via ${PROJECT_NAME}_ALL_SOURCES.

v0.5.2

1 year ago

Added

  • Added blt_convert_to_system_includes macro to convert existing interface includes to system interface includes.
  • blt_check_code_compiles which compiles a C++ code snippet and returns the result.
  • Added variable BLT_CMAKE_IMPLICIT_LINK_LIBRARIES_EXCLUDE for filtering link libraries implicitly added by CMake. See the following example host-config: host-configs/llnl/blueos_3_ppc64le_ib_p9/clang@upstream_nvcc_xlf.cmake

Changed

  • Added three extra options to blt_print_target_properties macro to print properties of target's children as well as limit the properties printed with regular expressions:
    • CHILDREN (true/ false) whether or not you want to print the target's children's properties as well (recursively)
    • PROPERTY_NAME_REGEX (regular expression string) reduce which properties to print by name
    • PROPERTY_VALUE_REGEX (regular expression string) reduce which properties to print by value

v0.5.1

2 years ago

Added

  • Added support for C++20. Note: XL does not support C++20. While PGI has C++20 support, it is currently disabled (A BLT fatal error will occur).
  • BLT_CXX_STD now sets CMAKE_HIP_STANDARD, in CMake 3.21+, similar to CMAKE_CUDA_STANDARD.

Fixed

  • Removed hard-coded -std=c++11 from various places related to CUDA flags. This now honors CMAKE_CUDA_STANDARD if set otherwise falls back on BLT_CXX_STD or CMAKE_CXX_STANDARD.
  • Removed extra HIP offload flags that were being added as generator expressions as opposed to simple flags.

Removed

  • Removed support for deprecated HCC.

v0.5.0

2 years ago

Added

  • Added support for IntelLLVM compiler family to blt_append_custom_compiler_flag
  • Added support for hip targets configured with cmake 3.21 native hip support
  • Added blt_export_tpl_targets macro to add BLT-provided third-party library targets to an export set.

Changed

  • BLT_C_FILE_EXTS updated to include .cuh
  • Fold BLT_CLANG_HIP_ARCH into the CMAKE_HIP_ARCHITECTURES variable
  • When using ENABLE_ALL_WARNINGS, append the flag to the beginning of CMAKE_{C,CXX}_FLAGS instead of the end
  • HIP support now uses the hip-config.cmake file provided by ROCM. This modification requires a change to the BLT-provided HIP target names, and they are now available under the blt prefix: blt::hip and blt::hip_runtime.

Fixed

  • Source code filename extension filtering now uses regular expressions to allow for more user customization and to improve handling of file names with multiple periods, e.g. 1d.cube.order2.c is considered a .c file.

v0.4.1

2 years ago

[Version 0.4.1] - Release date 2021-07-20

Added

  • Added compilation of HIP with clang using ENABLE_CLANG_HIP and BLT_CLANG_HIP_ARCH

Changed

  • XL: Use compiler flag -std=c++14 instead of -std=c++1y when BLT_CXX_STD is set to c++14

Fixed

  • Simpified the clang-format version regex that was causing hangs on some version strings.

v0.4.0

3 years ago

[Version 0.4.0] - Release date 2021-04-09

Added

  • Added variable BLT_CMAKE_IMPLICIT_LINK_DIRECTORIES_EXCLUDE for filtering link directories implicitly added by CMake. See the following example host-config: host-configs/llnl/blueos_3_ppc64le_ib_p9/clang@upstream_nvcc_c++17.cmake
  • Added support for clang-tidy static analysis check
  • Added ability to change the output name of an executable via the OUTPUT_NAME parameter of blt_add_executable
  • Added user option for enforcing specific versions of autoformatters - the new options are BLT_REQUIRED_ASTYLE_VERSION, BLT_REQUIRED_CLANGFORMAT_VERSION, and BLT_REQUIRED_UNCRUSTIFY_VERSION
  • Added HEADERS to blt_add_executable. This is important for build system dependency tracking and IDE folder support.
  • Added support for formatting Python code using YAPF.
  • Added new blt_import_library macro that creates a real CMake target for imported libraries, intended to be used instead of blt_register_library whenever possible
  • Added new blt_patch_target macro to simplify modifying properties of an existing CMake target. This macro accounts for known differences in compilers, target types, and CMake releases.
  • Added support for formatting CMake code using cmake-format.
  • Added an EXPORTABLE option to blt_import_library that allows imported libraries to be added to an export set and installed.
  • Added FRUIT's MPI parallel unit test reporting to BLT's internal copy of FRUIT
  • CUDA device links for object libraries can be enabled with the existing CUDA_RESOLVE_DEVICE_SYMBOLS target property.

Changed

  • MPI Support when using CMake 3.13 and newer: MPI linker flags are now passed as single string prefixed by SHELL: to prevent de-duplication of flags passed to target_link_options.
  • For HIP-dependent builds, only add HCC include directory if it exists.
  • HIP CMake utilities updated to AMD's latest version
  • Updated add_code_coverage_target to blt_add_code_coverage_target, which now supports user-specified source directories
  • Code coverage targets leave LCOV-generated files intact for later use; these files will still be removed by make clean

Fixed

  • ClangFormat checks now support multiple Python executable names
  • Prefixed blt_register_library() internal variables with _ to avoid collision with input parameters.
  • Turn off system includes for registered libraries when using the PGI compiler
  • Removed unneeded SYSTEM includes added by googletest that was causing problems in PGI builds (BLT was adding them already to the register library calls)
  • Removed variable BLT_CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES_EXCLUDE, functionality now provided for all languages using BLT_CMAKE_IMPLICIT_LINK_DIRECTORIES_EXCLUDE variable
  • ClangQuery was being auto-enabled in cases where no checker directories where defined. This caused a crash. blt_add_clang_query_target learned parameter CHECKER_DIRECTORIES and blt_add_code_checks learned parameter CLANGQUERY_CHECKER_DIRECTORIES. Both still respect BLT_CLANGQUERY_CHECKER_DIRECTORIES.
  • It is now a fatal error to supply CLANGFORMAT_CFG_FILE plus ASTYLE_CFG_FILE or UNCRUSTIFY_CFG_FILE arguments to blt_add_code_checks; previously, these combinations were implied to be errors in BLT documentation, but BLT would not return an error in those cases.
  • blt_patch_target no longer attempts to set system include directories when a target has no include directories
  • Header-only libraries now can have dependencies via DEPENDS_ON in blt_add_library
  • Added a workaround for include directories of imported targets on PGI. CMake was erroneously marking them as SYSTEM but this is not supported by PGI.
  • Check added to make sure that if HIP is enabled with fortran, the LINKER LANGUAGE is not changed back to Fortran.
  • Executables that link to libraries that depend on hip/hip_runtime/cuda/cuda_runtime will automatically be linked with the HIP or CUDA (NVCC) linker
  • Patched an issue with the FindHIP macros that added the inclusive scan of specified DEFINEs to compile commands
  • Re-added previous OpenMP flag patching logic to maintain compatibility with BLT-registered libraries

v0.3.6

3 years ago

v0.3.6 See RELEASE-NOTES.md for changes in this version and previous versions.