Releases: LLNL/blt
Releases · LLNL/blt
v0.6.2
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
v0.6.0
Added
- Added support for C++23. Note: XL and PGI do not support C++23.
- Adds a
clang_tidy_style
CMake target to allowclang-tidy
to fix errors in-place.
This requires aCLANGAPPLYREPLACEMENTS_EXECUTABLE
CMake variable to point to
theclang-apply-replacements
executable in addition to theCLANGTIDY_EXECUTABLE
.
Also adds a correspondingENABLE_CLANGAPPLYREPLACEMENTS
CMake option.
Note that theclang_tidy_style
target is not added to thestyle
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
replaceblt_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
[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 toblt_check_code_compiles
macro to allow for checking if a feature is available in a third-party imported target. - Added
CONFIGURATIONS
andOMP_NUM_THREADS
options toblt_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
inblt_patch_target(... TREAT_INCLUDES_AS_SYSTEM true)
.
Removed
- Removed tracking all sources in a project via
${PROJECT_NAME}_ALL_SOURCES
.
v0.5.2
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
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
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 theCMAKE_HIP_ARCHITECTURES
variable - When using
ENABLE_ALL_WARNINGS
, append the flag to the beginning ofCMAKE_{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 theblt
prefix:blt::hip
andblt::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
[Version 0.4.1] - Release date 2021-07-20
Added
- Added compilation of HIP with clang using
ENABLE_CLANG_HIP
andBLT_CLANG_HIP_ARCH
Changed
- XL: Use compiler flag
-std=c++14
instead of-std=c++1y
whenBLT_CXX_STD
is set toc++14
Fixed
- Simpified the clang-format version regex that was causing hangs on some version strings.
v0.4.0
[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
, andBLT_REQUIRED_UNCRUSTIFY_VERSION
- Added
HEADERS
toblt_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 ofblt_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 bySHELL:
to prevent de-duplication of flags
passed totarget_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
toblt_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 bymake 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 usingBLT_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