A streamlined CMake build system foundation for developing HPC software
target_sources()
instead of altering
them to absolute paths.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.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.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`blt_find_target_dependencies
blt_check_code_compiles
now works with alias targetsblt_print_variables
macro to print variables in current scope, with regex filtering on variable names and valuesDEPENDS_ON
optional parameter to blt_check_code_compiles
macro to allow for checking if a feature is available in a third-party imported target.CONFIGURATIONS
and OMP_NUM_THREADS
options to blt_add_benchmark
--rocm-path=/path/to/rocm
against Crayftn compiler earlier than 15.0.0.INTERFACE_INCLUDE_DIRECTORIES
in blt_patch_target(... TREAT_INCLUDES_AS_SYSTEM true)
.${PROJECT_NAME}_ALL_SOURCES
.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.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
blt_print_target_properties
macro to print properties of
target's children as well as limit the properties printed with regular expressions:
blt_export_tpl_targets
macro to add BLT-provided third-party library
targets to an export set.BLT_C_FILE_EXTS
updated to include .cuh
BLT_CLANG_HIP_ARCH
into the CMAKE_HIP_ARCHITECTURES
variableENABLE_ALL_WARNINGS
, append the flag to the beginning of CMAKE_{C,CXX}_FLAGS
instead
of the endhip-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
.1d.cube.order2.c
is considered a .c
file.ENABLE_CLANG_HIP
and BLT_CLANG_HIP_ARCH
-std=c++14
instead of -std=c++1y
when BLT_CXX_STD
is set to c++14
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
BLT_REQUIRED_ASTYLE_VERSION
, BLT_REQUIRED_CLANGFORMAT_VERSION
, and BLT_REQUIRED_UNCRUSTIFY_VERSION
HEADERS
to blt_add_executable
. This is important for build system dependency tracking
and IDE folder support.blt_import_library
macro that creates a real CMake target for imported libraries,
intended to be used instead of blt_register_library
whenever possibleblt_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.blt_import_library
that allows imported libraries to be
added to an export set and installed.CUDA_RESOLVE_DEVICE_SYMBOLS
target property.SHELL:
to prevent de-duplication of flags
passed to target_link_options
.add_code_coverage_target
to blt_add_code_coverage_target
, which now supports
user-specified source directoriesmake clean
_
to avoid collision
with input parameters.BLT_CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES_EXCLUDE
, functionality now
provided for all languages using BLT_CMAKE_IMPLICIT_LINK_DIRECTORIES_EXCLUDE
variableblt_patch_target
no longer attempts to set system include directories when a target
has no include directoriesblt_add_library
hip
/hip_runtime
/cuda
/cuda_runtime
will automatically be linked with the HIP or CUDA (NVCC) linkerv0.3.6 See RELEASE-NOTES.md for changes in this version and previous versions.