Compare commits

...

4 Commits

11 changed files with 55 additions and 17 deletions

View File

@@ -19,6 +19,7 @@ set_project_version()
include(CMLibOrganizationName)
set_organization_name()
include(CMLibGlobalVariables)
include(CMLibInstallInOpt)
include(CMLibLSBInfo)
include(CMLibCompiler)

View File

@@ -20,6 +20,6 @@ function(add_common_library LIBNAME SOURCES)
set_target_properties(${LIBNAME}_static PROPERTIES
OUTPUT_NAME ${LIBNAME}
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_INSTALL_LIBDIR})
configure_file(${CMAKE_SOURCE_DIR}/cmake/cmlib/pc/lib.pc.in ${CMAKE_BINARY_DIR}/${LIBNAME}.pc)
configure_file(${CMLIB_MODULE_DIR}/pc/lib.pc.in ${CMAKE_BINARY_DIR}/${LIBNAME}.pc)
endfunction()

View File

@@ -1,9 +1,8 @@
include(WriteCompilerDetectionHeader)
string(TOUPPER ${PROJECT_NAME} _project_name_uppercase)
write_compiler_detection_header(
FILE include/compiler_features.hpp
PREFIX ${_project_name_uppercase}
PREFIX ${CMLIB_PROJECT_NAME_CANONICAL}
COMPILERS GNU Clang MSVC Intel
FEATURES
cxx_nullptr

View File

@@ -2,6 +2,5 @@ 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)
configure_file(${CMLIB_MODULE_DIR}/hpp/config.hpp.in ${CMAKE_BINARY_DIR}/include/config.hpp)
endfunction()

View File

@@ -12,3 +12,18 @@ if(${_source_realpath} STREQUAL ${_binary_realpath})
message(FATAL_ERROR "In-source builds are not allowed.")
endif()
# Очистка от сгенерированных файлов
file(GLOB_RECURSE _cmakelists_files RELATIVE ${_source_realpath} CMakeLists.txt)
foreach(_it ${_cmakelists_files})
get_filename_component(_file ${_it} REALPATH)
get_filename_component(_dir ${_file} DIRECTORY)
file(REMOVE_RECURSE
${_dir}/CMakeFiles
${_dir}/CMakeCache.txt
${_dir}/cmake_install.cmake
${_dir}/Makefile
${_dir}/build.ninja
${_dir}/rules.ninja
)
endforeach()

View File

@@ -0,0 +1,14 @@
# CMLIB_PROJECT_NAME_CANONICAL
string(TOUPPER ${PROJECT_NAME} _project_name_uppercase)
string(REGEX REPLACE "[ -]" "_" _project_name_fixed ${_project_name_uppercase})
set(CMLIB_PROJECT_NAME_CANONICAL ${_project_name_fixed})
# CMLIB_MODULE_DIR
set(CMLIB_MODULE_DIR "")
foreach(_m ${CMAKE_MODULE_PATH})
if(EXISTS ${_m}/CMLibCommon.cmake)
get_filename_component(CMLIB_MODULE_DIR ${_m}/CMLibCommon.cmake DIRECTORY)
break()
endif()
endforeach()

View File

@@ -10,7 +10,7 @@ macro(test_large_files VARIABLE 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"
"${CMLIB_MODULE_DIR}/tests/LargeFiles${SUFFIX_64}.c"
OUTPUT_VARIABLE TRY_LARGE_FILES_OUTPUT)
if(VERBOSE_LARGE_FILES)
@@ -20,7 +20,7 @@ macro(test_large_files VARIABLE USE_64_SUFFIX)
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"
"${CMLIB_MODULE_DIR}/tests/LargeFiles${SUFFIX_64}.c"
COMPILE_DEFINITIONS "-D_FILE_OFFSET_BITS=64"
OUTPUT_VARIABLE TRY_LARGE_FILES_OUTPUT)
@@ -37,7 +37,7 @@ macro(test_large_files VARIABLE USE_64_SUFFIX)
# Try with C macro _LARGEFILE_SOURCE
try_compile(LARGE_FILES_SUPPORTED "${CMAKE_BINARY_DIR}"
"${CMAKE_MODULE_PATH}/tests/LargeFiles${SUFFIX_64}.c"
"${CMLIB_MODULE_DIR}/tests/LargeFiles${SUFFIX_64}.c"
COMPILE_DEFINITIONS "-D_LARGEFILE${SUFFIX_64}_SOURCE"
OUTPUT_VARIABLE TRY_LARGE_FILES_OUTPUT)
@@ -53,7 +53,7 @@ macro(test_large_files VARIABLE USE_64_SUFFIX)
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"
"${CMLIB_MODULE_DIR}/tests/LargeFiles${SUFFIX_64}.c"
COMPILE_DEFINITIONS "-D_FILE_OFFSET_BITS=64" "-D_LARGEFILE${SUFFIX_64}_SOURCE"
OUTPUT_VARIABLE TRY_LARGE_FILES_OUTPUT)
@@ -70,7 +70,7 @@ macro(test_large_files VARIABLE USE_64_SUFFIX)
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")
"${CMLIB_MODULE_DIR}/tests/LargeFilesWindows.c")
endif(NOT LARGE_FILES_SUPPORTED)
if(LARGE_FILES_SUPPORTED)

View File

@@ -40,7 +40,7 @@ function(qt_translation)
COMMAND ${Qt5_LUPDATE_EXECUTABLE} ARGS ${_sources_list} -ts ${_ts_list}
DEPENDS ${_sources_list})
configure_file(${CMAKE_SOURCE_DIR}/cmake/cmlib/qrc/l10n.qrc.in ${CMAKE_BINARY_DIR}/${_target}_l10n.qrc)
configure_file(${CMLIB_MODULE_DIR}/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})

View File

@@ -1,6 +1,6 @@
if(NOT TARGET uninstall)
configure_file(
"${CMAKE_SOURCE_DIR}/cmake/cmlib/CMLibUninstall.cmake.in"
"${CMLIB_MODULE_DIR}/CMLibUninstall.cmake.in"
"${CMAKE_BINARY_DIR}/cmake_uninstall.cmake"
IMMEDIATE @ONLY)

View File

@@ -20,3 +20,12 @@ foreach(file ${files})
endif(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
endforeach(file)
# Удаление пустых каталогов
foreach(_file ${files})
set(_res 0)
while(_res EQUAL 0)
get_filename_component(_file ${_file} DIRECTORY)
execute_process(COMMAND rmdir ${_file} RESULT_VARIABLE _res OUTPUT_QUIET ERROR_QUIET)
endwhile()
endforeach()

View File

@@ -1,8 +1,8 @@
#ifndef @PROJECT_NAME_UPPERCASE@_CONFIG_HPP_
#define @PROJECT_NAME_UPPERCASE@_CONFIG_HPP_
#ifndef @CMLIB_PROJECT_NAME_CANONICAL@_CONFIG_HPP_
#define @CMLIB_PROJECT_NAME_CANONICAL@_CONFIG_HPP_
#define @PROJECT_NAME_UPPERCASE@_VERSION_STR "@VERSION_STR@"
#define @PROJECT_NAME_UPPERCASE@_VERSION_INT @VERSION_INT@
#define @CMLIB_PROJECT_NAME_CANONICAL@_VERSION_STR "@VERSION_STR@"
#define @CMLIB_PROJECT_NAME_CANONICAL@_VERSION_INT @VERSION_INT@
#define ORGANIZATION_NAME "@ORGANIZATION_NAME@"
#define PROJECT_NAME "@CMAKE_PROJECT_NAME@"
#define BUILD_TYPE "@CMAKE_BUILD_TYPE@"
@@ -12,4 +12,5 @@
#cmakedefine RELEASE @RELEASE@
#cmakedefine ANALYSIS @ANALYSIS@
#endif // @PROJECT_NAME_UPPERCASE@_CONFIG_HPP_
#endif /* @CMLIB_PROJECT_NAME_CANONICAL@_CONFIG_HPP_ */