ファイル

.git-blame-ignore-revs で指定されたリビジョンは除外しています。 これを迂回して通常のBlame表示を見るには ここをクリック。

155 行
5.3 KiB
CMake
Raw パーマリンク 通常表示 履歴

include_guard(DIRECTORY)
# ----------------------------------------------------------------------------------------#
#
# Clang Tidy
#
# ----------------------------------------------------------------------------------------#
# clang-tidy
macro(ROCPROFILER_SYSTEMS_ACTIVATE_CLANG_TIDY)
if(ROCPROFSYS_USE_CLANG_TIDY)
find_program(CLANG_TIDY_COMMAND NAMES clang-tidy)
rocprofiler_systems_add_feature(CLANG_TIDY_COMMAND "Path to clang-tidy command")
if(NOT CLANG_TIDY_COMMAND)
timemory_message(
2025-06-22 10:44:33 -04:00
WARNING "ROCPROFSYS_USE_CLANG_TIDY is ON but clang-tidy is not found!"
)
set(ROCPROFSYS_USE_CLANG_TIDY OFF)
else()
set(CMAKE_CXX_CLANG_TIDY ${CLANG_TIDY_COMMAND})
# Create a preprocessor definition that depends on .clang-tidy content so the
# compile command will change when .clang-tidy changes. This ensures that a
# subsequent build re-runs clang-tidy on all sources even if they do not
# otherwise need to be recompiled. Nothing actually uses this definition. We
# add it to targets on which we run clang-tidy just to get the build
# dependency on the .clang-tidy file.
file(SHA1 ${CMAKE_CURRENT_LIST_DIR}/.clang-tidy clang_tidy_sha1)
set(CLANG_TIDY_DEFINITIONS "CLANG_TIDY_SHA1=${clang_tidy_sha1}")
unset(clang_tidy_sha1)
endif()
endif()
endmacro()
# ------------------------------------------------------------------------------#
#
# clang-format target
#
# ------------------------------------------------------------------------------#
find_program(ROCPROFSYS_CLANG_FORMAT_EXE NAMES clang-format-18 clang-format)
2025-06-22 10:44:33 -04:00
find_program(ROCPROFSYS_CMAKE_FORMAT_EXE NAMES gersemi)
find_program(ROCPROFSYS_BLACK_FORMAT_EXE NAMES black)
2022-03-07 20:40:48 -06:00
add_custom_target(format-rocprofiler-systems)
2022-08-28 03:56:13 -05:00
if(NOT TARGET format)
add_custom_target(format)
endif()
foreach(_TYPE source python cmake)
if(NOT TARGET format-${_TYPE})
add_custom_target(format-${_TYPE})
endif()
endforeach()
2025-06-22 10:44:33 -04:00
if(
ROCPROFSYS_CLANG_FORMAT_EXE
OR ROCPROFSYS_BLACK_FORMAT_EXE
OR ROCPROFSYS_CMAKE_FORMAT_EXE
)
file(
GLOB_RECURSE sources
${PROJECT_SOURCE_DIR}/source/*.cpp
${PROJECT_SOURCE_DIR}/source/*.c
)
file(
GLOB_RECURSE headers
${PROJECT_SOURCE_DIR}/source/*.hpp
${PROJECT_SOURCE_DIR}/source/*.hpp.in
${PROJECT_SOURCE_DIR}/source/*.h
${PROJECT_SOURCE_DIR}/source/*.h.in
)
file(
GLOB_RECURSE examples
${PROJECT_SOURCE_DIR}/examples/*.cpp
${PROJECT_SOURCE_DIR}/examples/*.c
${PROJECT_SOURCE_DIR}/examples/*.hpp
${PROJECT_SOURCE_DIR}/examples/*.h
)
file(
GLOB_RECURSE tests_source
${PROJECT_SOURCE_DIR}/tests/source/*.cpp
${PROJECT_SOURCE_DIR}/tests/source/*.hpp
)
2022-03-07 20:40:48 -06:00
file(GLOB_RECURSE external ${PROJECT_SOURCE_DIR}/examples/lulesh/external/kokkos/*)
2022-04-05 00:24:34 -05:00
file(
2025-06-22 10:44:33 -04:00
GLOB_RECURSE cmake_files
2022-04-05 00:24:34 -05:00
${PROJECT_SOURCE_DIR}/source/*CMakeLists.txt
${PROJECT_SOURCE_DIR}/examples/*CMakeLists.txt
${PROJECT_SOURCE_DIR}/tests/*CMakeLists.txt
2023-01-24 18:53:23 -06:00
${PROJECT_SOURCE_DIR}/source/*.cmake
${PROJECT_SOURCE_DIR}/examples/*.cmake
${PROJECT_SOURCE_DIR}/tests/*.cmake
2022-04-05 00:24:34 -05:00
${PROJECT_SOURCE_DIR}/cmake/*.cmake
2025-06-22 10:44:33 -04:00
${PROJECT_SOURCE_DIR}/source/*.cmake
)
2022-03-07 20:40:48 -06:00
list(APPEND cmake_files ${PROJECT_SOURCE_DIR}/CMakeLists.txt)
if(external)
list(REMOVE_ITEM examples ${external})
2022-03-07 20:40:48 -06:00
list(REMOVE_ITEM cmake_files ${external})
endif()
2022-08-28 03:56:13 -05:00
if(ROCPROFSYS_CLANG_FORMAT_EXE)
2022-08-28 03:56:13 -05:00
add_custom_target(
format-rocprofiler-systems-source
${ROCPROFSYS_CLANG_FORMAT_EXE} -i ${sources} ${headers} ${examples}
2023-10-16 18:04:47 -05:00
${tests_source}
COMMENT
"[rocprofiler-systems] Running C++ formatter ${ROCPROFSYS_CLANG_FORMAT_EXE}..."
2025-06-22 10:44:33 -04:00
)
2022-08-28 03:56:13 -05:00
endif()
if(ROCPROFSYS_BLACK_FORMAT_EXE)
2022-08-28 03:56:13 -05:00
add_custom_target(
format-rocprofiler-systems-python
${ROCPROFSYS_BLACK_FORMAT_EXE} -q ${PROJECT_SOURCE_DIR}
2022-08-28 03:56:13 -05:00
COMMENT
"[rocprofiler-systems] Running Python formatter ${ROCPROFSYS_BLACK_FORMAT_EXE}..."
2025-06-22 10:44:33 -04:00
)
2022-08-28 03:56:13 -05:00
if(NOT TARGET format-python)
add_custom_target(format-python)
endif()
endif()
2022-08-28 03:56:13 -05:00
if(ROCPROFSYS_CMAKE_FORMAT_EXE)
2022-03-07 20:40:48 -06:00
add_custom_target(
format-rocprofiler-systems-cmake
${ROCPROFSYS_CMAKE_FORMAT_EXE} -i ${cmake_files}
COMMENT
"[rocprofiler-systems] Running CMake formatter ${ROCPROFSYS_CMAKE_FORMAT_EXE}..."
2025-06-22 10:44:33 -04:00
)
2022-03-07 20:40:48 -06:00
if(NOT TARGET format-cmake)
add_custom_target(format-cmake)
endif()
endif()
2022-08-28 03:56:13 -05:00
foreach(_TYPE source python cmake)
if(TARGET format-rocprofiler-systems-${_TYPE})
2025-06-22 10:44:33 -04:00
add_dependencies(
format-rocprofiler-systems
format-rocprofiler-systems-${_TYPE}
)
add_dependencies(format-${_TYPE} format-rocprofiler-systems-${_TYPE})
2022-08-28 03:56:13 -05:00
endif()
endforeach()
foreach(_TYPE source python)
if(TARGET format-rocprofiler-systems-${_TYPE})
add_dependencies(format format-rocprofiler-systems-${_TYPE})
2022-08-28 03:56:13 -05:00
endif()
endforeach()
else()
2022-08-28 03:56:13 -05:00
message(STATUS "clang-format could not be found. format build target not available.")
endif()