CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
141 lines
4.9 KiB
CMake
Executable File
141 lines
4.9 KiB
CMake
Executable File
# ######################################################################################################################
|
|
# Copyright (C) 2017 Advanced Micro Devices, Inc.
|
|
# ######################################################################################################################
|
|
|
|
include(CMakeParseArguments)
|
|
include(ProcessorCount)
|
|
include(ROCMAnalyzers)
|
|
|
|
find_program(
|
|
CPPCHECK_EXE
|
|
NAMES cppcheck
|
|
PATHS /opt/rocm/bin)
|
|
|
|
function(rocm_find_cppcheck_version VAR)
|
|
execute_process(COMMAND ${CPPCHECK_EXE} --version OUTPUT_VARIABLE VERSION_OUTPUT)
|
|
separate_arguments(VERSION_OUTPUT_LIST UNIX_COMMAND "${VERSION_OUTPUT}")
|
|
list(LENGTH VERSION_OUTPUT_LIST VERSION_OUTPUT_LIST_LEN)
|
|
if(VERSION_OUTPUT_LIST_LEN GREATER 1)
|
|
list(GET VERSION_OUTPUT_LIST 1 VERSION)
|
|
set(${VAR}
|
|
${VERSION}
|
|
PARENT_SCOPE)
|
|
else()
|
|
set(${VAR}
|
|
"0.0"
|
|
PARENT_SCOPE)
|
|
endif()
|
|
|
|
endfunction()
|
|
|
|
if(NOT CPPCHECK_EXE)
|
|
message(STATUS "Cppcheck not found")
|
|
set(CPPCHECK_VERSION "0.0")
|
|
else()
|
|
rocm_find_cppcheck_version(CPPCHECK_VERSION)
|
|
message(STATUS "Cppcheck found: ${CPPCHECK_VERSION}")
|
|
endif()
|
|
|
|
processorcount(CPPCHECK_JOBS)
|
|
|
|
set(CPPCHECK_BUILD_DIR
|
|
${CMAKE_BINARY_DIR}/cppcheck-build
|
|
CACHE STRING "")
|
|
file(MAKE_DIRECTORY ${CPPCHECK_BUILD_DIR})
|
|
set_property(
|
|
DIRECTORY
|
|
APPEND
|
|
PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${CPPCHECK_BUILD_DIR})
|
|
|
|
include(CMakeDependentOption)
|
|
cmake_dependent_option(ROCM_ENABLE_CPPCHECK "Enable CppCheck" ON CPPCHECK_EXE OFF)
|
|
|
|
macro(rocm_enable_cppcheck)
|
|
if(ROCM_ENABLE_CPPCHECK)
|
|
set(options FORCE INCONCLUSIVE EXHAUSTIVE)
|
|
set(oneValueArgs RULE_FILE)
|
|
set(multiValueArgs CHECKS SUPPRESS DEFINE UNDEFINE INCLUDE SOURCES ADDONS)
|
|
|
|
cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
string(REPLACE ";" "," CPPCHECK_CHECKS "${PARSE_CHECKS}")
|
|
string(REPLACE ";" "\n" CPPCHECK_SUPPRESS "${PARSE_SUPPRESS};*:/usr/*")
|
|
file(WRITE ${CMAKE_BINARY_DIR}/cppcheck-supressions "${CPPCHECK_SUPPRESS}")
|
|
set(CPPCHECK_DEFINES)
|
|
foreach(DEF ${PARSE_DEFINE})
|
|
list(APPEND CPPCHECK_DEFINES "-D${DEF}")
|
|
endforeach()
|
|
|
|
set(CPPCHECK_UNDEFINES)
|
|
foreach(DEF ${PARSE_UNDEFINE})
|
|
list(APPEND CPPCHECK_UNDEFINES "-U${DEF}")
|
|
endforeach()
|
|
|
|
set(CPPCHECK_INCLUDES)
|
|
foreach(INC ${PARSE_INCLUDE})
|
|
list(APPEND CPPCHECK_INCLUDES "-I${INC}")
|
|
endforeach()
|
|
|
|
# set(CPPCHECK_FORCE)
|
|
set(CPPCHECK_FORCE "--project=${CMAKE_BINARY_DIR}/compile_commands.json")
|
|
if(PARSE_FORCE)
|
|
set(CPPCHECK_FORCE --force)
|
|
endif()
|
|
|
|
set(CPPCHECK_INCONCLUSIVE "")
|
|
if(PARSE_INCONCLUSIVE)
|
|
set(CPPCHECK_INCONCLUSIVE --inconclusive)
|
|
endif()
|
|
|
|
set(CPPCHECK_EXHAUSTIVE "")
|
|
if(PARSE_EXHAUSTIVE)
|
|
set(CPPCHECK_EXHAUSTIVE --check-level=exhaustive)
|
|
endif()
|
|
|
|
if(${CPPCHECK_VERSION} VERSION_LESS "1.80")
|
|
set(CPPCHECK_BUILD_DIR_FLAG)
|
|
else()
|
|
set(CPPCHECK_BUILD_DIR_FLAG "--cppcheck-build-dir=${CPPCHECK_BUILD_DIR}")
|
|
endif()
|
|
|
|
if(${CPPCHECK_VERSION} VERSION_LESS "1.80")
|
|
set(CPPCHECK_PLATFORM_FLAG)
|
|
else()
|
|
set(CPPCHECK_PLATFORM_FLAG "--platform=native")
|
|
endif()
|
|
|
|
set(CPPCHECK_RULE_FILE_ARG)
|
|
if(PARSE_RULE_FILE)
|
|
set(CPPCHECK_RULE_FILE_ARG "--rule-file=${PARSE_RULE_FILE}")
|
|
endif()
|
|
|
|
set(CPPCHECK_ADDONS_ARG)
|
|
foreach(ADDON ${PARSE_ADDONS})
|
|
list(APPEND CPPCHECK_ADDONS_ARG "--addon=${ADDON}")
|
|
endforeach()
|
|
|
|
set(CPPCHECK_TEMPLATE_ARG)
|
|
if(ROCM_ENABLE_GH_ANNOTATIONS)
|
|
# cmake-lint: disable=C0301
|
|
set(CPPCHECK_TEMPLATE_ARG
|
|
"--template=::warning file={file},line={line},col={column}::{severity}: {inconclusive:inconclusive: }{message} [{id}]"
|
|
"--template-location={file}:{line}:{column}: note: {info}\\\n{code}")
|
|
endif()
|
|
|
|
set(CPPCHECK_COMMAND
|
|
${CPPCHECK_EXE} -q
|
|
# -v --report-progress
|
|
${CPPCHECK_FORCE} ${CPPCHECK_EXHAUSTIVE} ${CPPCHECK_INCONCLUSIVE} ${CPPCHECK_BUILD_DIR_FLAG}
|
|
${CPPCHECK_PLATFORM_FLAG} ${CPPCHECK_RULE_FILE_ARG} ${CPPCHECK_TEMPLATE_ARG} ${CPPCHECK_ADDONS_ARG}
|
|
--inline-suppr --error-exitcode=1 -j ${CPPCHECK_JOBS} ${CPPCHECK_DEFINES} ${CPPCHECK_UNDEFINES}
|
|
${CPPCHECK_INCLUDES} "--relative-paths=${CMAKE_SOURCE_DIR}" --enable=${CPPCHECK_CHECKS}
|
|
--suppressions-list=${CMAKE_BINARY_DIR}/cppcheck-supressions)
|
|
|
|
add_custom_target(
|
|
cppcheck
|
|
COMMAND ${CPPCHECK_COMMAND} ${PARSE_SOURCES}
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
COMMENT "cppcheck: Running cppcheck...")
|
|
rocm_mark_as_analyzer(cppcheck)
|
|
endif()
|
|
endmacro()
|