Начало
This commit is contained in:
		
							
								
								
									
										49
									
								
								CMLibBuildTypes.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								CMLibBuildTypes.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,49 @@
 | 
				
			|||||||
 | 
					cmake_policy(SET CMP0057 NEW)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Добавление конфигурации для профилирования
 | 
				
			||||||
 | 
					if(CMAKE_CONFIGURATION_TYPES)
 | 
				
			||||||
 | 
					  if(NOT "Profile" IN_LIST CMAKE_CONFIGURATION_TYPES)
 | 
				
			||||||
 | 
					    list(APPEND CMAKE_CONFIGURATION_TYPES Profile)
 | 
				
			||||||
 | 
					  endif()
 | 
				
			||||||
 | 
					else()
 | 
				
			||||||
 | 
					  set(_allowed_build_types None Debug Release Profile)
 | 
				
			||||||
 | 
					  set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${_allowed_build_types})
 | 
				
			||||||
 | 
					  if(NOT CMAKE_BUILD_TYPE)
 | 
				
			||||||
 | 
					    set(CMAKE_BUILD_TYPE Debug CACHE STRING "" FORCE)
 | 
				
			||||||
 | 
					  elseif(NOT "${CMAKE_BUILD_TYPE}" IN_LIST _allowed_build_types)
 | 
				
			||||||
 | 
					    message(FATAL_ERROR "Invalid build type: ${CMAKE_BUILD_TYPE}")
 | 
				
			||||||
 | 
					  endif()
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(CMAKE_BUILD_TYPE STREQUAL Profile)
 | 
				
			||||||
 | 
					  # Ключи компиляции для режима профилирования в зависимости от типа компилятора
 | 
				
			||||||
 | 
					  if (CMAKE_CXX_COMPILER_IS_Clang OR CMAKE_CXX_COMPILER_IS_GCC)
 | 
				
			||||||
 | 
					    set(CMAKE_C_FLAGS_PROFILE             "${CMAKE_C_FLAGS_RELEASE} -g -p"             CACHE STRING "")
 | 
				
			||||||
 | 
					    set(CMAKE_CXX_FLAGS_PROFILE           "${CMAKE_CXX_FLAGS_RELEASE} -g -p"           CACHE STRING "")
 | 
				
			||||||
 | 
					    set(CMAKE_EXE_LINKER_FLAGS_PROFILE    "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -g -p"    CACHE STRING "")
 | 
				
			||||||
 | 
					    set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}"       CACHE STRING "")
 | 
				
			||||||
 | 
					    set(CMAKE_STATIC_LINKER_FLAGS_PROFILE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE}"       CACHE STRING "")
 | 
				
			||||||
 | 
					    set(CMAKE_MODULE_LINKER_FLAGS_PROFILE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} -g -p" CACHE STRING "")
 | 
				
			||||||
 | 
					  elseif (CMAKE_CXX_COMPILER_IS_Intel)
 | 
				
			||||||
 | 
					    message("Set options for profiling with Intel C++")
 | 
				
			||||||
 | 
					  elseif (CMAKE_CXX_COMPILER_IS_MSVC)
 | 
				
			||||||
 | 
					    message("Set options for profiling with Visual Studio C++")
 | 
				
			||||||
 | 
					  endif()
 | 
				
			||||||
 | 
					  set(PROFILE 1)
 | 
				
			||||||
 | 
					elseif(CMAKE_BUILD_TYPE STREQUAL Debug)
 | 
				
			||||||
 | 
					  # В режиме отладки подробный вывод сообщений компилятора
 | 
				
			||||||
 | 
					  set(CMAKE_VERBOSE_MAKEFILE 1)
 | 
				
			||||||
 | 
					  set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
 | 
				
			||||||
 | 
					  set(DEBUG 1)
 | 
				
			||||||
 | 
					elseif(CMAKE_BUILD_TYPE STREQUAL Release)
 | 
				
			||||||
 | 
					  set(RELEASE 1)
 | 
				
			||||||
 | 
					elseif(CMAKE_BUILD_TYPE STREQUAL None)
 | 
				
			||||||
 | 
					  # Режим None используется для статического анализа кода
 | 
				
			||||||
 | 
					  set(ANALYSIS 1)
 | 
				
			||||||
 | 
					  set(CMAKE_VERBOSE_MAKEFILE 1)
 | 
				
			||||||
 | 
					  set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
 | 
				
			||||||
 | 
					  #  set(USE_CLANG_TIDY ON CACHE BOOL "Use clang-tidy")
 | 
				
			||||||
 | 
					  #  set(USE_CPPCHECK ON CACHE BOOL "Use cppcheck")
 | 
				
			||||||
 | 
					  #  set(USE_PVS_STUDIO ON CACHE BOOL "Use PVS-Studio")
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										9
									
								
								CMLibCPackSources.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								CMLibCPackSources.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					get_property(CPACK_PACKAGE_VERSION GLOBAL PROPERTY VERSION_STR)
 | 
				
			||||||
 | 
					set(CPACK_SOURCE_GENERATOR TXZ)
 | 
				
			||||||
 | 
					set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION}")
 | 
				
			||||||
 | 
					set(CPACK_IGNORE_FILE "cmake/etc/cpack_ignore.txt")
 | 
				
			||||||
 | 
					file(STRINGS ${CPACK_IGNORE_FILE} CPACK_SOURCE_IGNORE_FILES)
 | 
				
			||||||
 | 
					set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${CPACK_IGNORE_FILE})
 | 
				
			||||||
 | 
					include(CPack)
 | 
				
			||||||
 | 
					add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										37
									
								
								CMLibCommon.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								CMLibCommon.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
				
			|||||||
 | 
					cmake_minimum_required(VERSION 3.3 FATAL_ERROR)
 | 
				
			||||||
 | 
					cmake_policy(VERSION 3.0.2..3.7)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(CMAKE_INSTALL_PREFIX STREQUAL PROJECT_BINARY_DIR)
 | 
				
			||||||
 | 
					  message(FATAL_ERROR "Cannot install into build directory")
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include(CMLibDisableInSourceBuild)
 | 
				
			||||||
 | 
					include(CMakeParseArguments)
 | 
				
			||||||
 | 
					include(GNUInstallDirs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set(CMAKE_POSITION_INDEPENDENT_CODE ON)
 | 
				
			||||||
 | 
					set(CMAKE_CXX_STANDARD_REQUIRED ON)
 | 
				
			||||||
 | 
					set_property(GLOBAL PROPERTY USE_FOLDERS ON)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include(CMLibProjectVersion)
 | 
				
			||||||
 | 
					set_project_version()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include(CMLibOrganizationName)
 | 
				
			||||||
 | 
					set_organization_name()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include(CMLibInstallInOpt)
 | 
				
			||||||
 | 
					include(CMLibLSBInfo)
 | 
				
			||||||
 | 
					include(CMLibCompiler)
 | 
				
			||||||
 | 
					include(CMLibCompilerFlags)
 | 
				
			||||||
 | 
					include(CMLibCompilerFeaturesHPPGenerate)
 | 
				
			||||||
 | 
					include(CMLibCommonTargetProperties)
 | 
				
			||||||
 | 
					include(CMLibCommonLibraryTarget)
 | 
				
			||||||
 | 
					include(CMLibFlagRemove)
 | 
				
			||||||
 | 
					include(CMLibBuildTypes)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include(CMLibQtTranslation)
 | 
				
			||||||
 | 
					include(CMLibToday)
 | 
				
			||||||
 | 
					include(CMLibConfigHPPGenerate)
 | 
				
			||||||
 | 
					include(CMLibCPackSources)
 | 
				
			||||||
 | 
					include(CMLibUninstall)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										27
									
								
								CMLibCommonLibraryTarget.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								CMLibCommonLibraryTarget.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
				
			|||||||
 | 
					# Create a shared and static library
 | 
				
			||||||
 | 
					function(add_common_library LIBNAME SOURCES)
 | 
				
			||||||
 | 
					  add_library(${LIBNAME} OBJECT ${SOURCES})
 | 
				
			||||||
 | 
					  target_include_directories(${LIBNAME} PUBLIC
 | 
				
			||||||
 | 
					    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
 | 
				
			||||||
 | 
					    $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>
 | 
				
			||||||
 | 
					    $<INSTALL_INTERFACE:include/${LIBNAME}>)
 | 
				
			||||||
 | 
					  get_property(VER GLOBAL PROPERTY VERSION_STR)
 | 
				
			||||||
 | 
					  get_property(SOVER GLOBAL PROPERTY VERSION_MAJOR)
 | 
				
			||||||
 | 
					  set_property(TARGET ${LIBNAME} PROPERTY VERSION "${VER}")
 | 
				
			||||||
 | 
					  set_property(TARGET ${LIBNAME} PROPERTY SOVERSION "${SOVER}")
 | 
				
			||||||
 | 
					  set_property(TARGET ${LIBNAME} PROPERTY POSITION_INDEPENDENT_CODE ON)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  add_library(${LIBNAME}_shared SHARED $<TARGET_OBJECTS:${LIBNAME}>)
 | 
				
			||||||
 | 
					  set_target_properties(${LIBNAME}_shared PROPERTIES OUTPUT_NAME ${LIBNAME})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  add_library(${LIBNAME}_static STATIC $<TARGET_OBJECTS:${LIBNAME}>)
 | 
				
			||||||
 | 
					  set_target_properties(${LIBNAME}_static PROPERTIES OUTPUT_NAME ${LIBNAME})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  set(_libdir "${CMAKE_BINARY_DIR}/lib")
 | 
				
			||||||
 | 
					  if(DEFINED ENV{DEB_HOST_MULTIARCH})
 | 
				
			||||||
 | 
					    string(APPEND _libdir "/$ENV{DEB_HOST_MULTIARCH}")
 | 
				
			||||||
 | 
					  endif()
 | 
				
			||||||
 | 
					  set_target_properties(${LIBNAME}_shared PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${_libdir})
 | 
				
			||||||
 | 
					  set_target_properties(${LIBNAME}_static PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${_libdir})
 | 
				
			||||||
 | 
					endfunction()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										39
									
								
								CMLibCommonTargetProperties.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								CMLibCommonTargetProperties.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
				
			|||||||
 | 
					include(CMLibLargeFiles)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set(COMMON_CXX_FEATURES
 | 
				
			||||||
 | 
					  cxx_alias_templates cxx_nullptr cxx_override)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function(common_target_properties Name)
 | 
				
			||||||
 | 
					  get_target_property(__type ${Name} TYPE)
 | 
				
			||||||
 | 
					  set(__visibility PUBLIC)
 | 
				
			||||||
 | 
					  if(__type STREQUAL INTERFACE_LIBRARY)
 | 
				
			||||||
 | 
					    set(__interface 1)
 | 
				
			||||||
 | 
					    set(__visibility INTERFACE)
 | 
				
			||||||
 | 
					  endif()
 | 
				
			||||||
 | 
					  set(_FILE_OFFSET_BITS ON)
 | 
				
			||||||
 | 
					  set(_LARGEFILE_SOURCE ON)
 | 
				
			||||||
 | 
					  set(_LARGEFILE64_SOURCE ON)
 | 
				
			||||||
 | 
					  use_large_files(${Name} ON)
 | 
				
			||||||
 | 
					  target_compile_features(${Name} ${__visibility} ${COMMON_CXX_FEATURES})
 | 
				
			||||||
 | 
					  target_include_directories(${current_target} PUBLIC
 | 
				
			||||||
 | 
					    $<INSTALL_INTERFACE:include>
 | 
				
			||||||
 | 
					    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
 | 
				
			||||||
 | 
					    $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
 | 
				
			||||||
 | 
					  if(APPLE)
 | 
				
			||||||
 | 
					    target_compile_definitions(${Name} ${__visibility} Darwin)
 | 
				
			||||||
 | 
					  endif()
 | 
				
			||||||
 | 
					  if(NOT __interface)
 | 
				
			||||||
 | 
					    if(TARGET Qt5::Core)
 | 
				
			||||||
 | 
					      target_compile_options(${Name} PUBLIC "${Qt5Core_EXECUTABLE_COMPILE_FLAGS}")
 | 
				
			||||||
 | 
					      set_target_properties(${Name} PROPERTIES AUTOMOC TRUE AUTORCC TRUE)
 | 
				
			||||||
 | 
					    endif()
 | 
				
			||||||
 | 
					    if(TARGET Qt5::Widgets)
 | 
				
			||||||
 | 
					      set_target_properties(${Name} PROPERTIES AUTOUIC TRUE)
 | 
				
			||||||
 | 
					    endif()
 | 
				
			||||||
 | 
					    if(CMAKE_CXX_COMPILER_IS_GCC AND NOT APPLE)
 | 
				
			||||||
 | 
					      set_target_properties(${Name} PROPERTIES LINK_FLAGS "-Wl,--no-as-needed")
 | 
				
			||||||
 | 
					    endif()
 | 
				
			||||||
 | 
					  endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					endfunction()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										24
									
								
								CMLibCompiler.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								CMLibCompiler.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					# C compiler name
 | 
				
			||||||
 | 
					if(CMAKE_C_COMPILER_ID STREQUAL "Intel")
 | 
				
			||||||
 | 
					  set(CMAKE_C_COMPILER_IS_INTEL ON)
 | 
				
			||||||
 | 
					elseif(CMAKE_C_COMPILER_ID STREQUAL "Clang" OR
 | 
				
			||||||
 | 
					    CMAKE_C_COMPILER_ID STREQUAL "AppleClang")
 | 
				
			||||||
 | 
					  set(CMAKE_C_COMPILER_IS_CLANG ON)
 | 
				
			||||||
 | 
					elseif(CMAKE_C_COMPILER_ID STREQUAL "GNU")
 | 
				
			||||||
 | 
					  set(CMAKE_C_COMPILER_IS_GCC ON)
 | 
				
			||||||
 | 
					elseif(CMAKE_C_COMPILER_ID STREQUAL "MSVC")
 | 
				
			||||||
 | 
					  set(CMAKE_C_COMPILER_IS_MSVC ON)
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# C++ compiler name
 | 
				
			||||||
 | 
					if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
 | 
				
			||||||
 | 
					  set(CMAKE_CXX_COMPILER_IS_INTEL ON)
 | 
				
			||||||
 | 
					elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR
 | 
				
			||||||
 | 
					    CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
 | 
				
			||||||
 | 
					  set(CMAKE_CXX_COMPILER_IS_CLANG ON)
 | 
				
			||||||
 | 
					elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
 | 
				
			||||||
 | 
					  set(CMAKE_CXX_COMPILER_IS_GCC ON)
 | 
				
			||||||
 | 
					elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
 | 
				
			||||||
 | 
					  set(CMAKE_CXX_COMPILER_IS_MSVC ON)
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										31
									
								
								CMLibCompilerFeaturesHPPGenerate.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								CMLibCompilerFeaturesHPPGenerate.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
				
			|||||||
 | 
					include(WriteCompilerDetectionHeader)
 | 
				
			||||||
 | 
					string(TOUPPER ${PROJECT_NAME} _project_name_uppercase)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write_compiler_detection_header(
 | 
				
			||||||
 | 
					  FILE compiler_features.hpp
 | 
				
			||||||
 | 
					  PREFIX ${_project_name_uppercase}
 | 
				
			||||||
 | 
					  COMPILERS GNU Clang MSVC Intel
 | 
				
			||||||
 | 
					  FEATURES
 | 
				
			||||||
 | 
					  cxx_nullptr
 | 
				
			||||||
 | 
					  cxx_override
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#  cxx_std_11
 | 
				
			||||||
 | 
					#  cxx_alignas
 | 
				
			||||||
 | 
					#  cxx_alignof
 | 
				
			||||||
 | 
					#  cxx_attributes
 | 
				
			||||||
 | 
					#  cxx_auto_type
 | 
				
			||||||
 | 
					#  cxx_constexpr
 | 
				
			||||||
 | 
					#  cxx_digit_separators
 | 
				
			||||||
 | 
					#  cxx_range_for
 | 
				
			||||||
 | 
					#  ALLOW_UNKNOWN_COMPILERS
 | 
				
			||||||
 | 
					#  ALLOW_UNKNOWN_COMPILER_VERSIONS
 | 
				
			||||||
 | 
					#install(FILES
 | 
				
			||||||
 | 
					#  compiler_features.hpp
 | 
				
			||||||
 | 
					#  DESTINATION include
 | 
				
			||||||
 | 
					#  )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#install(FILES
 | 
				
			||||||
 | 
					#  ${support_files}
 | 
				
			||||||
 | 
					#  DESTINATION include/compilers
 | 
				
			||||||
 | 
					#  )
 | 
				
			||||||
							
								
								
									
										115
									
								
								CMLibCompilerFlags.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										115
									
								
								CMLibCompilerFlags.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,115 @@
 | 
				
			|||||||
 | 
					# based on https://github.com/bluescarni/yacma
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include(CheckCXXCompilerFlag)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					macro(CHECK_ENABLE_CXX_FLAG flag)
 | 
				
			||||||
 | 
					  set(CMAKE_REQUIRED_QUIET TRUE)
 | 
				
			||||||
 | 
					  check_cxx_compiler_flag("${flag}" CHECK_CXX_FLAG)
 | 
				
			||||||
 | 
					  unset(CMAKE_REQUIRED_QUIET)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if(CHECK_CXX_FLAG)
 | 
				
			||||||
 | 
					    message(STATUS "'${flag}': flag is enabled.")
 | 
				
			||||||
 | 
					    add_compile_options("${flag}")
 | 
				
			||||||
 | 
					  else()
 | 
				
			||||||
 | 
					    message(STATUS "'${flag}': flag is NOT supported.")
 | 
				
			||||||
 | 
					  endif()
 | 
				
			||||||
 | 
					  # NOTE: check_cxx_compiler stores variables in the cache.
 | 
				
			||||||
 | 
					  unset(CHECK_CXX_FLAG CACHE)
 | 
				
			||||||
 | 
					endmacro()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Common configuration for GCC, clang and Intel.
 | 
				
			||||||
 | 
					if(CMAKE_CXX_COMPILER_IS_CLANG OR CMAKE_CXX_COMPILER_IS_INTEL OR CMAKE_CXX_COMPILER_IS_GCC)
 | 
				
			||||||
 | 
					  set(CMAKE_CXX_STANDARD 11)
 | 
				
			||||||
 | 
					  set(CMAKE_CXX_STANDARD_REQUIRED YES)
 | 
				
			||||||
 | 
					  set(CMAKE_CXX_EXTENSIONS YES)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if(CMAKE_BUILD_TYPE STREQUAL "Debug")
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wall)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wextra)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wnon-virtual-dtor)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wnoexcept)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wlogical-op)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wconversion)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wdeprecated)
 | 
				
			||||||
 | 
					    # This limit is supposed to be at least 1024 in C++11, but for some reason
 | 
				
			||||||
 | 
					    # clang sets this to 256, and gcc to 900.
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-ftemplate-depth=1024)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wold-style-cast)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wdisabled-optimization)
 | 
				
			||||||
 | 
					    # This is useful when the compiler decides the template backtrace is too verbose.
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-ftemplate-backtrace-limit=0)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-fstack-protector-all)
 | 
				
			||||||
 | 
					    # A few suggestion flags.
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wsuggest-attribute=pure)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wsuggest-attribute=const)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wsuggest-attribute=noreturn)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wsuggest-attribute=format)
 | 
				
			||||||
 | 
					    # From GCC 5.
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wodr)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wsuggest-final-types)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wsuggest-final-methods)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wsuggest-override)
 | 
				
			||||||
 | 
					    # From GCC 6.
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wshift-negative-value)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wshift-overflow=2)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wduplicated-cond)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wnull-dereference)
 | 
				
			||||||
 | 
					    # From GCC 7.
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wrestrict)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Waligned-new)
 | 
				
			||||||
 | 
					    # From GCC 8.
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wcast-align=strict)
 | 
				
			||||||
 | 
					    # This is supposed to produce a nice graphical visualization
 | 
				
			||||||
 | 
					    # of mismatching template errors.
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-fdiagnostics-show-template-tree)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-fdiagnostics-show-option)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-pedantic)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wcast-align)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wcast-qual)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wctor-dtor-privacy)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wdisabled-optimization)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wformat=2)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Winit-self)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wmissing-include-dirs)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Woverloaded-virtual)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wredundant-decls)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wsign-promo)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wstrict-overflow=5)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wundef)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wno-unused)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wno-variadic-macros)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wno-parentheses)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wstrict-null-sentinel)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wshadow)
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wshadow-all)
 | 
				
			||||||
 | 
					  endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if(CMAKE_BUILD_TYPE STREQUAL "Release")
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-flto)
 | 
				
			||||||
 | 
					    if(CMAKE_CXX_COMPILER_IS_GCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "4.8")
 | 
				
			||||||
 | 
					      # Doesn't work with GCC 4.7.2 in Astra Linux 1.5
 | 
				
			||||||
 | 
					      CHECK_ENABLE_CXX_FLAG(-fno-fat-lto-objects)
 | 
				
			||||||
 | 
					    endif()
 | 
				
			||||||
 | 
					  endif()
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (CMAKE_CXX_COMPILER_IS_GCC)
 | 
				
			||||||
 | 
					  CHECK_ENABLE_CXX_FLAG(-fdiagnostics-color=auto)
 | 
				
			||||||
 | 
					  # The -Wmaybe-uninitialized flag is enabled by -Wall, but it is known
 | 
				
			||||||
 | 
					  # to emit a lot of possibly spurious warnings. Let's just disable it.
 | 
				
			||||||
 | 
					  CHECK_ENABLE_CXX_FLAG(-Wno-maybe-uninitialized)
 | 
				
			||||||
 | 
					  if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "5.999")
 | 
				
			||||||
 | 
					    # NOTE: GCC >= 6 seems to be wrongly warning about visibility attributes
 | 
				
			||||||
 | 
					    # in some situations:
 | 
				
			||||||
 | 
					    # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80947
 | 
				
			||||||
 | 
					    # Let's just disable the warning for now.
 | 
				
			||||||
 | 
					    CHECK_ENABLE_CXX_FLAG(-Wno-attributes)
 | 
				
			||||||
 | 
					  endif()
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(CMAKE_SYSTEM_PROCESSOR STREQUAL "e2k")
 | 
				
			||||||
 | 
					  add_definitions(-DQT_NO_VERSION_TAGGING)
 | 
				
			||||||
 | 
					  list(APPEND CMAKE_LIBRARY_PATH "/usr/lib/e2k-linux-gnu")
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										7
									
								
								CMLibConfigHPPGenerate.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								CMLibConfigHPPGenerate.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					function(cmlib_config_hpp_generate)
 | 
				
			||||||
 | 
					  get_property(VERSION_INT GLOBAL PROPERTY VERSION_INT)
 | 
				
			||||||
 | 
					  get_property(VERSION_STR GLOBAL PROPERTY VERSION_STR)
 | 
				
			||||||
 | 
					  get_property(ORGANIZATION_NAME GLOBAL PROPERTY ORGANIZATION_NAME)
 | 
				
			||||||
 | 
					  string(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UPPERCASE)
 | 
				
			||||||
 | 
					  configure_file(${CMAKE_SOURCE_DIR}/cmake/cmlib/hpp/config.hpp.in ${CMAKE_BINARY_DIR}/include/config.hpp)
 | 
				
			||||||
 | 
					endfunction()
 | 
				
			||||||
							
								
								
									
										14
									
								
								CMLibDisableInSourceBuild.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								CMLibDisableInSourceBuild.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					# Запись результатов сборки проекта внутрь иерархии каталогов
 | 
				
			||||||
 | 
					# с исходными текстами приводит к засорению файлами формируемыми
 | 
				
			||||||
 | 
					# на этапе сборки, которые затрудняют разработку, поиск в оригинальных
 | 
				
			||||||
 | 
					# файлах и мешают ориентироваться в проекте. При работе с несколькими
 | 
				
			||||||
 | 
					# типами сборки, например, отладка и выпуск, появляется необходимость
 | 
				
			||||||
 | 
					# корректного полного удаления результатов предыдущего варианта.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					get_filename_component(_source_realpath "${CMAKE_SOURCE_DIR}" REALPATH)
 | 
				
			||||||
 | 
					get_filename_component(_binary_realpath "${CMAKE_BINARY_DIR}" REALPATH)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(${_source_realpath} STREQUAL ${_binary_realpath})
 | 
				
			||||||
 | 
					   message(FATAL_ERROR "In-source builds are not allowed.")
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										71
									
								
								CMLibFlagRemove.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								CMLibFlagRemove.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,71 @@
 | 
				
			|||||||
 | 
					# https://stackoverflow.com/a/49216539
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Removes the specified compile flag from the specified target.
 | 
				
			||||||
 | 
					#   _target     - The target to remove the compile flag from
 | 
				
			||||||
 | 
					#   _flag       - The compile flag to remove
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Pre: apply_global_cxx_flags_to_all_targets() must be invoked.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					macro(remove_flag_from_target _target _flag)
 | 
				
			||||||
 | 
					    get_target_property(_target_cxx_flags ${_target} COMPILE_OPTIONS)
 | 
				
			||||||
 | 
					    if(_target_cxx_flags)
 | 
				
			||||||
 | 
					        list(REMOVE_ITEM _target_cxx_flags ${_flag})
 | 
				
			||||||
 | 
					        set_target_properties(${_target} PROPERTIES COMPILE_OPTIONS "${_target_cxx_flags}")
 | 
				
			||||||
 | 
					    endif()
 | 
				
			||||||
 | 
					endmacro()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Removes the specified compiler flag from the specified file.
 | 
				
			||||||
 | 
					#   _target     - The target that _file belongs to
 | 
				
			||||||
 | 
					#   _file       - The file to remove the compiler flag from
 | 
				
			||||||
 | 
					#   _flag       - The compiler flag to remove.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Pre: apply_global_cxx_flags_to_all_targets() must be invoked.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					macro(remove_flag_from_file _target _file _flag)
 | 
				
			||||||
 | 
					    get_target_property(_target_sources ${_target} SOURCES)
 | 
				
			||||||
 | 
					    # Check if a sync is required, in which case we'll force a rewrite of the cache variables.
 | 
				
			||||||
 | 
					    if(_flag_sync_required)
 | 
				
			||||||
 | 
					        unset(_cached_${_target}_cxx_flags CACHE)
 | 
				
			||||||
 | 
					        unset(_cached_${_target}_${_file}_cxx_flags CACHE)
 | 
				
			||||||
 | 
					    endif()
 | 
				
			||||||
 | 
					    get_target_property(_${_target}_cxx_flags ${_target} COMPILE_OPTIONS)
 | 
				
			||||||
 | 
					    # On first entry, cache the target compile flags and apply them to each source file
 | 
				
			||||||
 | 
					    # in the target.
 | 
				
			||||||
 | 
					    if(NOT _cached_${_target}_cxx_flags)
 | 
				
			||||||
 | 
					        # Obtain and cache the target compiler options, then clear them.
 | 
				
			||||||
 | 
					        get_target_property(_target_cxx_flags ${_target} COMPILE_OPTIONS)
 | 
				
			||||||
 | 
					        set(_cached_${_target}_cxx_flags "${_target_cxx_flags}" CACHE INTERNAL "")
 | 
				
			||||||
 | 
					        set_target_properties(${_target} PROPERTIES COMPILE_OPTIONS "")
 | 
				
			||||||
 | 
					        # Apply the target compile flags to each source file.
 | 
				
			||||||
 | 
					        foreach(_source_file ${_target_sources})
 | 
				
			||||||
 | 
					            # Check for pre-existing flags set by set_source_files_properties().
 | 
				
			||||||
 | 
					            get_source_file_property(_source_file_cxx_flags ${_source_file} COMPILE_FLAGS)
 | 
				
			||||||
 | 
					            if(_source_file_cxx_flags)
 | 
				
			||||||
 | 
					                separate_arguments(_source_file_cxx_flags UNIX_COMMAND ${_source_file_cxx_flags})
 | 
				
			||||||
 | 
					                list(APPEND _source_file_cxx_flags "${_target_cxx_flags}")
 | 
				
			||||||
 | 
					            else()
 | 
				
			||||||
 | 
					                set(_source_file_cxx_flags "${_target_cxx_flags}")
 | 
				
			||||||
 | 
					            endif()
 | 
				
			||||||
 | 
					            # Apply the compile flags to the current source file.
 | 
				
			||||||
 | 
					            string(REPLACE ";" " " _source_file_cxx_flags_string "${_source_file_cxx_flags}")
 | 
				
			||||||
 | 
					            set_source_files_properties(${_source_file} PROPERTIES COMPILE_FLAGS "${_source_file_cxx_flags_string}")
 | 
				
			||||||
 | 
					        endforeach()
 | 
				
			||||||
 | 
					    endif()
 | 
				
			||||||
 | 
					    list(FIND _target_sources ${_file} _file_found_at)
 | 
				
			||||||
 | 
					    if(_file_found_at GREATER -1)
 | 
				
			||||||
 | 
					        if(NOT _cached_${_target}_${_file}_cxx_flags)
 | 
				
			||||||
 | 
					            # Cache the compile flags for the specified file.
 | 
				
			||||||
 | 
					            # This is the list that we'll be removing flags from.
 | 
				
			||||||
 | 
					            get_source_file_property(_source_file_cxx_flags ${_file} COMPILE_FLAGS)
 | 
				
			||||||
 | 
					            separate_arguments(_source_file_cxx_flags UNIX_COMMAND ${_source_file_cxx_flags})
 | 
				
			||||||
 | 
					            set(_cached_${_target}_${_file}_cxx_flags ${_source_file_cxx_flags} CACHE INTERNAL "")
 | 
				
			||||||
 | 
					        endif()
 | 
				
			||||||
 | 
					        # Remove the specified flag, then re-apply the rest.
 | 
				
			||||||
 | 
					        list(REMOVE_ITEM _cached_${_target}_${_file}_cxx_flags ${_flag})
 | 
				
			||||||
 | 
					        string(REPLACE ";" " " _cached_${_target}_${_file}_cxx_flags_string "${_cached_${_target}_${_file}_cxx_flags}")
 | 
				
			||||||
 | 
					        set_source_files_properties(${_file} PROPERTIES COMPILE_FLAGS "${_cached_${_target}_${_file}_cxx_flags_string}")
 | 
				
			||||||
 | 
					    endif()
 | 
				
			||||||
 | 
					endmacro()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										6
									
								
								CMLibInstallInOpt.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								CMLibInstallInOpt.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					option(INSTALL_TO_OPT "Install to proprietary /opt hierarchy" FALSE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(INSTALL_TO_OPT)
 | 
				
			||||||
 | 
					  string(TOLOWER "/opt/${ORGANIZATION_NAME}/${PROJECT_NAME}" CMAKE_INSTALL_PREFIX)
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										21
									
								
								CMLibLSBInfo.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								CMLibLSBInfo.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					if(LSB_RELEASE)
 | 
				
			||||||
 | 
					  return()
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					find_program(_lsb_release_executable lsb_release)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(_lsb_release_executable)
 | 
				
			||||||
 | 
					  execute_process(COMMAND ${_lsb_release_executable} -sc
 | 
				
			||||||
 | 
					    OUTPUT_VARIABLE LSB_CODENAME OUTPUT_STRIP_TRAILING_WHITESPACE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  execute_process(COMMAND ${_lsb_release_executable} -sr
 | 
				
			||||||
 | 
					    OUTPUT_VARIABLE LSB_RELEASE OUTPUT_STRIP_TRAILING_WHITESPACE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  execute_process(COMMAND ${_lsb_release_executable} -si
 | 
				
			||||||
 | 
					    OUTPUT_VARIABLE LSB_DISTRIBUTOR_ID OUTPUT_STRIP_TRAILING_WHITESPACE)
 | 
				
			||||||
 | 
					else()
 | 
				
			||||||
 | 
					  set(LSB_DISTRIBUTOR_ID "unknown")
 | 
				
			||||||
 | 
					  set(LSB_RELEASE "unknown")
 | 
				
			||||||
 | 
					  set(LSB_CODENAME "unknown")
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										107
									
								
								CMLibLargeFiles.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										107
									
								
								CMLibLargeFiles.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,107 @@
 | 
				
			|||||||
 | 
					macro(test_large_files VARIABLE USE_64_SUFFIX)
 | 
				
			||||||
 | 
					  if(NOT DEFINED ${VARIABLE})
 | 
				
			||||||
 | 
					    message(STATUS "Checking if large (64-bit) file support is available...")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(USE_64_SUFFIX)
 | 
				
			||||||
 | 
					      set(SUFFIX_64 "64")
 | 
				
			||||||
 | 
					    else(USE_64_SUFFIX)
 | 
				
			||||||
 | 
					      set(SUFFIX_64 "")
 | 
				
			||||||
 | 
					    endif(USE_64_SUFFIX)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # First try without any macros defined
 | 
				
			||||||
 | 
					    try_compile(LARGE_FILES_SUPPORTED "${CMAKE_BINARY_DIR}"
 | 
				
			||||||
 | 
					      "${CMAKE_MODULE_PATH}/tests/LargeFiles${SUFFIX_64}.c"
 | 
				
			||||||
 | 
					      OUTPUT_VARIABLE TRY_LARGE_FILES_OUTPUT)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(VERBOSE_LARGE_FILES)
 | 
				
			||||||
 | 
					      message(STATUS "Large file output (no special flags):\n${TRY_LARGE_FILES_OUTPUT}")
 | 
				
			||||||
 | 
					    endif(VERBOSE_LARGE_FILES)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(NOT LARGE_FILES_SUPPORTED)
 | 
				
			||||||
 | 
					      # Try with C macro _FILE_OFFSET_BITS=64
 | 
				
			||||||
 | 
					      try_compile(LARGE_FILES_SUPPORTED "${CMAKE_BINARY_DIR}"
 | 
				
			||||||
 | 
					        "${CMAKE_MODULE_PATH}/tests/LargeFiles${SUFFIX_64}.c"
 | 
				
			||||||
 | 
					        COMPILE_DEFINITIONS "-D_FILE_OFFSET_BITS=64"
 | 
				
			||||||
 | 
					        OUTPUT_VARIABLE TRY_LARGE_FILES_OUTPUT)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if(VERBOSE_LARGE_FILES)
 | 
				
			||||||
 | 
					        message(STATUS "Large file output (_FILE_OFFSET_BITS=64):\n${TRY_LARGE_FILES_OUTPUT}")
 | 
				
			||||||
 | 
					      endif(VERBOSE_LARGE_FILES)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if(LARGE_FILES_SUPPORTED)
 | 
				
			||||||
 | 
					        set(_FILE_OFFSET_BITS=64 CACHE INTERNAL "C macro _FILE_OFFSET_BITS=64 is required for 64-bit file support")
 | 
				
			||||||
 | 
					      endif(LARGE_FILES_SUPPORTED)
 | 
				
			||||||
 | 
					    endif(NOT LARGE_FILES_SUPPORTED)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(NOT LARGE_FILES_SUPPORTED)
 | 
				
			||||||
 | 
					      # Try with C macro _LARGEFILE_SOURCE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      try_compile(LARGE_FILES_SUPPORTED "${CMAKE_BINARY_DIR}"
 | 
				
			||||||
 | 
					        "${CMAKE_MODULE_PATH}/tests/LargeFiles${SUFFIX_64}.c"
 | 
				
			||||||
 | 
					        COMPILE_DEFINITIONS "-D_LARGEFILE${SUFFIX_64}_SOURCE"
 | 
				
			||||||
 | 
					        OUTPUT_VARIABLE TRY_LARGE_FILES_OUTPUT)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if(VERBOSE_LARGE_FILES)
 | 
				
			||||||
 | 
					        message(STATUS "Large file output (_LARGEFILE${SUFFIX_64}_SOURCE):\n${TRY_LARGE_FILES_OUTPUT}")
 | 
				
			||||||
 | 
					      endif(VERBOSE_LARGE_FILES)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if(LARGE_FILES_SUPPORTED)
 | 
				
			||||||
 | 
					        set(_LARGEFILE${SUFFIX_64}_SOURCE=1 CACHE INTERNAL "C macro _LARGEFILE${SUFFIX_64}_SOURCE is required for 64-bit file support")
 | 
				
			||||||
 | 
					      endif(LARGE_FILES_SUPPORTED)
 | 
				
			||||||
 | 
					    endif(NOT LARGE_FILES_SUPPORTED)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(NOT LARGE_FILES_SUPPORTED)
 | 
				
			||||||
 | 
					      # Try with both C macro _FILE_OFFSET_BITS=64 and _LARGEFILE_SOURCE
 | 
				
			||||||
 | 
					      try_compile(LARGE_FILES_SUPPORTED "${CMAKE_BINARY_DIR}"
 | 
				
			||||||
 | 
					        "${CMAKE_MODULE_PATH}/tests/LargeFiles${SUFFIX_64}.c"
 | 
				
			||||||
 | 
					        COMPILE_DEFINITIONS "-D_FILE_OFFSET_BITS=64" "-D_LARGEFILE${SUFFIX_64}_SOURCE"
 | 
				
			||||||
 | 
					        OUTPUT_VARIABLE TRY_LARGE_FILES_OUTPUT)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if(VERBOSE_LARGE_FILES)
 | 
				
			||||||
 | 
					        message(STATUS "Large file output (_FILE_OFFSET_BITS=64 and _LARGEFILE${SUFFIX_64}_SOURCE):\n${TRY_LARGE_FILES_OUTPUT}")
 | 
				
			||||||
 | 
					      endif(VERBOSE_LARGE_FILES)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if(LARGE_FILES_SUPPORTED)
 | 
				
			||||||
 | 
					        set(_FILE_OFFSET_BITS=64 CACHE INTERNAL "C macro _FILE_OFFSET_BITS=64 is required for 64-bit file support")
 | 
				
			||||||
 | 
					        set(_LARGEFILE${SUFFIX_64}_SOURCE=1 CACHE INTERNAL "C macro _LARGEFILE${SUFFIX_64}_SOURCE is required for 64-bit file support")
 | 
				
			||||||
 | 
					      endif(LARGE_FILES_SUPPORTED)
 | 
				
			||||||
 | 
					    endif(NOT LARGE_FILES_SUPPORTED)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(NOT LARGE_FILES_SUPPORTED)
 | 
				
			||||||
 | 
					      # Maybe we are using the Windows C standard library
 | 
				
			||||||
 | 
					      try_compile(LARGE_FILES_SUPPORTED "${CMAKE_BINARY_DIR}"
 | 
				
			||||||
 | 
					        "${CMAKE_MODULE_PATH}/tests/LargeFilesWindows.c")
 | 
				
			||||||
 | 
					    endif(NOT LARGE_FILES_SUPPORTED)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(LARGE_FILES_SUPPORTED)
 | 
				
			||||||
 | 
					      message(STATUS "Checking if large (64-bit) file support is available - yes")
 | 
				
			||||||
 | 
					      set(${VARIABLE} 1 CACHE INTERNAL "Is large file support available?")
 | 
				
			||||||
 | 
					    else(LARGE_FILES_SUPPORTED)
 | 
				
			||||||
 | 
					      message(STATUS "Checking if large (64-bit) file support is available - no")
 | 
				
			||||||
 | 
					      set(${VARIABLE} 0 CACHE INTERNAL "Is large file support available?")
 | 
				
			||||||
 | 
					    endif(LARGE_FILES_SUPPORTED)
 | 
				
			||||||
 | 
					  endif(NOT DEFINED ${VARIABLE})
 | 
				
			||||||
 | 
					endmacro(test_large_files VARIABLE USE_64_SUFFIX)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					macro(use_large_files TARGET USE_64_SUFFIX)
 | 
				
			||||||
 | 
					  test_large_files(USING_LARGE_FILES ${USE_64_SUFFIX})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if(USING_LARGE_FILES)
 | 
				
			||||||
 | 
					    if(DEFINED _FILE_OFFSET_BITS)
 | 
				
			||||||
 | 
					      set_property(TARGET ${TARGET}
 | 
				
			||||||
 | 
					        APPEND PROPERTY COMPILE_DEFINITIONS "_FILE_OFFSET_BITS=${_FILE_OFFSET_BITS}")
 | 
				
			||||||
 | 
					    endif(DEFINED _FILE_OFFSET_BITS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(DEFINED _LARGEFILE_SOURCE)
 | 
				
			||||||
 | 
					      set_property(TARGET ${TARGET}
 | 
				
			||||||
 | 
					        APPEND PROPERTY COMPILE_DEFINITIONS "_LARGEFILE_SOURCE")
 | 
				
			||||||
 | 
					    endif(DEFINED _LARGEFILE_SOURCE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(DEFINED _LARGEFILE64_SOURCE)
 | 
				
			||||||
 | 
					      set_property(TARGET ${TARGET}
 | 
				
			||||||
 | 
					        APPEND PROPERTY COMPILE_DEFINITIONS "_LARGEFILE64_SOURCE")
 | 
				
			||||||
 | 
					    endif(DEFINED _LARGEFILE64_SOURCE)
 | 
				
			||||||
 | 
					  else(USING_LARGE_FILES)
 | 
				
			||||||
 | 
					    message(FATAL_ERROR "Large file support not available")
 | 
				
			||||||
 | 
					  endif(USING_LARGE_FILES)
 | 
				
			||||||
 | 
					endmacro(use_large_files TARGET USE_64_SUFFIX)
 | 
				
			||||||
							
								
								
									
										19
									
								
								CMLibOrganizationName.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								CMLibOrganizationName.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					# read file cmake/etc/organization.txt and set global property ORGANIZATION_NAME
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function(set_organization_name)
 | 
				
			||||||
 | 
					  set(_organization_file "${CMAKE_SOURCE_DIR}/cmake/etc/organization.txt")
 | 
				
			||||||
 | 
					  if(NOT EXISTS "${_organization_file}")
 | 
				
			||||||
 | 
					    message(FATAL_ERROR "File ${ORGANIZATION_FILE} doesn't exist")
 | 
				
			||||||
 | 
					  endif()
 | 
				
			||||||
 | 
					  file(READ "${_organization_file}" _org)
 | 
				
			||||||
 | 
					  set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${_organization_file})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if(NOT "${_org}" MATCHES "^([0-9A-Za-z ,.]+)\n")
 | 
				
			||||||
 | 
					    message(FATAL_ERROR "File ${_organization_file} has wrong format")
 | 
				
			||||||
 | 
					  endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  string(REGEX MATCH "^([0-9A-Za-z ,.]+)\n" _ ${_org})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  set_property(GLOBAL PROPERTY ORGANIZATION_NAME ${CMAKE_MATCH_1})
 | 
				
			||||||
 | 
					endfunction()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										25
									
								
								CMLibProjectVersion.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								CMLibProjectVersion.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					# read file cmake/etc/version.txt and set global properties
 | 
				
			||||||
 | 
					# VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH, VERSION_INT and VERSION_STR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function(set_project_version)
 | 
				
			||||||
 | 
					  set(_version_file "${CMAKE_SOURCE_DIR}/cmake/etc/version.txt")
 | 
				
			||||||
 | 
					  if(NOT EXISTS "${_version_file}")
 | 
				
			||||||
 | 
					    message(FATAL_ERROR "File ${_version_file} doesn't exists")
 | 
				
			||||||
 | 
					  endif()
 | 
				
			||||||
 | 
					  file(READ "${_version_file}" _version)
 | 
				
			||||||
 | 
					  set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${_version_file})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if(NOT "${_version}" MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)\n")
 | 
				
			||||||
 | 
					    message(FATAL_ERROR "${_version_file} has wrong format")
 | 
				
			||||||
 | 
					  endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.([0-9]+)\n" _ ${_version})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  set_property(GLOBAL PROPERTY VERSION_MAJOR ${CMAKE_MATCH_1})
 | 
				
			||||||
 | 
					  set_property(GLOBAL PROPERTY VERSION_MINOR ${CMAKE_MATCH_2})
 | 
				
			||||||
 | 
					  set_property(GLOBAL PROPERTY VERSION_PATCH ${CMAKE_MATCH_3})
 | 
				
			||||||
 | 
					  math(EXPR _version_int "(${CMAKE_MATCH_1} << 16) + (${CMAKE_MATCH_2} << 8) + ${CMAKE_MATCH_3}")
 | 
				
			||||||
 | 
					  set_property(GLOBAL PROPERTY VERSION_INT ${_version_int})
 | 
				
			||||||
 | 
					  set_property(GLOBAL PROPERTY VERSION_STR "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.${CMAKE_MATCH_3}")
 | 
				
			||||||
 | 
					endfunction()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										54
									
								
								CMLibQtTranslation.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								CMLibQtTranslation.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
				
			|||||||
 | 
					function(qt_translation)
 | 
				
			||||||
 | 
					  find_package(Qt5 COMPONENTS LinguistTools REQUIRED)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  set(options)
 | 
				
			||||||
 | 
					  set(oneValueArgs TARGET TS_DIR)
 | 
				
			||||||
 | 
					  set(multiValueArgs LANGUAGES)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  cmake_parse_arguments(_QTTR "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
 | 
				
			||||||
 | 
					  set(_target ${_QTTR_TARGET})
 | 
				
			||||||
 | 
					  set(_ts_dir ${_QTTR_TS_DIR})
 | 
				
			||||||
 | 
					  set(_languages ${_QTTR_LANGUAGES})
 | 
				
			||||||
 | 
					  get_target_property(_sources ${_target} SOURCES)
 | 
				
			||||||
 | 
					  get_target_property(_source_dir ${_target} SOURCE_DIR)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  set(L10N_QRC_BODY "")
 | 
				
			||||||
 | 
					  make_directory(${_ts_dir})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  set(_sources_list "")
 | 
				
			||||||
 | 
					  foreach(_s ${_sources})
 | 
				
			||||||
 | 
					    list(APPEND _sources_list ${_source_dir}/${_s})
 | 
				
			||||||
 | 
					  endforeach()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  foreach(_lang ${_languages})
 | 
				
			||||||
 | 
					    set(_ts "${_target}_${_lang}.ts")
 | 
				
			||||||
 | 
					    set(_qm "${_target}_${_lang}.qm")
 | 
				
			||||||
 | 
					    list(APPEND _ts_list ${_ts_dir}/${_ts})
 | 
				
			||||||
 | 
					    if(NOT EXISTS ${_ts_dir}/${_ts})
 | 
				
			||||||
 | 
					      file(WRITE ${_ts_dir}/${_ts} "<?xml version=\"1.0\" encoding=\"utf-8\"?>
 | 
				
			||||||
 | 
					      <!DOCTYPE TS>
 | 
				
			||||||
 | 
					      <TS version=\"2.1\" language=\"${_lang}\"></TS>")
 | 
				
			||||||
 | 
					    endif()
 | 
				
			||||||
 | 
					    string(APPEND L10N_QRC_BODY "<file alias=\"${_qm}\">${CMAKE_BINARY_DIR}/${_qm}</file>\n")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/${_qm}
 | 
				
			||||||
 | 
					      COMMAND ${Qt5_LRELEASE_EXECUTABLE} ARGS ${_ts_dir}/${_ts} -qm ${CMAKE_BINARY_DIR}/${_qm}
 | 
				
			||||||
 | 
					      DEPENDS ${_ts_dir}/${_ts})
 | 
				
			||||||
 | 
					  endforeach()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  add_custom_command(OUTPUT ${_ts_list}
 | 
				
			||||||
 | 
					    COMMAND ${Qt5_LUPDATE_EXECUTABLE} ARGS ${_sources_list} -ts ${_ts_list})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  configure_file(${CMAKE_SOURCE_DIR}/cmake/cmlib/qrc/l10n.qrc.in ${CMAKE_BINARY_DIR}/${_target}_l10n.qrc)
 | 
				
			||||||
 | 
					  qt5_add_resources(_qrc ${CMAKE_BINARY_DIR}/${_target}_l10n.qrc)
 | 
				
			||||||
 | 
					  add_custom_target(_qrc_target DEPENDS ${_qrc})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  foreach(_lang ${_languages})
 | 
				
			||||||
 | 
					    set(_ts "${_target}_${_lang}.ts")
 | 
				
			||||||
 | 
					    set(_qm "${_target}_${_lang}.qm")
 | 
				
			||||||
 | 
					  endforeach()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  add_dependencies(${_target} _qrc_target)
 | 
				
			||||||
 | 
					  target_sources(${_target} PUBLIC ${_qrc})
 | 
				
			||||||
 | 
					endfunction()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										8
									
								
								CMLibToday.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								CMLibToday.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					if(NOT TODAY)
 | 
				
			||||||
 | 
					  if(WIN32)
 | 
				
			||||||
 | 
					    execute_process(COMMAND "cmd" " /C date /T" OUTPUT_VARIABLE TODAY)
 | 
				
			||||||
 | 
					  else()
 | 
				
			||||||
 | 
					    execute_process(COMMAND "date" "+%d/%m/%Y" OUTPUT_VARIABLE TODAY)
 | 
				
			||||||
 | 
					  endif()
 | 
				
			||||||
 | 
					  string(REGEX REPLACE "(..)/(..)/(....).*" "\\3-\\2-\\1" TODAY ${TODAY})
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
							
								
								
									
										9
									
								
								CMLibUninstall.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								CMLibUninstall.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					if(NOT TARGET uninstall)
 | 
				
			||||||
 | 
					  configure_file(
 | 
				
			||||||
 | 
					    "${CMAKE_SOURCE_DIR}/cmake/cmlib/CMLibUninstall.cmake.in"
 | 
				
			||||||
 | 
					    "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake"
 | 
				
			||||||
 | 
					    IMMEDIATE @ONLY)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  add_custom_target(uninstall
 | 
				
			||||||
 | 
					    COMMAND ${CMAKE_COMMAND} -P ${CMAKE_BINARY_DIR}/cmake_uninstall.cmake)
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
							
								
								
									
										22
									
								
								CMLibUninstall.cmake.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								CMLibUninstall.cmake.in
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					if(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt")
 | 
				
			||||||
 | 
					  message(FATAL_ERROR "Cannot find install manifest: @CMAKE_BINARY_DIR@/install_manifest.txt")
 | 
				
			||||||
 | 
					endif(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					file(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files)
 | 
				
			||||||
 | 
					string(REGEX REPLACE "\n" ";" files "${files}")
 | 
				
			||||||
 | 
					foreach(file ${files})
 | 
				
			||||||
 | 
					  message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
 | 
				
			||||||
 | 
					  if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
 | 
				
			||||||
 | 
					    exec_program(
 | 
				
			||||||
 | 
					      "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
 | 
				
			||||||
 | 
					      OUTPUT_VARIABLE rm_out
 | 
				
			||||||
 | 
					      RETURN_VALUE rm_retval
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    if(NOT "${rm_retval}" STREQUAL 0)
 | 
				
			||||||
 | 
					      message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
 | 
				
			||||||
 | 
					    endif(NOT "${rm_retval}" STREQUAL 0)
 | 
				
			||||||
 | 
					  else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
 | 
				
			||||||
 | 
					    message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
 | 
				
			||||||
 | 
					  endif(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
 | 
				
			||||||
 | 
					endforeach(file)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										49
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,49 @@
 | 
				
			|||||||
 | 
					# CMake Modules
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Репозиторий модулей для CMake.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Установка
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					В каталоге проекта выполнить команду
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sh
 | 
				
			||||||
 | 
					git submodule add ssh://git@host/user/cmlib cmake/cmlib
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					заменив `host` и `user` на нужные значения.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Использование
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					В основном для проекта файле `CMakeLists.txt` добавить:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```cmake
 | 
				
			||||||
 | 
					if(IS_DIRECTORY ${CMAKE_SOURCE_DIR}/cmake/cmlib)
 | 
				
			||||||
 | 
					  list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_SOURCE_DIR}/cmake/cmlib)
 | 
				
			||||||
 | 
					else()
 | 
				
			||||||
 | 
					  message(FATAL_ERROR "CMake library directory not exists")
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include(CMLibCommon)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Создать файл `cmake/etc/version.txt`, в который нужно
 | 
				
			||||||
 | 
					записать номер версии проекта, отвечающий стандарту
 | 
				
			||||||
 | 
					[семантического версионирования](https://semver.org/lang/ru/).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					В файле `cmake/etc/organization.txt` записать название
 | 
				
			||||||
 | 
					организации, которой принадлежит проект.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					В файле `cmake/etc/cpack_ignore.txt` перечислить шаблоны
 | 
				
			||||||
 | 
					для исключения из создаваемого целью `dist` архива. Например,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					cmake/lib/.git$
 | 
				
			||||||
 | 
					.git$
 | 
				
			||||||
 | 
					files/var
 | 
				
			||||||
 | 
					CMakeLists.txt.user
 | 
				
			||||||
 | 
					~$
 | 
				
			||||||
 | 
					\\\\..*\\\\.bak$
 | 
				
			||||||
 | 
					\\\\..*\\\\.tmp$
 | 
				
			||||||
 | 
					\\\\..*\\\\.swp$
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										15
									
								
								hpp/config.hpp.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								hpp/config.hpp.in
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					#ifndef @PROJECT_NAME_UPPERCASE@_CONFIG_HPP_
 | 
				
			||||||
 | 
					#define @PROJECT_NAME_UPPERCASE@_CONFIG_HPP_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define @PROJECT_NAME_UPPERCASE@_VERSION_STR "@VERSION_STR@"
 | 
				
			||||||
 | 
					#define @PROJECT_NAME_UPPERCASE@_VERSION_INT @VERSION_INT@
 | 
				
			||||||
 | 
					#define ORGANIZATION_NAME "@ORGANIZATION_NAME@"
 | 
				
			||||||
 | 
					#define PROJECT_NAME "@CMAKE_PROJECT_NAME@"
 | 
				
			||||||
 | 
					#define BUILD_TYPE "@CMAKE_BUILD_TYPE@"
 | 
				
			||||||
 | 
					#define BUILD_DATE "@TODAY@"
 | 
				
			||||||
 | 
					#cmakedefine PROFILE @PROFILE@
 | 
				
			||||||
 | 
					#cmakedefine DEBUG @DEBUG@
 | 
				
			||||||
 | 
					#cmakedefine RELEASE @RELEASE@
 | 
				
			||||||
 | 
					#cmakedefine ANALYSIS @ANALYSIS@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // @PROJECT_NAME_UPPERCASE@_CONFIG_HPP_
 | 
				
			||||||
							
								
								
									
										5
									
								
								qrc/l10n.qrc.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								qrc/l10n.qrc.in
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					<RCC>
 | 
				
			||||||
 | 
					  <qresource prefix="/qm">
 | 
				
			||||||
 | 
					    @L10N_QRC_BODY@
 | 
				
			||||||
 | 
					  </qresource>
 | 
				
			||||||
 | 
					</RCC>
 | 
				
			||||||
							
								
								
									
										15
									
								
								tests/LargeFiles.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								tests/LargeFiles.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					#include <sys/types.h>
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
 | 
				
			||||||
 | 
					#define VALID_ARRAY_LENGTH 1
 | 
				
			||||||
 | 
					#define INVALID_ARRAY_LENGTH -1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int main(int argc, const char **argv)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						int a[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? VALID_ARRAY_LENGTH : INVALID_ARRAY_LENGTH];
 | 
				
			||||||
 | 
						off_t offset = ftello(NULL);
 | 
				
			||||||
 | 
						fseeko(NULL, offset, SEEK_SET);
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										16
									
								
								tests/LargeFiles64.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								tests/LargeFiles64.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					#include <sys/types.h>
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					#include <stddef.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
 | 
				
			||||||
 | 
					#define VALID_ARRAY_LENGTH 1
 | 
				
			||||||
 | 
					#define INVALID_ARRAY_LENGTH -1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int main(int argc, const char **argv)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						int a[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? VALID_ARRAY_LENGTH : INVALID_ARRAY_LENGTH];
 | 
				
			||||||
 | 
						off64_t offset = ftello64(NULL);
 | 
				
			||||||
 | 
						fseeko64(NULL, offset, SEEK_SET);
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										8
									
								
								tests/LargeFilesWindows.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								tests/LargeFilesWindows.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int main()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						__int64 off = 0;
 | 
				
			||||||
 | 
						_fseeki64(NULL, off, SEEK_SET);
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user