Apply cmake-format 0.5.1

* Disable autosort as it messes with add_library and
  add_executable calls
This commit is contained in:
Martchus 2019-06-01 12:14:30 +02:00
parent 1179160fb9
commit bc0d7af67f
12 changed files with 209 additions and 86 deletions

View File

@ -140,7 +140,12 @@ if (USE_NATIVE_FILE_BUFFER)
endforeach () endforeach ()
else () else ()
message(STATUS "Using boost::iostreams::stream_buffer<boost::iostreams::file_descriptor_sink> for NativeFileStream") message(STATUS "Using boost::iostreams::stream_buffer<boost::iostreams::file_descriptor_sink> for NativeFileStream")
use_package(TARGET_NAME Boost::iostreams PACKAGE_NAME Boost PACKAGE_ARGS "REQUIRED;COMPONENTS;iostreams") use_package(TARGET_NAME
Boost::iostreams
PACKAGE_NAME
Boost
PACKAGE_ARGS
"REQUIRED;COMPONENTS;iostreams")
foreach (NATIVE_FILE_STREAM_IMPL_FILE ${NATIVE_FILE_STREAM_IMPL_FILES}) foreach (NATIVE_FILE_STREAM_IMPL_FILE ${NATIVE_FILE_STREAM_IMPL_FILES})
set_property(SOURCE ${NATIVE_FILE_STREAM_IMPL_FILE} set_property(SOURCE ${NATIVE_FILE_STREAM_IMPL_FILE}
APPEND APPEND

View File

@ -44,9 +44,19 @@ endfunction ()
function (parse_arguments_for_use_functions) function (parse_arguments_for_use_functions)
# parse arguments # parse arguments
set(OPTIONAL_ARGS OPTIONAL) set(OPTIONAL_ARGS OPTIONAL)
set(ONE_VALUE_ARGS VISIBILITY LIBRARIES_VARIABLE PACKAGES_VARIABLE PKG_CONFIG_MODULES_VARIABLE TARGET_NAME PACKAGE_NAME) set(ONE_VALUE_ARGS
VISIBILITY
LIBRARIES_VARIABLE
PACKAGES_VARIABLE
PKG_CONFIG_MODULES_VARIABLE
TARGET_NAME
PACKAGE_NAME)
set(MULTI_VALUE_ARGS PKG_CONFIG_MODULES PACKAGE_ARGS) set(MULTI_VALUE_ARGS PKG_CONFIG_MODULES PACKAGE_ARGS)
cmake_parse_arguments(ARGS "${OPTIONAL_ARGS}" "${ONE_VALUE_ARGS}" "${MULTI_VALUE_ARGS}" ${ARGN}) cmake_parse_arguments(ARGS
"${OPTIONAL_ARGS}"
"${ONE_VALUE_ARGS}"
"${MULTI_VALUE_ARGS}"
${ARGN})
# validate values # validate values
if (ARGS_VISIBILITY) if (ARGS_VISIBILITY)
@ -93,7 +103,8 @@ function (use_iconv)
parse_arguments_for_use_functions(${ARGN}) parse_arguments_for_use_functions(${ARGN})
# check whether iconv from the standard library can be used # check whether iconv from the standard library can be used
set(FORCE_EXTERNAL_ICONV OFF set(FORCE_EXTERNAL_ICONV
OFF
CACHE PATH "whether to force usage of external iconv (rather than the using the one bundled with glibc)") CACHE PATH "whether to force usage of external iconv (rather than the using the one bundled with glibc)")
if (NOT FORCE_EXTERNAL_ICONV) if (NOT FORCE_EXTERNAL_ICONV)
# check whether iconv exists in standard lib # check whether iconv exists in standard lib
@ -145,7 +156,8 @@ function (use_crypto)
set("${ARGS_LIBRARIES_VARIABLE}" "${${ARGS_LIBRARIES_VARIABLE}};OpenSSL::Crypto" PARENT_SCOPE) set("${ARGS_LIBRARIES_VARIABLE}" "${${ARGS_LIBRARIES_VARIABLE}};OpenSSL::Crypto" PARENT_SCOPE)
set("${ARGS_PACKAGES_VARIABLE}" "${${ARGS_PACKAGES_VARIABLE}};OpenSSL" PARENT_SCOPE) set("${ARGS_PACKAGES_VARIABLE}" "${${ARGS_PACKAGES_VARIABLE}};OpenSSL" PARENT_SCOPE)
if (WIN32 AND OPENSSL_USE_STATIC_LIBS) if (WIN32 AND OPENSSL_USE_STATIC_LIBS)
set("${ARGS_LIBRARIES_VARIABLE}" "${${ARGS_LIBRARIES_VARIABLE}};OpenSSL::Crypto;-lws2_32;-lgdi32;-lcrypt32" set("${ARGS_LIBRARIES_VARIABLE}"
"${${ARGS_LIBRARIES_VARIABLE}};OpenSSL::Crypto;-lws2_32;-lgdi32;-lcrypt32"
PARENT_SCOPE) PARENT_SCOPE)
endif () endif ()
set("PKG_CONFIG_OpenSSL_Crypto" "libcrypto" PARENT_SCOPE) set("PKG_CONFIG_OpenSSL_Crypto" "libcrypto" PARENT_SCOPE)
@ -204,7 +216,7 @@ function (use_package)
set("${ARGS_LIBRARIES_VARIABLE}" "${${ARGS_LIBRARIES_VARIABLE}};${ARGS_TARGET_NAME}" PARENT_SCOPE) set("${ARGS_LIBRARIES_VARIABLE}" "${${ARGS_LIBRARIES_VARIABLE}};${ARGS_TARGET_NAME}" PARENT_SCOPE)
set("${ARGS_PACKAGES_VARIABLE}" "${${ARGS_PACKAGES_VARIABLE}};${ARGS_PACKAGE_NAME}" PARENT_SCOPE) set("${ARGS_PACKAGES_VARIABLE}" "${${ARGS_PACKAGES_VARIABLE}};${ARGS_PACKAGE_NAME}" PARENT_SCOPE)
set("PACKAGE_ARGS_${ARGS_PACKAGE_NAME}" "${ARGS_PACKAGE_ARGS}" PARENT_SCOPE) set("PACKAGE_ARGS_${ARGS_PACKAGE_NAME}" "${ARGS_PACKAGE_ARGS}" PARENT_SCOPE)
endfunction() endfunction ()
function (use_pkg_config_module) function (use_pkg_config_module)
# parse and validate arguments # parse and validate arguments

View File

@ -34,7 +34,7 @@ endif ()
# add target for building the application # add target for building the application
if (ANDROID) if (ANDROID)
# create a shared library which can be loaded from the Java-side # create a shared library which can be loaded from the Java-side
add_library(${META_TARGET_NAME} SHARED ${GUI_TYPE} ${ALL_FILES}) add_library(${META_TARGET_NAME} SHARED ${ALL_FILES})
else () else ()
add_executable(${META_TARGET_NAME} ${GUI_TYPE} ${ALL_FILES}) add_executable(${META_TARGET_NAME} ${GUI_TYPE} ${ALL_FILES})
endif () endif ()
@ -79,7 +79,8 @@ if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
if (NOT TARGET install-binary) if (NOT TARGET install-binary)
add_custom_target(install-binary add_custom_target(install-binary
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=binary -P COMMAND "${CMAKE_COMMAND}"
-DCMAKE_INSTALL_COMPONENT=binary -P
"${CMAKE_BINARY_DIR}/cmake_install.cmake") "${CMAKE_BINARY_DIR}/cmake_install.cmake")
endif () endif ()
add_dependencies(install-binary ${META_TARGET_NAME}) add_dependencies(install-binary ${META_TARGET_NAME})
@ -101,13 +102,15 @@ if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
endforeach () endforeach ()
if (NOT TARGET install-desktop) if (NOT TARGET install-desktop)
add_custom_target(install-desktop add_custom_target(install-desktop
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=desktop -P COMMAND "${CMAKE_COMMAND}"
-DCMAKE_INSTALL_COMPONENT=desktop -P
"${CMAKE_BINARY_DIR}/cmake_install.cmake") "${CMAKE_BINARY_DIR}/cmake_install.cmake")
endif () endif ()
add_dependencies(install-desktop ${META_TARGET_NAME}) add_dependencies(install-desktop ${META_TARGET_NAME})
if (NOT TARGET install-appimage) if (NOT TARGET install-appimage)
add_custom_target(install-appimage add_custom_target(install-appimage
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=appimage -P COMMAND "${CMAKE_COMMAND}"
-DCMAKE_INSTALL_COMPONENT=appimage -P
"${CMAKE_BINARY_DIR}/cmake_install.cmake") "${CMAKE_BINARY_DIR}/cmake_install.cmake")
endif () endif ()
add_dependencies(install-appimage ${META_TARGET_NAME}) add_dependencies(install-appimage ${META_TARGET_NAME})
@ -115,7 +118,8 @@ if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
# add install target for stripped binaries # add install target for stripped binaries
if (NOT TARGET install-binary-strip) if (NOT TARGET install-binary-strip)
add_custom_target(install-binary-strip add_custom_target(install-binary-strip
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_DO_STRIP=1 -DCMAKE_INSTALL_COMPONENT=binary -P COMMAND "${CMAKE_COMMAND}"
-DCMAKE_INSTALL_DO_STRIP=1 -DCMAKE_INSTALL_COMPONENT=binary -P
"${CMAKE_BINARY_DIR}/cmake_install.cmake") "${CMAKE_BINARY_DIR}/cmake_install.cmake")
endif () endif ()
add_dependencies(install-binary-strip ${META_TARGET_NAME}) add_dependencies(install-binary-strip ${META_TARGET_NAME})
@ -171,7 +175,11 @@ function (add_custom_desktop_file)
DESKTOP_FILE_ADDITIONAL_ENTRIES) DESKTOP_FILE_ADDITIONAL_ENTRIES)
set(MULTI_VALUE_ARGS) set(MULTI_VALUE_ARGS)
set(OPTIONAL_ARGS) set(OPTIONAL_ARGS)
cmake_parse_arguments(ARGS "${OPTIONAL_ARGS}" "${ONE_VALUE_ARGS}" "${MULTI_VALUE_ARGS}" ${ARGN}) cmake_parse_arguments(ARGS
"${OPTIONAL_ARGS}"
"${ONE_VALUE_ARGS}"
"${MULTI_VALUE_ARGS}"
${ARGN})
if (NOT ARGS_FILE_NAME OR NOT ARGS_DESKTOP_FILE_APP_NAME OR NOT ARGS_DESKTOP_FILE_CMD) if (NOT ARGS_FILE_NAME OR NOT ARGS_DESKTOP_FILE_APP_NAME OR NOT ARGS_DESKTOP_FILE_CMD)
message(FATAL_ERROR "Not all mandatory arguments specified.") message(FATAL_ERROR "Not all mandatory arguments specified.")
endif () endif ()

View File

@ -51,7 +51,8 @@ endif ()
# allow setting a library/application target suffix - A different configuration name might not require a different target # allow setting a library/application target suffix - A different configuration name might not require a different target
# name since it might differ anyways (e.g. library extensions for static and shared configuration). Hence there's not simply # name since it might differ anyways (e.g. library extensions for static and shared configuration). Hence there's not simply
# the configuration name used to distinguish targets as well. # the configuration name used to distinguish targets as well.
set(${META_PROJECT_VARNAME_UPPER}_CONFIGURATION_TARGET_SUFFIX "" set(${META_PROJECT_VARNAME_UPPER}_CONFIGURATION_TARGET_SUFFIX
""
CACHE STRING "sets a target suffix for ${META_PROJECT_NAME}") CACHE STRING "sets a target suffix for ${META_PROJECT_NAME}")
set(CONFIGURATION_TARGET_SUFFIX "" CACHE STRING "sets the target suffix for all projects within the current build") set(CONFIGURATION_TARGET_SUFFIX "" CACHE STRING "sets the target suffix for all projects within the current build")
if (${META_PROJECT_VARNAME_UPPER}_CONFIGURATION_TARGET_SUFFIX STREQUAL "none") if (${META_PROJECT_VARNAME_UPPER}_CONFIGURATION_TARGET_SUFFIX STREQUAL "none")
@ -275,7 +276,11 @@ set(FORMATABLE_FILES
${QML_SRC_FILES}) ${QML_SRC_FILES})
# only format C/C++ files (and not eg. QML files) # only format C/C++ files (and not eg. QML files)
if (FORMATABLE_FILES) if (FORMATABLE_FILES)
list(FILTER FORMATABLE_FILES INCLUDE REGEX ".*\\.(c|cpp|h|hpp)") list(FILTER
FORMATABLE_FILES
INCLUDE
REGEX
".*\\.(c|cpp|h|hpp)")
endif () endif ()
# determine source files which might be passed to cmake-format # determine source files which might be passed to cmake-format
@ -285,7 +290,7 @@ set(FORMATABLE_FILES_CMAKE ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt ${CMAKE_MO
if (EXISTS "${CLANG_FORMAT_RULES}") if (EXISTS "${CLANG_FORMAT_RULES}")
add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/.clang-format" add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/.clang-format"
COMMAND "${CMAKE_COMMAND}" -E create_symlink "${CLANG_FORMAT_RULES}" COMMAND "${CMAKE_COMMAND}" -E create_symlink "${CLANG_FORMAT_RULES}"
"${CMAKE_CURRENT_SOURCE_DIR}/.clang-format" "${CMAKE_CURRENT_SOURCE_DIR}/.clang-format"
COMMENT "Linking coding style from ${CLANG_FORMAT_RULES}") COMMENT "Linking coding style from ${CLANG_FORMAT_RULES}")
else () else ()
message(WARNING "Format rules for clang-format not found.") message(WARNING "Format rules for clang-format not found.")
@ -332,7 +337,7 @@ if (NOT META_NO_TIDY AND CMAKE_FORMAT_ENABLED AND FORMATABLE_FILES_CMAKE)
message(FATAL_ERROR "Unable to add tidy target; cmake-format not found") message(FATAL_ERROR "Unable to add tidy target; cmake-format not found")
endif () endif ()
if (NOT META_CMAKE_FORMAT_OPTIONS) if (NOT META_CMAKE_FORMAT_OPTIONS)
set(META_CMAKE_FORMAT_OPTIONS --tab-size=4 --separate-ctrl-name-with-space=True --line-width=125) set(META_CMAKE_FORMAT_OPTIONS --tab-size=4 --separate-ctrl-name-with-space=True --line-width=125 --autosort=False)
endif () endif ()
add_custom_target("${META_TARGET_NAME}_cmake_tidy" add_custom_target("${META_TARGET_NAME}_cmake_tidy"
COMMAND "${CMAKE_FORMAT_BIN}" --in-place ${META_CMAKE_FORMAT_OPTIONS} ${FORMATABLE_FILES_CMAKE} COMMAND "${CMAKE_FORMAT_BIN}" --in-place ${META_CMAKE_FORMAT_OPTIONS} ${FORMATABLE_FILES_CMAKE}
@ -348,7 +353,8 @@ endif ()
# add target for static code analysis using clang-tidy # add target for static code analysis using clang-tidy
if (NOT META_NO_STATIC_ANALYSIS AND FORMATABLE_FILES) if (NOT META_NO_STATIC_ANALYSIS AND FORMATABLE_FILES)
option(CLANG_TIDY_ENABLED "enables creation of static-check target using clang-tidy" OFF) option(CLANG_TIDY_ENABLED "enables creation of static-check target using clang-tidy" OFF)
set(CLANG_TIDY_CHECKS "" set(CLANG_TIDY_CHECKS
""
CACHE STRING CACHE STRING
"-*,clang-analyzer-*,cppcoreguidelines-*,modernize-*,performance-*,portability-*,readability-*,android-*") "-*,clang-analyzer-*,cppcoreguidelines-*,modernize-*,performance-*,portability-*,readability-*,android-*")
if (CLANG_TIDY_ENABLED) if (CLANG_TIDY_ENABLED)
@ -411,7 +417,10 @@ if (NOT META_NO_STATIC_ANALYSIS AND FORMATABLE_FILES)
endforeach () endforeach ()
# mark all symbolic output files actually as symbolic # mark all symbolic output files actually as symbolic
set_source_files_properties(${CLANG_TIDY_SYMBOLIC_OUTPUT_FILES} PROPERTIES SYMBOLIC YES) set_source_files_properties(${CLANG_TIDY_SYMBOLIC_OUTPUT_FILES}
PROPERTIES
SYMBOLIC
YES)
# add targets # add targets
add_custom_target("${META_TARGET_NAME}_static_check" add_custom_target("${META_TARGET_NAME}_static_check"
@ -436,11 +445,7 @@ endif ()
# enable source code based coverage analysis using clang # enable source code based coverage analysis using clang
option(CLANG_SOURCE_BASED_COVERAGE_ENABLED "enables creation of coverage targets for source-based coverage with clang" OFF) option(CLANG_SOURCE_BASED_COVERAGE_ENABLED "enables creation of coverage targets for source-based coverage with clang" OFF)
if (CLANG_SOURCE_BASED_COVERAGE_ENABLED) if (CLANG_SOURCE_BASED_COVERAGE_ENABLED)
if (NOT CMAKE_HOST_UNIX if (NOT CMAKE_HOST_UNIX OR NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
OR NOT
"${CMAKE_CXX_COMPILER_ID}"
STREQUAL
"Clang")
message(FATAL_ERROR "Source-based coverage only available under UNIX with Clang") message(FATAL_ERROR "Source-based coverage only available under UNIX with Clang")
endif () endif ()
if (NOT META_PROJECT_TYPE STREQUAL "application" AND DISABLE_SHARED_LIBS) if (NOT META_PROJECT_TYPE STREQUAL "application" AND DISABLE_SHARED_LIBS)
@ -467,7 +472,8 @@ if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
endforeach () endforeach ()
if (NOT TARGET install-extra-files) if (NOT TARGET install-extra-files)
add_custom_target(install-extra-files add_custom_target(install-extra-files
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=extra-files -P COMMAND "${CMAKE_COMMAND}"
-DCMAKE_INSTALL_COMPONENT=extra-files -P
"${CMAKE_BINARY_DIR}/cmake_install.cmake") "${CMAKE_BINARY_DIR}/cmake_install.cmake")
endif () endif ()
endif () endif ()

View File

@ -26,7 +26,11 @@ endif ()
get_target_property(INTERFACE_LINK_LIBRARIES_LIST "${META_TARGET_NAME}" INTERFACE_LINK_LIBRARIES) get_target_property(INTERFACE_LINK_LIBRARIES_LIST "${META_TARGET_NAME}" INTERFACE_LINK_LIBRARIES)
# make list with link-time dependency versions and display names # make list with link-time dependency versions and display names
foreach (DEPENDENCY IN LISTS LINK_LIBRARIES_LIST INTERFACE_LINK_LIBRARIES_LIST) foreach (DEPENDENCY
IN
LISTS
LINK_LIBRARIES_LIST
INTERFACE_LINK_LIBRARIES_LIST)
# skip non-targets and already processed dependencies # skip non-targets and already processed dependencies
if (NOT TARGET "${DEPENDENCY}" OR "${DEPENDENCY}" IN_LIST PROCESSED_DEPENDENCIES) if (NOT TARGET "${DEPENDENCY}" OR "${DEPENDENCY}" IN_LIST PROCESSED_DEPENDENCIES)
continue() continue()
@ -69,7 +73,11 @@ endforeach ()
# format "DEPENCENCY_VERSIONS_ARRAY" # format "DEPENCENCY_VERSIONS_ARRAY"
if (DEPENCENCY_VERSIONS) if (DEPENCENCY_VERSIONS)
include(ListToString) include(ListToString)
list_to_string("," " \\\n \"" "\"" "${DEPENCENCY_VERSIONS}" DEPENCENCY_VERSIONS_ARRAY) list_to_string(","
" \\\n \""
"\""
"${DEPENCENCY_VERSIONS}"
DEPENCENCY_VERSIONS_ARRAY)
endif () endif ()
# add configuration header # add configuration header
@ -77,7 +85,10 @@ configure_file("${CONFIG_H_TEMPLATE_FILE}" "${CMAKE_CURRENT_BINARY_DIR}/resource
# ensure generated include files can be included via #include "resources/config.h" # ensure generated include files can be included via #include "resources/config.h"
if (NOT META_HEADER_ONLY_LIB) if (NOT META_HEADER_ONLY_LIB)
foreach (TARGET_NAME ${META_TARGET_NAME} ${META_TARGET_NAME}_tests ${META_TARGET_NAME}_testlib) foreach (TARGET_NAME
${META_TARGET_NAME}
${META_TARGET_NAME}_tests
${META_TARGET_NAME}_testlib)
if (TARGET ${TARGET_NAME}) if (TARGET ${TARGET_NAME})
target_include_directories(${TARGET_NAME} PRIVATE "${CMAKE_CURRENT_BINARY_DIR}") target_include_directories(${TARGET_NAME} PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
endif () endif ()

View File

@ -52,7 +52,11 @@ set(DOXY_MAIN_PAGE_FILE "${DOXY_PATH_PREFIX}${DOXY_MAIN_PAGE_FILE}")
# convert DOXY_INPUT_FILES to whitespace-separated list # convert DOXY_INPUT_FILES to whitespace-separated list
include(ListToString) include(ListToString)
list_to_string(" " "\"${DOXY_PATH_PREFIX}" "\"" "${DOXY_INPUT_FILES}" DOXY_INPUT_FILES_WHITESPACE_SEPARATED) list_to_string(" "
"\"${DOXY_PATH_PREFIX}"
"\""
"${DOXY_INPUT_FILES}"
DOXY_INPUT_FILES_WHITESPACE_SEPARATED)
# generate Doxygen configuration # generate Doxygen configuration
configure_file("${DOXYGEN_TEMPLATE_FILE}" "${CMAKE_CURRENT_BINARY_DIR}/doxygen.config") configure_file("${DOXYGEN_TEMPLATE_FILE}" "${CMAKE_CURRENT_BINARY_DIR}/doxygen.config")
@ -69,7 +73,8 @@ if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/api-doc" DESTINATION "${META_DATA_DIR}" COMPONENT api-doc OPTIONAL) install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/api-doc" DESTINATION "${META_DATA_DIR}" COMPONENT api-doc OPTIONAL)
if (NOT TARGET install-api-doc) if (NOT TARGET install-api-doc)
add_custom_target(install-api-doc add_custom_target(install-api-doc
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=api-doc -P COMMAND "${CMAKE_COMMAND}"
-DCMAKE_INSTALL_COMPONENT=api-doc -P
"${CMAKE_BINARY_DIR}/cmake_install.cmake") "${CMAKE_BINARY_DIR}/cmake_install.cmake")
endif () endif ()
endif () endif ()

View File

@ -160,14 +160,7 @@ endforeach ()
# populate META_PRIVATE_LIB_DEPENDS (only required when building static libraries) # populate META_PRIVATE_LIB_DEPENDS (only required when building static libraries)
if (NOT BUILD_SHARED_LIBS) if (NOT BUILD_SHARED_LIBS)
foreach (DEPENDENCY ${PRIVATE_LIBRARIES}) foreach (DEPENDENCY ${PRIVATE_LIBRARIES})
if (NOT if (NOT "${DEPENDENCY}" IN_LIST META_PUBLIC_LIB_DEPENDS AND NOT "${DEPENDENCY}" IN_LIST META_PRIVATE_LIB_DEPENDS)
"${DEPENDENCY}"
IN_LIST
META_PUBLIC_LIB_DEPENDS
AND NOT
"${DEPENDENCY}"
IN_LIST
META_PRIVATE_LIB_DEPENDS)
list(APPEND META_PRIVATE_LIB_DEPENDS ${DEPENDENCY}) list(APPEND META_PRIVATE_LIB_DEPENDS ${DEPENDENCY})
endif () endif ()
endforeach () endforeach ()
@ -176,11 +169,9 @@ endif ()
# Qt Creator does not show INTERFACE_SOURCES in project tree, so create a custom target as workaround # Qt Creator does not show INTERFACE_SOURCES in project tree, so create a custom target as workaround
if (META_HEADER_ONLY_LIB) if (META_HEADER_ONLY_LIB)
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/headeronly.cpp" file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/headeronly.cpp"
"// not belonging to a real target, only for header-only lib files showing up in Qt Creator") "// not belonging to a real target, only for header-only lib files showing up in Qt Creator")
add_library(${META_TARGET_NAME}_interface_sources_for_qtcreator add_library(${META_TARGET_NAME}_interface_sources_for_qtcreator EXCLUDE_FROM_ALL
EXCLUDE_FROM_ALL "${CMAKE_CURRENT_BINARY_DIR}/headeronly.cpp" ${HEADER_FILES})
"${CMAKE_CURRENT_BINARY_DIR}/headeronly.cpp"
${HEADER_FILES})
target_include_directories(${META_TARGET_NAME}_interface_sources_for_qtcreator target_include_directories(${META_TARGET_NAME}_interface_sources_for_qtcreator
INTERFACE $<BUILD_INTERFACE:${TARGET_INCLUDE_DIRECTORY_BUILD_INTERFACE}> INTERFACE $<BUILD_INTERFACE:${TARGET_INCLUDE_DIRECTORY_BUILD_INTERFACE}>
$<INSTALL_INTERFACE:${HEADER_INSTALL_DESTINATION}> ${PUBLIC_INCLUDE_DIRS}) $<INSTALL_INTERFACE:${HEADER_INSTALL_DESTINATION}> ${PUBLIC_INCLUDE_DIRS})
@ -205,7 +196,8 @@ endif ()
set(ADDITIONAL_ARGUMENTS_FOR_REQUIRED_CMAKE_PACKAGES) set(ADDITIONAL_ARGUMENTS_FOR_REQUIRED_CMAKE_PACKAGES)
foreach (INTERFACE_REQUIRED_PACKAGE ${INTERFACE_REQUIRED_PACKAGES}) foreach (INTERFACE_REQUIRED_PACKAGE ${INTERFACE_REQUIRED_PACKAGES})
if (PACKAGE_ARGS_${INTERFACE_REQUIRED_PACKAGE}) if (PACKAGE_ARGS_${INTERFACE_REQUIRED_PACKAGE})
set(ADDITIONAL_ARGUMENTS_FOR_REQUIRED_CMAKE_PACKAGES set(
ADDITIONAL_ARGUMENTS_FOR_REQUIRED_CMAKE_PACKAGES
"${ADDITIONAL_ARGUMENTS_FOR_REQUIRED_CMAKE_PACKAGES}set(${META_PROJECT_VARNAME_UPPER}_FIND_PACKAGE_ARGS_${INTERFACE_REQUIRED_PACKAGE} \"${PACKAGE_ARGS_${INTERFACE_REQUIRED_PACKAGE}}\")\n" "${ADDITIONAL_ARGUMENTS_FOR_REQUIRED_CMAKE_PACKAGES}set(${META_PROJECT_VARNAME_UPPER}_FIND_PACKAGE_ARGS_${INTERFACE_REQUIRED_PACKAGE} \"${PACKAGE_ARGS_${INTERFACE_REQUIRED_PACKAGE}}\")\n"
) )
endif () endif ()
@ -260,7 +252,10 @@ write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/${META_PROJECT_NAME
COMPATIBILITY SameMajorVersion) COMPATIBILITY SameMajorVersion)
# compute dependencies for pkg-config file # compute dependencies for pkg-config file
macro (compute_dependencies_for_package_config DEPENDS OUTPUT_VAR_PKGS OUTPUT_VAR_LIBS) macro (compute_dependencies_for_package_config
DEPENDS
OUTPUT_VAR_PKGS
OUTPUT_VAR_LIBS)
unset(${OUTPUT_VAR_PKGS}) unset(${OUTPUT_VAR_PKGS})
unset(${OUTPUT_VAR_LIBS}) unset(${OUTPUT_VAR_LIBS})
foreach (DEPENDENCY ${${DEPENDS}}) foreach (DEPENDENCY ${${DEPENDS}})
@ -336,7 +331,8 @@ if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
install(FILES ${CMAKE_CONFIG_FILES} DESTINATION "${META_DATA_DIR}/cmake" COMPONENT cmake-config) install(FILES ${CMAKE_CONFIG_FILES} DESTINATION "${META_DATA_DIR}/cmake" COMPONENT cmake-config)
if (NOT TARGET install-cmake-config) if (NOT TARGET install-cmake-config)
add_custom_target(install-cmake-config add_custom_target(install-cmake-config
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=cmake-config -P COMMAND "${CMAKE_COMMAND}"
-DCMAKE_INSTALL_COMPONENT=cmake-config -P
"${CMAKE_BINARY_DIR}/cmake_install.cmake") "${CMAKE_BINARY_DIR}/cmake_install.cmake")
endif () endif ()
@ -346,21 +342,24 @@ if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
endif () endif ()
if (NOT TARGET install-pkg-config) if (NOT TARGET install-pkg-config)
add_custom_target(install-pkg-config add_custom_target(install-pkg-config
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=pkg-config -P COMMAND "${CMAKE_COMMAND}"
-DCMAKE_INSTALL_COMPONENT=pkg-config -P
"${CMAKE_BINARY_DIR}/cmake_install.cmake") "${CMAKE_BINARY_DIR}/cmake_install.cmake")
endif () endif ()
# add install target for libs # add install target for libs
if (NOT TARGET install-binary) if (NOT TARGET install-binary)
add_custom_target(install-binary add_custom_target(install-binary
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=binary -P COMMAND "${CMAKE_COMMAND}"
-DCMAKE_INSTALL_COMPONENT=binary -P
"${CMAKE_BINARY_DIR}/cmake_install.cmake") "${CMAKE_BINARY_DIR}/cmake_install.cmake")
endif () endif ()
# add install target for stripped libs # add install target for stripped libs
if (NOT TARGET install-binary-strip) if (NOT TARGET install-binary-strip)
add_custom_target(install-binary-strip add_custom_target(install-binary-strip
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_DO_STRIP=1 -DCMAKE_INSTALL_COMPONENT=binary -P COMMAND "${CMAKE_COMMAND}"
-DCMAKE_INSTALL_DO_STRIP=1 -DCMAKE_INSTALL_COMPONENT=binary -P
"${CMAKE_BINARY_DIR}/cmake_install.cmake") "${CMAKE_BINARY_DIR}/cmake_install.cmake")
endif () endif ()
@ -412,7 +411,8 @@ if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
endforeach () endforeach ()
if (NOT TARGET install-header) if (NOT TARGET install-header)
add_custom_target(install-header add_custom_target(install-header
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=header -P COMMAND "${CMAKE_COMMAND}"
-DCMAKE_INSTALL_COMPONENT=header -P
"${CMAKE_BINARY_DIR}/cmake_install.cmake") "${CMAKE_BINARY_DIR}/cmake_install.cmake")
endif () endif ()
endif () endif ()
@ -424,7 +424,8 @@ if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
endforeach () endforeach ()
if (NOT TARGET install-cmake-modules) if (NOT TARGET install-cmake-modules)
add_custom_target(install-cmake-modules add_custom_target(install-cmake-modules
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=cmake-modules -P COMMAND "${CMAKE_COMMAND}"
-DCMAKE_INSTALL_COMPONENT=cmake-modules -P
"${CMAKE_BINARY_DIR}/cmake_install.cmake") "${CMAKE_BINARY_DIR}/cmake_install.cmake")
endif () endif ()
@ -435,14 +436,18 @@ if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
endforeach () endforeach ()
if (NOT TARGET install-cmake-templates) if (NOT TARGET install-cmake-templates)
add_custom_target(install-cmake-templates add_custom_target(install-cmake-templates
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=cmake-templates -P COMMAND "${CMAKE_COMMAND}"
-DCMAKE_INSTALL_COMPONENT=cmake-templates -P
"${CMAKE_BINARY_DIR}/cmake_install.cmake") "${CMAKE_BINARY_DIR}/cmake_install.cmake")
endif () endif ()
# add install target for all the cmake stuff # add install target for all the cmake stuff
if (NOT TARGET install-cmake-stuff) if (NOT TARGET install-cmake-stuff)
add_custom_target(install-cmake-stuff) add_custom_target(install-cmake-stuff)
add_dependencies(install-cmake-stuff install-cmake-config install-cmake-modules install-cmake-templates) add_dependencies(install-cmake-stuff
install-cmake-config
install-cmake-modules
install-cmake-templates)
endif () endif ()
# add mingw-w64 specific install targets # add mingw-w64 specific install targets
@ -450,11 +455,19 @@ if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
if (NOT TARGET install-mingw-w64) if (NOT TARGET install-mingw-w64)
add_custom_target(install-mingw-w64) add_custom_target(install-mingw-w64)
endif () endif ()
add_dependencies(install-mingw-w64 install-binary install-header install-cmake-stuff install-pkg-config) add_dependencies(install-mingw-w64
install-binary
install-header
install-cmake-stuff
install-pkg-config)
if (NOT TARGET install-mingw-w64-strip) if (NOT TARGET install-mingw-w64-strip)
add_custom_target(install-mingw-w64-strip) add_custom_target(install-mingw-w64-strip)
endif () endif ()
add_dependencies(install-mingw-w64-strip install-binary-strip install-header install-cmake-stuff install-pkg-config) add_dependencies(install-mingw-w64-strip
install-binary-strip
install-header
install-cmake-stuff
install-pkg-config)
if (LOCALIZATION_TARGET) if (LOCALIZATION_TARGET)
add_dependencies(install-mingw-w64 ${LOCALIZATION_TARGET}) add_dependencies(install-mingw-w64 ${LOCALIZATION_TARGET})
add_dependencies(install-mingw-w64-strip ${LOCALIZATION_TARGET}) add_dependencies(install-mingw-w64-strip ${LOCALIZATION_TARGET})
@ -468,14 +481,16 @@ if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
if (BUILD_SHARED_LIBS AND NOT META_HEADER_ONLY_LIB) if (BUILD_SHARED_LIBS AND NOT META_HEADER_ONLY_LIB)
add_custom_target( add_custom_target(
install-${META_TARGET_NAME}-mingw-w64-importlib-strip install-${META_TARGET_NAME}-mingw-w64-importlib-strip
COMMAND "${STRIP_BINARY_PATH}" -g COMMAND "${STRIP_BINARY_PATH}"
-g
"\$\{DESTDIR\}\$\{DESTDIR:+/\}${CMAKE_INSTALL_PREFIX}/lib/lib${META_TARGET_NAME}.dll.a") "\$\{DESTDIR\}\$\{DESTDIR:+/\}${CMAKE_INSTALL_PREFIX}/lib/lib${META_TARGET_NAME}.dll.a")
add_dependencies(install-${META_TARGET_NAME}-mingw-w64-importlib-strip install-binary-strip) add_dependencies(install-${META_TARGET_NAME}-mingw-w64-importlib-strip install-binary-strip)
add_dependencies(install-mingw-w64-strip install-${META_TARGET_NAME}-mingw-w64-importlib-strip) add_dependencies(install-mingw-w64-strip install-${META_TARGET_NAME}-mingw-w64-importlib-strip)
endif () endif ()
if (BUILD_STATIC_LIBS AND NOT META_HEADER_ONLY_LIB) if (BUILD_STATIC_LIBS AND NOT META_HEADER_ONLY_LIB)
add_custom_target(install-${META_TARGET_NAME}-mingw-w64-staticlib-strip add_custom_target(install-${META_TARGET_NAME}-mingw-w64-staticlib-strip
COMMAND "${STRIP_BINARY_PATH}" -g COMMAND "${STRIP_BINARY_PATH}"
-g
"\$\{DESTDIR\}\$\{DESTDIR:+/\}${CMAKE_INSTALL_PREFIX}/lib/lib${META_TARGET_NAME}.a") "\$\{DESTDIR\}\$\{DESTDIR:+/\}${CMAKE_INSTALL_PREFIX}/lib/lib${META_TARGET_NAME}.a")
add_dependencies(install-${META_TARGET_NAME}-mingw-w64-staticlib-strip install-binary-strip) add_dependencies(install-${META_TARGET_NAME}-mingw-w64-staticlib-strip install-binary-strip)
add_dependencies(install-mingw-w64-strip install-${META_TARGET_NAME}-mingw-w64-staticlib-strip) add_dependencies(install-mingw-w64-strip install-${META_TARGET_NAME}-mingw-w64-staticlib-strip)

View File

@ -4,7 +4,12 @@ if (DEFINED LIST_TO_STRING_LOADED)
endif () endif ()
set(LIST_TO_STRING_LOADED ON) set(LIST_TO_STRING_LOADED ON)
function (list_to_string separator prefix suffix input_list output_string_var) function (list_to_string
separator
prefix
suffix
input_list
output_string_var)
set(res "") set(res "")
# get list length # get list length
list(LENGTH input_list list_length) list(LENGTH input_list list_length)

View File

@ -25,7 +25,8 @@ if (BASH_COMPLETION_ENABLED)
COMPONENT bash-completion) COMPONENT bash-completion)
if (NOT TARGET install-bash-completion) if (NOT TARGET install-bash-completion)
add_custom_target(install-bash-completion add_custom_target(install-bash-completion
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=bash-completion -P COMMAND "${CMAKE_COMMAND}"
-DCMAKE_INSTALL_COMPONENT=bash-completion -P
"${CMAKE_BINARY_DIR}/cmake_install.cmake") "${CMAKE_BINARY_DIR}/cmake_install.cmake")
endif () endif ()
endif () endif ()

View File

@ -4,7 +4,10 @@ if (DEFINED TEMPLATE_FINDER_LOADED)
endif () endif ()
set(TEMPLATE_FINDER_LOADED YES) set(TEMPLATE_FINDER_LOADED YES)
function (find_template_file FILE_NAME PROJECT_VAR_NAME OUTPUT_VAR) function (find_template_file
FILE_NAME
PROJECT_VAR_NAME
OUTPUT_VAR)
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake/templates/${FILE_NAME}.in") if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake/templates/${FILE_NAME}.in")
# check own source directory # check own source directory
set(${OUTPUT_VAR} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/templates/${FILE_NAME}.in" PARENT_SCOPE) set(${OUTPUT_VAR} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/templates/${FILE_NAME}.in" PARENT_SCOPE)

View File

@ -24,12 +24,10 @@ if (NOT META_NO_CPP_UNIT)
pkg_search_module(CPP_UNIT_CONFIG_${META_PROJECT_NAME} cppunit>=${META_REQUIRED_CPP_UNIT_VERSION}) pkg_search_module(CPP_UNIT_CONFIG_${META_PROJECT_NAME} cppunit>=${META_REQUIRED_CPP_UNIT_VERSION})
if (CPP_UNIT_CONFIG_${META_PROJECT_NAME}_FOUND) if (CPP_UNIT_CONFIG_${META_PROJECT_NAME}_FOUND)
set(CPP_UNIT_LIB "${CPP_UNIT_CONFIG_${META_PROJECT_NAME}_LDFLAGS_OTHER}" set(CPP_UNIT_LIB "${CPP_UNIT_CONFIG_${META_PROJECT_NAME}_LDFLAGS_OTHER}"
"${CPP_UNIT_CONFIG_${META_PROJECT_NAME}_LIBRARIES}" "${CPP_UNIT_CONFIG_${META_PROJECT_NAME}_LIBRARIES}" CACHE FILEPATH "cppunit lib" FORCE)
CACHE FILEPATH "cppunit lib" set(CPP_UNIT_INCLUDE_DIR
FORCE) ${CPP_UNIT_CONFIG_${META_PROJECT_NAME}_INCLUDE_DIRS}
set(CPP_UNIT_INCLUDE_DIR ${CPP_UNIT_CONFIG_${META_PROJECT_NAME}_INCLUDE_DIRS} CACHE FILEPATH "cppunit include dir" FORCE)
CACHE FILEPATH "cppunit include dir"
FORCE)
link_directories(${CPP_UNIT_CONFIG_${META_PROJECT_NAME}_LIBRARY_DIRS}) link_directories(${CPP_UNIT_CONFIG_${META_PROJECT_NAME}_LIBRARY_DIRS})
else () else ()
# fall back to find_library # fall back to find_library
@ -102,7 +100,13 @@ if (META_PROJECT_IS_APPLICATION)
# using functions directly from the tests might be required -> also create a 'testlib' and link tests against it # using functions directly from the tests might be required -> also create a 'testlib' and link tests against it
if (LINK_TESTS_AGAINST_APP_TARGET) if (LINK_TESTS_AGAINST_APP_TARGET)
# create target for the 'testlib' # create target for the 'testlib'
set(TESTLIB_FILES ${HEADER_FILES} ${SRC_FILES} ${WIDGETS_FILES} ${QML_FILES} ${RES_FILES} ${QM_FILES}) set(TESTLIB_FILES
${HEADER_FILES}
${SRC_FILES}
${WIDGETS_FILES}
${QML_FILES}
${RES_FILES}
${QM_FILES})
list(REMOVE_ITEM TESTLIB_FILES main.h main.cpp) list(REMOVE_ITEM TESTLIB_FILES main.h main.cpp)
add_library(${META_TARGET_NAME}_testlib SHARED ${TESTLIB_FILES}) add_library(${META_TARGET_NAME}_testlib SHARED ${TESTLIB_FILES})
target_link_libraries(${META_TARGET_NAME}_testlib target_link_libraries(${META_TARGET_NAME}_testlib
@ -173,7 +177,10 @@ if (META_PROJECT_TYPE STREQUAL "application")
endif () endif ()
if (NOT META_TEST_TARGET_IS_MANUAL) if (NOT META_TEST_TARGET_IS_MANUAL)
add_test(NAME ${META_PROJECT_NAME}_run_tests add_test(NAME ${META_PROJECT_NAME}_run_tests
COMMAND ${META_TARGET_NAME}_tests -p "${CMAKE_CURRENT_SOURCE_DIR}/testfiles" -w COMMAND ${META_TARGET_NAME}_tests
-p
"${CMAKE_CURRENT_SOURCE_DIR}/testfiles"
-w
"${CMAKE_CURRENT_BINARY_DIR}/testworkingdir" ${RUN_TESTS_APPLICATION_ARGS}) "${CMAKE_CURRENT_BINARY_DIR}/testworkingdir" ${RUN_TESTS_APPLICATION_ARGS})
endif () endif ()
@ -203,10 +210,16 @@ if (CLANG_SOURCE_BASED_COVERAGE_AVAILABLE)
# add command to execute tests generating raw profiling data # add command to execute tests generating raw profiling data
add_custom_command( add_custom_command(
OUTPUT "${LLVM_PROFILE_RAW_FILE}" "${LLVM_PROFILE_RAW_LIST_FILE}" OUTPUT "${LLVM_PROFILE_RAW_FILE}" "${LLVM_PROFILE_RAW_LIST_FILE}"
COMMAND "${CMAKE_COMMAND}" -E env "LLVM_PROFILE_FILE=${LLVM_PROFILE_RAW_FILE}" COMMAND "${CMAKE_COMMAND}"
"LLVM_PROFILE_LIST_FILE=${LLVM_PROFILE_RAW_LIST_FILE}" $<TARGET_FILE:${META_TARGET_NAME}_tests> -p -E
"${CMAKE_CURRENT_SOURCE_DIR}/testfiles" -w "${CMAKE_CURRENT_BINARY_DIR}/testworkingdir" env
${RUN_TESTS_APPLICATION_ARGS} "LLVM_PROFILE_FILE=${LLVM_PROFILE_RAW_FILE}"
"LLVM_PROFILE_LIST_FILE=${LLVM_PROFILE_RAW_LIST_FILE}"
$<TARGET_FILE:${META_TARGET_NAME}_tests>
-p
"${CMAKE_CURRENT_SOURCE_DIR}/testfiles"
-w
"${CMAKE_CURRENT_BINARY_DIR}/testworkingdir" ${RUN_TESTS_APPLICATION_ARGS}
COMMENT "Executing ${META_TARGET_NAME}_tests to generate raw profiling data for source-based coverage report" COMMENT "Executing ${META_TARGET_NAME}_tests to generate raw profiling data for source-based coverage report"
DEPENDS "${META_TARGET_NAME}_tests") DEPENDS "${META_TARGET_NAME}_tests")
@ -216,8 +229,16 @@ if (CLANG_SOURCE_BASED_COVERAGE_AVAILABLE)
if (LLVM_PROFDATA_BIN AND LLVM_COV_BIN) if (LLVM_PROFDATA_BIN AND LLVM_COV_BIN)
# merge profiling data # merge profiling data
add_custom_command(OUTPUT "${LLVM_PROFILE_DATA_FILE}" add_custom_command(OUTPUT "${LLVM_PROFILE_DATA_FILE}"
COMMAND cat "${LLVM_PROFILE_RAW_LIST_FILE}" | xargs "${LLVM_PROFDATA_BIN}" merge -o COMMAND cat
"${LLVM_PROFILE_DATA_FILE}" -sparse "${LLVM_PROFILE_RAW_FILE}" "${LLVM_PROFILE_RAW_LIST_FILE}"
|
xargs
"${LLVM_PROFDATA_BIN}"
merge
-o
"${LLVM_PROFILE_DATA_FILE}"
-sparse
"${LLVM_PROFILE_RAW_FILE}"
COMMENT "Generating profiling data for source-based coverage report" COMMENT "Generating profiling data for source-based coverage report"
DEPENDS "${LLVM_PROFILE_RAW_FILE}" "${LLVM_PROFILE_RAW_LIST_FILE}") DEPENDS "${LLVM_PROFILE_RAW_FILE}" "${LLVM_PROFILE_RAW_LIST_FILE}")
@ -250,9 +271,18 @@ if (CLANG_SOURCE_BASED_COVERAGE_AVAILABLE)
list(APPEND LLVM_COV_ADDITIONAL_OPTIONS -show-functions) list(APPEND LLVM_COV_ADDITIONAL_OPTIONS -show-functions)
endif () endif ()
add_custom_command(OUTPUT "${COVERAGE_REPORT_FILE}" add_custom_command(OUTPUT "${COVERAGE_REPORT_FILE}"
COMMAND "${LLVM_COV_BIN}" report -format=text -stats -instr-profile "${LLVM_PROFILE_DATA_FILE}" COMMAND "${LLVM_COV_BIN}" report
${LLVM_COV_ADDITIONAL_OPTIONS} ${LLVM_COV_TARGET_FILE} ${HEADER_FILES} ${SRC_FILES} -format=text -stats -instr-profile
${WIDGETS_HEADER_FILES} ${WIDGETS_SOURCE_FILES} ${QML_HEADER_FILES} ${QML_SOURCE_FILES} > "${LLVM_PROFILE_DATA_FILE}"
${LLVM_COV_ADDITIONAL_OPTIONS}
${LLVM_COV_TARGET_FILE}
${HEADER_FILES}
${SRC_FILES}
${WIDGETS_HEADER_FILES}
${WIDGETS_SOURCE_FILES}
${QML_HEADER_FILES}
${QML_SOURCE_FILES}
>
"${COVERAGE_REPORT_FILE}" "${COVERAGE_REPORT_FILE}"
COMMENT "Generating coverage report (statistics per function)" COMMENT "Generating coverage report (statistics per function)"
DEPENDS "${LLVM_PROFILE_DATA_FILE}" DEPENDS "${LLVM_PROFILE_DATA_FILE}"
@ -261,10 +291,18 @@ if (CLANG_SOURCE_BASED_COVERAGE_AVAILABLE)
# generate coverage report with statistics per file (only possible with LLVM 5 if source files are specified) # generate coverage report with statistics per file (only possible with LLVM 5 if source files are specified)
if (LLVM_COV_VERSION GREATER_EQUAL 5.0.0) if (LLVM_COV_VERSION GREATER_EQUAL 5.0.0)
add_custom_command(OUTPUT "${COVERAGE_PER_FILE_REPORT_FILE}" add_custom_command(OUTPUT "${COVERAGE_PER_FILE_REPORT_FILE}"
COMMAND "${LLVM_COV_BIN}" report -format=text -stats -instr-profile COMMAND "${LLVM_COV_BIN}" report
"${LLVM_PROFILE_DATA_FILE}" ${LLVM_COV_TARGET_FILE} ${HEADER_FILES} ${SRC_FILES} -format=text -stats -instr-profile
${WIDGETS_HEADER_FILES} ${WIDGETS_SOURCE_FILES} ${QML_HEADER_FILES} "${LLVM_PROFILE_DATA_FILE}"
${QML_SOURCE_FILES} > "${COVERAGE_PER_FILE_REPORT_FILE}" ${LLVM_COV_TARGET_FILE}
${HEADER_FILES}
${SRC_FILES}
${WIDGETS_HEADER_FILES}
${WIDGETS_SOURCE_FILES}
${QML_HEADER_FILES}
${QML_SOURCE_FILES}
>
"${COVERAGE_PER_FILE_REPORT_FILE}"
COMMENT "Generating coverage report (statistics per file)" COMMENT "Generating coverage report (statistics per file)"
DEPENDS "${LLVM_PROFILE_DATA_FILE}" DEPENDS "${LLVM_PROFILE_DATA_FILE}"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}") WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
@ -286,7 +324,11 @@ if (CLANG_SOURCE_BASED_COVERAGE_AVAILABLE)
set(OVERALL_COVERAGE_AKW_SCRIPT "${CPP_UTILITIES_CONFIG_DIRS}/tests/calculateoverallcoverage.awk") set(OVERALL_COVERAGE_AKW_SCRIPT "${CPP_UTILITIES_CONFIG_DIRS}/tests/calculateoverallcoverage.awk")
endif () endif ()
add_custom_command(OUTPUT "${COVERAGE_OVERALL_REPORT_FILE}" add_custom_command(OUTPUT "${COVERAGE_OVERALL_REPORT_FILE}"
COMMAND awk -f "${OVERALL_COVERAGE_AKW_SCRIPT}" "${COVERAGE_REPORT_FILE}" > COMMAND awk
-f
"${OVERALL_COVERAGE_AKW_SCRIPT}"
"${COVERAGE_REPORT_FILE}"
>
"${COVERAGE_OVERALL_REPORT_FILE}" "${COVERAGE_OVERALL_REPORT_FILE}"
COMMENT "Generating coverage report (overall figures)" COMMENT "Generating coverage report (overall figures)"
DEPENDS "${OVERALL_COVERAGE_AKW_SCRIPT}" "${COVERAGE_REPORT_FILE}") DEPENDS "${OVERALL_COVERAGE_AKW_SCRIPT}" "${COVERAGE_REPORT_FILE}")
@ -294,9 +336,16 @@ if (CLANG_SOURCE_BASED_COVERAGE_AVAILABLE)
# generate HTML document showing covered/uncovered code # generate HTML document showing covered/uncovered code
add_custom_command(OUTPUT "${COVERAGE_HTML_REPORT_FILE}" add_custom_command(OUTPUT "${COVERAGE_HTML_REPORT_FILE}"
COMMAND "${LLVM_COV_BIN}" show -project-title="${META_APP_NAME}" -format=html -instr-profile COMMAND "${LLVM_COV_BIN}" show
"${LLVM_PROFILE_DATA_FILE}" ${LLVM_COV_TARGET_FILE} ${HEADER_FILES} ${SRC_FILES} -project-title="${META_APP_NAME}" -format=html -instr-profile
${WIDGETS_FILES} ${QML_FILES} > "${COVERAGE_HTML_REPORT_FILE}" "${LLVM_PROFILE_DATA_FILE}"
${LLVM_COV_TARGET_FILE}
${HEADER_FILES}
${SRC_FILES}
${WIDGETS_FILES}
${QML_FILES}
>
"${COVERAGE_HTML_REPORT_FILE}"
COMMENT "Generating HTML document showing covered/uncovered code" COMMENT "Generating HTML document showing covered/uncovered code"
DEPENDS "${LLVM_PROFILE_DATA_FILE}" DEPENDS "${LLVM_PROFILE_DATA_FILE}"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}") WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")

View File

@ -40,9 +40,12 @@ if (WINDOWS_ICON_ENABLED)
set(WINDOWS_ICON_RC_ENTRY "IDI_ICON1 ICON DISCARDABLE \"${WINDOWS_ICON_PATH}\"") set(WINDOWS_ICON_RC_ENTRY "IDI_ICON1 ICON DISCARDABLE \"${WINDOWS_ICON_PATH}\"")
add_custom_command(OUTPUT "${WINDOWS_ICON_PATH}" add_custom_command(OUTPUT "${WINDOWS_ICON_PATH}"
COMMAND ${FFMPEG_BIN} -y -i "${PNG_ICON_PATH}" -vf crop=${PNG_ICON_CROP},scale=64:64 COMMAND ${FFMPEG_BIN} -y -i "${PNG_ICON_PATH}" -vf crop=${PNG_ICON_CROP},scale=64:64
"${WINDOWS_ICON_PATH}" "${WINDOWS_ICON_PATH}"
DEPENDS "${PNG_ICON_PATH}") DEPENDS "${PNG_ICON_PATH}")
set_source_files_properties("${WINDOWS_RC_FILE}" PROPERTIES OBJECT_DEPENDS "${WINDOWS_ICON_PATH}") set_source_files_properties("${WINDOWS_RC_FILE}"
PROPERTIES
OBJECT_DEPENDS
"${WINDOWS_ICON_PATH}")
message(STATUS "Generating Windows icon from \"${PNG_ICON_PATH}\" via ${FFMPEG_BIN}.") message(STATUS "Generating Windows icon from \"${PNG_ICON_PATH}\" via ${FFMPEG_BIN}.")
elseif (NOT USING_DEFAULT_PNG_ICON_PATH) elseif (NOT USING_DEFAULT_PNG_ICON_PATH)
message(FATAL_ERROR "The specified PNG_ICON_PATH \"${PNG_ICON_PATH}\" is invalid.") message(FATAL_ERROR "The specified PNG_ICON_PATH \"${PNG_ICON_PATH}\" is invalid.")