Compare commits
4 Commits
54f8cfc1cc
...
2.1.92
Author | SHA1 | Date | |
---|---|---|---|
7eedd8b932 | |||
764b541bfa | |||
f1b574cd50 | |||
b3d19b7336 |
@@ -21,6 +21,7 @@ endif()
|
|||||||
find_package(Sanitizers REQUIRED)
|
find_package(Sanitizers REQUIRED)
|
||||||
|
|
||||||
include(${MYXX_CMAKE_LIB_DIR}/WarningFlags.cmake)
|
include(${MYXX_CMAKE_LIB_DIR}/WarningFlags.cmake)
|
||||||
|
include(${MYXX_CMAKE_LIB_DIR}/SyntaxCheck.cmake)
|
||||||
include(${MYXX_CMAKE_LIB_DIR}/Coverage.cmake)
|
include(${MYXX_CMAKE_LIB_DIR}/Coverage.cmake)
|
||||||
include(${MYXX_CMAKE_LIB_DIR}/AnalyzeApplyReplacements.cmake)
|
include(${MYXX_CMAKE_LIB_DIR}/AnalyzeApplyReplacements.cmake)
|
||||||
include(${MYXX_CMAKE_LIB_DIR}/AnalyzeClangTidy.cmake)
|
include(${MYXX_CMAKE_LIB_DIR}/AnalyzeClangTidy.cmake)
|
||||||
@@ -38,23 +39,30 @@ function(myxx)
|
|||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
get_property(targets DIRECTORY ${CMAKE_BINARY_DIR} PROPERTY BUILDSYSTEM_TARGETS)
|
if(NOT ${PROJECT_BINARY_DIR} STREQUAL ${CMAKE_BINARY_DIR})
|
||||||
foreach(iter ${targets})
|
return()
|
||||||
get_target_property(target_type ${iter} TYPE)
|
|
||||||
if((NOT ${target_type} STREQUAL "UTILITY") AND
|
|
||||||
(NOT ${iter} MATCHES ".*_shared$" ) AND
|
|
||||||
(NOT ${iter} MATCHES ".*_static$" )
|
|
||||||
)
|
|
||||||
myxx_code_coverage(${iter})
|
|
||||||
myxx_analyze_clang_tidy(${iter})
|
|
||||||
myxx_analyze_clang_check(${iter})
|
|
||||||
if(MYXX_CMAKE_CLAZY_FIX)
|
|
||||||
myxx_analyze_clazy(${iter} FIX)
|
|
||||||
else()
|
|
||||||
myxx_analyze_clazy(${iter})
|
|
||||||
endif()
|
endif()
|
||||||
myxx_analyze_pvs_studio(${iter})
|
|
||||||
myxx_add_sanitizers(${iter})
|
get_property(__targets DIRECTORY ${CMAKE_BINARY_DIR} PROPERTY BUILDSYSTEM_TARGETS)
|
||||||
|
foreach(__iter ${__targets})
|
||||||
|
get_target_property(__target_type ${__iter} TYPE)
|
||||||
|
|
||||||
|
if((NOT ${__target_type} STREQUAL "UTILITY") AND
|
||||||
|
(NOT ${__target_type} STREQUAL "INTERFACE_LIBRARY") AND
|
||||||
|
(NOT ${__iter} MATCHES ".*_shared$" ) AND
|
||||||
|
(NOT ${__iter} MATCHES ".*_static$" )
|
||||||
|
)
|
||||||
|
myxx_code_coverage(${__iter})
|
||||||
|
myxx_analyze_clang_tidy(${__iter})
|
||||||
|
myxx_analyze_clang_tidy_naming(${__iter})
|
||||||
|
myxx_analyze_clang_check(${__iter})
|
||||||
|
if(MYXX_CMAKE_CLAZY_FIX)
|
||||||
|
myxx_analyze_clazy(${__iter} FIX)
|
||||||
|
else()
|
||||||
|
myxx_analyze_clazy(${__iter})
|
||||||
|
endif()
|
||||||
|
myxx_analyze_pvs_studio(${__iter})
|
||||||
|
myxx_add_sanitizers(${__iter})
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
endfunction(myxx)
|
endfunction(myxx)
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
set(MYXX_CMAKE_PACKAGE_VERSION "2.0.9")
|
set(MYXX_CMAKE_PACKAGE_VERSION "2.1.92")
|
||||||
if(MYXX_CMAKE_PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
|
if(MYXX_CMAKE_PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
|
||||||
set(PACKAGE_VERSION_COMPATIBLE FALSE)
|
set(PACKAGE_VERSION_COMPATIBLE FALSE)
|
||||||
else()
|
else()
|
||||||
|
@@ -14,7 +14,9 @@ find_program(CLANG_CHECK_EXE NAMES ${CLANG_CHECK_NAMES})
|
|||||||
unset(CLANG_CHECK_NAMES)
|
unset(CLANG_CHECK_NAMES)
|
||||||
|
|
||||||
function(myxx_analyze_clang_check TARGET_NAME)
|
function(myxx_analyze_clang_check TARGET_NAME)
|
||||||
myx_skip_external_target(${TARGET_NAME})
|
if(NOT ${PROJECT_BINARY_DIR} STREQUAL ${CMAKE_BINARY_DIR})
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
if(NOT CLANG_CHECK_EXE)
|
if(NOT CLANG_CHECK_EXE)
|
||||||
message(STATUS "MyxCMake: Clang Check analyzer is not found")
|
message(STATUS "MyxCMake: Clang Check analyzer is not found")
|
||||||
|
@@ -14,7 +14,9 @@ find_program(CLANG_TIDY_EXE NAMES ${CLANG_TIDY_NAMES})
|
|||||||
unset(CLANG_TIDY_NAMES)
|
unset(CLANG_TIDY_NAMES)
|
||||||
|
|
||||||
function(myxx_analyze_clang_tidy TARGET_NAME)
|
function(myxx_analyze_clang_tidy TARGET_NAME)
|
||||||
myx_skip_external_target(${TARGET_NAME})
|
if(NOT ${PROJECT_BINARY_DIR} STREQUAL ${CMAKE_BINARY_DIR})
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
if(NOT CLANG_TIDY_EXE)
|
if(NOT CLANG_TIDY_EXE)
|
||||||
message(STATUS "MyxxCMake: Clang Tidy analyzer is not found")
|
message(STATUS "MyxxCMake: Clang Tidy analyzer is not found")
|
||||||
@@ -52,3 +54,54 @@ function(myxx_analyze_clang_tidy TARGET_NAME)
|
|||||||
add_dependencies(${TARGET_NAME}-analyze-clang-tidy ${TARGET_NAME})
|
add_dependencies(${TARGET_NAME}-analyze-clang-tidy ${TARGET_NAME})
|
||||||
add_dependencies(myxx-analyze-clang-tidy ${TARGET_NAME}-analyze-clang-tidy)
|
add_dependencies(myxx-analyze-clang-tidy ${TARGET_NAME}-analyze-clang-tidy)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
|
function(myxx_analyze_clang_tidy_naming TARGET_NAME)
|
||||||
|
if(NOT ${PROJECT_BINARY_DIR} STREQUAL ${CMAKE_BINARY_DIR})
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT CLANG_TIDY_EXE)
|
||||||
|
message(STATUS "MyxxCMake: Clang Tidy analyzer is not found")
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(options FIX)
|
||||||
|
set(oneValueArgs CONFIG)
|
||||||
|
set(multiValueArgs EXTRA_ARGS)
|
||||||
|
cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||||
|
|
||||||
|
if(NOT ARG_CONFIG)
|
||||||
|
set(ARG_CONFIG ${PROJECT_SOURCE_DIR}/.clang-tidy-naming)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT EXISTS ${ARG_CONFIG})
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(TARGET ${TARGET_NAME}-analyze-clang-tidy-naming)
|
||||||
|
message(STATUS "MyxxCMake: target ${TARGET_NAME}-analyze-clang-tidy-naming already exists")
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(__cmd_args -extra-arg="-Wno-unknown-warning-option ${ARG_EXTRA_ARGS}")
|
||||||
|
get_target_property(__sources ${TARGET_NAME} SOURCES)
|
||||||
|
foreach(__iter ${__sources})
|
||||||
|
string(FIND ${__iter} ${CMAKE_BINARY_DIR} __pos)
|
||||||
|
if(__pos EQUAL -1)
|
||||||
|
list(APPEND __filtered_sources ${__iter})
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
if(ARG_FIX)
|
||||||
|
list(APPEND __cmd_args "-fix-errors")
|
||||||
|
endif()
|
||||||
|
if(NOT TARGET myxx-analyze-clang-tidy-naming)
|
||||||
|
add_custom_target(myxx-analyze-clang-tidy-naming)
|
||||||
|
endif()
|
||||||
|
add_custom_target(${TARGET_NAME}-analyze-clang-tidy-naming
|
||||||
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||||
|
COMMAND ${CLANG_TIDY_EXE} ${__cmd_args} -p ${CMAKE_BINARY_DIR} ${__filtered_sources})
|
||||||
|
add_dependencies(${TARGET_NAME}-analyze-clang-tidy-naming ${TARGET_NAME})
|
||||||
|
add_dependencies(myxx-analyze-clang-tidy-naming ${TARGET_NAME}-analyze-clang-tidy-naming)
|
||||||
|
endfunction()
|
||||||
|
@@ -7,7 +7,9 @@ if(CLAZY_EXE AND CLANG_APPLY_REPLACEMENTS_EXE)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
function(myxx_analyze_clazy TARGET_NAME)
|
function(myxx_analyze_clazy TARGET_NAME)
|
||||||
myx_skip_external_target(${TARGET_NAME})
|
if(NOT ${PROJECT_BINARY_DIR} STREQUAL ${CMAKE_BINARY_DIR})
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
if(NOT CLAZY_EXE)
|
if(NOT CLAZY_EXE)
|
||||||
message(STATUS "MyxCMake: Clazy standalone analyzer is not found")
|
message(STATUS "MyxCMake: Clazy standalone analyzer is not found")
|
||||||
@@ -36,10 +38,10 @@ function(myxx_analyze_clazy TARGET_NAME)
|
|||||||
-extra-arg=-Wno-unknown-warning-option
|
-extra-arg=-Wno-unknown-warning-option
|
||||||
-export-fixes=clazy-fixes-file.yaml)
|
-export-fixes=clazy-fixes-file.yaml)
|
||||||
get_target_property(__sources ${TARGET_NAME} SOURCES)
|
get_target_property(__sources ${TARGET_NAME} SOURCES)
|
||||||
foreach(iter ${__sources})
|
foreach(__iter ${__sources})
|
||||||
string(FIND ${iter} ${CMAKE_BINARY_DIR} pos)
|
string(FIND ${__iter} ${CMAKE_BINARY_DIR} __pos)
|
||||||
if(pos EQUAL -1)
|
if(__pos EQUAL -1)
|
||||||
list(APPEND __filtered_sources ${iter})
|
list(APPEND __filtered_sources ${__iter})
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
|
@@ -10,7 +10,9 @@ function(myxx_analyze_pvs_studio TARGET_NAME)
|
|||||||
set(CMAKE_CURRENT_FUNCTION_LIST_DIR ${MYXX_CMAKE_LIB_PVS_DIR_BACKPORT})
|
set(CMAKE_CURRENT_FUNCTION_LIST_DIR ${MYXX_CMAKE_LIB_PVS_DIR_BACKPORT})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
myx_skip_external_target(${TARGET_NAME})
|
if(NOT ${PROJECT_BINARY_DIR} STREQUAL ${CMAKE_BINARY_DIR})
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
if(NOT PVS_STUDIO_ANALYZER_EXE)
|
if(NOT PVS_STUDIO_ANALYZER_EXE)
|
||||||
message(STATUS "MyxxCMake: pvs-studio-analyzer not found.")
|
message(STATUS "MyxxCMake: pvs-studio-analyzer not found.")
|
||||||
@@ -37,11 +39,11 @@ function(myxx_analyze_pvs_studio TARGET_NAME)
|
|||||||
set(ARG_MODE "GA:1,2,3;64:1,2;OP:1,2,3;CS:1,2;OWASP:1,2")
|
set(ARG_MODE "GA:1,2,3;64:1,2;OP:1,2,3;CS:1,2;OWASP:1,2")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
get_target_property(sources ${TARGET_NAME} SOURCES)
|
get_target_property(__target_sources ${TARGET_NAME} SOURCES)
|
||||||
foreach(iter ${sources})
|
foreach(__iter ${__target_sources})
|
||||||
string(FIND ${iter} ${CMAKE_BINARY_DIR} pos)
|
string(FIND ${__iter} ${CMAKE_BINARY_DIR} __pos)
|
||||||
if(pos EQUAL -1)
|
if(__pos EQUAL -1)
|
||||||
list(APPEND srcs ${iter})
|
list(APPEND __filtered_sources ${__iter})
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
|
@@ -9,7 +9,10 @@ function(myxx_code_coverage TARGET_NAME)
|
|||||||
if(NOT MYXX_CODE_COVERAGE)
|
if(NOT MYXX_CODE_COVERAGE)
|
||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
myx_skip_external_target(${TARGET_NAME})
|
|
||||||
|
if(NOT ${PROJECT_BINARY_DIR} STREQUAL ${CMAKE_BINARY_DIR})
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
set(options)
|
set(options)
|
||||||
set(oneValueArgs)
|
set(oneValueArgs)
|
||||||
|
18
MyxxCMake/lib/SyntaxCheck.cmake
Normal file
18
MyxxCMake/lib/SyntaxCheck.cmake
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
include_guard(GLOBAL)
|
||||||
|
|
||||||
|
option(MYXX_CMAKE_SYNTAX_CHECK_ONLY "only check syntax (-fsyntax-only)" OFF)
|
||||||
|
if(MYXX_CMAKE_SYNTAX_CHECK_ONLY)
|
||||||
|
if (NOT ((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR
|
||||||
|
(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")))
|
||||||
|
myx_message_warning("only clang and gcc support -fsyntax-only, using ${CMAKE_CXX_COMPILER_ID}")
|
||||||
|
else()
|
||||||
|
add_compile_options(-fsyntax-only)
|
||||||
|
set(CMAKE_CXX_COMPILE_OBJECT "${CMAKE_CXX_COMPILE_OBJECT} && touch <OBJECT>")
|
||||||
|
set(CMAKE_CXX_CREATE_SHARED_LIBRARY "touch <TARGET>")
|
||||||
|
set(CMAKE_CXX_CREATE_SHARED_MODULE "touch <TARGET>")
|
||||||
|
set(CMAKE_CXX_LINK_EXECUTABLE "touch <TARGET>")
|
||||||
|
set(CMAKE_CXX_ARCHIVE_CREATE "touch <TARGET>")
|
||||||
|
set(CMAKE_CXX_ARCHIVE_APPEND "touch <TARGET>")
|
||||||
|
set(CMAKE_CXX_ARCHIVE_FINISH "touch <TARGET>")
|
||||||
|
endif()
|
||||||
|
endif()
|
@@ -50,6 +50,10 @@ function(sanitizer_add_blacklist_file FILE)
|
|||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(myxx_add_sanitizers ...)
|
function(myxx_add_sanitizers ...)
|
||||||
|
if(NOT ${PROJECT_BINARY_DIR} STREQUAL ${CMAKE_BINARY_DIR})
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
# If no sanitizer is enabled, return immediately.
|
# If no sanitizer is enabled, return immediately.
|
||||||
if(NOT
|
if(NOT
|
||||||
(SANITIZE_ADDRESS
|
(SANITIZE_ADDRESS
|
||||||
|
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
## Установка
|
## Установка
|
||||||
|
|
||||||
Скачать [пакет](../../../releases/download/2.0.9/myxx-cmake_2.0.9_all.deb)
|
Скачать [пакет](../../../releases/download/2.1.92/myxx-cmake_2.1.92_all.deb)
|
||||||
для Debian и установить его, выполнив команду `sudo dpkg -i myxx-cmake_2.0.9_all.deb`,
|
для Debian и установить его, выполнив команду `sudo dpkg -i myxx-cmake_2.1.92_all.deb`,
|
||||||
или [архив](../../../releases/download/2.0.9/myxx-cmake-local-2.0.9.tar.xz)
|
или [архив](../../../releases/download/2.1.92/myxx-cmake-local-2.1.92.tar.xz)
|
||||||
и распаковать его в каталог `$HOME/.local/share/cmake`.
|
и распаковать его в каталог `$HOME/.local/share/cmake`.
|
||||||
|
|
||||||
## Использование
|
## Использование
|
||||||
|
2
debian/CMakeLists.txt
vendored
2
debian/CMakeLists.txt
vendored
@@ -1,5 +1,5 @@
|
|||||||
cmake_minimum_required(VERSION 3.6 FATAL_ERROR)
|
cmake_minimum_required(VERSION 3.6 FATAL_ERROR)
|
||||||
project(myxx-cmake VERSION 2.0.9 LANGUAGES)
|
project(myxx-cmake VERSION 2.1.92 LANGUAGES)
|
||||||
|
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
file(WRITE ${CMAKE_SOURCE_DIR}/MyxxCMake/MyxxCMakeConfigVersion.cmake
|
file(WRITE ${CMAKE_SOURCE_DIR}/MyxxCMake/MyxxCMakeConfigVersion.cmake
|
||||||
|
2
debian/changelog
vendored
2
debian/changelog
vendored
@@ -1,4 +1,4 @@
|
|||||||
myxx-cmake (2.0.9) unstable; urgency=medium
|
myxx-cmake (2.1.92) unstable; urgency=medium
|
||||||
|
|
||||||
* New version.
|
* New version.
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user