From 956a94800faff8df75131f43919c189be2b62d3c Mon Sep 17 00:00:00 2001 From: Andrey Astafyev Date: Tue, 1 Jun 2021 13:32:03 +0300 Subject: [PATCH 1/7] =?UTF-8?q?=D0=97=D0=B0=D0=BF=D1=80=D0=B5=D1=82=20?= =?UTF-8?q?=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA=D0=B8=20=D0=B2?= =?UTF-8?q?=20=D0=BA=D0=B0=D1=82=D0=B0=D0=BB=D0=BE=D0=B3=20=D1=81=20=D0=B8?= =?UTF-8?q?=D1=81=D1=85=D0=BE=D0=B4=D0=BD=D0=B8=D0=BA=D0=B0=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMLibCommon.cmake | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMLibCommon.cmake b/CMLibCommon.cmake index 70e78f4..1851fd0 100644 --- a/CMLibCommon.cmake +++ b/CMLibCommon.cmake @@ -5,6 +5,10 @@ if(CMAKE_INSTALL_PREFIX STREQUAL PROJECT_BINARY_DIR) message(FATAL_ERROR "Cannot install into build directory") endif() +if(CMAKE_INSTALL_PREFIX STREQUAL PROJECT_SOURCE_DIR) + message(FATAL_ERROR "Cannot install into source directory") +endif() + include(CMLibDisableInSourceBuild) include(CMakeParseArguments) include(GNUInstallDirs) From ab6d9dab66ca8b0961499d5eef5782241ae164ca Mon Sep 17 00:00:00 2001 From: Andrey Astafyev Date: Tue, 1 Jun 2021 13:36:24 +0300 Subject: [PATCH 2/7] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=BD=D0=B0=D1=8F=20=D0=B4=D0=BB=D1=8F=20=D0=BD=D0=B0=D0=B7?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D1=8B=20(=D1=82=D0=B5=D0=BC=D1=8B)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMLibGlobalVariables.cmake | 9 ++++++++- hpp/cmlib_private_config.hpp.in | 18 ++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/CMLibGlobalVariables.cmake b/CMLibGlobalVariables.cmake index d2d11b2..91f7372 100644 --- a/CMLibGlobalVariables.cmake +++ b/CMLibGlobalVariables.cmake @@ -1,11 +1,18 @@ -canonical_string(${PROJECT_NAME} CMLIB_PROJECT_NAME_CANONICAL) +if (NOT THEME_NAME) + set(THEME_NAME "default") +endif() + canonical_string(${ORGANIZATION_NAME} CMLIB_ORGANIZATION_NAME_CANONICAL) +canonical_string(${PROJECT_NAME} CMLIB_PROJECT_NAME_CANONICAL) +canonical_string(${THEME_NAME} CMLIB_THEME_NAME_CANONICAL) string(TOLOWER ${CMLIB_ORGANIZATION_NAME_CANONICAL} CMLIB_ORGANIZATION_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_PROJECT_NAME_CANONICAL} CMLIB_PROJECT_NAME_UPPER) +string(TOUPPER ${CMLIB_THEME_NAME_CANONICAL} CMLIB_THEME_NAME_UPPER) # CMLIB_MODULE_DIR foreach(_m ${CMAKE_MODULE_PATH}) diff --git a/hpp/cmlib_private_config.hpp.in b/hpp/cmlib_private_config.hpp.in index afc1bd3..7375f20 100644 --- a/hpp/cmlib_private_config.hpp.in +++ b/hpp/cmlib_private_config.hpp.in @@ -42,6 +42,24 @@ #define CMLIB_PROJECT_NAME_UPPER "@CMLIB_PROJECT_NAME_UPPER@" #endif +#if defined (CMLIB_THEME_NAME) +#error "Duplicate definition of macros CMLIB_THEME_NAME" +#else +#define CMLIB_THEME_NAME "@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_BUILD_TYPE) #error "Duplicate definition of macros CMLIB_BUILD_TYPE" #else From dbc0b76a76be90fa9875ad7ab8114dc9d487ee64 Mon Sep 17 00:00:00 2001 From: Andrey Astafyev Date: Tue, 1 Jun 2021 13:55:12 +0300 Subject: [PATCH 3/7] =?UTF-8?q?=D0=9E=D0=BF=D1=86=D0=B8=D1=8F=20CMLIB=5FUS?= =?UTF-8?q?E=5FDEVELOPMENT=5FINSTALL=5FPREFIX?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit При включении CMLIB_USE_DEVELOPMENT_INSTALL_PREFIX установка будет производиться в каталог _output внутри проекта. --- CMLibGlobalVariables.cmake | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CMLibGlobalVariables.cmake b/CMLibGlobalVariables.cmake index 91f7372..5b9f60b 100644 --- a/CMLibGlobalVariables.cmake +++ b/CMLibGlobalVariables.cmake @@ -14,6 +14,15 @@ string(TOUPPER ${CMLIB_ORGANIZATION_NAME_CANONICAL} CMLIB_ORGANIZATION_NAME_UPPE 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 foreach(_m ${CMAKE_MODULE_PATH}) if(EXISTS ${_m}/CMLibCommon.cmake) From bef76608367ee504581bf74dd794a135f66691d2 Mon Sep 17 00:00:00 2001 From: Andrey Astafyev Date: Mon, 7 Jun 2021 17:46:58 +0300 Subject: [PATCH 4/7] =?UTF-8?q?=D0=9E=D1=82=D0=BA=D0=B0=D0=B7=20=D0=BE?= =?UTF-8?q?=D1=82=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8F=20=D1=84=D0=B0=D0=B9=D0=BB=D0=B0=20Var?= =?UTF-8?q?iables.cmake?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMLibCPack.cmake | 6 +++--- CMLibGlobalVariables.cmake | 8 ++++---- CMLibRequiredVariables.cmake | 26 ++++++++++++++------------ hpp/cmlib_private_config.hpp.in | 22 ++++++++++++++++++++-- 4 files changed, 41 insertions(+), 21 deletions(-) diff --git a/CMLibCPack.cmake b/CMLibCPack.cmake index 0d2297c..01eeef1 100644 --- a/CMLibCPack.cmake +++ b/CMLibCPack.cmake @@ -1,7 +1,7 @@ # Общие настройки для пакета: организация, автор, версия -set(CPACK_PACKAGE_VENDOR ${CMLIB_ORGANIZATION_NAME_LOWER}) -set(CPACK_PACKAGE_NAME ${CMLIB_PROJECT_NAME_LOWER}) -set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION}) +set(CPACK_PACKAGE_VENDOR ${CMLIB_ORGANIZATION_NAME_LOWER} CACHE STRING "") +set(CPACK_PACKAGE_NAME ${CMLIB_PROJECT_NAME_LOWER} CACHE STRING "") +set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION} CACHE STRING "") # Параметры для архива исходных текстов if(NOT CPACK_SOURCE_GENERATOR) diff --git a/CMLibGlobalVariables.cmake b/CMLibGlobalVariables.cmake index 5b9f60b..756a359 100644 --- a/CMLibGlobalVariables.cmake +++ b/CMLibGlobalVariables.cmake @@ -1,10 +1,10 @@ -if (NOT THEME_NAME) - set(THEME_NAME "default") +if (NOT CMLIB_THEME_NAME) + set(CMLIB_THEME_NAME "default") endif() -canonical_string(${ORGANIZATION_NAME} CMLIB_ORGANIZATION_NAME_CANONICAL) +canonical_string(${CMLIB_ORGANIZATION_NAME} CMLIB_ORGANIZATION_NAME_CANONICAL) canonical_string(${PROJECT_NAME} CMLIB_PROJECT_NAME_CANONICAL) -canonical_string(${THEME_NAME} CMLIB_THEME_NAME_CANONICAL) +canonical_string(${CMLIB_THEME_NAME} CMLIB_THEME_NAME_CANONICAL) string(TOLOWER ${CMLIB_ORGANIZATION_NAME_CANONICAL} CMLIB_ORGANIZATION_NAME_LOWER) string(TOLOWER ${CMLIB_PROJECT_NAME_CANONICAL} CMLIB_PROJECT_NAME_LOWER) diff --git a/CMLibRequiredVariables.cmake b/CMLibRequiredVariables.cmake index 4c4aa3d..0abcf24 100644 --- a/CMLibRequiredVariables.cmake +++ b/CMLibRequiredVariables.cmake @@ -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() -include("${CMAKE_SOURCE_DIR}/cmake/etc/Variables.cmake") - -if(NOT ORGANIZATION_NAME) - message(FATAL_ERROR "Required variable ORGANIZATION_NAME is not defined") +if(NOT CMLIB_AUTHOR_NAME) + message(FATAL_ERROR "Required variable CMLIB_AUTHOR_NAME is not defined") endif() -set(CPACK_PACKAGE_VENDOR ${ORGANIZATION_NAME}) - -if(NOT CPACK_PACKAGE_CONTACT) - message(FATAL_ERROR "Required variable CPACK_PACKAGE_CONTACT is not defined") +if(NOT CMLIB_AUTHOR_EMAIL) + message(FATAL_ERROR "Required variable CMLIB_AUTHOR_EMAIL is not defined") endif() +set(CPACK_PACKAGE_CONTACT "${CMLIB_AUTHOR_NAME} <${CMLIB_AUTHOR_EMAIL}>" CACHE STRING "") -if(NOT CPACK_PACKAGE_DESCRIPTION_SUMMARY) - message(FATAL_ERROR "Required variable CPACK_PACKAGE_DESCRIPTION_SUMMARY is not defined") +if(NOT CMLIB_DESCRIPTION) + message(FATAL_ERROR "Required variable CMLIB_DESCRIPTION is not defined") endif() +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${CMLIB_DESCRIPTION} CACHE STRING "") diff --git a/hpp/cmlib_private_config.hpp.in b/hpp/cmlib_private_config.hpp.in index 7375f20..d5a3de6 100644 --- a/hpp/cmlib_private_config.hpp.in +++ b/hpp/cmlib_private_config.hpp.in @@ -9,7 +9,7 @@ #if defined (CMLIB_ORGANIZATION_NAME) #error "Duplicate definition of macros CMLIB_ORGANIZATION_NAME" #else -#define CMLIB_ORGANIZATION_NAME "@ORGANIZATION_NAME@" +#define CMLIB_ORGANIZATION_NAME "@CMLIB_ORGANIZATION_NAME@" #endif #if defined (CMLIB_ORGANIZATION_NAME_LOWER) @@ -45,7 +45,7 @@ #if defined (CMLIB_THEME_NAME) #error "Duplicate definition of macros CMLIB_THEME_NAME" #else -#define CMLIB_THEME_NAME "@THEME_NAME@" +#define CMLIB_THEME_NAME "@CMLIB_THEME_NAME@" #endif #if defined (CMLIB_THEME_NAME_LOWER) @@ -60,6 +60,24 @@ #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) #error "Duplicate definition of macros CMLIB_BUILD_TYPE" #else From ca7cf2dbfe5cebcc6e2562ecb74038e3247835bc Mon Sep 17 00:00:00 2001 From: Andrey Astafyev Date: Mon, 7 Jun 2021 17:56:10 +0300 Subject: [PATCH 5/7] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B8=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D1=84=D0=B0=D0=B9?= =?UTF-8?q?=D0=BB=D0=B0=20=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=20=D1=84?= =?UTF-8?q?=D0=BE=D1=80=D0=BC=D0=B0=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cmake-format => .cmake-format.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename .cmake-format => .cmake-format.py (99%) diff --git a/.cmake-format b/.cmake-format.py similarity index 99% rename from .cmake-format rename to .cmake-format.py index e9fdda7..87589ae 100644 --- a/.cmake-format +++ b/.cmake-format.py @@ -175,7 +175,7 @@ with section("markup"): with section("lint"): # a list of lint codes to disable - disabled_codes = [] + disabled_codes = ['C0113'] # regular expression pattern describing valid function names function_pattern = '[0-9a-z_]+' From 5e600ab490fc789667062e998bb48effb9bf35a0 Mon Sep 17 00:00:00 2001 From: Andrey Astafyev Date: Mon, 7 Jun 2021 17:57:17 +0300 Subject: [PATCH 6/7] =?UTF-8?q?=D0=A4=D0=BE=D1=80=D0=BC=D0=B0=D1=82=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMLibGlobalVariables.cmake | 6 +++--- CMLibLSBInfo.cmake | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CMLibGlobalVariables.cmake b/CMLibGlobalVariables.cmake index 756a359..c618758 100644 --- a/CMLibGlobalVariables.cmake +++ b/CMLibGlobalVariables.cmake @@ -1,4 +1,4 @@ -if (NOT CMLIB_THEME_NAME) +if(NOT CMLIB_THEME_NAME) set(CMLIB_THEME_NAME "default") endif() @@ -15,8 +15,8 @@ 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") +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) diff --git a/CMLibLSBInfo.cmake b/CMLibLSBInfo.cmake index 4753357..cf46c14 100644 --- a/CMLibLSBInfo.cmake +++ b/CMLibLSBInfo.cmake @@ -18,12 +18,12 @@ else() find_program(_lsb_release_executable lsb_release) if(_lsb_release_executable) 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 - OUTPUT_STRIP_TRAILING_WHITESPACE) + OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process(COMMAND ${_lsb_release_executable} -sr OUTPUT_VARIABLE LSB_RELEASE - OUTPUT_STRIP_TRAILING_WHITESPACE) + OUTPUT_STRIP_TRAILING_WHITESPACE) endif() endif() From 8b2fa4fd6440d1eec57c783ae2ef9910e317b3b8 Mon Sep 17 00:00:00 2001 From: Andrey Astafyev Date: Fri, 11 Jun 2021 09:50:46 +0300 Subject: [PATCH 7/7] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BD=D0=B0=D0=B7=D0=B2=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D1=82=D0=B5=D0=BC=D1=8B=20=D0=BA=20CMAKE=5FINSTALL=5F?= =?UTF-8?q?PREFIX?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMLibGlobalVariables.cmake | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/CMLibGlobalVariables.cmake b/CMLibGlobalVariables.cmake index c618758..546dc62 100644 --- a/CMLibGlobalVariables.cmake +++ b/CMLibGlobalVariables.cmake @@ -14,12 +14,11 @@ string(TOUPPER ${CMLIB_ORGANIZATION_NAME_CANONICAL} CMLIB_ORGANIZATION_NAME_UPPE 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) +option(CMLIB_ADD_THEME_PREFIX "Append theme name to install prefix" OFF) +if(CMLIB_ADD_THEME_PREFIX AND NOT CMLIB_THEME_PREFIX_APPENDED) + if(NOT CMLIB_THEME_NAME_LOWER STREQUAL "default") + set(CMLIB_THEME_PREFIX_APPENDED ON CACHE BOOL "" FORCE) + set(CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/${CMLIB_THEME_NAME}" CACHE PATH "" FORCE) endif() endif()