mirror of
https://github.com/ROCm/composable_kernel.git
synced 2026-05-12 01:10:17 +00:00
add tidy
This commit is contained in:
3
.clang-tidy
Normal file
3
.clang-tidy
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
CheckOptions:
|
||||||
|
- key: bugprone-reserved-identifier.AllowedIdentifiers
|
||||||
|
value: '__HIP_PLATFORM_HCC__;__HIP_ROCclr__'
|
||||||
160
CMakeLists.txt
160
CMakeLists.txt
@@ -1,8 +1,10 @@
|
|||||||
cmake_minimum_required(VERSION 2.8.3)
|
cmake_minimum_required(VERSION 3.5)
|
||||||
project(composable_kernel)
|
project(composable_kernel)
|
||||||
|
|
||||||
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
|
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
|
||||||
|
|
||||||
|
include(CheckCXXCompilerFlag)
|
||||||
|
|
||||||
## C++
|
## C++
|
||||||
enable_language(CXX)
|
enable_language(CXX)
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
@@ -36,4 +38,160 @@ link_libraries(${OpenMP_pthread_LIBRARY})
|
|||||||
find_package(HIP REQUIRED)
|
find_package(HIP REQUIRED)
|
||||||
message(STATUS "Build with HIP ${hip_VERSION}")
|
message(STATUS "Build with HIP ${hip_VERSION}")
|
||||||
|
|
||||||
|
## tidy
|
||||||
|
include(EnableCompilerWarnings)
|
||||||
|
set(MIOPEN_TIDY_ERRORS ERRORS * -readability-inconsistent-declaration-parameter-name)
|
||||||
|
if(CMAKE_CXX_COMPILER MATCHES ".*hcc" OR CMAKE_CXX_COMPILER MATCHES ".*clang\\+\\+")
|
||||||
|
set(MIOPEN_TIDY_CHECKS -modernize-use-override -readability-non-const-parameter)
|
||||||
|
# Enable tidy on hip
|
||||||
|
elseif(MIOPEN_BACKEND STREQUAL "HIP" OR MIOPEN_BACKEND STREQUAL "HIPNOGPU")
|
||||||
|
set(MIOPEN_TIDY_ERRORS ALL)
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(ClangTidy)
|
||||||
|
enable_clang_tidy(
|
||||||
|
CHECKS
|
||||||
|
*
|
||||||
|
-abseil-*
|
||||||
|
-android-cloexec-fopen
|
||||||
|
# Yea we shouldn't be using rand()
|
||||||
|
-cert-msc30-c
|
||||||
|
-bugprone-exception-escape
|
||||||
|
-bugprone-macro-parentheses
|
||||||
|
-cert-env33-c
|
||||||
|
-cert-msc32-c
|
||||||
|
-cert-msc50-cpp
|
||||||
|
-cert-msc51-cpp
|
||||||
|
-cert-dcl37-c
|
||||||
|
-cert-dcl51-cpp
|
||||||
|
-clang-analyzer-alpha.core.CastToStruct
|
||||||
|
-clang-analyzer-optin.performance.Padding
|
||||||
|
-clang-diagnostic-deprecated-declarations
|
||||||
|
-clang-diagnostic-extern-c-compat
|
||||||
|
-clang-diagnostic-unused-command-line-argument
|
||||||
|
-cppcoreguidelines-avoid-c-arrays
|
||||||
|
-cppcoreguidelines-avoid-magic-numbers
|
||||||
|
-cppcoreguidelines-explicit-virtual-functions
|
||||||
|
-cppcoreguidelines-init-variables
|
||||||
|
-cppcoreguidelines-macro-usage
|
||||||
|
-cppcoreguidelines-non-private-member-variables-in-classes
|
||||||
|
-cppcoreguidelines-pro-bounds-array-to-pointer-decay
|
||||||
|
-cppcoreguidelines-pro-bounds-constant-array-index
|
||||||
|
-cppcoreguidelines-pro-bounds-pointer-arithmetic
|
||||||
|
-cppcoreguidelines-pro-type-member-init
|
||||||
|
-cppcoreguidelines-pro-type-reinterpret-cast
|
||||||
|
-cppcoreguidelines-pro-type-union-access
|
||||||
|
-cppcoreguidelines-pro-type-vararg
|
||||||
|
-cppcoreguidelines-special-member-functions
|
||||||
|
-fuchsia-*
|
||||||
|
-google-explicit-constructor
|
||||||
|
-google-readability-braces-around-statements
|
||||||
|
-google-readability-todo
|
||||||
|
-google-runtime-int
|
||||||
|
-google-runtime-references
|
||||||
|
-hicpp-vararg
|
||||||
|
-hicpp-braces-around-statements
|
||||||
|
-hicpp-explicit-conversions
|
||||||
|
-hicpp-named-parameter
|
||||||
|
-hicpp-no-array-decay
|
||||||
|
# We really shouldn't use bitwise operators with signed integers, but
|
||||||
|
# opencl leaves us no choice
|
||||||
|
-hicpp-avoid-c-arrays
|
||||||
|
-hicpp-signed-bitwise
|
||||||
|
-hicpp-special-member-functions
|
||||||
|
-hicpp-uppercase-literal-suffix
|
||||||
|
-hicpp-use-auto
|
||||||
|
-hicpp-use-equals-default
|
||||||
|
-hicpp-use-override
|
||||||
|
-llvm-header-guard
|
||||||
|
-llvm-include-order
|
||||||
|
#-llvmlibc-*
|
||||||
|
-llvmlibc-restrict-system-libc-headers
|
||||||
|
-llvmlibc-callee-namespace
|
||||||
|
-llvmlibc-implementation-in-namespace
|
||||||
|
-llvm-else-after-return
|
||||||
|
-llvm-qualified-auto
|
||||||
|
-misc-misplaced-const
|
||||||
|
-misc-non-private-member-variables-in-classes
|
||||||
|
-misc-no-recursion
|
||||||
|
-modernize-avoid-bind
|
||||||
|
-modernize-avoid-c-arrays
|
||||||
|
-modernize-pass-by-value
|
||||||
|
-modernize-use-auto
|
||||||
|
-modernize-use-default-member-init
|
||||||
|
-modernize-use-equals-default
|
||||||
|
-modernize-use-trailing-return-type
|
||||||
|
-modernize-use-transparent-functors
|
||||||
|
-performance-unnecessary-value-param
|
||||||
|
-readability-braces-around-statements
|
||||||
|
-readability-else-after-return
|
||||||
|
# we are not ready to use it, but very useful
|
||||||
|
-readability-function-cognitive-complexity
|
||||||
|
-readability-isolate-declaration
|
||||||
|
-readability-magic-numbers
|
||||||
|
-readability-named-parameter
|
||||||
|
-readability-uppercase-literal-suffix
|
||||||
|
-readability-convert-member-functions-to-static
|
||||||
|
-readability-qualified-auto
|
||||||
|
-readability-redundant-string-init
|
||||||
|
# too many narrowing conversions in our code
|
||||||
|
-bugprone-narrowing-conversions
|
||||||
|
-cppcoreguidelines-narrowing-conversions
|
||||||
|
-altera-struct-pack-align
|
||||||
|
-cppcoreguidelines-prefer-member-initializer
|
||||||
|
|
||||||
|
${MIOPEN_TIDY_CHECKS}
|
||||||
|
${MIOPEN_TIDY_ERRORS}
|
||||||
|
HEADER_FILTER
|
||||||
|
"\.hpp$"
|
||||||
|
EXTRA_ARGS
|
||||||
|
-DMIOPEN_USE_CLANG_TIDY
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
include(CppCheck)
|
||||||
|
enable_cppcheck(
|
||||||
|
CHECKS
|
||||||
|
warning
|
||||||
|
style
|
||||||
|
performance
|
||||||
|
portability
|
||||||
|
SUPPRESS
|
||||||
|
ConfigurationNotChecked
|
||||||
|
constStatement
|
||||||
|
duplicateCondition
|
||||||
|
noExplicitConstructor
|
||||||
|
passedByValue
|
||||||
|
# preprocessorErrorDirective
|
||||||
|
shadowVariable
|
||||||
|
unusedFunction
|
||||||
|
unusedPrivateFunction
|
||||||
|
unusedStructMember
|
||||||
|
# Ignore initializer lists in the tests
|
||||||
|
useInitializationList:*test/*.cpp
|
||||||
|
*:*src/sqlite/*.cpp
|
||||||
|
*:*.cl
|
||||||
|
*:*src/kernels/*.h
|
||||||
|
knownConditionTrueFalse:*src/kernels/composable_kernel/*/*
|
||||||
|
redundantAssignment:*src/kernels/composable_kernel/*/*
|
||||||
|
unreadVariable:*src/kernels/composable_kernel/*/*
|
||||||
|
unusedScopedObject:*src/kernels/composable_kernel/*/*
|
||||||
|
wrongPrintfScanfArgNum:*src/kernels/composable_kernel/*/*
|
||||||
|
unmatchedSuppression
|
||||||
|
FORCE
|
||||||
|
SOURCES
|
||||||
|
host/host_tensor/src
|
||||||
|
host/driver_offline
|
||||||
|
composable_kernel/src
|
||||||
|
INCLUDE
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/include
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/src/include
|
||||||
|
DEFINE
|
||||||
|
CPPCHECK=1
|
||||||
|
MIOPEN_USE_MIOPENGEMM=1
|
||||||
|
__linux__=1
|
||||||
|
)
|
||||||
|
|
||||||
add_subdirectory(host)
|
add_subdirectory(host)
|
||||||
|
|||||||
34
cmake/Analyzers.cmake
Normal file
34
cmake/Analyzers.cmake
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# MIT License
|
||||||
|
#
|
||||||
|
# Copyright (c) 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to deal
|
||||||
|
# in the Software without restriction, including without limitation the rights
|
||||||
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
# copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in all
|
||||||
|
# copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
# SOFTWARE.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
if(NOT TARGET analyze)
|
||||||
|
add_custom_target(analyze)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
function(mark_as_analyzer)
|
||||||
|
add_dependencies(analyze ${ARGN})
|
||||||
|
endfunction()
|
||||||
|
|
||||||
162
cmake/ClangTidy.cmake
Normal file
162
cmake/ClangTidy.cmake
Normal file
@@ -0,0 +1,162 @@
|
|||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# MIT License
|
||||||
|
#
|
||||||
|
# Copyright (c) 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to deal
|
||||||
|
# in the Software without restriction, including without limitation the rights
|
||||||
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
# copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in all
|
||||||
|
# copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
# SOFTWARE.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
include(CMakeParseArguments)
|
||||||
|
include(Analyzers)
|
||||||
|
|
||||||
|
get_filename_component(CLANG_TIDY_EXE_HINT "${CMAKE_CXX_COMPILER}" PATH)
|
||||||
|
|
||||||
|
find_program(CLANG_TIDY_EXE
|
||||||
|
NAMES
|
||||||
|
clang-tidy
|
||||||
|
clang-tidy-5.0
|
||||||
|
clang-tidy-4.0
|
||||||
|
clang-tidy-3.9
|
||||||
|
clang-tidy-3.8
|
||||||
|
clang-tidy-3.7
|
||||||
|
clang-tidy-3.6
|
||||||
|
clang-tidy-3.5
|
||||||
|
HINTS
|
||||||
|
${CLANG_TIDY_EXE_HINT}
|
||||||
|
PATH_SUFFIXES
|
||||||
|
compiler/bin
|
||||||
|
PATHS
|
||||||
|
/opt/rocm/llvm/bin
|
||||||
|
/opt/rocm/hcc
|
||||||
|
/usr/local/opt/llvm/bin
|
||||||
|
)
|
||||||
|
|
||||||
|
function(find_clang_tidy_version VAR)
|
||||||
|
execute_process(COMMAND ${CLANG_TIDY_EXE} -version OUTPUT_VARIABLE VERSION_OUTPUT)
|
||||||
|
separate_arguments(VERSION_OUTPUT_LIST UNIX_COMMAND "${VERSION_OUTPUT}")
|
||||||
|
list(FIND VERSION_OUTPUT_LIST "version" VERSION_INDEX)
|
||||||
|
if(VERSION_INDEX GREATER 0)
|
||||||
|
math(EXPR VERSION_INDEX "${VERSION_INDEX} + 1")
|
||||||
|
list(GET VERSION_OUTPUT_LIST ${VERSION_INDEX} VERSION)
|
||||||
|
set(${VAR} ${VERSION} PARENT_SCOPE)
|
||||||
|
else()
|
||||||
|
set(${VAR} "0.0" PARENT_SCOPE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
if( NOT CLANG_TIDY_EXE )
|
||||||
|
message( STATUS "Clang tidy not found" )
|
||||||
|
set(CLANG_TIDY_VERSION "0.0")
|
||||||
|
else()
|
||||||
|
find_clang_tidy_version(CLANG_TIDY_VERSION)
|
||||||
|
message( STATUS "Clang tidy found: ${CLANG_TIDY_VERSION}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||||
|
|
||||||
|
set(CLANG_TIDY_FIXIT_DIR ${CMAKE_BINARY_DIR}/fixits)
|
||||||
|
file(MAKE_DIRECTORY ${CLANG_TIDY_FIXIT_DIR})
|
||||||
|
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${CLANG_TIDY_FIXIT_DIR})
|
||||||
|
|
||||||
|
macro(enable_clang_tidy)
|
||||||
|
set(options ANALYZE_TEMPORARY_DTORS ALL)
|
||||||
|
set(oneValueArgs HEADER_FILTER)
|
||||||
|
set(multiValueArgs CHECKS ERRORS EXTRA_ARGS)
|
||||||
|
|
||||||
|
cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||||
|
string(REPLACE ";" "," CLANG_TIDY_CHECKS "${PARSE_CHECKS}")
|
||||||
|
string(REPLACE ";" "," CLANG_TIDY_ERRORS "${PARSE_ERRORS}")
|
||||||
|
set(CLANG_TIDY_EXTRA_ARGS)
|
||||||
|
foreach(ARG ${PARSE_EXTRA_ARGS})
|
||||||
|
list(APPEND CLANG_TIDY_EXTRA_ARGS "-extra-arg=${ARG}")
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
set(CLANG_TIDY_ALL)
|
||||||
|
if(PARSE_ALL)
|
||||||
|
set(CLANG_TIDY_ALL ALL)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
message(STATUS "Clang tidy checks: ${CLANG_TIDY_CHECKS}")
|
||||||
|
|
||||||
|
if (${PARSE_ANALYZE_TEMPORARY_DTORS})
|
||||||
|
set(CLANG_TIDY_ANALYZE_TEMPORARY_DTORS "-analyze-temporary-dtors")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (${CLANG_TIDY_VERSION} VERSION_LESS "3.9.0")
|
||||||
|
set(CLANG_TIDY_ERRORS_ARG "")
|
||||||
|
else()
|
||||||
|
set(CLANG_TIDY_ERRORS_ARG "-warnings-as-errors='${CLANG_TIDY_ERRORS}'")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (${CLANG_TIDY_VERSION} VERSION_LESS "3.9.0")
|
||||||
|
set(CLANG_TIDY_QUIET_ARG "")
|
||||||
|
else()
|
||||||
|
set(CLANG_TIDY_QUIET_ARG "-quiet")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(PARSE_HEADER_FILTER)
|
||||||
|
string(REPLACE "$" "$$" CLANG_TIDY_HEADER_FILTER "${PARSE_HEADER_FILTER}")
|
||||||
|
else()
|
||||||
|
set(CLANG_TIDY_HEADER_FILTER ".*")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(CLANG_TIDY_COMMAND
|
||||||
|
${CLANG_TIDY_EXE}
|
||||||
|
${CLANG_TIDY_QUIET_ARG}
|
||||||
|
-p ${CMAKE_BINARY_DIR}
|
||||||
|
-checks='${CLANG_TIDY_CHECKS}'
|
||||||
|
${CLANG_TIDY_ERRORS_ARG}
|
||||||
|
${CLANG_TIDY_EXTRA_ARGS}
|
||||||
|
${CLANG_TIDY_ANALYZE_TEMPORARY_DTORS}
|
||||||
|
-header-filter='${CLANG_TIDY_HEADER_FILTER}'
|
||||||
|
)
|
||||||
|
add_custom_target(tidy ${CLANG_TIDY_ALL})
|
||||||
|
mark_as_analyzer(tidy)
|
||||||
|
add_custom_target(tidy-base)
|
||||||
|
add_custom_target(tidy-make-fixit-dir COMMAND ${CMAKE_COMMAND} -E make_directory ${CLANG_TIDY_FIXIT_DIR})
|
||||||
|
add_custom_target(tidy-rm-fixit-dir COMMAND ${CMAKE_COMMAND} -E remove_directory ${CLANG_TIDY_FIXIT_DIR})
|
||||||
|
add_dependencies(tidy-make-fixit-dir tidy-rm-fixit-dir)
|
||||||
|
add_dependencies(tidy-base tidy-make-fixit-dir)
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
function(clang_tidy_check TARGET)
|
||||||
|
get_target_property(SOURCES ${TARGET} SOURCES)
|
||||||
|
# TODO: Use generator expressions instead
|
||||||
|
# COMMAND ${CLANG_TIDY_COMMAND} $<TARGET_PROPERTY:${TARGET},SOURCES>
|
||||||
|
# COMMAND ${CLANG_TIDY_COMMAND} $<JOIN:$<TARGET_PROPERTY:${TARGET},SOURCES>, >
|
||||||
|
foreach(SOURCE ${SOURCES})
|
||||||
|
if((NOT "${SOURCE}" MATCHES "(h|hpp|hxx)$") AND (NOT "${SOURCE}" MATCHES "TARGET_OBJECTS"))
|
||||||
|
string(MAKE_C_IDENTIFIER "${SOURCE}" tidy_file)
|
||||||
|
set(tidy_target tidy-target-${TARGET}-${tidy_file})
|
||||||
|
add_custom_target(${tidy_target}
|
||||||
|
# for some targets clang-tidy not able to get information from .clang-tidy
|
||||||
|
DEPENDS ${SOURCE}
|
||||||
|
COMMAND ${CLANG_TIDY_COMMAND} "-config=\{CheckOptions: \[\{key: bugprone-reserved-identifier.AllowedIdentifiers,value: __HIP_PLATFORM_HCC__\; __HIP_ROCclr__\}\]\}" ${SOURCE} "-export-fixes=${CLANG_TIDY_FIXIT_DIR}/${TARGET}-${tidy_file}.yaml"
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
COMMENT "clang-tidy: Running clang-tidy on target ${SOURCE}..."
|
||||||
|
)
|
||||||
|
add_dependencies(${tidy_target} ${TARGET})
|
||||||
|
add_dependencies(${tidy_target} tidy-base)
|
||||||
|
add_dependencies(tidy ${tidy_target})
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
130
cmake/CppCheck.cmake
Normal file
130
cmake/CppCheck.cmake
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# MIT License
|
||||||
|
#
|
||||||
|
# Copyright (c) 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to deal
|
||||||
|
# in the Software without restriction, including without limitation the rights
|
||||||
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
# copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in all
|
||||||
|
# copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
# SOFTWARE.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
include(CMakeParseArguments)
|
||||||
|
include(ProcessorCount)
|
||||||
|
include(Analyzers)
|
||||||
|
|
||||||
|
find_program(CPPCHECK_EXE
|
||||||
|
NAMES
|
||||||
|
cppcheck
|
||||||
|
PATHS
|
||||||
|
/opt/rocm/bin
|
||||||
|
)
|
||||||
|
|
||||||
|
ProcessorCount(CPPCHECK_JOBS)
|
||||||
|
|
||||||
|
set(CPPCHECK_BUILD_DIR ${CMAKE_BINARY_DIR}/cppcheck-build)
|
||||||
|
file(MAKE_DIRECTORY ${CPPCHECK_BUILD_DIR})
|
||||||
|
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${CPPCHECK_BUILD_DIR})
|
||||||
|
|
||||||
|
macro(enable_cppcheck)
|
||||||
|
set(options FORCE)
|
||||||
|
set(oneValueArgs)
|
||||||
|
set(multiValueArgs CHECKS SUPPRESS DEFINE UNDEFINE INCLUDE SOURCES)
|
||||||
|
|
||||||
|
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})
|
||||||
|
set(CPPCHECK_DEFINES "${CPPCHECK_DEFINES} -D${DEF}")
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
set(CPPCHECK_UNDEFINES)
|
||||||
|
foreach(DEF ${PARSE_UNDEFINE})
|
||||||
|
set(CPPCHECK_UNDEFINES "${CPPCHECK_UNDEFINES} -U${DEF}")
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
set(CPPCHECK_INCLUDES)
|
||||||
|
foreach(INC ${PARSE_INCLUDE})
|
||||||
|
set(CPPCHECK_INCLUDES "${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(SOURCES)
|
||||||
|
set(GLOBS)
|
||||||
|
foreach(SOURCE ${PARSE_SOURCES})
|
||||||
|
get_filename_component(ABS_SOURCE ${SOURCE} ABSOLUTE)
|
||||||
|
if(EXISTS ${ABS_SOURCE})
|
||||||
|
if(IS_DIRECTORY ${ABS_SOURCE})
|
||||||
|
set(GLOBS "${GLOBS} ${ABS_SOURCE}/*.cpp ${ABS_SOURCE}/*.hpp ${ABS_SOURCE}/*.cxx ${ABS_SOURCE}/*.c ${ABS_SOURCE}/*.h")
|
||||||
|
else()
|
||||||
|
set(SOURCES "${SOURCES} ${ABS_SOURCE}")
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
set(GLOBS "${GLOBS} ${ABS_SOURCE}")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
file(WRITE ${CMAKE_BINARY_DIR}/cppcheck.cmake "
|
||||||
|
file(GLOB_RECURSE GSRCS ${GLOBS})
|
||||||
|
set(CPPCHECK_COMMAND
|
||||||
|
${CPPCHECK_EXE}
|
||||||
|
-q
|
||||||
|
# -v
|
||||||
|
# --report-progress
|
||||||
|
${CPPCHECK_FORCE}
|
||||||
|
--cppcheck-build-dir=${CPPCHECK_BUILD_DIR}
|
||||||
|
--platform=native
|
||||||
|
--template=gcc
|
||||||
|
--error-exitcode=1
|
||||||
|
-j ${CPPCHECK_JOBS}
|
||||||
|
${CPPCHECK_DEFINES}
|
||||||
|
${CPPCHECK_UNDEFINES}
|
||||||
|
${CPPCHECK_INCLUDES}
|
||||||
|
--enable=${CPPCHECK_CHECKS}
|
||||||
|
--inline-suppr
|
||||||
|
--suppressions-list=${CMAKE_BINARY_DIR}/cppcheck-supressions
|
||||||
|
${SOURCES} \${GSRCS}
|
||||||
|
)
|
||||||
|
string(REPLACE \";\" \" \" CPPCHECK_SHOW_COMMAND \"\${CPPCHECK_COMMAND}\")
|
||||||
|
message(\"\${CPPCHECK_SHOW_COMMAND}\")
|
||||||
|
execute_process(
|
||||||
|
COMMAND \${CPPCHECK_COMMAND}
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
RESULT_VARIABLE RESULT
|
||||||
|
)
|
||||||
|
if(NOT RESULT EQUAL 0)
|
||||||
|
message(FATAL_ERROR \"Cppcheck failed\")
|
||||||
|
endif()
|
||||||
|
")
|
||||||
|
|
||||||
|
add_custom_target(cppcheck
|
||||||
|
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_BINARY_DIR}/cppcheck.cmake
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
COMMENT "cppcheck: Running cppcheck..."
|
||||||
|
)
|
||||||
|
mark_as_analyzer(cppcheck)
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
|
||||||
355
cmake/DoxygenDoc.cmake
Normal file
355
cmake/DoxygenDoc.cmake
Normal file
@@ -0,0 +1,355 @@
|
|||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# MIT License
|
||||||
|
#
|
||||||
|
# Copyright (c) 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to deal
|
||||||
|
# in the Software without restriction, including without limitation the rights
|
||||||
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
# copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in all
|
||||||
|
# copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
# SOFTWARE.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
include(CMakeParseArguments)
|
||||||
|
include(MainDoc)
|
||||||
|
|
||||||
|
find_program(DOXYGEN_EXECUTABLE NAMES doxygen
|
||||||
|
PATH_SUFFIXES bin
|
||||||
|
DOC "Doxygen documentation generator"
|
||||||
|
)
|
||||||
|
mark_as_advanced(DOXYGEN_EXECUTABLE)
|
||||||
|
|
||||||
|
find_path(DOT_EXECUTABLE NAMES dot
|
||||||
|
PATH_SUFFIXES bin
|
||||||
|
DOC "Graphviz"
|
||||||
|
)
|
||||||
|
mark_as_advanced(DOT_EXECUTABLE)
|
||||||
|
|
||||||
|
set(DOXYGEN_ARGS
|
||||||
|
ABBREVIATE_BRIEF
|
||||||
|
ALIASES
|
||||||
|
ALLEXTERNALS
|
||||||
|
ALLOW_UNICODE_NAMES
|
||||||
|
ALPHABETICAL_INDEX
|
||||||
|
ALWAYS_DETAILED_SEC
|
||||||
|
AUTOLINK_SUPPORT
|
||||||
|
BINARY_TOC
|
||||||
|
BRIEF_MEMBER_DESC
|
||||||
|
BUILTIN_STL_SUPPORT
|
||||||
|
CALLER_GRAPH
|
||||||
|
CALL_GRAPH
|
||||||
|
CASE_SENSE_NAMES
|
||||||
|
CHM_FILE
|
||||||
|
CHM_INDEX_ENCODING
|
||||||
|
CITE_BIB_FILES
|
||||||
|
CLANG_ASSISTED_PARSING
|
||||||
|
CLANG_OPTIONS
|
||||||
|
CLASS_DIAGRAMS
|
||||||
|
CLASS_GRAPH
|
||||||
|
COLLABORATION_GRAPH
|
||||||
|
COLS_IN_ALPHA_INDEX
|
||||||
|
COMPACT_LATEX
|
||||||
|
COMPACT_RTF
|
||||||
|
CPP_CLI_SUPPORT
|
||||||
|
CREATE_SUBDIRS
|
||||||
|
DIAFILE_DIRS
|
||||||
|
DIA_PATH
|
||||||
|
DIRECTORY_GRAPH
|
||||||
|
DISABLE_INDEX
|
||||||
|
DISTRIBUTE_GROUP_DOC
|
||||||
|
DOCBOOK_OUTPUT
|
||||||
|
DOCBOOK_PROGRAMLISTING
|
||||||
|
DOCSET_BUNDLE_ID
|
||||||
|
DOCSET_FEEDNAME
|
||||||
|
DOCSET_PUBLISHER_ID
|
||||||
|
DOCSET_PUBLISHER_NAME
|
||||||
|
DOTFILE_DIRS
|
||||||
|
DOT_CLEANUP
|
||||||
|
DOT_FONTNAME
|
||||||
|
DOT_FONTPATH
|
||||||
|
DOT_FONTSIZE
|
||||||
|
DOT_GRAPH_MAX_NODES
|
||||||
|
DOT_IMAGE_FORMAT
|
||||||
|
DOT_MULTI_TARGETS
|
||||||
|
DOT_NUM_THREADS
|
||||||
|
# DOT_PATH
|
||||||
|
DOT_TRANSPARENT
|
||||||
|
DOXYFILE_ENCODING
|
||||||
|
ECLIPSE_DOC_ID
|
||||||
|
ENABLED_SECTIONS
|
||||||
|
ENABLE_PREPROCESSING
|
||||||
|
ENUM_VALUES_PER_LINE
|
||||||
|
EXAMPLE_PATH
|
||||||
|
EXAMPLE_PATTERNS
|
||||||
|
EXAMPLE_RECURSIVE
|
||||||
|
EXCLUDE
|
||||||
|
EXCLUDE_PATTERNS
|
||||||
|
EXCLUDE_SYMBOLS
|
||||||
|
EXCLUDE_SYMLINKS
|
||||||
|
EXPAND_AS_DEFINED
|
||||||
|
EXPAND_ONLY_PREDEF
|
||||||
|
EXTENSION_MAPPING
|
||||||
|
EXTERNAL_GROUPS
|
||||||
|
EXTERNAL_PAGES
|
||||||
|
EXTERNAL_SEARCH
|
||||||
|
EXTERNAL_SEARCH_ID
|
||||||
|
EXTRACT_ALL
|
||||||
|
EXTRACT_ANON_NSPACES
|
||||||
|
EXTRACT_LOCAL_CLASSES
|
||||||
|
EXTRACT_LOCAL_METHODS
|
||||||
|
EXTRACT_PACKAGE
|
||||||
|
EXTRACT_PRIVATE
|
||||||
|
EXTRACT_STATIC
|
||||||
|
EXTRA_PACKAGES
|
||||||
|
EXTRA_SEARCH_MAPPINGS
|
||||||
|
EXT_LINKS_IN_WINDOW
|
||||||
|
FILE_PATTERNS
|
||||||
|
FILE_VERSION_FILTER
|
||||||
|
FILTER_PATTERNS
|
||||||
|
FILTER_SOURCE_FILES
|
||||||
|
FILTER_SOURCE_PATTERNS
|
||||||
|
FORCE_LOCAL_INCLUDES
|
||||||
|
FORMULA_FONTSIZE
|
||||||
|
FORMULA_TRANSPARENT
|
||||||
|
FULL_PATH_NAMES
|
||||||
|
GENERATE_AUTOGEN_DEF
|
||||||
|
GENERATE_BUGLIST
|
||||||
|
GENERATE_CHI
|
||||||
|
GENERATE_DEPRECATEDLIST
|
||||||
|
GENERATE_DOCBOOK
|
||||||
|
GENERATE_DOCSET
|
||||||
|
GENERATE_ECLIPSEHELP
|
||||||
|
GENERATE_HTML
|
||||||
|
GENERATE_HTMLHELP
|
||||||
|
GENERATE_LATEX
|
||||||
|
GENERATE_LEGEND
|
||||||
|
GENERATE_MAN
|
||||||
|
GENERATE_PERLMOD
|
||||||
|
GENERATE_QHP
|
||||||
|
GENERATE_RTF
|
||||||
|
GENERATE_TAGFILE
|
||||||
|
GENERATE_TESTLIST
|
||||||
|
GENERATE_TODOLIST
|
||||||
|
GENERATE_TREEVIEW
|
||||||
|
GENERATE_XML
|
||||||
|
GRAPHICAL_HIERARCHY
|
||||||
|
GROUP_GRAPHS
|
||||||
|
GROUP_NESTED_COMPOUNDS
|
||||||
|
# HAVE_DOT
|
||||||
|
HHC_LOCATION
|
||||||
|
HIDE_COMPOUND_REFERENCE
|
||||||
|
HIDE_FRIEND_COMPOUNDS
|
||||||
|
HIDE_IN_BODY_DOCS
|
||||||
|
HIDE_SCOPE_NAMES
|
||||||
|
HIDE_UNDOC_CLASSES
|
||||||
|
HIDE_UNDOC_MEMBERS
|
||||||
|
HIDE_UNDOC_RELATIONS
|
||||||
|
HTML_COLORSTYLE_GAMMA
|
||||||
|
HTML_COLORSTYLE_HUE
|
||||||
|
HTML_COLORSTYLE_SAT
|
||||||
|
HTML_DYNAMIC_SECTIONS
|
||||||
|
HTML_EXTRA_FILES
|
||||||
|
HTML_EXTRA_STYLESHEET
|
||||||
|
HTML_FILE_EXTENSION
|
||||||
|
HTML_FOOTER
|
||||||
|
HTML_HEADER
|
||||||
|
HTML_INDEX_NUM_ENTRIES
|
||||||
|
HTML_OUTPUT
|
||||||
|
HTML_STYLESHEET
|
||||||
|
HTML_TIMESTAMP
|
||||||
|
IDL_PROPERTY_SUPPORT
|
||||||
|
IGNORE_PREFIX
|
||||||
|
IMAGE_PATH
|
||||||
|
INCLUDED_BY_GRAPH
|
||||||
|
INCLUDE_FILE_PATTERNS
|
||||||
|
INCLUDE_GRAPH
|
||||||
|
INCLUDE_PATH
|
||||||
|
INHERIT_DOCS
|
||||||
|
INLINE_GROUPED_CLASSES
|
||||||
|
INLINE_INFO
|
||||||
|
INLINE_INHERITED_MEMB
|
||||||
|
INLINE_SIMPLE_STRUCTS
|
||||||
|
INLINE_SOURCES
|
||||||
|
INPUT
|
||||||
|
INPUT_ENCODING
|
||||||
|
INPUT_FILTER
|
||||||
|
INTERACTIVE_SVG
|
||||||
|
INTERNAL_DOCS
|
||||||
|
JAVADOC_AUTOBRIEF
|
||||||
|
LATEX_BATCHMODE
|
||||||
|
LATEX_BIB_STYLE
|
||||||
|
LATEX_CMD_NAME
|
||||||
|
LATEX_EXTRA_FILES
|
||||||
|
LATEX_EXTRA_STYLESHEET
|
||||||
|
LATEX_FOOTER
|
||||||
|
LATEX_HEADER
|
||||||
|
LATEX_HIDE_INDICES
|
||||||
|
LATEX_OUTPUT
|
||||||
|
LATEX_SOURCE_CODE
|
||||||
|
LATEX_TIMESTAMP
|
||||||
|
LAYOUT_FILE
|
||||||
|
LOOKUP_CACHE_SIZE
|
||||||
|
MACRO_EXPANSION
|
||||||
|
MAKEINDEX_CMD_NAME
|
||||||
|
MAN_EXTENSION
|
||||||
|
MAN_LINKS
|
||||||
|
MAN_OUTPUT
|
||||||
|
MAN_SUBDIR
|
||||||
|
MARKDOWN_SUPPORT
|
||||||
|
MATHJAX_CODEFILE
|
||||||
|
MATHJAX_EXTENSIONS
|
||||||
|
MATHJAX_FORMAT
|
||||||
|
MATHJAX_RELPATH
|
||||||
|
MAX_DOT_GRAPH_DEPTH
|
||||||
|
MAX_INITIALIZER_LINES
|
||||||
|
MSCFILE_DIRS
|
||||||
|
MSCGEN_PATH
|
||||||
|
MULTILINE_CPP_IS_BRIEF
|
||||||
|
OPTIMIZE_FOR_FORTRAN
|
||||||
|
OPTIMIZE_OUTPUT_FOR_C
|
||||||
|
OPTIMIZE_OUTPUT_JAVA
|
||||||
|
OPTIMIZE_OUTPUT_VHDL
|
||||||
|
OUTPUT_DIRECTORY
|
||||||
|
OUTPUT_LANGUAGE
|
||||||
|
PAPER_TYPE
|
||||||
|
PDF_HYPERLINKS
|
||||||
|
PERLMOD_LATEX
|
||||||
|
PERLMOD_MAKEVAR_PREFIX
|
||||||
|
PERLMOD_PRETTY
|
||||||
|
PERL_PATH
|
||||||
|
PLANTUML_CFG_FILE
|
||||||
|
PLANTUML_INCLUDE_PATH
|
||||||
|
PLANTUML_JAR_PATH
|
||||||
|
PREDEFINED
|
||||||
|
PROJECT_BRIEF
|
||||||
|
PROJECT_LOGO
|
||||||
|
PROJECT_NAME
|
||||||
|
PROJECT_NUMBER
|
||||||
|
QCH_FILE
|
||||||
|
QHG_LOCATION
|
||||||
|
QHP_CUST_FILTER_ATTRS
|
||||||
|
QHP_CUST_FILTER_NAME
|
||||||
|
QHP_NAMESPACE
|
||||||
|
QHP_SECT_FILTER_ATTRS
|
||||||
|
QHP_VIRTUAL_FOLDER
|
||||||
|
QT_AUTOBRIEF
|
||||||
|
QUIET
|
||||||
|
RECURSIVE
|
||||||
|
REFERENCED_BY_RELATION
|
||||||
|
REFERENCES_LINK_SOURCE
|
||||||
|
REFERENCES_RELATION
|
||||||
|
REPEAT_BRIEF
|
||||||
|
RTF_EXTENSIONS_FILE
|
||||||
|
RTF_HYPERLINKS
|
||||||
|
RTF_OUTPUT
|
||||||
|
RTF_SOURCE_CODE
|
||||||
|
RTF_STYLESHEET_FILE
|
||||||
|
SEARCHDATA_FILE
|
||||||
|
SEARCHENGINE
|
||||||
|
SEARCHENGINE_URL
|
||||||
|
SEARCH_INCLUDES
|
||||||
|
SEPARATE_MEMBER_PAGES
|
||||||
|
SERVER_BASED_SEARCH
|
||||||
|
SHORT_NAMES
|
||||||
|
SHOW_FILES
|
||||||
|
SHOW_GROUPED_MEMB_INC
|
||||||
|
SHOW_INCLUDE_FILES
|
||||||
|
SHOW_NAMESPACES
|
||||||
|
SHOW_USED_FILES
|
||||||
|
SIP_SUPPORT
|
||||||
|
SKIP_FUNCTION_MACROS
|
||||||
|
SORT_BRIEF_DOCS
|
||||||
|
SORT_BY_SCOPE_NAME
|
||||||
|
SORT_GROUP_NAMES
|
||||||
|
SORT_MEMBERS_CTORS_1ST
|
||||||
|
SORT_MEMBER_DOCS
|
||||||
|
SOURCE_BROWSER
|
||||||
|
SOURCE_TOOLTIPS
|
||||||
|
STRICT_PROTO_MATCHING
|
||||||
|
STRIP_CODE_COMMENTS
|
||||||
|
STRIP_FROM_INC_PATH
|
||||||
|
STRIP_FROM_PATH
|
||||||
|
SUBGROUPING
|
||||||
|
TAB_SIZE
|
||||||
|
TAGFILES
|
||||||
|
TCL_SUBST
|
||||||
|
TEMPLATE_RELATIONS
|
||||||
|
TOC_EXPAND
|
||||||
|
TOC_INCLUDE_HEADINGS
|
||||||
|
TREEVIEW_WIDTH
|
||||||
|
TYPEDEF_HIDES_STRUCT
|
||||||
|
UML_LIMIT_NUM_FIELDS
|
||||||
|
UML_LOOK
|
||||||
|
USE_HTAGS
|
||||||
|
USE_MATHJAX
|
||||||
|
USE_MDFILE_AS_MAINPAGE
|
||||||
|
USE_PDFLATEX
|
||||||
|
VERBATIM_HEADERS
|
||||||
|
WARNINGS
|
||||||
|
WARN_AS_ERROR
|
||||||
|
WARN_FORMAT
|
||||||
|
WARN_IF_DOC_ERROR
|
||||||
|
WARN_IF_UNDOCUMENTED
|
||||||
|
WARN_LOGFILE
|
||||||
|
WARN_NO_PARAMDOC
|
||||||
|
XML_OUTPUT
|
||||||
|
XML_PROGRAMLISTING
|
||||||
|
)
|
||||||
|
|
||||||
|
set(DOXYGEN_CONFIG_FILE "${CMAKE_CURRENT_BINARY_DIR}/doxygen/doxygen.conf" CACHE PATH "Path to generated doxygen configuration file")
|
||||||
|
|
||||||
|
function(add_doxygen_doc)
|
||||||
|
set(options)
|
||||||
|
set(oneValueArgs)
|
||||||
|
set(multiValueArgs DEPENDS ${DOXYGEN_ARGS})
|
||||||
|
|
||||||
|
cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||||
|
|
||||||
|
file(WRITE ${DOXYGEN_CONFIG_FILE} "# Auto-generated doxygen configuration file\n")
|
||||||
|
|
||||||
|
foreach(ARG ${DOXYGEN_ARGS})
|
||||||
|
if(PARSE_${ARG})
|
||||||
|
string(REPLACE ";" " " ARG_VALUE ${PARSE_${ARG}})
|
||||||
|
file(APPEND ${DOXYGEN_CONFIG_FILE} "\n${ARG} = ${ARG_VALUE}\n")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
if(PARSE_OUTPUT_DIRECTORY)
|
||||||
|
if(NOT EXISTS ${PARSE_OUTPUT_DIRECTORY})
|
||||||
|
file(MAKE_DIRECTORY ${PARSE_OUTPUT_DIRECTORY})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(DOT_EXECUTABLE)
|
||||||
|
file(APPEND ${DOXYGEN_CONFIG_FILE} "\nDOT_PATH = \"${DOT_EXECUTABLE}\"\n")
|
||||||
|
file(APPEND ${DOXYGEN_CONFIG_FILE} "\nHAVE_DOT = YES\n")
|
||||||
|
else()
|
||||||
|
file(APPEND ${DOXYGEN_CONFIG_FILE} "\nHAVE_DOT = NO\n")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_custom_target(doxygen
|
||||||
|
${DOXYGEN_EXECUTABLE} ${DOXYGEN_CONFIG_FILE}
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
COMMENT "Building documentation with doxygen"
|
||||||
|
)
|
||||||
|
if(PARSE_OUTPUT_DIRECTORY)
|
||||||
|
clean_doc_output(${PARSE_OUTPUT_DIRECTORY})
|
||||||
|
endif()
|
||||||
|
mark_as_doc(doxygen)
|
||||||
|
if(PARSE_DEPENDS)
|
||||||
|
add_dependencies(doxygen ${PARSE_DEPENDS})
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
110
cmake/EnableCompilerWarnings.cmake
Normal file
110
cmake/EnableCompilerWarnings.cmake
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# MIT License
|
||||||
|
#
|
||||||
|
# Copyright (c) 2017 Advanced Micro Devices, Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to deal
|
||||||
|
# in the Software without restriction, including without limitation the rights
|
||||||
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
# copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in all
|
||||||
|
# copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
# SOFTWARE.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
# - Enable warning all for gcc/clang or use /W4 for visual studio
|
||||||
|
|
||||||
|
## Strict warning level
|
||||||
|
if (MSVC)
|
||||||
|
# Use the highest warning level for visual studio.
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /w")
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /w")
|
||||||
|
# set(CMAKE_CXX_WARNING_LEVEL 4)
|
||||||
|
# if (CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
|
||||||
|
# string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||||
|
# else ()
|
||||||
|
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
|
||||||
|
# endif ()
|
||||||
|
|
||||||
|
# set(CMAKE_C_WARNING_LEVEL 4)
|
||||||
|
# if (CMAKE_C_FLAGS MATCHES "/W[0-4]")
|
||||||
|
# string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
||||||
|
# else ()
|
||||||
|
# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4")
|
||||||
|
# endif ()
|
||||||
|
|
||||||
|
else()
|
||||||
|
foreach(COMPILER C CXX)
|
||||||
|
set(CMAKE_COMPILER_WARNINGS)
|
||||||
|
# use -Wall for gcc and clang
|
||||||
|
list(APPEND CMAKE_COMPILER_WARNINGS
|
||||||
|
-Wall
|
||||||
|
-Wextra
|
||||||
|
-Wcomment
|
||||||
|
-Wendif-labels
|
||||||
|
-Wformat
|
||||||
|
-Winit-self
|
||||||
|
-Wreturn-type
|
||||||
|
-Wsequence-point
|
||||||
|
# Shadow is broken on gcc when using lambdas
|
||||||
|
# -Wshadow
|
||||||
|
-Wswitch
|
||||||
|
-Wtrigraphs
|
||||||
|
-Wundef
|
||||||
|
-Wuninitialized
|
||||||
|
-Wunreachable-code
|
||||||
|
-Wunused
|
||||||
|
|
||||||
|
-Wno-sign-compare
|
||||||
|
-Wno-extra-semi-stmt
|
||||||
|
)
|
||||||
|
if (CMAKE_${COMPILER}_COMPILER_ID MATCHES "Clang")
|
||||||
|
list(APPEND CMAKE_COMPILER_WARNINGS
|
||||||
|
-Weverything
|
||||||
|
-Wno-c++98-compat
|
||||||
|
-Wno-c++98-compat-pedantic
|
||||||
|
-Wno-conversion
|
||||||
|
-Wno-double-promotion
|
||||||
|
-Wno-exit-time-destructors
|
||||||
|
-Wno-extra-semi
|
||||||
|
-Wno-float-conversion
|
||||||
|
-Wno-gnu-anonymous-struct
|
||||||
|
-Wno-gnu-zero-variadic-macro-arguments
|
||||||
|
-Wno-missing-prototypes
|
||||||
|
-Wno-nested-anon-types
|
||||||
|
-Wno-padded
|
||||||
|
-Wno-return-std-move-in-c++11
|
||||||
|
-Wno-shorten-64-to-32
|
||||||
|
-Wno-sign-conversion
|
||||||
|
-Wno-unknown-warning-option
|
||||||
|
-Wno-unused-command-line-argument
|
||||||
|
-Wno-weak-vtables
|
||||||
|
-Wno-covered-switch-default
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
if (CMAKE_${COMPILER}_COMPILER_ID MATCHES "GNU" AND ${COMPILER} MATCHES "CXX")
|
||||||
|
# cmake 3.5.2 does not support >=.
|
||||||
|
if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "6.1")
|
||||||
|
list(APPEND CMAKE_COMPILER_WARNINGS
|
||||||
|
-Wno-ignored-attributes)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
list(APPEND CMAKE_COMPILER_WARNINGS
|
||||||
|
-Wno-missing-field-initializers
|
||||||
|
-Wno-deprecated-declarations
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
add_definitions(${CMAKE_COMPILER_WARNINGS})
|
||||||
|
endforeach()
|
||||||
|
endif ()
|
||||||
@@ -4,8 +4,7 @@
|
|||||||
namespace ck {
|
namespace ck {
|
||||||
|
|
||||||
// this enumerate should be synchronized with include/miopen.h
|
// this enumerate should be synchronized with include/miopen.h
|
||||||
typedef enum
|
using DataTypeEnum_t = enum {
|
||||||
{
|
|
||||||
Half = 0,
|
Half = 0,
|
||||||
Float = 1,
|
Float = 1,
|
||||||
Int32 = 2,
|
Int32 = 2,
|
||||||
@@ -14,7 +13,7 @@ typedef enum
|
|||||||
BFloat16 = 5,
|
BFloat16 = 5,
|
||||||
Double = 6,
|
Double = 6,
|
||||||
Unknown = 100,
|
Unknown = 100,
|
||||||
} DataTypeEnum_t;
|
};
|
||||||
|
|
||||||
} // namespace ck
|
} // namespace ck
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user