Compare commits
46 Commits
197e5b3939
...
bef7660836
Author | SHA1 | Date | |
---|---|---|---|
bef7660836 | |||
dbc0b76a76 | |||
ab6d9dab66 | |||
956a94800f | |||
8fbf0a3b3d | |||
63c433a82e | |||
ec1d917195 | |||
28cf80381e | |||
c6414bbc03 | |||
894a63237a | |||
1bff4d2a0d | |||
b725122c89 | |||
6748c65058 | |||
0f5a90952b | |||
a0cc72077c | |||
81bed8b385 | |||
6020cb02c0 | |||
f5151f5a2b | |||
5ffcde34e2 | |||
0e96514413 | |||
39111c890a | |||
67cbb07e51 | |||
eeae991b4c | |||
e3957adb47 | |||
41e27fb251 | |||
2be896c4a8 | |||
e3600e96ce | |||
5c90828e4e | |||
186d67c4bb | |||
2e18f5981b | |||
ef788f6cc5 | |||
954b27fa27 | |||
a8e546734a | |||
f2ee747a38 | |||
a6bb734f49 | |||
23be253a8d | |||
9df188963e | |||
aee649f061 | |||
4821f16044 | |||
2ea38c32c8 | |||
a4c2efa3d2 | |||
1eaded9031 | |||
d6c1e11d49 | |||
bc44f42f89 | |||
ea2b322df6 | |||
c73c31b380 |
@@ -1,19 +1,21 @@
|
|||||||
|
# cmake-format: off
|
||||||
if(NOT TARGET create_auxilary_symlinks)
|
if(NOT TARGET create_auxilary_symlinks)
|
||||||
if(UNIX)
|
if(UNIX)
|
||||||
add_custom_target(
|
add_custom_target(
|
||||||
create_auxilary_symlinks
|
create_auxilary_symlinks
|
||||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/files
|
|
||||||
# Ссылка на каталог с журналами
|
# Ссылка на каталог с журналами
|
||||||
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_SOURCE_DIR}/files/log ${CMAKE_BINARY_DIR}/files/log
|
COMMAND ${CMAKE_COMMAND} -E create_symlink
|
||||||
|
${CMAKE_SOURCE_DIR}/files/log ${CMAKE_BINARY_DIR}/log
|
||||||
# Ссылка на каталог с обрабатываемыми данными
|
# Ссылка на каталог с обрабатываемыми данными
|
||||||
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_SOURCE_DIR}/files/lib ${CMAKE_BINARY_DIR}/files/lib
|
COMMAND ${CMAKE_COMMAND} -E create_symlink
|
||||||
# Ссылка на каталог с временными данными
|
${CMAKE_SOURCE_DIR}/files/var ${CMAKE_BINARY_DIR}/var
|
||||||
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_SOURCE_DIR}/files/cache
|
|
||||||
${CMAKE_BINARY_DIR}/files/cache
|
|
||||||
# Ссылка на каталог с постоянными данными
|
# Ссылка на каталог с постоянными данными
|
||||||
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_SOURCE_DIR}/files/data ${CMAKE_BINARY_DIR}/files/data
|
COMMAND ${CMAKE_COMMAND} -E create_symlink
|
||||||
|
${CMAKE_SOURCE_DIR}/files/share ${CMAKE_BINARY_DIR}/share
|
||||||
# Ссылка на каталог настроек
|
# Ссылка на каталог настроек
|
||||||
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_SOURCE_DIR}/files/etc ${CMAKE_BINARY_DIR}/etc)
|
COMMAND ${CMAKE_COMMAND} -E create_symlink
|
||||||
|
${CMAKE_SOURCE_DIR}/files/etc ${CMAKE_BINARY_DIR}/etc)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
# cmake-format: on
|
||||||
|
@@ -21,17 +21,23 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
set(_gcc_debug_flags "-ggdb -fno-omit-frame-pointer")
|
||||||
|
set(_gcc_profile_flags "-pg")
|
||||||
|
|
||||||
if(CMAKE_BUILD_TYPE STREQUAL Profile)
|
if(CMAKE_BUILD_TYPE STREQUAL Profile)
|
||||||
# Ключи компиляции для режима профилирования в зависимости от типа компилятора
|
# Ключи компиляции для режима профилирования в зависимости от типа компилятора
|
||||||
if(CMAKE_CXX_COMPILER_IS_Clang OR CMAKE_CXX_COMPILER_IS_GCC)
|
if(CMAKE_CXX_COMPILER_IS_Clang OR CMAKE_CXX_COMPILER_IS_GCC)
|
||||||
set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE} -ggdb -pg -fno-omit-frame-pointer" CACHE STRING ""
|
set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE} ${_gcc_debug_flags} ${_gcc_profile_flags}"
|
||||||
FORCE)
|
CACHE STRING "" FORCE)
|
||||||
set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE} -ggdb -pg -fno-omit-frame-pointer" CACHE STRING
|
set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE} ${_gcc_debug_flags} ${_gcc_profile_flags}"
|
||||||
"" FORCE)
|
CACHE STRING "" FORCE)
|
||||||
set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -pg" CACHE STRING "" FORCE)
|
set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${_gcc_profile_flags}"
|
||||||
set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -pg" CACHE STRING "" FORCE)
|
CACHE STRING "" FORCE)
|
||||||
set(CMAKE_STATIC_LINKER_FLAGS_PROFILE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} -pg" CACHE STRING "" FORCE)
|
set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} ${_gcc_profile_flags}"
|
||||||
set(CMAKE_MODULE_LINKER_FLAGS_PROFILE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} -pg" CACHE STRING "" FORCE)
|
CACHE STRING "" FORCE)
|
||||||
|
set(CMAKE_STATIC_LINKER_FLAGS_PROFILE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE}" CACHE STRING "" FORCE)
|
||||||
|
set(CMAKE_MODULE_LINKER_FLAGS_PROFILE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} ${_gcc_profile_flags}"
|
||||||
|
CACHE STRING "" FORCE)
|
||||||
elseif(CMAKE_CXX_COMPILER_IS_Intel)
|
elseif(CMAKE_CXX_COMPILER_IS_Intel)
|
||||||
message("Set options for profiling with Intel C++")
|
message("Set options for profiling with Intel C++")
|
||||||
elseif(CMAKE_CXX_COMPILER_IS_MSVC)
|
elseif(CMAKE_CXX_COMPILER_IS_MSVC)
|
||||||
@@ -43,8 +49,11 @@ if(CMAKE_BUILD_TYPE STREQUAL Profile)
|
|||||||
elseif(CMAKE_BUILD_TYPE STREQUAL Debug)
|
elseif(CMAKE_BUILD_TYPE STREQUAL Debug)
|
||||||
# В режиме отладки подробный вывод сообщений компилятора
|
# В режиме отладки подробный вывод сообщений компилятора
|
||||||
if(CMAKE_CXX_COMPILER_IS_Clang OR CMAKE_CXX_COMPILER_IS_GCC)
|
if(CMAKE_CXX_COMPILER_IS_Clang OR CMAKE_CXX_COMPILER_IS_GCC)
|
||||||
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -ggdb -fno-omit-frame-pointer" CACHE STRING "" FORCE)
|
string(REPLACE " ${_gcc_debug_flags}" "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -ggdb -fno-omit-frame-pointer" CACHE STRING "" FORCE)
|
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${_gcc_debug_flags}" CACHE STRING "" FORCE)
|
||||||
|
|
||||||
|
string(REPLACE " ${_gcc_debug_flags}" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
|
||||||
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${_gcc_debug_flags}" CACHE STRING "" FORCE)
|
||||||
endif()
|
endif()
|
||||||
set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "Enable generation of verbose build scripts." FORCE)
|
set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "Enable generation of verbose build scripts." FORCE)
|
||||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE BOOL "Enable generation of compile_commands.json." FORCE)
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE BOOL "Enable generation of compile_commands.json." FORCE)
|
||||||
@@ -57,3 +66,6 @@ elseif(CMAKE_BUILD_TYPE STREQUAL None)
|
|||||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE BOOL "Enable generation of compile_commands.json." FORCE)
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE BOOL "Enable generation of compile_commands.json." FORCE)
|
||||||
set(ANALYSIS 1)
|
set(ANALYSIS 1)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
unset(_gcc_debug_flags)
|
||||||
|
unset(_gcc_profile_flags)
|
||||||
|
@@ -1,17 +1,17 @@
|
|||||||
# Общие настройки для пакета: организация, автор, версия
|
# Общие настройки для пакета: организация, автор, версия
|
||||||
set(CPACK_PACKAGE_VENDOR ${CMLIB_ORGANIZATION_NAME_LOWER})
|
set(CPACK_PACKAGE_VENDOR ${CMLIB_ORGANIZATION_NAME_LOWER} CACHE STRING "")
|
||||||
set(CPACK_PACKAGE_NAME ${CMLIB_PROJECT_NAME_LOWER})
|
set(CPACK_PACKAGE_NAME ${CMLIB_PROJECT_NAME_LOWER} CACHE STRING "")
|
||||||
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
|
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION} CACHE STRING "")
|
||||||
|
|
||||||
# Параметры для архива исходных текстов
|
# Параметры для архива исходных текстов
|
||||||
if(NOT CPACK_SOURCE_GENERATOR)
|
if(NOT CPACK_SOURCE_GENERATOR)
|
||||||
set(CPACK_SOURCE_GENERATOR "TXZ")
|
set(CPACK_SOURCE_GENERATOR "TGZ")
|
||||||
endif()
|
endif()
|
||||||
set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMLIB_PROJECT_NAME_LOWER}-${CPACK_PACKAGE_VERSION}")
|
set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMLIB_PROJECT_NAME_LOWER}-${CPACK_PACKAGE_VERSION}")
|
||||||
|
|
||||||
# Типы генераторов для бинарных архивов
|
# Типы генераторов для бинарных архивов
|
||||||
if(NOT CPACK_GENERATOR)
|
if(NOT CPACK_GENERATOR)
|
||||||
set(CPACK_GENERATOR "TXZ" "DEB")
|
set(CPACK_GENERATOR "TGZ" "DEB")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Параметры для архива собранного проекта
|
# Параметры для архива собранного проекта
|
||||||
@@ -28,10 +28,11 @@ set(CPACK_SOURCE_IGNORE_FILES
|
|||||||
"${CMAKE_BINARY_DIR}"
|
"${CMAKE_BINARY_DIR}"
|
||||||
"^${CMAKE_SOURCE_DIR}/.?build.?/"
|
"^${CMAKE_SOURCE_DIR}/.?build.?/"
|
||||||
"^${CMAKE_SOURCE_DIR}/.?output.?/"
|
"^${CMAKE_SOURCE_DIR}/.?output.?/"
|
||||||
"^${CMAKE_SOURCE_DIR}/files/lib"
|
"^${CMAKE_SOURCE_DIR}/files/var"
|
||||||
"^${CMAKE_SOURCE_DIR}/files/log"
|
"^${CMAKE_SOURCE_DIR}/files/log"
|
||||||
"CMakeLists.txt.user.*"
|
"CMakeLists.txt.user.*"
|
||||||
".*.autosave"
|
".*.autosave"
|
||||||
|
".*.status"
|
||||||
"~$"
|
"~$"
|
||||||
"\\\\.swp$")
|
"\\\\.swp$")
|
||||||
|
|
||||||
@@ -40,6 +41,7 @@ if(CMLIB_COMPACT_SOURCE_PACKAGE)
|
|||||||
# Список масок для исключения из архива исходных текстов для более компактного архива
|
# Список масок для исключения из архива исходных текстов для более компактного архива
|
||||||
set(CPACK_SOURCE_IGNORE_FILES
|
set(CPACK_SOURCE_IGNORE_FILES
|
||||||
"${CPACK_SOURCE_IGNORE_FILES}"
|
"${CPACK_SOURCE_IGNORE_FILES}"
|
||||||
|
"\\\\.git"
|
||||||
"/\\\\.git/"
|
"/\\\\.git/"
|
||||||
"/\\\\.gitlab-ci/"
|
"/\\\\.gitlab-ci/"
|
||||||
"\\\\.clang-tidy$"
|
"\\\\.clang-tidy$"
|
||||||
@@ -52,6 +54,14 @@ endif()
|
|||||||
|
|
||||||
set(CPACK_PROJECT_CONFIG_FILE ${CMAKE_CURRENT_LIST_DIR}/CMLibCPackProject.cmake)
|
set(CPACK_PROJECT_CONFIG_FILE ${CMAKE_CURRENT_LIST_DIR}/CMLibCPackProject.cmake)
|
||||||
|
|
||||||
|
option(CMLIB_CPACK_DEFAULT_SCHEME "Use packaging default scheme" ON)
|
||||||
|
|
||||||
|
# Правила для сборки обычных архивов
|
||||||
|
if(CMLIB_CPACK_DEFAULT_SCHEME)
|
||||||
|
set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
|
||||||
|
set(CPACK_COMPONENTS_GROUPING IGNORE)
|
||||||
|
endif()
|
||||||
|
|
||||||
# Правила для сборки пакетов для Debian
|
# Правила для сборки пакетов для Debian
|
||||||
include(CMLibCPackDeb)
|
include(CMLibCPackDeb)
|
||||||
|
|
||||||
|
@@ -16,43 +16,64 @@ if(NOT CPACK_DEB_COMPONENT_INSTALL)
|
|||||||
set(CPACK_DEB_COMPONENT_INSTALL ON)
|
set(CPACK_DEB_COMPONENT_INSTALL ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Если имя компонента по умолчанию не определено, то устанавливается MAIN
|
if(CMLIB_CPACK_DEFAULT_SCHEME)
|
||||||
if(NOT CMAKE_INSTALL_DEFAULT_COMPONENT_NAME)
|
# Если имя компонента по умолчанию не определено, то устанавливается MAIN
|
||||||
set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME MAIN)
|
if(NOT CMAKE_INSTALL_DEFAULT_COMPONENT_NAME)
|
||||||
endif()
|
set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME main)
|
||||||
|
|
||||||
# В списке компонентов обязательно должны быть MAIN и DEV
|
|
||||||
list(APPEND CPACK_COMPONENTS_ALL MAIN DEV)
|
|
||||||
list(REMOVE_DUPLICATES CPACK_COMPONENTS_ALL)
|
|
||||||
|
|
||||||
# Правило формирования имени пакета и файла для компонента MAIN
|
|
||||||
set(CPACK_DEBIAN_MAIN_PACKAGE_NAME "${CMLIB_PROJECT_NAME_LOWER}")
|
|
||||||
set(CPACK_DEBIAN_MAIN_FILE_NAME
|
|
||||||
"${CMLIB_PROJECT_NAME_LOWER}_${CPACK_PACKAGE_VERSION}_${CPACK_TARGET_ARCH}.deb")
|
|
||||||
|
|
||||||
# Правило формирования имени пакета и файла для остальных компонентов
|
|
||||||
foreach(C ${CPACK_COMPONENTS_ALL})
|
|
||||||
if(NOT "${C}" STREQUAL "MAIN")
|
|
||||||
string(TOLOWER "${C}" cl)
|
|
||||||
set(CPACK_DEBIAN_${C}_PACKAGE_NAME "${CMLIB_PROJECT_NAME_LOWER}-${cl}")
|
|
||||||
set(CPACK_DEBIAN_${C}_FILE_NAME
|
|
||||||
"${CMLIB_PROJECT_NAME_LOWER}-${cl}_${CPACK_PACKAGE_VERSION}_${CPACK_TARGET_ARCH}.deb")
|
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
|
||||||
|
|
||||||
# Если в каталоге ${CMAKE_SOURCE_DIR}/cmake/deb находятся сценарии сопровождающего
|
# В списке компонентов обязательно должны быть main, base-dev, libs-dev и doc
|
||||||
# postinst, preinst, postrm и prerm, то они будут добавлены к пакету.
|
list(
|
||||||
if(EXISTS "${CMAKE_SOURCE_DIR}/cmake/deb/preinst")
|
APPEND
|
||||||
list(APPEND CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/cmake/deb/preinst")
|
CPACK_COMPONENTS_ALL
|
||||||
endif()
|
main
|
||||||
if(EXISTS "${CMAKE_SOURCE_DIR}/cmake/deb/postinst")
|
base-dev
|
||||||
list(APPEND CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/cmake/deb/postinst")
|
libs-dev
|
||||||
endif()
|
doc)
|
||||||
if(EXISTS "${CMAKE_SOURCE_DIR}/cmake/deb/prerm")
|
list(REMOVE_DUPLICATES CPACK_COMPONENTS_ALL)
|
||||||
list(APPEND CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/cmake/deb/prerm")
|
|
||||||
endif()
|
# Правило формирования имени пакета и файла для компонента main
|
||||||
if(EXISTS "${CMAKE_SOURCE_DIR}/cmake/deb/postrm")
|
set(CPACK_DEBIAN_MAIN_PACKAGE_NAME "${CMLIB_PROJECT_NAME_LOWER}")
|
||||||
list(APPEND CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/cmake/deb/postrm")
|
set(CPACK_DEBIAN_MAIN_FILE_NAME
|
||||||
|
${CMLIB_PROJECT_NAME_LOWER}_${CPACK_PACKAGE_VERSION}_${CPACK_TARGET_ARCH}.deb)
|
||||||
|
|
||||||
|
# Правило формирования имени пакета и файла для компонента base-dev
|
||||||
|
set(CPACK_DEBIAN_BASE-DEV_PACKAGE_NAME "lib${CMLIB_PROJECT_NAME_LOWER}-base-dev")
|
||||||
|
set(CPACK_DEBIAN_BASE-DEV_FILE_NAME
|
||||||
|
lib${CMLIB_PROJECT_NAME_LOWER}-base-dev_${CPACK_PACKAGE_VERSION}_${CPACK_TARGET_ARCH}.deb)
|
||||||
|
|
||||||
|
# Правило формирования имени пакета и файла для компонента libs-dev
|
||||||
|
set(CPACK_DEBIAN_LIBS-DEV_PACKAGE_NAME lib${CMLIB_PROJECT_NAME_LOWER}-dev)
|
||||||
|
set(CPACK_DEBIAN_LIBS-DEV_FILE_NAME
|
||||||
|
lib${CMLIB_PROJECT_NAME_LOWER}-dev_${CPACK_PACKAGE_VERSION}_${CPACK_TARGET_ARCH}.deb)
|
||||||
|
|
||||||
|
set(CPACK_DEBIAN_LIBS-DEV_PACKAGE_DEPENDS "lib${CMLIB_PROJECT_NAME_LOWER}-base-dev")
|
||||||
|
|
||||||
|
foreach(_C ${CPACK_COMPONENTS_ALL})
|
||||||
|
string(TOLOWER ${_C} _cl)
|
||||||
|
string(TOUPPER ${_C} _cu)
|
||||||
|
# Правила формирования имени пакета и файла для остальных компонентов
|
||||||
|
if(NOT ${_cl} STREQUAL main AND NOT ${_cl} STREQUAL base-dev AND NOT ${_cl} STREQUAL libs-dev)
|
||||||
|
set(CPACK_DEBIAN_${_cu}_PACKAGE_NAME "${CMLIB_PROJECT_NAME_LOWER}-${_cl}")
|
||||||
|
set(CPACK_DEBIAN_${_cu}_FILE_NAME
|
||||||
|
"${CMLIB_PROJECT_NAME_LOWER}-${_cl}_${CPACK_PACKAGE_VERSION}_${CPACK_TARGET_ARCH}.deb")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Если в каталоге ${CMAKE_SOURCE_DIR}/cmake/deb/${_cl} находятся сценарии сопровождающего
|
||||||
|
# postinst, preinst, postrm и prerm, то они будут добавлены к пакету.
|
||||||
|
if(EXISTS "${CMAKE_SOURCE_DIR}/cmake/deb/${_cl}/preinst")
|
||||||
|
list(APPEND CPACK_DEBIAN_${_cu}_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/cmake/deb/${_cl}/preinst")
|
||||||
|
endif()
|
||||||
|
if(EXISTS "${CMAKE_SOURCE_DIR}/cmake/deb/${_cl}/postinst")
|
||||||
|
list(APPEND CPACK_DEBIAN_${_cu}_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/cmake/deb/${_cl}/postinst")
|
||||||
|
endif()
|
||||||
|
if(EXISTS "${CMAKE_SOURCE_DIR}/cmake/deb/${_cl}/prerm")
|
||||||
|
list(APPEND CPACK_DEBIAN_${_cu}_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/cmake/deb/${_cl}/prerm")
|
||||||
|
endif()
|
||||||
|
if(EXISTS "${CMAKE_SOURCE_DIR}/cmake/deb/${_cl}/postrm")
|
||||||
|
list(APPEND CPACK_DEBIAN_${_cu}_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/cmake/deb/${_cl}/postrm")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(UNIX AND NOT TARGET deb)
|
if(UNIX AND NOT TARGET deb)
|
||||||
|
@@ -1,4 +1,12 @@
|
|||||||
find_program(CLANG_CHECK_EXE NAMES clang-check-10 clang-check-9 clang-check)
|
find_program(
|
||||||
|
CLANG_CHECK_EXE
|
||||||
|
NAMES
|
||||||
|
clang-check-13
|
||||||
|
clang-check-12
|
||||||
|
clang-check-11
|
||||||
|
clang-check-10
|
||||||
|
clang-check-9
|
||||||
|
clang-check)
|
||||||
if(CLANG_CHECK_EXE)
|
if(CLANG_CHECK_EXE)
|
||||||
option(CMLIB_CLANG_ANALYZE_FIX "Perform fixes for Clang-Check" OFF)
|
option(CMLIB_CLANG_ANALYZE_FIX "Perform fixes for Clang-Check" OFF)
|
||||||
endif()
|
endif()
|
||||||
|
@@ -1,4 +1,12 @@
|
|||||||
find_program(CLANG_TIDY_EXE NAMES clang-tidy-10 clang-tidy-9 clang-tidy)
|
find_program(
|
||||||
|
CLANG_TIDY_EXE
|
||||||
|
NAMES
|
||||||
|
clang-tidy-13
|
||||||
|
clang-tidy-12
|
||||||
|
clang-tidy-11
|
||||||
|
clang-tidy-10
|
||||||
|
clang-tidy-9
|
||||||
|
clang-tidy)
|
||||||
if(CLANG_TIDY_EXE)
|
if(CLANG_TIDY_EXE)
|
||||||
option(CMLIB_CLANG_TIDY_FIX "Perform fixes for Clang-Tidy" OFF)
|
option(CMLIB_CLANG_TIDY_FIX "Perform fixes for Clang-Tidy" OFF)
|
||||||
endif()
|
endif()
|
||||||
|
@@ -1,5 +1,12 @@
|
|||||||
find_program(CLANG_APPLY_REPLACEMENTS_EXE NAMES clang-apply-replacements-10 clang-apply-replacements-9
|
find_program(
|
||||||
clang-apply-replacements)
|
CLANG_APPLY_REPLACEMENTS_EXE
|
||||||
|
NAMES
|
||||||
|
clang-apply-replacements-13
|
||||||
|
clang-apply-replacements-12
|
||||||
|
clang-apply-replacements-11
|
||||||
|
clang-apply-replacements-10
|
||||||
|
clang-apply-replacements-9
|
||||||
|
clang-apply-replacements)
|
||||||
|
|
||||||
find_program(CLAZY_EXE NAMES clazy-standalone)
|
find_program(CLAZY_EXE NAMES clazy-standalone)
|
||||||
|
|
||||||
|
@@ -15,6 +15,20 @@ function(add_pvs_check target)
|
|||||||
ARGS --analysis-mode 29 --exclude-path ${CMAKE_CURRENT_BINARY_DIR}/${target}_autogen
|
ARGS --analysis-mode 29 --exclude-path ${CMAKE_CURRENT_BINARY_DIR}/${target}_autogen
|
||||||
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})
|
||||||
|
configure_file("${CMLIB_MODULE_DIR}/hpp/pvs_studio.hpp.in" "${CMAKE_BINARY_DIR}/include/pvs_studio.hpp")
|
||||||
|
get_target_property(target_type ${target} TYPE)
|
||||||
|
if(${target_type} STREQUAL "INTERFACE_LIBRARY")
|
||||||
|
set(target_type INTERFACE)
|
||||||
|
else()
|
||||||
|
set(target_type PRIVATE)
|
||||||
|
endif()
|
||||||
|
if(MSVC)
|
||||||
|
target_compile_options(${target} BEFORE ${target_type} /FI
|
||||||
|
"${CMAKE_BINARY_DIR}/include/pvs_studio.hpp")
|
||||||
|
else() # GCC/Clang
|
||||||
|
target_compile_options(${target} BEFORE ${target_type} -include
|
||||||
|
"${CMAKE_BINARY_DIR}/include/pvs_studio.hpp")
|
||||||
|
endif()
|
||||||
else()
|
else()
|
||||||
message(STATUS "CMLIB warning:")
|
message(STATUS "CMLIB warning:")
|
||||||
message(STATUS " PVS-Studio analyzer is not found")
|
message(STATUS " PVS-Studio analyzer is not found")
|
||||||
|
@@ -7,9 +7,7 @@ function(add_code_coverage target)
|
|||||||
if(CMLIB_ENABLE_CODE_COVERAGE)
|
if(CMLIB_ENABLE_CODE_COVERAGE)
|
||||||
if(CMAKE_CXX_COMPILER_IS_GCC)
|
if(CMAKE_CXX_COMPILER_IS_GCC)
|
||||||
target_compile_options(${target} PUBLIC "--coverage")
|
target_compile_options(${target} PUBLIC "--coverage")
|
||||||
get_target_property(LF ${target} LINK_FLAGS)
|
set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS " --coverage")
|
||||||
string(APPEND LF " --coverage")
|
|
||||||
set_target_properties(${target} PROPERTIES LINK_FLAGS ${LF})
|
|
||||||
|
|
||||||
if(LCOV_EXE)
|
if(LCOV_EXE)
|
||||||
add_custom_target(
|
add_custom_target(
|
||||||
|
@@ -5,6 +5,10 @@ if(CMAKE_INSTALL_PREFIX STREQUAL PROJECT_BINARY_DIR)
|
|||||||
message(FATAL_ERROR "Cannot install into build directory")
|
message(FATAL_ERROR "Cannot install into build directory")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_INSTALL_PREFIX STREQUAL PROJECT_SOURCE_DIR)
|
||||||
|
message(FATAL_ERROR "Cannot install into source directory")
|
||||||
|
endif()
|
||||||
|
|
||||||
include(CMLibDisableInSourceBuild)
|
include(CMLibDisableInSourceBuild)
|
||||||
include(CMakeParseArguments)
|
include(CMakeParseArguments)
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
@@ -12,6 +16,7 @@ if(DEFINED ENV{DEB_HOST_MULTIARCH})
|
|||||||
string(APPEND CMAKE_INSTALL_LIBDIR "/$ENV{DEB_HOST_MULTIARCH}")
|
string(APPEND CMAKE_INSTALL_LIBDIR "/$ENV{DEB_HOST_MULTIARCH}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${CMAKE_CXX_SOURCE_FILE_EXTENSIONS};tpp;tcc)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||||
|
|
||||||
@@ -25,12 +30,14 @@ include(CMLibLSBInfo)
|
|||||||
include(CMLibCompiler)
|
include(CMLibCompiler)
|
||||||
include(CMLibCompilerFlags)
|
include(CMLibCompilerFlags)
|
||||||
include(CMLibDistCC)
|
include(CMLibDistCC)
|
||||||
include(CMLibCompilerFeaturesHPPGenerate)
|
include(CMLibGenerateCompilerFeaturesHPP)
|
||||||
include(CMLibFlagRemove)
|
include(CMLibFlagRemove)
|
||||||
include(CMLibCotire)
|
include(CMLibCotire)
|
||||||
include(CMLibBuildTypes)
|
include(CMLibBuildTypes)
|
||||||
|
include(CMLibDebugOutput)
|
||||||
include(CMLibCommonTargetProperties)
|
include(CMLibCommonTargetProperties)
|
||||||
include(CMLibCommonLibraryTarget)
|
include(CMLibCommonLibraryTarget)
|
||||||
|
include(CMLibPkgConfig)
|
||||||
include(CMLibCodeAnalysisPvsStudio)
|
include(CMLibCodeAnalysisPvsStudio)
|
||||||
include(CMLibCodeAnalysisClangAnalyze)
|
include(CMLibCodeAnalysisClangAnalyze)
|
||||||
include(CMLibCodeAnalysisClangTidy)
|
include(CMLibCodeAnalysisClangTidy)
|
||||||
@@ -44,7 +51,8 @@ include(CMLibDocBreathe)
|
|||||||
include(CMLibQtTranslation)
|
include(CMLibQtTranslation)
|
||||||
include(CMLibToday)
|
include(CMLibToday)
|
||||||
include(CMLibAuxilarySymlinks)
|
include(CMLibAuxilarySymlinks)
|
||||||
include(CMLibConfigHPPGenerate)
|
include(CMLibGeneratePrivateConfigHPP)
|
||||||
include(CMLibNinjaGeneratorHelper)
|
include(CMLibNinjaGeneratorHelper)
|
||||||
|
include(CMLibExternalProject)
|
||||||
include(CMLibCPack)
|
include(CMLibCPack)
|
||||||
include(CMLibUninstall)
|
include(CMLibUninstall)
|
||||||
|
@@ -35,7 +35,4 @@ function(add_common_library target)
|
|||||||
install(TARGETS ${target}_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
install(TARGETS ${target}_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
endif()
|
endif()
|
||||||
# cmake-format: on
|
# cmake-format: on
|
||||||
|
|
||||||
configure_file(${CMLIB_MODULE_DIR}/pc/lib.pc.in ${CMAKE_BINARY_DIR}/${target}.pc)
|
|
||||||
install(FILES ${CMAKE_BINARY_DIR}/${target}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
|
||||||
endfunction()
|
endfunction()
|
||||||
|
@@ -1,9 +1,10 @@
|
|||||||
set(COMMON_CXX_FEATURES cxx_alias_templates cxx_nullptr cxx_override)
|
set(COMMON_CXX_FEATURES cxx_alias_templates cxx_nullptr cxx_override)
|
||||||
|
|
||||||
function(common_target_properties target)
|
function(common_target_properties target)
|
||||||
get_target_property(__type ${target} TYPE)
|
get_target_property(_targetType ${target} TYPE)
|
||||||
|
|
||||||
set(__visibility PUBLIC)
|
set(__visibility PUBLIC)
|
||||||
if(__type STREQUAL INTERFACE_LIBRARY)
|
if(_targetType STREQUAL INTERFACE_LIBRARY)
|
||||||
set(__interface 1)
|
set(__interface 1)
|
||||||
set(__visibility INTERFACE)
|
set(__visibility INTERFACE)
|
||||||
endif()
|
endif()
|
||||||
@@ -17,7 +18,6 @@ function(common_target_properties target)
|
|||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
target_compile_features(${target} ${__visibility} ${COMMON_CXX_FEATURES})
|
target_compile_features(${target} ${__visibility} ${COMMON_CXX_FEATURES})
|
||||||
get_target_property(_targetType ${target} TYPE)
|
|
||||||
if(_targetType STREQUAL "EXECUTABLE")
|
if(_targetType STREQUAL "EXECUTABLE")
|
||||||
set_target_properties(${target} PROPERTIES RUNTIME_OUTPUT_DIRECTORY
|
set_target_properties(${target} PROPERTIES RUNTIME_OUTPUT_DIRECTORY
|
||||||
${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR})
|
${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR})
|
||||||
@@ -25,57 +25,56 @@ function(common_target_properties target)
|
|||||||
target_compile_options(${target} PUBLIC "${CMAKE_CXX_COMPILE_OPTIONS_PIE}")
|
target_compile_options(${target} PUBLIC "${CMAKE_CXX_COMPILE_OPTIONS_PIE}")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
target_include_directories(
|
target_include_directories(
|
||||||
${target}
|
${target}
|
||||||
PUBLIC $<INSTALL_INTERFACE:include> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
PUBLIC $<INSTALL_INTERFACE:include> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}> $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}> $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
|
||||||
|
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
target_compile_definitions(${target} ${__visibility} Darwin)
|
target_compile_definitions(${target} ${__visibility} Darwin)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT __interface)
|
if(NOT __interface)
|
||||||
if(TARGET Qt5::Core)
|
if(TARGET Qt5::Core)
|
||||||
if(_targetType STREQUAL "EXECUTABLE")
|
if(_targetType STREQUAL "EXECUTABLE")
|
||||||
target_compile_options(${target} PUBLIC "${Qt5Core_EXECUTABLE_COMPILE_FLAGS}")
|
target_compile_options(${target} PUBLIC "${Qt5Core_EXECUTABLE_COMPILE_FLAGS}")
|
||||||
endif()
|
endif()
|
||||||
|
if(NOT CMLIB_DEBUG_OUTPUT)
|
||||||
|
add_definitions(-DQT_NO_DEBUG_OUTPUT)
|
||||||
|
endif()
|
||||||
|
if(NOT CMLIB_INFO_OUTPUT)
|
||||||
|
add_definitions(-DQT_NO_INFO_OUTPUT)
|
||||||
|
endif()
|
||||||
|
if(NOT CMLIB_WARNING_OUTPUT)
|
||||||
|
add_definitions(-DQT_NO_WARNING_OUTPUT)
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
if(CMAKE_CXX_COMPILER_IS_GCC AND NOT APPLE)
|
if(CMAKE_CXX_COMPILER_IS_GCC AND NOT APPLE)
|
||||||
set_target_properties(${target} PROPERTIES LINK_FLAGS "-Wl,--no-as-needed")
|
set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--no-as-needed")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# LTO only for executables (not libraries) in Release build type
|
# LTO only for executables (not libraries) in Release build type
|
||||||
get_target_property(target_type ${target} TYPE)
|
if(_targetType STREQUAL "EXECUTABLE" AND CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||||
if(target_type STREQUAL "EXECUTABLE" AND CMAKE_BUILD_TYPE STREQUAL "Release")
|
|
||||||
check_cxx_compiler_flag(-flto CXX_HAS_LTO_FLAG)
|
check_cxx_compiler_flag(-flto CXX_HAS_LTO_FLAG)
|
||||||
check_cxx_compiler_flag(-fno-fat-lto-objects CXX_HAS_NO_FAT_LTO_FLAG)
|
check_cxx_compiler_flag(-fno-fat-lto-objects CXX_HAS_NO_FAT_LTO_FLAG)
|
||||||
if(CMAKE_CXX_COMPILER_IS_GCC AND CXX_HAS_LTO_FLAG)
|
if(CXX_HAS_LTO_FLAG)
|
||||||
find_program(CMAKE_GCC_AR NAMES "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ar${_CMAKE_TOOLCHAIN_SUFFIX}"
|
target_compile_options(${target} PUBLIC "-flto")
|
||||||
"${_CMAKE_TOOLCHAIN_PREFIX}gcc-ar" HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
|
set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS " -flto")
|
||||||
find_program(CMAKE_GCC_NM NAMES "${_CMAKE_TOOLCHAIN_PREFIX}gcc-nm${_CMAKE_TOOLCHAIN_SUFFIX}"
|
if(CXX_HAS_NO_FAT_LTO_FLAG)
|
||||||
"${_CMAKE_TOOLCHAIN_PREFIX}gcc-nm" HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
|
target_compile_options(${target} PUBLIC "-fno-fat-lto-objects")
|
||||||
find_program(
|
set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS " -fno-fat-lto-objects")
|
||||||
CMAKE_GCC_RANLIB NAMES "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ranlib${_CMAKE_TOOLCHAIN_SUFFIX}"
|
|
||||||
"${_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()
|
endif()
|
||||||
else()
|
|
||||||
check_enable_compiler_flag(-flto)
|
|
||||||
check_enable_compiler_flag(-fno-fat-lto-objects)
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set_target_properties(${target} PROPERTIES COTIRE_ENABLE_PRECOMPILED_HEADER
|
# cmake-format: off
|
||||||
${CMLIB_COTIRE_ENABLE_PRECOMPILED_HEADER})
|
set_property(TARGET ${target}
|
||||||
set_target_properties(${target} PROPERTIES COTIRE_ADD_UNITY_BUILD ${CMLIB_COTIRE_ADD_UNITY_BUILD})
|
PROPERTY COTIRE_ENABLE_PRECOMPILED_HEADER ${CMLIB_COTIRE_ENABLE_PRECOMPILED_HEADER})
|
||||||
|
set_property(TARGET ${target}
|
||||||
|
PROPERTY COTIRE_ADD_UNITY_BUILD ${CMLIB_COTIRE_ADD_UNITY_BUILD})
|
||||||
|
# cmake-format: on
|
||||||
|
|
||||||
if(CMAKE_BUILD_TYPE STREQUAL Profile)
|
if(CMAKE_BUILD_TYPE STREQUAL Profile)
|
||||||
target_compile_definitions(${target} ${__visibility} PROFILE)
|
target_compile_definitions(${target} ${__visibility} PROFILE)
|
||||||
@@ -86,9 +85,6 @@ function(common_target_properties target)
|
|||||||
elseif(CMAKE_BUILD_TYPE STREQUAL None)
|
elseif(CMAKE_BUILD_TYPE STREQUAL None)
|
||||||
target_compile_definitions(${target} ${__visibility} ANALYSIS)
|
target_compile_definitions(${target} ${__visibility} ANALYSIS)
|
||||||
endif()
|
endif()
|
||||||
target_compile_definitions(
|
target_compile_definitions(${target} ${__visibility} "TARGET_LSB_ID_${LSB_DISTRIBUTOR_ID}")
|
||||||
${target}
|
target_compile_definitions(${target} ${__visibility} "TARGET_LSB_CODENAME_${LSB_CODENAME}")
|
||||||
${__visibility}
|
|
||||||
"TARGET_LSB_ID_${LSB_DISTRIBUTOR_ID}"
|
|
||||||
"TARGET_LSB_CODENAME_${LSB_CODENAME}")
|
|
||||||
endfunction()
|
endfunction()
|
||||||
|
@@ -19,3 +19,28 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|||||||
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
||||||
set(CMAKE_CXX_COMPILER_IS_MSVC ON)
|
set(CMAKE_CXX_COMPILER_IS_MSVC ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Предпочтительные пути к утилитам для компоновки
|
||||||
|
if(CMAKE_CXX_COMPILER_IS_GCC)
|
||||||
|
find_program(
|
||||||
|
CMAKE_GCC_AR NAMES "/usr/e2k-linux/bin/ar" "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ar${_CMAKE_TOOLCHAIN_SUFFIX}"
|
||||||
|
"${_CMAKE_TOOLCHAIN_PREFIX}gcc-ar" "ar" HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
|
||||||
|
if(CMAKE_GCC_AR)
|
||||||
|
set(CMAKE_AR ${CMAKE_GCC_AR} CACHE STRING "" FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_program(
|
||||||
|
CMAKE_GCC_NM NAMES "/usr/e2k-linux/bin/nm" "${_CMAKE_TOOLCHAIN_PREFIX}gcc-nm${_CMAKE_TOOLCHAIN_SUFFIX}"
|
||||||
|
"${_CMAKE_TOOLCHAIN_PREFIX}gcc-nm" "nm" HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
|
||||||
|
if(CMAKE_GCC_NM)
|
||||||
|
set(CMAKE_NM ${CMAKE_GCC_NM} CACHE STRING "" FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_program(
|
||||||
|
CMAKE_GCC_RANLIB
|
||||||
|
NAMES "/usr/e2k-linux/bin/ranlib" "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ranlib${_CMAKE_TOOLCHAIN_SUFFIX}"
|
||||||
|
"${_CMAKE_TOOLCHAIN_PREFIX}gcc-ranlib" "ranlib" HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
|
||||||
|
if(CMAKE_GCC_RANLIB)
|
||||||
|
set(CMAKE_RANLIB ${CMAKE_GCC_RANLIB} CACHE STRING "" FORCE)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
@@ -1,23 +0,0 @@
|
|||||||
include(WriteCompilerDetectionHeader)
|
|
||||||
|
|
||||||
set(OUTPUT_FILE ${CMAKE_BINARY_DIR}/include/compiler_features.hpp)
|
|
||||||
if(CMLIB_GENERATED_HEADERS_PATH)
|
|
||||||
set(OUTPUT_FILE ${CMLIB_GENERATED_HEADERS_PATH}/compiler_features.hpp)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
write_compiler_detection_header(
|
|
||||||
FILE ${OUTPUT_FILE}
|
|
||||||
PREFIX ${CMLIB_PROJECT_NAME_CANONICAL}
|
|
||||||
COMPILERS GNU Clang MSVC Intel
|
|
||||||
FEATURES
|
|
||||||
cxx_nullptr
|
|
||||||
cxx_override
|
|
||||||
cxx_alignas
|
|
||||||
cxx_alignof
|
|
||||||
cxx_attributes
|
|
||||||
cxx_auto_type
|
|
||||||
cxx_constexpr
|
|
||||||
cxx_digit_separators
|
|
||||||
cxx_range_for)
|
|
||||||
|
|
||||||
unset(OUTPUT_FILE)
|
|
@@ -19,12 +19,61 @@ macro(CHECK_ENABLE_CXX_FLAG flag)
|
|||||||
unset(CHECK_CXX_FLAG CACHE)
|
unset(CHECK_CXX_FLAG CACHE)
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
if(LSB_DISTRIBUTOR_ID STREQUAL "AstraLinuxSE" AND LSB_CODENAME STREQUAL "smolensk" AND LSB_RELEASE STREQUAL
|
function(cmlib_set_cxx_standard version)
|
||||||
"1.5")
|
# Выбор стандарта по умолчанию (можно переопределить в проекте)
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED YES PARENT_SCOPE)
|
||||||
|
|
||||||
|
if(version EQUAL 11)
|
||||||
|
set(CMAKE_CXX_STANDARD 11 PARENT_SCOPE)
|
||||||
|
set(CMAKE_CXX_EXTENSIONS YES PARENT_SCOPE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(version EQUAL 14)
|
||||||
|
set(CMAKE_CXX_STANDARD 14 PARENT_SCOPE)
|
||||||
|
set(CMAKE_CXX_EXTENSIONS YES PARENT_SCOPE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(version EQUAL 17)
|
||||||
|
if(${CMAKE_VERSION} VERSION_LESS "3.10.0")
|
||||||
|
check_cxx_compiler_flag(-std=gnu++17 HAVE_FLAG_STD_GNUXX17)
|
||||||
|
if(HAVE_FLAG_STD_GNUXX17)
|
||||||
|
add_compile_options("-std=gnu++17")
|
||||||
|
else()
|
||||||
|
check_cxx_compiler_flag(-std=gnu++1z HAVE_FLAG_STD_GNUXX1Z)
|
||||||
|
if(HAVE_FLAG_STD_GNUXX1Z)
|
||||||
|
add_compile_options("-std=gnu++1z")
|
||||||
|
else()
|
||||||
|
check_cxx_compiler_flag(-std=c++17 HAVE_FLAG_STD_CXX17)
|
||||||
|
if(HAVE_FLAG_STD_CXX17)
|
||||||
|
add_compile_options("-std=c++17")
|
||||||
|
else()
|
||||||
|
check_cxx_compiler_flag(-std=c++1z HAVE_FLAG_STD_CXX1Z)
|
||||||
|
if(HAVE_FLAG_STD_CXX1Z)
|
||||||
|
add_compile_options("-std=c++1z")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
set(CMAKE_CXX_STANDARD 17 PARENT_SCOPE)
|
||||||
|
set(CMAKE_CXX_EXTENSIONS YES PARENT_SCOPE)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# cmake-format: off
|
||||||
|
if(LSB_DISTRIBUTOR_ID STREQUAL "AstraLinuxSE" AND
|
||||||
|
LSB_CODENAME STREQUAL "smolensk" AND
|
||||||
|
LSB_RELEASE STREQUAL "1.5")
|
||||||
|
# cmake-format: on
|
||||||
|
cmlib_set_cxx_standard(11)
|
||||||
|
|
||||||
set(_CMAKE_TOOLCHAIN_PREFIX "x86_64-linux-gnu-")
|
set(_CMAKE_TOOLCHAIN_PREFIX "x86_64-linux-gnu-")
|
||||||
set(_CMAKE_TOOLCHAIN_SUFFIX "-4.7")
|
set(_CMAKE_TOOLCHAIN_SUFFIX "-4.7")
|
||||||
set(_CMAKE_TOOLCHAIN_LOCATION} "/usr/bin")
|
set(_CMAKE_TOOLCHAIN_LOCATION} "/usr/bin")
|
||||||
else()
|
else()
|
||||||
|
cmlib_set_cxx_standard(17)
|
||||||
|
|
||||||
# -Wshadow gives a lot of false positives with GCC 4.7.2 in Astra Linux 1.5
|
# -Wshadow gives a lot of false positives with GCC 4.7.2 in Astra Linux 1.5
|
||||||
if(CMAKE_CXX_COMPILER_IS_GCC)
|
if(CMAKE_CXX_COMPILER_IS_GCC)
|
||||||
check_enable_cxx_flag(-Wshadow)
|
check_enable_cxx_flag(-Wshadow)
|
||||||
@@ -33,10 +82,6 @@ endif()
|
|||||||
|
|
||||||
# Common configuration for GCC, clang and Intel.
|
# 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)
|
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(CMLIB_WARNING_FLAGS AND CMAKE_BUILD_TYPE STREQUAL "Debug")
|
if(CMLIB_WARNING_FLAGS AND CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
check_enable_cxx_flag(-Wall)
|
check_enable_cxx_flag(-Wall)
|
||||||
check_enable_cxx_flag(-Wextra)
|
check_enable_cxx_flag(-Wextra)
|
||||||
|
13
CMLibDebugOutput.cmake
Normal file
13
CMLibDebugOutput.cmake
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# По умолчанию отключена отладочная печать
|
||||||
|
# (если не включена явно программистом)
|
||||||
|
option(CMLIB_DEBUG_OUTPUT "Enable debug output" OFF)
|
||||||
|
option(CMLIB_INFO_OUTPUT "Enable info output" OFF)
|
||||||
|
option(CMLIB_WARNING_OUTPUT "Enable warning output" OFF)
|
||||||
|
|
||||||
|
# Если сборка производится в режиме для отладки,
|
||||||
|
# то включаются флаги для разрешения отладочной печати
|
||||||
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
|
set(CMLIB_DEBUG_OUTPUT ON CACHE BOOL "" FORCE)
|
||||||
|
set(CMLIB_INFO_OUTPUT ON CACHE BOOL "" FORCE)
|
||||||
|
set(CMLIB_WARNING_OUTPUT ON CACHE BOOL "" FORCE)
|
||||||
|
endif()
|
45
CMLibExternalProject.cmake
Normal file
45
CMLibExternalProject.cmake
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
include(ExternalProject)
|
||||||
|
|
||||||
|
if(CMAKE_BUILD_TYPE)
|
||||||
|
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_C_COMPILER)
|
||||||
|
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_C_FLAGS)
|
||||||
|
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -E env "CFLAGS=${CMAKE_C_FLAGS}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_CPP_COMPILER)
|
||||||
|
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -DCMAKE_CPP_COMPILER=${CMAKE_CPP_COMPILER})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_CXX_FLAGS)
|
||||||
|
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -E env "CXXFLAGS=${CMAKE_CXX_FLAGS}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_Fortran_COMPILER)
|
||||||
|
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_Fortran_FLAGS)
|
||||||
|
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -E env "FFLAGS=${CMAKE_Fortran_FLAGS}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_INSTALL_PREFIX)
|
||||||
|
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_PREFIX_PATH)
|
||||||
|
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(Qt5_DIR)
|
||||||
|
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -DQt5_DIR=${Qt5_DIR})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(Qt5Core_DIR)
|
||||||
|
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -DQt5Core_DIR=${Qt5Core_DIR})
|
||||||
|
endif()
|
@@ -4,20 +4,26 @@ function(add_format_sources target)
|
|||||||
if(NOT TARGET format-sources)
|
if(NOT TARGET format-sources)
|
||||||
add_custom_target(format-sources)
|
add_custom_target(format-sources)
|
||||||
endif()
|
endif()
|
||||||
|
if(NOT TARGET check-format-sources)
|
||||||
|
add_custom_target(check-format-sources)
|
||||||
|
endif()
|
||||||
if(NOT TARGET doc-add-comments)
|
if(NOT TARGET doc-add-comments)
|
||||||
add_custom_target(doc-add-comments)
|
add_custom_target(doc-add-comments)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_program(UNCRUSTIFY_EXE NAMES uncrustify)
|
find_program(UNCRUSTIFY_EXE NAMES uncrustify)
|
||||||
if(UNCRUSTIFY_EXE)
|
if(UNCRUSTIFY_EXE)
|
||||||
list(APPEND UNCRUSTIFY_OPTS -lCPP --replace --no-backup)
|
|
||||||
if(EXISTS ${CMAKE_SOURCE_DIR}/cmake/etc/uncrustify/default.cfg)
|
if(EXISTS ${CMAKE_SOURCE_DIR}/cmake/etc/uncrustify/default.cfg)
|
||||||
list(APPEND UNCRUSTIFY_OPTS -c ${CMAKE_SOURCE_DIR}/cmake/etc/uncrustify/default.cfg)
|
list(APPEND UNCRUSTIFY_OPTS -c ${CMAKE_SOURCE_DIR}/cmake/etc/uncrustify/default.cfg)
|
||||||
endif()
|
endif()
|
||||||
# cmake-format: off
|
# cmake-format: off
|
||||||
add_custom_target(format-sources-uncrustify-${target} COMMAND ${UNCRUSTIFY_EXE} ${UNCRUSTIFY_OPTS}
|
add_custom_target(check-format-sources-uncrustify-${target} COMMAND ${UNCRUSTIFY_EXE}
|
||||||
--mtime ${_sources})
|
${UNCRUSTIFY_OPTS} --check ${_sources})
|
||||||
add_custom_target(doc-add-comments-uncrustify-${target} COMMAND ${UNCRUSTIFY_EXE} ${UNCRUSTIFY_OPTS}
|
list(APPEND UNCRUSTIFY_OPTS --replace --no-backup)
|
||||||
|
add_custom_target(format-sources-uncrustify-${target} COMMAND ${UNCRUSTIFY_EXE}
|
||||||
|
${UNCRUSTIFY_OPTS} --mtime ${_sources})
|
||||||
|
add_custom_target(doc-add-comments-uncrustify-${target} COMMAND ${UNCRUSTIFY_EXE}
|
||||||
|
${UNCRUSTIFY_OPTS}
|
||||||
--set cmt_insert_file_header=fileheader.txt
|
--set cmt_insert_file_header=fileheader.txt
|
||||||
--set cmt_insert_file_footer=filefooter.txt
|
--set cmt_insert_file_footer=filefooter.txt
|
||||||
--set cmt_insert_func_header=funcheader.txt
|
--set cmt_insert_func_header=funcheader.txt
|
||||||
@@ -25,6 +31,7 @@ function(add_format_sources target)
|
|||||||
--set cmt_insert_before_ctor_dtor=true ${_sources})
|
--set cmt_insert_before_ctor_dtor=true ${_sources})
|
||||||
# cmake-format: on
|
# cmake-format: on
|
||||||
add_dependencies(format-sources format-sources-uncrustify-${target})
|
add_dependencies(format-sources format-sources-uncrustify-${target})
|
||||||
|
add_dependencies(check-format-sources check-format-sources-uncrustify-${target})
|
||||||
add_dependencies(doc-add-comments doc-add-comments-uncrustify-${target})
|
add_dependencies(doc-add-comments doc-add-comments-uncrustify-${target})
|
||||||
else()
|
else()
|
||||||
message(STATUS "CMLIB warning:")
|
message(STATUS "CMLIB warning:")
|
||||||
|
25
CMLibGenerateCompilerFeaturesHPP.cmake
Normal file
25
CMLibGenerateCompilerFeaturesHPP.cmake
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
if(${CMAKE_VERSION} VERSION_GREATER "3.6.0")
|
||||||
|
include(WriteCompilerDetectionHeader)
|
||||||
|
|
||||||
|
set(OUTPUT_FILE ${CMAKE_BINARY_DIR}/include/compiler_features.hpp)
|
||||||
|
if(CMLIB_GENERATED_HEADERS_PATH)
|
||||||
|
set(OUTPUT_FILE ${CMLIB_GENERATED_HEADERS_PATH}/compiler_features.hpp)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
write_compiler_detection_header(
|
||||||
|
FILE ${OUTPUT_FILE}
|
||||||
|
PREFIX ${CMLIB_PROJECT_NAME_CANONICAL}
|
||||||
|
COMPILERS GNU Clang MSVC Intel
|
||||||
|
FEATURES
|
||||||
|
cxx_nullptr
|
||||||
|
cxx_override
|
||||||
|
cxx_alignas
|
||||||
|
cxx_alignof
|
||||||
|
cxx_attributes
|
||||||
|
cxx_auto_type
|
||||||
|
cxx_constexpr
|
||||||
|
cxx_digit_separators
|
||||||
|
cxx_range_for)
|
||||||
|
|
||||||
|
unset(OUTPUT_FILE)
|
||||||
|
endif()
|
@@ -1,4 +1,4 @@
|
|||||||
function(cmlib_config_hpp_generate)
|
function(cmlib_generate_private_config_hpp)
|
||||||
include(CMLibLargeFiles)
|
include(CMLibLargeFiles)
|
||||||
cmlib_test_large_files(HAVE_LARGEFILES)
|
cmlib_test_large_files(HAVE_LARGEFILES)
|
||||||
|
|
@@ -3,3 +3,12 @@ function(canonical_string INV OUTV)
|
|||||||
string(REGEX REPLACE "[ -]" "_" _arg_fixed ${_arg_uppercase})
|
string(REGEX REPLACE "[ -]" "_" _arg_fixed ${_arg_uppercase})
|
||||||
set(${OUTV} ${_arg_fixed} PARENT_SCOPE)
|
set(${OUTV} ${_arg_fixed} PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
# Добавление общего префикса ко всем переменным в списке
|
||||||
|
function(list_transform_prepend var prefix)
|
||||||
|
set(temp "")
|
||||||
|
foreach(f ${${var}})
|
||||||
|
list(APPEND temp "${prefix}${f}")
|
||||||
|
endforeach()
|
||||||
|
set(${var} "${temp}" PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
@@ -1,11 +1,27 @@
|
|||||||
|
if (NOT CMLIB_THEME_NAME)
|
||||||
|
set(CMLIB_THEME_NAME "default")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
canonical_string(${CMLIB_ORGANIZATION_NAME} CMLIB_ORGANIZATION_NAME_CANONICAL)
|
||||||
canonical_string(${PROJECT_NAME} CMLIB_PROJECT_NAME_CANONICAL)
|
canonical_string(${PROJECT_NAME} CMLIB_PROJECT_NAME_CANONICAL)
|
||||||
canonical_string(${ORGANIZATION_NAME} CMLIB_ORGANIZATION_NAME_CANONICAL)
|
canonical_string(${CMLIB_THEME_NAME} CMLIB_THEME_NAME_CANONICAL)
|
||||||
|
|
||||||
string(TOLOWER ${CMLIB_ORGANIZATION_NAME_CANONICAL} CMLIB_ORGANIZATION_NAME_LOWER)
|
string(TOLOWER ${CMLIB_ORGANIZATION_NAME_CANONICAL} CMLIB_ORGANIZATION_NAME_LOWER)
|
||||||
string(TOLOWER ${CMLIB_PROJECT_NAME_CANONICAL} CMLIB_PROJECT_NAME_LOWER)
|
string(TOLOWER ${CMLIB_PROJECT_NAME_CANONICAL} CMLIB_PROJECT_NAME_LOWER)
|
||||||
|
string(TOLOWER ${CMLIB_THEME_NAME_CANONICAL} CMLIB_THEME_NAME_LOWER)
|
||||||
|
|
||||||
string(TOUPPER ${CMLIB_ORGANIZATION_NAME_CANONICAL} CMLIB_ORGANIZATION_NAME_UPPER)
|
string(TOUPPER ${CMLIB_ORGANIZATION_NAME_CANONICAL} CMLIB_ORGANIZATION_NAME_UPPER)
|
||||||
string(TOUPPER ${CMLIB_PROJECT_NAME_CANONICAL} CMLIB_PROJECT_NAME_UPPER)
|
string(TOUPPER ${CMLIB_PROJECT_NAME_CANONICAL} CMLIB_PROJECT_NAME_UPPER)
|
||||||
|
string(TOUPPER ${CMLIB_THEME_NAME_CANONICAL} CMLIB_THEME_NAME_UPPER)
|
||||||
|
|
||||||
|
option(CMLIB_USE_DEVELOPMENT_INSTALL_PREFIX "Auto-generated output prefix for development installation" OFF)
|
||||||
|
if (CMLIB_USE_DEVELOPMENT_INSTALL_PREFIX)
|
||||||
|
if (CMLIB_THEME_NAME_LOWER STREQUAL "default")
|
||||||
|
set(CMAKE_INSTALL_PREFIX "${PROJECT_SOURCE_DIR}/_output" CACHE PATH "" FORCE)
|
||||||
|
else()
|
||||||
|
set(CMAKE_INSTALL_PREFIX "${PROJECT_SOURCE_DIR}/_output/${CMLIB_THEME_NAME_LOWER}" CACHE PATH "" FORCE)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
# CMLIB_MODULE_DIR
|
# CMLIB_MODULE_DIR
|
||||||
foreach(_m ${CMAKE_MODULE_PATH})
|
foreach(_m ${CMAKE_MODULE_PATH})
|
||||||
|
@@ -18,12 +18,12 @@ else()
|
|||||||
find_program(_lsb_release_executable lsb_release)
|
find_program(_lsb_release_executable lsb_release)
|
||||||
if(_lsb_release_executable)
|
if(_lsb_release_executable)
|
||||||
execute_process(COMMAND ${_lsb_release_executable} -si OUTPUT_VARIABLE LSB_DISTRIBUTOR_ID
|
execute_process(COMMAND ${_lsb_release_executable} -si OUTPUT_VARIABLE LSB_DISTRIBUTOR_ID
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
|
||||||
execute_process(COMMAND ${_lsb_release_executable} -sc OUTPUT_VARIABLE LSB_CODENAME
|
execute_process(COMMAND ${_lsb_release_executable} -sc OUTPUT_VARIABLE LSB_CODENAME
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
|
||||||
execute_process(COMMAND ${_lsb_release_executable} -sr OUTPUT_VARIABLE LSB_RELEASE
|
execute_process(COMMAND ${_lsb_release_executable} -sr OUTPUT_VARIABLE LSB_RELEASE
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
15
CMLibPkgConfig.cmake
Normal file
15
CMLibPkgConfig.cmake
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
function(generate_pkgconfig library_name)
|
||||||
|
set(options)
|
||||||
|
set(oneValueArgs COMPONENT INSTALL_LIBRARY)
|
||||||
|
set(multiValueArgs)
|
||||||
|
|
||||||
|
cmake_parse_arguments(_PKG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||||
|
|
||||||
|
if(${_PKG_INSTALL_LIBRARY})
|
||||||
|
configure_file(${CMLIB_MODULE_DIR}/pc/lib.pc.in ${CMAKE_BINARY_DIR}/${library_name}.pc)
|
||||||
|
else()
|
||||||
|
configure_file(${CMLIB_MODULE_DIR}/pc/lib-header-only.pc.in ${CMAKE_BINARY_DIR}/${library_name}.pc)
|
||||||
|
endif()
|
||||||
|
install(FILES ${CMAKE_BINARY_DIR}/${library_name}.pc COMPONENT ${_PKG_COMPONENT}
|
||||||
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||||
|
endfunction()
|
@@ -1,19 +1,21 @@
|
|||||||
if(NOT EXISTS "${CMAKE_SOURCE_DIR}/cmake/etc/Variables.cmake")
|
#
|
||||||
message(FATAL_ERROR "Required file cmake/etc/Variables.cmake does not exist")
|
# Обязательные переменные, значения которым необходимо присвоить в файле CMakeLists.txt
|
||||||
|
# до подключения CMLib, либо передать из командной строки через ключ -D
|
||||||
|
#
|
||||||
|
if(NOT CMLIB_ORGANIZATION_NAME)
|
||||||
|
message(FATAL_ERROR "Required variable CMLIB_ORGANIZATION_NAME is not defined")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include("${CMAKE_SOURCE_DIR}/cmake/etc/Variables.cmake")
|
if(NOT CMLIB_AUTHOR_NAME)
|
||||||
|
message(FATAL_ERROR "Required variable CMLIB_AUTHOR_NAME is not defined")
|
||||||
if(NOT ORGANIZATION_NAME)
|
|
||||||
message(FATAL_ERROR "Required variable ORGANIZATION_NAME is not defined")
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(CPACK_PACKAGE_VENDOR ${ORGANIZATION_NAME})
|
if(NOT CMLIB_AUTHOR_EMAIL)
|
||||||
|
message(FATAL_ERROR "Required variable CMLIB_AUTHOR_EMAIL is not defined")
|
||||||
if(NOT CPACK_PACKAGE_CONTACT)
|
|
||||||
message(FATAL_ERROR "Required variable CPACK_PACKAGE_CONTACT is not defined")
|
|
||||||
endif()
|
endif()
|
||||||
|
set(CPACK_PACKAGE_CONTACT "${CMLIB_AUTHOR_NAME} <${CMLIB_AUTHOR_EMAIL}>" CACHE STRING "")
|
||||||
|
|
||||||
if(NOT CPACK_PACKAGE_DESCRIPTION_SUMMARY)
|
if(NOT CMLIB_DESCRIPTION)
|
||||||
message(FATAL_ERROR "Required variable CPACK_PACKAGE_DESCRIPTION_SUMMARY is not defined")
|
message(FATAL_ERROR "Required variable CMLIB_DESCRIPTION is not defined")
|
||||||
endif()
|
endif()
|
||||||
|
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${CMLIB_DESCRIPTION} CACHE STRING "")
|
||||||
|
@@ -51,6 +51,7 @@ set(CPACK_SOURCE_IGNORE_FILES
|
|||||||
obj.*/
|
obj.*/
|
||||||
_build/
|
_build/
|
||||||
_output/
|
_output/
|
||||||
|
files/log
|
||||||
files/var
|
files/var
|
||||||
CMakeLists.txt.user
|
CMakeLists.txt.user
|
||||||
~$
|
~$
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
#if defined (CMLIB_ORGANIZATION_NAME)
|
#if defined (CMLIB_ORGANIZATION_NAME)
|
||||||
#error "Duplicate definition of macros CMLIB_ORGANIZATION_NAME"
|
#error "Duplicate definition of macros CMLIB_ORGANIZATION_NAME"
|
||||||
#else
|
#else
|
||||||
#define CMLIB_ORGANIZATION_NAME "@ORGANIZATION_NAME@"
|
#define CMLIB_ORGANIZATION_NAME "@CMLIB_ORGANIZATION_NAME@"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined (CMLIB_ORGANIZATION_NAME_LOWER)
|
#if defined (CMLIB_ORGANIZATION_NAME_LOWER)
|
||||||
@@ -42,6 +42,42 @@
|
|||||||
#define CMLIB_PROJECT_NAME_UPPER "@CMLIB_PROJECT_NAME_UPPER@"
|
#define CMLIB_PROJECT_NAME_UPPER "@CMLIB_PROJECT_NAME_UPPER@"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined (CMLIB_THEME_NAME)
|
||||||
|
#error "Duplicate definition of macros CMLIB_THEME_NAME"
|
||||||
|
#else
|
||||||
|
#define CMLIB_THEME_NAME "@CMLIB_THEME_NAME@"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (CMLIB_THEME_NAME_LOWER)
|
||||||
|
#error "Duplicate definition of macros CMLIB_THEME_NAME_LOWER"
|
||||||
|
#else
|
||||||
|
#define CMLIB_THEME_NAME_LOWER "@CMLIB_THEME_NAME_LOWER@"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (CMLIB_THEME_NAME_UPPER)
|
||||||
|
#error "Duplicate definition of macros CMLIB_THEME_NAME_UPPER"
|
||||||
|
#else
|
||||||
|
#define CMLIB_THEME_NAME_UPPER "@CMLIB_THEME_NAME_UPPER@"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (CMLIB_AUTHOR_NAME)
|
||||||
|
#error "Duplicate definition of macros CMLIB_AUTHOR_NAME"
|
||||||
|
#else
|
||||||
|
#define CMLIB_AUTHOR_NAME "@CMLIB_AUTHOR_NAME@"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (CMLIB_AUTHOR_EMAIL)
|
||||||
|
#error "Duplicate definition of macros CMLIB_AUTHOR_EMAIL"
|
||||||
|
#else
|
||||||
|
#define CMLIB_AUTHOR_EMAIL "@CMLIB_AUTHOR_EMAIL@"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (CMLIB_DESCRIPTION)
|
||||||
|
#error "Duplicate definition of macros CMLIB_DESCRIPTION"
|
||||||
|
#else
|
||||||
|
#define CMLIB_DESCRIPTION "@CMLIB_DESCRIPTION@"
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined (CMLIB_BUILD_TYPE)
|
#if defined (CMLIB_BUILD_TYPE)
|
||||||
#error "Duplicate definition of macros CMLIB_BUILD_TYPE"
|
#error "Duplicate definition of macros CMLIB_BUILD_TYPE"
|
||||||
#else
|
#else
|
||||||
|
8
hpp/pvs_studio.hpp.in
Normal file
8
hpp/pvs_studio.hpp.in
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
#ifndef PVS_STUDIO_HPP_
|
||||||
|
#define PVS_STUDIO_HPP_
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
//-V813_MINSIZE=33
|
||||||
|
|
||||||
|
#endif // PVS_STUDIO_HPP_
|
11
pc/lib-header-only.pc.in
Normal file
11
pc/lib-header-only.pc.in
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
prefix=@CMAKE_INSTALL_PREFIX@
|
||||||
|
exec_prefix=@CMAKE_INSTALL_PREFIX@
|
||||||
|
includedir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@
|
||||||
|
|
||||||
|
Name: @library_name@
|
||||||
|
Description: @library_name@ library
|
||||||
|
Version: @PROJECT_VERSION@
|
||||||
|
|
||||||
|
Requires:
|
||||||
|
Cflags: -I@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@
|
||||||
|
|
@@ -3,11 +3,11 @@ exec_prefix=@CMAKE_INSTALL_PREFIX@
|
|||||||
libdir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@
|
libdir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@
|
||||||
includedir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@
|
includedir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@
|
||||||
|
|
||||||
Name: @current_target@
|
Name: @library_name@
|
||||||
Description: @current_target@ library
|
Description: @library_name@ library
|
||||||
Version: @PROJECT_VERSION@
|
Version: @PROJECT_VERSION@
|
||||||
|
|
||||||
Requires:
|
Requires:
|
||||||
Libs: -L@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@ -l@current_target@
|
Libs: -L@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@ -l@library_name@
|
||||||
Cflags: -I@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@
|
Cflags: -I@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@
|
||||||
|
|
||||||
|
5
thirdparty/cotire.cmake
vendored
5
thirdparty/cotire.cmake
vendored
@@ -1136,6 +1136,11 @@ function (cotire_parse_includes _language _scanOutput _ignoredIncludeDirs _honor
|
|||||||
string (REPLACE ";" "\\;" _scanOutput "${_scanOutput}")
|
string (REPLACE ";" "\\;" _scanOutput "${_scanOutput}")
|
||||||
# then separate lines
|
# then separate lines
|
||||||
string (REGEX REPLACE "\n" ";" _scanOutput "${_scanOutput}")
|
string (REGEX REPLACE "\n" ";" _scanOutput "${_scanOutput}")
|
||||||
|
if ("${_language}" STREQUAL "CXX")
|
||||||
|
# Fix clang9's libc++ errno
|
||||||
|
message (STATUS "replacing <stdlib.h> with <cstdlib>")
|
||||||
|
string (REGEX REPLACE "include_next" "include" _scanOutput "${_scanOutput}")
|
||||||
|
endif()
|
||||||
list (LENGTH _scanOutput _len)
|
list (LENGTH _scanOutput _len)
|
||||||
# remove duplicate lines to speed up parsing
|
# remove duplicate lines to speed up parsing
|
||||||
list (REMOVE_DUPLICATES _scanOutput)
|
list (REMOVE_DUPLICATES _scanOutput)
|
||||||
|
Reference in New Issue
Block a user