Merge branch 'master' of git.246060.ru:f1x1t/cmlib
This commit is contained in:
		@@ -1,85 +1,45 @@
 | 
				
			|||||||
set(BUILD_BREATHE_DOC AUTO CACHE STRING "Enable documntation in Breathe format")
 | 
					set(BREATHE_FOUND AUTO CACHE STRING "Enable Breathe documentation generator")
 | 
				
			||||||
set_property(CACHE BUILD_BREATHE_DOC PROPERTY STRINGS AUTO ON OFF)
 | 
					set_property(CACHE BREATHE_FOUND PROPERTY STRINGS ON OFF AUTO)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if(BUILD_BREATHE_DOC STREQUAL AUTO)
 | 
					find_package(Doxygen)
 | 
				
			||||||
  find_package(Doxygen)
 | 
					find_package(Perl)
 | 
				
			||||||
  find_package(Perl)
 | 
					set(Python_ADDITIONAL_VERSIONS 3.7 3.6 3.5 3.4 3.3 3.2)
 | 
				
			||||||
  set(Python_ADDITIONAL_VERSIONS 3.7 3.6 3.5 3.4 3.3 3.2)
 | 
					find_package(PythonInterp)
 | 
				
			||||||
  find_package(PythonInterp)
 | 
					if (PYTHONINTERP_FOUND)
 | 
				
			||||||
  if (PYTHONINTERP_FOUND)
 | 
					 | 
				
			||||||
  find_package(Sphinx)
 | 
					  find_package(Sphinx)
 | 
				
			||||||
  include(FindPythonModule)
 | 
					  include(FindPythonModule)
 | 
				
			||||||
  find_python_module(breathe)
 | 
					  find_python_module(breathe)
 | 
				
			||||||
  find_python_module(recommonmark)
 | 
					  find_python_module(recommonmark)
 | 
				
			||||||
    if(DOXYGEN_FOUND AND PERL_FOUND AND PYTHONINTERP_FOUND AND SPHINX_FOUND AND breathe_FOUND AND recommonmark_FOUND)
 | 
					  if(DOXYGEN_FOUND AND PERL_FOUND AND PYTHONINTERP_FOUND AND SPHINX_EXECUTABLE AND breathe AND recommonmark)
 | 
				
			||||||
      set(BUILD_BREATHE_DOC ON CACHE STRING "Enable documntation in Breathe format" FORCE)
 | 
					    set(BREATHE_FOUND ON CACHE STRING "Breathe documentation generator enabled" FORCE)
 | 
				
			||||||
  else()
 | 
					  else()
 | 
				
			||||||
      set(BUILD_BREATHE_DOC OFF CACHE STRING "Disable documentation in Breathe format" FORCE)
 | 
					    set(BREATHE_FOUND OFF CACHE STRING "Breathe documentation generator disabled" FORCE)
 | 
				
			||||||
  endif()
 | 
					  endif()
 | 
				
			||||||
  else()
 | 
					 | 
				
			||||||
    set(BUILD_BREATHE_DOC OFF CACHE STRING "Disable documentation in Breathe format" FORCE)
 | 
					 | 
				
			||||||
  endif()
 | 
					 | 
				
			||||||
elseif(BUILD_BREATHE_DOC)
 | 
					 | 
				
			||||||
  find_package(Doxygen REQUIRED)
 | 
					 | 
				
			||||||
  find_package(Perl REQUIRED)
 | 
					 | 
				
			||||||
  set(Python_ADDITIONAL_VERSIONS 3.7 3.6 3.5 3.4 3.3 3.2)
 | 
					 | 
				
			||||||
  find_package(PythonInterp REQUIRED)
 | 
					 | 
				
			||||||
  find_package(Sphinx REQUIRED)
 | 
					 | 
				
			||||||
  include(FindPythonModule)
 | 
					 | 
				
			||||||
  find_python_module(breathe REQUIRED)
 | 
					 | 
				
			||||||
  find_python_module(recommonmark REQUIRED)
 | 
					 | 
				
			||||||
  set(BUILD_BREATHE_DOC ON CACHE STRING "Enable documentation in Breathe format" FORCE)
 | 
					 | 
				
			||||||
else()
 | 
					else()
 | 
				
			||||||
  set(BUILD_BREATHE_DOC OFF CACHE STRING "Disable documentation in Breathe format" FORCE)
 | 
					  set(BREATHE_FOUND OFF CACHE STRING "Breathe documentation generator disabled" FORCE)
 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function(add_breathe_doc)
 | 
					
 | 
				
			||||||
  if(BUILD_BREATHE_DOC AND CMAKE_BUILD_TYPE STREQUAL Release)
 | 
					function(add_breathe_target)
 | 
				
			||||||
 | 
					  if(BREATHE_FOUND)
 | 
				
			||||||
    set(options)
 | 
					    set(options)
 | 
				
			||||||
    set(oneValueArgs
 | 
					    set(oneValueArgs SOURCE_DIR BUILD_DIR CACHE_DIR HTML_DIR DOXY_FILE CONF_FILE TARGET_NAME COMMENT)
 | 
				
			||||||
      SOURCE_DIR
 | 
					 | 
				
			||||||
      BUILD_DIR
 | 
					 | 
				
			||||||
      CACHE_DIR
 | 
					 | 
				
			||||||
      HTML_DIR
 | 
					 | 
				
			||||||
      DOXY_FILE
 | 
					 | 
				
			||||||
      CONF_FILE
 | 
					 | 
				
			||||||
      TARGET_NAME
 | 
					 | 
				
			||||||
      COMMENT
 | 
					 | 
				
			||||||
      )
 | 
					 | 
				
			||||||
    set(multiValueArgs)
 | 
					    set(multiValueArgs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cmake_parse_arguments(BREATHE_DOC
 | 
					    cmake_parse_arguments(_BREATHE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
 | 
				
			||||||
      "${options}"
 | 
					 | 
				
			||||||
      "${oneValueArgs}"
 | 
					 | 
				
			||||||
      "${multiValueArgs}"
 | 
					 | 
				
			||||||
      ${ARGN}
 | 
					 | 
				
			||||||
      )
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    configure_file(
 | 
					    configure_file(${_BREATHE_CONF_FILE} ${_BREATHE_BUILD_DIR}/conf.py @ONLY)
 | 
				
			||||||
      ${BREATHE_DOC_CONF_FILE}
 | 
					    configure_file(${_BREATHE_DOXY_FILE} ${_BREATHE_BUILD_DIR}/Doxyfile @ONLY)
 | 
				
			||||||
      ${BREATHE_DOC_BUILD_DIR}/conf.py
 | 
					 | 
				
			||||||
      @ONLY
 | 
					 | 
				
			||||||
      )
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    configure_file(
 | 
					    add_custom_target(${_BREATHE_TARGET_NAME} VERBATIM
 | 
				
			||||||
      ${BREATHE_DOC_DOXY_FILE}
 | 
					      COMMAND ${SPHINX_EXECUTABLE} -q -b html -c ${_BREATHE_BUILD_DIR}
 | 
				
			||||||
      ${BREATHE_DOC_BUILD_DIR}/Doxyfile
 | 
					                                              -d ${_BREATHE_CACHE_DIR}
 | 
				
			||||||
      @ONLY
 | 
					                                                 ${_BREATHE_SOURCE_DIR}
 | 
				
			||||||
      )
 | 
					                                                 ${_BREATHE_HTML_DIR}
 | 
				
			||||||
 | 
					      COMMENT "Building ${_BREATHE_TARGET_NAME} documentation with Breathe"
 | 
				
			||||||
    add_custom_target(${BREATHE_DOC_TARGET_NAME}
 | 
					 | 
				
			||||||
      ALL
 | 
					 | 
				
			||||||
      COMMAND
 | 
					 | 
				
			||||||
      ${SPHINX_EXECUTABLE}
 | 
					 | 
				
			||||||
      -q
 | 
					 | 
				
			||||||
      -b html
 | 
					 | 
				
			||||||
      -c ${BREATHE_DOC_BUILD_DIR}
 | 
					 | 
				
			||||||
      -d ${BREATHE_DOC_CACHE_DIR}
 | 
					 | 
				
			||||||
      ${BREATHE_DOC_SOURCE_DIR}
 | 
					 | 
				
			||||||
      ${BREATHE_DOC_HTML_DIR}
 | 
					 | 
				
			||||||
      COMMENT
 | 
					 | 
				
			||||||
      "Building ${BREATHE_DOC_TARGET_NAME} documentation with Breathe, Sphinx and Doxygen"
 | 
					 | 
				
			||||||
      VERBATIM
 | 
					 | 
				
			||||||
      )
 | 
					      )
 | 
				
			||||||
 | 
					  else()
 | 
				
			||||||
 | 
					    add_custom_target(${_BREATHE_TARGET_NAME} VERBATIM
 | 
				
			||||||
 | 
					      COMMENT "Breathe is not found. Skipping target ${_BREATHE_TARGET_NAME} build")
 | 
				
			||||||
  endif()
 | 
					  endif()
 | 
				
			||||||
endfunction()
 | 
					endfunction()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,8 @@ function(add_clang_analyze_check)
 | 
				
			|||||||
    add_dependencies(clang-analyze-check-${_target} ${_target})
 | 
					    add_dependencies(clang-analyze-check-${_target} ${_target})
 | 
				
			||||||
    add_dependencies(clang-analyze-check clang-analyze-check-${_target})
 | 
					    add_dependencies(clang-analyze-check clang-analyze-check-${_target})
 | 
				
			||||||
  else()
 | 
					  else()
 | 
				
			||||||
    message(WARNING "ClangCheck is not found")
 | 
					    message(STATUS "CMLIB warning:")
 | 
				
			||||||
 | 
					    message(STATUS "  Clang-Check analyzer is not found")
 | 
				
			||||||
  endif()
 | 
					  endif()
 | 
				
			||||||
endfunction()
 | 
					endfunction()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,8 @@ function(add_clang_tidy_check)
 | 
				
			|||||||
    add_dependencies(clang-tidy-check-${_target} ${_target})
 | 
					    add_dependencies(clang-tidy-check-${_target} ${_target})
 | 
				
			||||||
    add_dependencies(clang-tidy-check clang-tidy-check-${_target})
 | 
					    add_dependencies(clang-tidy-check clang-tidy-check-${_target})
 | 
				
			||||||
  else()
 | 
					  else()
 | 
				
			||||||
    message(WARNING "ClangTidy is not found")
 | 
					    message(STATUS "CMLIB warning:")
 | 
				
			||||||
 | 
					    message(STATUS "  ClangTidy analyzer is not found")
 | 
				
			||||||
  endif()
 | 
					  endif()
 | 
				
			||||||
endfunction()
 | 
					endfunction()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,7 +15,8 @@ function(add_clazy_check)
 | 
				
			|||||||
    add_dependencies(clazy-check-${_target} ${_target})
 | 
					    add_dependencies(clazy-check-${_target} ${_target})
 | 
				
			||||||
    add_dependencies(clazy-check clazy-check-${_target})
 | 
					    add_dependencies(clazy-check clazy-check-${_target})
 | 
				
			||||||
  else()
 | 
					  else()
 | 
				
			||||||
    message(WARNING "Clazy is not found")
 | 
					    message(STATUS "CMLIB warning:")
 | 
				
			||||||
 | 
					    message(STATUS "  Clazy analyzer is not found")
 | 
				
			||||||
  endif()
 | 
					  endif()
 | 
				
			||||||
endfunction()
 | 
					endfunction()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,10 +18,12 @@ function(add_pvs_check)
 | 
				
			|||||||
                            MODE GA:1,2,3;64:1;OP:1,2;CS:1,2)
 | 
					                            MODE GA:1,2,3;64:1;OP:1,2;CS:1,2)
 | 
				
			||||||
      add_dependencies(pvs-check pvs-check-${_target})
 | 
					      add_dependencies(pvs-check pvs-check-${_target})
 | 
				
			||||||
    else()
 | 
					    else()
 | 
				
			||||||
      message(WARNING "PVS-Studio is not found")
 | 
					      message(STATUS "CMLIB warning:")
 | 
				
			||||||
 | 
					      message(STATUS "  PVS-Studio analyzer is not found")
 | 
				
			||||||
    endif()
 | 
					    endif()
 | 
				
			||||||
  else()
 | 
					  else()
 | 
				
			||||||
    message(WARNING "Option CMAKE_EXPORT_COMPILE_COMMANDS is not set. PVS checks will be disabled.")
 | 
					    message(STATUS "CMLIB warning:")
 | 
				
			||||||
 | 
					    message(STATUS "  Option CMAKE_EXPORT_COMPILE_COMMANDS is not set. PVS checks will be disabled.")
 | 
				
			||||||
  endif()
 | 
					  endif()
 | 
				
			||||||
endfunction()
 | 
					endfunction()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,6 +39,7 @@ include(CMLibSanitizers)
 | 
				
			|||||||
include(cotire)
 | 
					include(cotire)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include(CMLibFormatSources)
 | 
					include(CMLibFormatSources)
 | 
				
			||||||
 | 
					include(CMLibDoxygen)
 | 
				
			||||||
include(CMLibBreathe)
 | 
					include(CMLibBreathe)
 | 
				
			||||||
include(CMLibQtTranslation)
 | 
					include(CMLibQtTranslation)
 | 
				
			||||||
include(CMLibToday)
 | 
					include(CMLibToday)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -88,11 +88,26 @@ if(CMAKE_CXX_COMPILER_IS_CLANG
 | 
				
			|||||||
  endif()
 | 
					  endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if(CMAKE_BUILD_TYPE STREQUAL "Release")
 | 
					  if(CMAKE_BUILD_TYPE STREQUAL "Release")
 | 
				
			||||||
    check_enable_cxx_flag(-flto)
 | 
					    check_cxx_compiler_flag(-flto CXX_HAS_LTO_FLAG)
 | 
				
			||||||
    if(CMAKE_CXX_COMPILER_IS_GCC
 | 
					    check_cxx_compiler_flag(-fno-fat-lto-objects CXX_HAS_NO_FAT_LTO_FLAG)
 | 
				
			||||||
       AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "4.8")
 | 
					    if(CMAKE_CXX_COMPILER_IS_GCC AND CXX_HAS_LTO_FLAG)
 | 
				
			||||||
      # Doesn't work with GCC 4.7.2 in Astra Linux 1.5
 | 
					      find_program(CMAKE_GCC_AR NAMES ${_CMAKE_TOOLCHAIN_PREFIX}gcc-ar${_CMAKE_TOOLCHAIN_SUFFIX} HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
 | 
				
			||||||
      check_enable_cxx_flag(-fno-fat-lto-objects)
 | 
					      find_program(CMAKE_GCC_NM NAMES ${_CMAKE_TOOLCHAIN_PREFIX}gcc-nm HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
 | 
				
			||||||
 | 
					      find_program(CMAKE_GCC_RANLIB NAMES ${_CMAKE_TOOLCHAIN_PREFIX}gcc-ranlib HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
 | 
				
			||||||
 | 
					      if(CMAKE_GCC_AR AND CMAKE_GCC_NM AND CMAKE_GCC_RANLIB)
 | 
				
			||||||
 | 
					        set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -flto")
 | 
				
			||||||
 | 
					        if(CXX_HAS_NO_FAT_LTO_FLAG)
 | 
				
			||||||
 | 
					          set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fno-fat-lto-objects")
 | 
				
			||||||
 | 
					        endif()
 | 
				
			||||||
 | 
					        set(CMAKE_AR "${CMAKE_GCC_AR}")
 | 
				
			||||||
 | 
					        set(CMAKE_NM "${CMAKE_GCC_NM}")
 | 
				
			||||||
 | 
					        set(CMAKE_RANLIB "${CMAKE_GCC_RANLIB}")
 | 
				
			||||||
 | 
					      else()
 | 
				
			||||||
 | 
					        message(WARNING "GCC indicates LTO support, but binutils wrappers could not be found. Disabling LTO.")
 | 
				
			||||||
 | 
					      endif()
 | 
				
			||||||
 | 
					    else()
 | 
				
			||||||
 | 
					      check_enable_compiler_flag(-flto)
 | 
				
			||||||
 | 
					      check_enable_compiler_flag(-fno-fat-lto-objects)
 | 
				
			||||||
    endif()
 | 
					    endif()
 | 
				
			||||||
  endif()
 | 
					  endif()
 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										32
									
								
								CMLibDoxygen.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								CMLibDoxygen.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					set(DOXYGEN_FOUND AUTO CACHE STRING "Enable Doxygen documentation generator")
 | 
				
			||||||
 | 
					set_property(CACHE DOXYGEN_FOUND PROPERTY STRINGS ON OFF AUTO)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					find_package(Doxygen)
 | 
				
			||||||
 | 
					if (DOXYGEN_FOUND)
 | 
				
			||||||
 | 
					  set(DOXYGEN_FOUND ON CACHE STRING "Doxygen documentation generator enabled" FORCE)
 | 
				
			||||||
 | 
					else()
 | 
				
			||||||
 | 
					  set(DOXYGEN_FOUND OFF CACHE STRING "Doxygen documentation generator disabled" FORCE)
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function(add_doxygen_target)
 | 
				
			||||||
 | 
					  if (DOXYGEN_FOUND)
 | 
				
			||||||
 | 
					    set(options)
 | 
				
			||||||
 | 
					    set(oneValueArgs TARGET_NAME IN OUT)
 | 
				
			||||||
 | 
					    set(multiValueArgs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cmake_parse_arguments(_DOXYGEN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    configure_file(${_DOXYGEN_IN} ${_DOXYGEN_OUT} @ONLY)
 | 
				
			||||||
 | 
					    message("Doxygen build started")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    add_custom_target(${_DOXYGEN_TARGET_NAME} VERBATIM
 | 
				
			||||||
 | 
					      COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT}
 | 
				
			||||||
 | 
					      WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
 | 
				
			||||||
 | 
					      COMMENT "Generating API documentation with Doxygen"
 | 
				
			||||||
 | 
					      VERBATIM)
 | 
				
			||||||
 | 
					  else()
 | 
				
			||||||
 | 
					    add_custom_target(${_DOXYGEN_TARGET_NAME} VERBATIM
 | 
				
			||||||
 | 
					      COMMENT "Doxygen is not found. Skipping target ${_BREATHE_TARGET_NAME} build")
 | 
				
			||||||
 | 
					  endif()
 | 
				
			||||||
 | 
					endfunction()
 | 
				
			||||||
@@ -16,6 +16,7 @@ function(add_uncrustify_format)
 | 
				
			|||||||
      COMMAND ${UNCRUSTIFY_EXE} ${OPTS} ${_sources})
 | 
					      COMMAND ${UNCRUSTIFY_EXE} ${OPTS} ${_sources})
 | 
				
			||||||
    add_dependencies(uncrustify-format uncrustify-format-${_target})
 | 
					    add_dependencies(uncrustify-format uncrustify-format-${_target})
 | 
				
			||||||
  else()
 | 
					  else()
 | 
				
			||||||
    message(WARNING "Uncrustify is not found")
 | 
					    message(STATUS "CMLIB warning:")
 | 
				
			||||||
 | 
					    message(STATUS "  Uncrustify is not found")
 | 
				
			||||||
  endif()
 | 
					  endif()
 | 
				
			||||||
endfunction()
 | 
					endfunction()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,8 @@ if(IS_DIRECTORY "${CMLIB_MODULE_DIR}")
 | 
				
			|||||||
    list(APPEND CMAKE_MODULE_PATH ${CMLIB_SANITIZERS_DIR})
 | 
					    list(APPEND CMAKE_MODULE_PATH ${CMLIB_SANITIZERS_DIR})
 | 
				
			||||||
    find_package(Sanitizers)
 | 
					    find_package(Sanitizers)
 | 
				
			||||||
  else()
 | 
					  else()
 | 
				
			||||||
    message(WARNING "Sanitizers submodule not found.")
 | 
					    message(STATUS "CMLIB warning:")
 | 
				
			||||||
 | 
					    message(STATUS "  Sanitizers submodule is not found.")
 | 
				
			||||||
  endif()
 | 
					  endif()
 | 
				
			||||||
else()
 | 
					else()
 | 
				
			||||||
  message(FATAL_ERROR "CMLib directory not found.")
 | 
					  message(FATAL_ERROR "CMLib directory not found.")
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								thirdparty/sanitizers
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								thirdparty/sanitizers
									
									
									
									
										vendored
									
									
								
							 Submodule thirdparty/sanitizers updated: 9b4aec096e...26eced86d8
									
								
							
		Reference in New Issue
	
	Block a user