diff options
-rw-r--r-- | .clang-tidy | 9 | ||||
-rw-r--r-- | .gitlab-ci.yml | 64 | ||||
-rw-r--r-- | .gitlab/ci/configure_fedora36_clang_analyzer.cmake | 1 | ||||
-rw-r--r-- | .gitlab/ci/configure_fedora37_asan.cmake (renamed from .gitlab/ci/configure_fedora36_asan.cmake) | 2 | ||||
-rw-r--r-- | .gitlab/ci/configure_fedora37_clang_analyzer.cmake | 1 | ||||
-rw-r--r-- | .gitlab/ci/configure_fedora37_common.cmake (renamed from .gitlab/ci/configure_fedora36_common.cmake) | 0 | ||||
-rw-r--r-- | .gitlab/ci/configure_fedora37_extdeps.cmake (renamed from .gitlab/ci/configure_fedora36_extdeps.cmake) | 0 | ||||
-rw-r--r-- | .gitlab/ci/configure_fedora37_makefiles.cmake (renamed from .gitlab/ci/configure_fedora36_makefiles.cmake) | 0 | ||||
-rw-r--r-- | .gitlab/ci/configure_fedora37_ninja.cmake (renamed from .gitlab/ci/configure_fedora36_ninja.cmake) | 2 | ||||
-rw-r--r-- | .gitlab/ci/configure_fedora37_ninja_multi.cmake (renamed from .gitlab/ci/configure_fedora36_ninja_multi.cmake) | 0 | ||||
-rw-r--r-- | .gitlab/ci/configure_fedora37_sphinx.cmake (renamed from .gitlab/ci/configure_fedora36_sphinx.cmake) | 0 | ||||
-rw-r--r-- | .gitlab/ci/configure_fedora37_sphinx_package.cmake (renamed from .gitlab/ci/configure_fedora36_sphinx_package.cmake) | 0 | ||||
-rw-r--r-- | .gitlab/ci/configure_fedora37_tidy.cmake (renamed from .gitlab/ci/configure_fedora36_tidy.cmake) | 2 | ||||
-rw-r--r-- | .gitlab/ci/ctest_memcheck_fedora37_asan.lsan.supp (renamed from .gitlab/ci/ctest_memcheck_fedora36_asan.lsan.supp) | 0 | ||||
-rw-r--r-- | .gitlab/ci/docker/fedora37/Dockerfile (renamed from .gitlab/ci/docker/fedora36/Dockerfile) | 8 | ||||
-rwxr-xr-x | .gitlab/ci/docker/fedora37/install_clang_tidy_headers.sh (renamed from .gitlab/ci/docker/fedora36/install_clang_tidy_headers.sh) | 0 | ||||
-rwxr-xr-x | .gitlab/ci/docker/fedora37/install_deps.sh (renamed from .gitlab/ci/docker/fedora36/install_deps.sh) | 3 | ||||
-rwxr-xr-x | .gitlab/ci/docker/fedora37/install_iwyu.sh (renamed from .gitlab/ci/docker/fedora36/install_iwyu.sh) | 0 | ||||
-rwxr-xr-x | .gitlab/ci/docker/fedora37/install_rvm.sh (renamed from .gitlab/ci/docker/fedora36/install_rvm.sh) | 0 | ||||
-rw-r--r-- | .gitlab/ci/env_fedora37_asan.sh (renamed from .gitlab/ci/env_fedora36_asan.sh) | 0 | ||||
-rw-r--r-- | .gitlab/ci/env_fedora37_clang_analyzer.sh (renamed from .gitlab/ci/env_fedora36_clang_analyzer.sh) | 0 | ||||
-rw-r--r-- | .gitlab/ci/env_fedora37_extdeps.sh (renamed from .gitlab/ci/env_fedora36_extdeps.sh) | 0 | ||||
-rw-r--r-- | .gitlab/ci/env_fedora37_makefiles.cmake (renamed from .gitlab/ci/env_fedora36_makefiles.cmake) | 0 | ||||
-rw-r--r-- | .gitlab/ci/env_fedora37_makefiles.sh (renamed from .gitlab/ci/env_fedora36_ninja_multi.sh) | 0 | ||||
-rw-r--r-- | .gitlab/ci/env_fedora37_ninja.sh (renamed from .gitlab/ci/env_fedora36_ninja.sh) | 0 | ||||
-rw-r--r-- | .gitlab/ci/env_fedora37_ninja_multi.sh (renamed from .gitlab/ci/env_fedora36_makefiles.sh) | 0 | ||||
-rw-r--r-- | .gitlab/ci/env_fedora37_tidy.sh (renamed from .gitlab/ci/env_fedora36_tidy.sh) | 0 | ||||
-rw-r--r-- | .gitlab/os-linux.yml | 64 | ||||
-rw-r--r-- | .gitlab/upload.yml | 4 | ||||
-rw-r--r-- | Help/command/file.rst | 3 | ||||
-rw-r--r-- | Help/manual/cmake-generator-expressions.7.rst | 14 | ||||
-rw-r--r-- | Help/release/dev/build-local-interface-genex.rst | 5 | ||||
-rw-r--r-- | Modules/CMakeGenericSystem.cmake | 12 | ||||
-rw-r--r-- | Modules/Compiler/Clang.cmake | 2 | ||||
-rw-r--r-- | Modules/Compiler/GNU.cmake | 14 | ||||
-rw-r--r-- | Modules/Compiler/IBMClang.cmake | 6 | ||||
-rw-r--r-- | Modules/Compiler/Intel.cmake | 14 | ||||
-rw-r--r-- | Modules/Compiler/IntelLLVM.cmake | 20 | ||||
-rw-r--r-- | Modules/Compiler/LCC.cmake | 14 | ||||
-rw-r--r-- | Modules/Compiler/QCC.cmake | 14 | ||||
-rw-r--r-- | Modules/Compiler/Tasking.cmake | 14 | ||||
-rw-r--r-- | Modules/FindCUDAToolkit.cmake | 4 | ||||
-rw-r--r-- | Modules/FindPython.cmake | 11 | ||||
-rw-r--r-- | Modules/FindPython/Support.cmake | 39 | ||||
-rw-r--r-- | Modules/FindPython3.cmake | 9 | ||||
-rw-r--r-- | Modules/Platform/Android-Clang.cmake | 4 | ||||
-rw-r--r-- | Source/CMakeVersion.cmake | 2 | ||||
-rw-r--r-- | Source/cmFileCommand.cxx | 23 | ||||
-rw-r--r-- | Source/cmGeneratorExpression.cxx | 52 | ||||
-rw-r--r-- | Source/cmGeneratorExpressionNode.cxx | 8 | ||||
-rw-r--r-- | Source/cmGlobalVisualStudio10Generator.cxx | 2 | ||||
-rw-r--r-- | Source/cmSystemTools.cxx | 18 | ||||
-rw-r--r-- | Source/kwsys/SystemTools.cxx | 60 | ||||
-rw-r--r-- | Source/kwsys/SystemTools.hxx.in | 44 | ||||
-rw-r--r-- | Tests/FindBoost/TestPython/CMakeLists.txt | 4 | ||||
-rw-r--r-- | Tests/RunCMake/CMakeLists.txt | 2 | ||||
-rw-r--r-- | Tests/RunCMake/ExportImport/BuildInstallInterfaceGenex-export.cmake | 14 | ||||
-rw-r--r-- | Tests/RunCMake/ExportImport/BuildInstallInterfaceGenex-import.cmake | 9 | ||||
-rw-r--r-- | Tests/RunCMake/ExportImport/RunCMakeTest.cmake | 25 | ||||
-rw-r--r-- | Tests/RunCMake/ExportImport/buildlib.c | 8 | ||||
-rw-r--r-- | Tests/RunCMake/ExportImport/installlib.c | 8 | ||||
-rw-r--r-- | Tests/RunCMake/ExportImport/locallib.c | 8 | ||||
-rw-r--r-- | Tests/RunCMake/File_Archive/argument-validation-compression-level-1-stderr.txt | 2 | ||||
-rw-r--r-- | Tests/RunCMake/File_Archive/argument-validation-compression-level-2-stderr.txt | 2 | ||||
-rw-r--r-- | Tests/RunCMake/File_Archive/pax-zstd-compression-level.cmake | 3 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/ALIAS_GLOBAL-check.cmake (renamed from Tests/RunCMake/GeneratorExpression/TARGET_PROPERTY-ALIAS_GLOBAL-check.cmake) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/ALIAS_GLOBAL.cmake (renamed from Tests/RunCMake/GeneratorExpression/TARGET_PROPERTY-ALIAS_GLOBAL.cmake) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName-result.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName-result.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName-stderr.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName-stderr.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName.cmake (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName.cmake) | 4 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName1/CMakeLists.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName1/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName2/CMakeLists.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName2/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName3/CMakeLists.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName3/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName4/CMakeLists.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName4/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName5/CMakeLists.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName5/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName6/CMakeLists.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName6/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName7/CMakeLists.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName7/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName8/CMakeLists.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName8/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/BadNonTarget-result.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/BadNonTarget-result.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/BadNonTarget-stderr.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/BadNonTarget-stderr.txt) | 2 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/BadNonTarget.cmake | 9 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference-result.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference-result.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference-stderr.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference-stderr.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference.cmake (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference.cmake) | 4 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference1/CMakeLists.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference1/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference2/CMakeLists.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference2/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference3/CMakeLists.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference3/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference4/CMakeLists.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference4/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference5/CMakeLists.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference5/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference6/CMakeLists.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference6/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/CMakeLists.txt | 6 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/INCLUDE_DIRECTORIES-check.cmake (renamed from Tests/RunCMake/GeneratorExpression/TARGET_PROPERTY-INCLUDE_DIRECTORIES-check.cmake) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/INCLUDE_DIRECTORIES.cmake (renamed from Tests/RunCMake/GeneratorExpression/TARGET_PROPERTY-INCLUDE_DIRECTORIES.cmake) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/LOCATION-stderr.txt (renamed from Tests/RunCMake/GeneratorExpression/TARGET_PROPERTY-LOCATION-stderr.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/LOCATION.cmake (renamed from Tests/RunCMake/GeneratorExpression/TARGET_PROPERTY-LOCATION.cmake) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle1-result.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle1-result.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle1-stderr.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle1-stderr.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle1.cmake (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle1.cmake) | 5 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle2-result.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle2-result.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle2-stderr.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle2-stderr.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle2.cmake (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle2.cmake) | 5 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle3-result.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle3-result.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle3.cmake (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle3.cmake) | 5 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle4-result.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle4-result.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle4-stderr.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle4-stderr.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle4.cmake (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle4.cmake) | 5 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle5-result.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle5-result.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle5-stderr.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle5-stderr.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle5.cmake (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle5.cmake) | 5 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle6-result.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle6-result.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle6-stderr.txt (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle6-stderr.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle6.cmake (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle6.cmake) | 5 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/RunCMakeTest.cmake (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/RunCMakeTest.cmake) | 15 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/SOURCES-check.cmake (renamed from Tests/RunCMake/GeneratorExpression/TARGET_PROPERTY-SOURCES-check.cmake) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/SOURCES.cmake (renamed from Tests/RunCMake/GeneratorExpression/TARGET_PROPERTY-SOURCES.cmake) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/Scope-build-stdout.txt | 6 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/Scope.c | 12 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/Scope.cmake | 19 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/Scope1/CMakeLists.txt | 15 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/Scope2/CMakeLists.txt | 10 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/empty.c (renamed from Tests/RunCMake/GeneratorExpression/empty3.c) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/empty.cpp (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/empty.cpp) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/empty2.c (renamed from Tests/RunCMake/GeneratorExpression/empty2.c) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/empty3.c | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GenEx-TARGET_PROPERTY/main.cpp (renamed from Tests/RunCMake/TargetPropertyGeneratorExpressions/main.cpp) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/GeneratorExpression/RunCMakeTest.cmake | 4 | ||||
-rw-r--r-- | Tests/RunCMake/TargetPropertyGeneratorExpressions/BadNonTarget.cmake | 7 | ||||
-rw-r--r-- | Tests/RunCMake/TargetPropertyGeneratorExpressions/CMakeLists.txt | 8 | ||||
-rw-r--r-- | Tests/RunCMake/file/COPY_FILE-input-missing-result.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/file/COPY_FILE-input-missing-stderr.txt | 14 | ||||
-rw-r--r-- | Tests/RunCMake/file/COPY_FILE-input-missing.cmake | 3 | ||||
-rw-r--r-- | Tests/RunCMake/file/COPY_FILE-output-missing-result.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/file/COPY_FILE-output-missing-stderr.txt | 14 | ||||
-rw-r--r-- | Tests/RunCMake/file/COPY_FILE-output-missing.cmake | 4 | ||||
-rw-r--r-- | Tests/RunCMake/file/RunCMakeTest.cmake | 2 |
135 files changed, 601 insertions, 242 deletions
diff --git a/.clang-tidy b/.clang-tidy index 7ee8bf0..9ce5f42 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,24 +1,31 @@ --- Checks: "-*,\ bugprone-*,\ +-bugprone-assignment-in-if-condition,\ -bugprone-easily-swappable-parameters,\ -bugprone-implicit-widening-of-multiplication-result,\ -bugprone-macro-parentheses,\ -bugprone-misplaced-widening-cast,\ -bugprone-narrowing-conversions,\ -bugprone-too-small-loop-variable,\ +-bugprone-unchecked-optional-access,\ misc-*,\ +-misc-confusable-identifiers,\ +-misc-const-correctness,\ -misc-no-recursion,\ -misc-non-private-member-variables-in-classes,\ -misc-static-assert,\ modernize-*,\ -modernize-avoid-c-arrays,\ +-modernize-macro-to-enum,\ -modernize-return-braced-init-list,\ +-modernize-use-emplace,\ -modernize-use-nodiscard,\ -modernize-use-noexcept,\ -modernize-use-trailing-return-type,\ -modernize-use-transparent-functors,\ performance-*,\ +-performance-inefficient-vector-operation,\ readability-*,\ -readability-convert-member-functions-to-static,\ -readability-function-cognitive-complexity,\ @@ -28,9 +35,11 @@ readability-*,\ -readability-implicit-bool-conversion,\ -readability-inconsistent-declaration-parameter-name,\ -readability-magic-numbers,\ +-readability-make-member-function-const,\ -readability-named-parameter,\ -readability-redundant-declaration,\ -readability-redundant-member-init,\ +-readability-simplify-boolean-expr,\ -readability-suspicious-call-argument,\ -readability-uppercase-literal-suffix,\ cmake-*,\ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 707756e..4c44b07 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -57,7 +57,7 @@ p:source-package: p:doc-package: extends: - - .fedora36_sphinx_package + - .fedora37_sphinx_package - .cmake_prep_doc_linux - .linux_builder_tags_qt - .cmake_doc_artifacts @@ -105,16 +105,16 @@ l:iwyu-debian10: - .linux_builder_tags - .run_automatically -l:tidy-fedora36: +l:tidy-fedora37: extends: - - .fedora36_tidy + - .fedora37_tidy - .cmake_build_linux - .linux_builder_tags_qt - .run_automatically -l:sphinx-fedora36: +l:sphinx-fedora37: extends: - - .fedora36_sphinx + - .fedora37_sphinx - .cmake_build_linux - .linux_builder_tags_qt - .run_automatically @@ -122,9 +122,9 @@ l:sphinx-fedora36: CMAKE_CI_JOB_CONTINUOUS: "true" CMAKE_CI_JOB_HELP: "true" -l:clang-analyzer-fedora36: +l:clang-analyzer-fedora37: extends: - - .fedora36_clang_analyzer + - .fedora37_clang_analyzer - .cmake_build_linux - .linux_builder_tags_qt - .run_automatically @@ -181,7 +181,7 @@ t:debian10-ninja-clang: - .debian10_ninja_clang - .cmake_test_linux_release - .linux_builder_tags_qt - - .run_manually + - .run_dependent - .needs_centos6_x86_64 variables: CMAKE_CI_JOB_NIGHTLY: "true" @@ -191,22 +191,22 @@ t:debian10-makefiles-clang: - .debian10_makefiles_clang - .cmake_test_linux_release - .linux_builder_tags_qt - - .run_manually + - .run_dependent - .needs_centos6_x86_64 variables: CMAKE_CI_JOB_NIGHTLY: "true" -t:fedora36-makefiles: +t:fedora37-makefiles: extends: - - .fedora36_makefiles + - .fedora37_makefiles - .cmake_test_linux_release - .linux_builder_tags_qt - .run_dependent - .needs_centos6_x86_64 -t:fedora36-makefiles-nospace: +t:fedora37-makefiles-nospace: extends: - - .fedora36_makefiles + - .fedora37_makefiles - .cmake_test_linux_release - .linux_builder_tags_qt - .cmake_junit_artifacts @@ -214,7 +214,7 @@ t:fedora36-makefiles-nospace: - .needs_centos6_x86_64 variables: GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake-ci" - CMAKE_CI_BUILD_NAME: fedora36_makefiles_nospace + CMAKE_CI_BUILD_NAME: fedora37_makefiles_nospace CMAKE_CI_JOB_NIGHTLY: "true" t:cuda9.2-nvidia: @@ -295,9 +295,9 @@ t:linux-gcc-cxx-modules-ninja-multi: variables: CMAKE_CI_JOB_NIGHTLY: "true" -b:fedora36-ninja: +b:fedora37-ninja: extends: - - .fedora36_ninja + - .fedora37_ninja - .cmake_build_linux - .cmake_build_artifacts - .linux_builder_tags_qt @@ -332,40 +332,40 @@ b:debian10-aarch64-extdeps: variables: CMAKE_CI_JOB_NIGHTLY: "true" -b:fedora36-extdeps: +b:fedora37-extdeps: extends: - - .fedora36_extdeps + - .fedora37_extdeps - .cmake_build_linux_standalone - .linux_builder_tags - .run_manually variables: CMAKE_CI_JOB_NIGHTLY: "true" -t:fedora36-ninja: +t:fedora37-ninja: extends: - - .fedora36_ninja + - .fedora37_ninja - .cmake_test_linux - .linux_builder_tags_x11 - .cmake_test_artifacts - .run_dependent dependencies: - - b:fedora36-ninja + - b:fedora37-ninja needs: - - b:fedora36-ninja + - b:fedora37-ninja variables: CMAKE_CI_JOB_CONTINUOUS: "true" -t:fedora36-ninja-multi: +t:fedora37-ninja-multi: extends: - - .fedora36_ninja_multi + - .fedora37_ninja_multi - .cmake_test_linux_external - .linux_builder_tags_qt - .cmake_junit_artifacts - .run_dependent dependencies: - - t:fedora36-ninja + - t:fedora37-ninja needs: - - t:fedora36-ninja + - t:fedora37-ninja t:intel2016-makefiles: extends: @@ -704,9 +704,9 @@ u:linux-aarch64-package: ## Sanitizer builds -b:fedora36-asan: +b:fedora37-asan: extends: - - .fedora36_asan + - .fedora37_asan - .cmake_build_linux - .cmake_build_artifacts - .linux_builder_tags_qt @@ -714,16 +714,16 @@ b:fedora36-asan: variables: CMAKE_CI_JOB_NIGHTLY: "true" -t:fedora36-asan: +t:fedora37-asan: extends: - - .fedora36_asan + - .fedora37_asan - .cmake_memcheck_linux - .linux_builder_tags_qt - .run_dependent dependencies: - - b:fedora36-asan + - b:fedora37-asan needs: - - b:fedora36-asan + - b:fedora37-asan variables: CMAKE_CI_JOB_NIGHTLY: "true" diff --git a/.gitlab/ci/configure_fedora36_clang_analyzer.cmake b/.gitlab/ci/configure_fedora36_clang_analyzer.cmake deleted file mode 100644 index 456936b..0000000 --- a/.gitlab/ci/configure_fedora36_clang_analyzer.cmake +++ /dev/null @@ -1 +0,0 @@ -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora36_common.cmake") diff --git a/.gitlab/ci/configure_fedora36_asan.cmake b/.gitlab/ci/configure_fedora37_asan.cmake index 51977d9..363e953 100644 --- a/.gitlab/ci/configure_fedora36_asan.cmake +++ b/.gitlab/ci/configure_fedora37_asan.cmake @@ -1,4 +1,4 @@ set(CMAKE_C_FLAGS "-fsanitize=address" CACHE STRING "") set(CMAKE_CXX_FLAGS "-fsanitize=address" CACHE STRING "") -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora36_common.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora37_common.cmake") diff --git a/.gitlab/ci/configure_fedora37_clang_analyzer.cmake b/.gitlab/ci/configure_fedora37_clang_analyzer.cmake new file mode 100644 index 0000000..f4c4cdd --- /dev/null +++ b/.gitlab/ci/configure_fedora37_clang_analyzer.cmake @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora37_common.cmake") diff --git a/.gitlab/ci/configure_fedora36_common.cmake b/.gitlab/ci/configure_fedora37_common.cmake index 4484e26..4484e26 100644 --- a/.gitlab/ci/configure_fedora36_common.cmake +++ b/.gitlab/ci/configure_fedora37_common.cmake diff --git a/.gitlab/ci/configure_fedora36_extdeps.cmake b/.gitlab/ci/configure_fedora37_extdeps.cmake index 8e545f5..8e545f5 100644 --- a/.gitlab/ci/configure_fedora36_extdeps.cmake +++ b/.gitlab/ci/configure_fedora37_extdeps.cmake diff --git a/.gitlab/ci/configure_fedora36_makefiles.cmake b/.gitlab/ci/configure_fedora37_makefiles.cmake index 11d1a08..11d1a08 100644 --- a/.gitlab/ci/configure_fedora36_makefiles.cmake +++ b/.gitlab/ci/configure_fedora37_makefiles.cmake diff --git a/.gitlab/ci/configure_fedora36_ninja.cmake b/.gitlab/ci/configure_fedora37_ninja.cmake index 45d9192..3defa5a 100644 --- a/.gitlab/ci/configure_fedora36_ninja.cmake +++ b/.gitlab/ci/configure_fedora37_ninja.cmake @@ -10,4 +10,4 @@ set(CMAKE_CXX_FLAGS_RELEASE "-O3" CACHE STRING "") # Cover compilation with C++11 only and not higher standards. set(CMAKE_CXX_STANDARD "11" CACHE STRING "") -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora36_common.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora37_common.cmake") diff --git a/.gitlab/ci/configure_fedora36_ninja_multi.cmake b/.gitlab/ci/configure_fedora37_ninja_multi.cmake index 94af721..94af721 100644 --- a/.gitlab/ci/configure_fedora36_ninja_multi.cmake +++ b/.gitlab/ci/configure_fedora37_ninja_multi.cmake diff --git a/.gitlab/ci/configure_fedora36_sphinx.cmake b/.gitlab/ci/configure_fedora37_sphinx.cmake index 90d159b..90d159b 100644 --- a/.gitlab/ci/configure_fedora36_sphinx.cmake +++ b/.gitlab/ci/configure_fedora37_sphinx.cmake diff --git a/.gitlab/ci/configure_fedora36_sphinx_package.cmake b/.gitlab/ci/configure_fedora37_sphinx_package.cmake index e839de8..e839de8 100644 --- a/.gitlab/ci/configure_fedora36_sphinx_package.cmake +++ b/.gitlab/ci/configure_fedora37_sphinx_package.cmake diff --git a/.gitlab/ci/configure_fedora36_tidy.cmake b/.gitlab/ci/configure_fedora37_tidy.cmake index 2d0eeeb..f8eb9ab 100644 --- a/.gitlab/ci/configure_fedora36_tidy.cmake +++ b/.gitlab/ci/configure_fedora37_tidy.cmake @@ -2,4 +2,4 @@ set(CMake_RUN_CLANG_TIDY ON CACHE BOOL "") set(CMake_USE_CLANG_TIDY_MODULE ON CACHE BOOL "") set(CMake_CLANG_TIDY_MODULE "$ENV{CI_PROJECT_DIR}/Utilities/ClangTidyModule/build/libcmake-clang-tidy-module.so" CACHE FILEPATH "") -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora36_common.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora37_common.cmake") diff --git a/.gitlab/ci/ctest_memcheck_fedora36_asan.lsan.supp b/.gitlab/ci/ctest_memcheck_fedora37_asan.lsan.supp index 8ec1a03..8ec1a03 100644 --- a/.gitlab/ci/ctest_memcheck_fedora36_asan.lsan.supp +++ b/.gitlab/ci/ctest_memcheck_fedora37_asan.lsan.supp diff --git a/.gitlab/ci/docker/fedora36/Dockerfile b/.gitlab/ci/docker/fedora37/Dockerfile index ea42561..13ef9aa 100644 --- a/.gitlab/ci/docker/fedora36/Dockerfile +++ b/.gitlab/ci/docker/fedora37/Dockerfile @@ -1,22 +1,22 @@ -FROM fedora:36 as rvm-build +FROM fedora:37 as rvm-build MAINTAINER Ben Boeckel <ben.boeckel@kitware.com> COPY install_rvm.sh /root/install_rvm.sh RUN sh /root/install_rvm.sh -FROM fedora:36 AS clang-tidy-headers +FROM fedora:37 AS clang-tidy-headers MAINTAINER Kyle Edwards <kyle.edwards@kitware.com> COPY install_clang_tidy_headers.sh /root/install_clang_tidy_headers.sh RUN sh /root/install_clang_tidy_headers.sh -FROM fedora:36 AS iwyu +FROM fedora:37 AS iwyu MAINTAINER Kyle Edwards <kyle.edwards@kitware.com> COPY install_iwyu.sh /root/install_iwyu.sh RUN sh /root/install_iwyu.sh -FROM fedora:36 +FROM fedora:37 MAINTAINER Ben Boeckel <ben.boeckel@kitware.com> COPY install_deps.sh /root/install_deps.sh diff --git a/.gitlab/ci/docker/fedora36/install_clang_tidy_headers.sh b/.gitlab/ci/docker/fedora37/install_clang_tidy_headers.sh index b9883f4..b9883f4 100755 --- a/.gitlab/ci/docker/fedora36/install_clang_tidy_headers.sh +++ b/.gitlab/ci/docker/fedora37/install_clang_tidy_headers.sh diff --git a/.gitlab/ci/docker/fedora36/install_deps.sh b/.gitlab/ci/docker/fedora37/install_deps.sh index f117888..afb8560 100755 --- a/.gitlab/ci/docker/fedora36/install_deps.sh +++ b/.gitlab/ci/docker/fedora37/install_deps.sh @@ -11,8 +11,11 @@ dnf install --setopt=install_weak_deps=False -y \ # Install development tools. dnf install --setopt=install_weak_deps=False -y \ + clang \ clang-tools-extra \ compiler-rt \ + flang \ + flang-devel \ gcc-c++ \ git-core \ make diff --git a/.gitlab/ci/docker/fedora36/install_iwyu.sh b/.gitlab/ci/docker/fedora37/install_iwyu.sh index 714bcc0..714bcc0 100755 --- a/.gitlab/ci/docker/fedora36/install_iwyu.sh +++ b/.gitlab/ci/docker/fedora37/install_iwyu.sh diff --git a/.gitlab/ci/docker/fedora36/install_rvm.sh b/.gitlab/ci/docker/fedora37/install_rvm.sh index 0011f87..0011f87 100755 --- a/.gitlab/ci/docker/fedora36/install_rvm.sh +++ b/.gitlab/ci/docker/fedora37/install_rvm.sh diff --git a/.gitlab/ci/env_fedora36_asan.sh b/.gitlab/ci/env_fedora37_asan.sh index e976486..e976486 100644 --- a/.gitlab/ci/env_fedora36_asan.sh +++ b/.gitlab/ci/env_fedora37_asan.sh diff --git a/.gitlab/ci/env_fedora36_clang_analyzer.sh b/.gitlab/ci/env_fedora37_clang_analyzer.sh index d732c0b..d732c0b 100644 --- a/.gitlab/ci/env_fedora36_clang_analyzer.sh +++ b/.gitlab/ci/env_fedora37_clang_analyzer.sh diff --git a/.gitlab/ci/env_fedora36_extdeps.sh b/.gitlab/ci/env_fedora37_extdeps.sh index 7076e18..7076e18 100644 --- a/.gitlab/ci/env_fedora36_extdeps.sh +++ b/.gitlab/ci/env_fedora37_extdeps.sh diff --git a/.gitlab/ci/env_fedora36_makefiles.cmake b/.gitlab/ci/env_fedora37_makefiles.cmake index 2bcb6d0..2bcb6d0 100644 --- a/.gitlab/ci/env_fedora36_makefiles.cmake +++ b/.gitlab/ci/env_fedora37_makefiles.cmake diff --git a/.gitlab/ci/env_fedora36_ninja_multi.sh b/.gitlab/ci/env_fedora37_makefiles.sh index 217ff30..217ff30 100644 --- a/.gitlab/ci/env_fedora36_ninja_multi.sh +++ b/.gitlab/ci/env_fedora37_makefiles.sh diff --git a/.gitlab/ci/env_fedora36_ninja.sh b/.gitlab/ci/env_fedora37_ninja.sh index 217ff30..217ff30 100644 --- a/.gitlab/ci/env_fedora36_ninja.sh +++ b/.gitlab/ci/env_fedora37_ninja.sh diff --git a/.gitlab/ci/env_fedora36_makefiles.sh b/.gitlab/ci/env_fedora37_ninja_multi.sh index 217ff30..217ff30 100644 --- a/.gitlab/ci/env_fedora36_makefiles.sh +++ b/.gitlab/ci/env_fedora37_ninja_multi.sh diff --git a/.gitlab/ci/env_fedora36_tidy.sh b/.gitlab/ci/env_fedora37_tidy.sh index f9f08a3..f9f08a3 100644 --- a/.gitlab/ci/env_fedora36_tidy.sh +++ b/.gitlab/ci/env_fedora37_tidy.sh diff --git a/.gitlab/os-linux.yml b/.gitlab/os-linux.yml index 84950d2..6a99f33 100644 --- a/.gitlab/os-linux.yml +++ b/.gitlab/os-linux.yml @@ -5,7 +5,7 @@ ### Release .linux_prep_source: - image: "fedora:36" + image: "fedora:37" variables: GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci" @@ -68,8 +68,8 @@ ### Fedora -.fedora36: - image: "kitware/cmake:ci-fedora36-x86_64-2022-10-04" +.fedora37: + image: "kitware/cmake:ci-fedora37-x86_64-2022-11-16" variables: GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci/long file name for testing purposes" @@ -77,37 +77,37 @@ #### Lint builds -.fedora36_tidy: - extends: .fedora36 +.fedora37_tidy: + extends: .fedora37 variables: - CMAKE_CONFIGURATION: fedora36_tidy + CMAKE_CONFIGURATION: fedora37_tidy CTEST_NO_WARNINGS_ALLOWED: 1 CMAKE_CI_NO_INSTALL: 1 -.fedora36_clang_analyzer: - extends: .fedora36 +.fedora37_clang_analyzer: + extends: .fedora37 variables: - CMAKE_CONFIGURATION: fedora36_clang_analyzer + CMAKE_CONFIGURATION: fedora37_clang_analyzer CMAKE_CI_BUILD_TYPE: Debug CTEST_NO_WARNINGS_ALLOWED: 1 CMAKE_CI_NO_INSTALL: 1 -.fedora36_sphinx: - extends: .fedora36 +.fedora37_sphinx: + extends: .fedora37 variables: - CMAKE_CONFIGURATION: fedora36_sphinx + CMAKE_CONFIGURATION: fedora37_sphinx CTEST_NO_WARNINGS_ALLOWED: 1 CTEST_SOURCE_SUBDIRECTORY: "Utilities/Sphinx" CMAKE_CI_NO_INSTALL: 1 -.fedora36_sphinx_package: - extends: .fedora36 +.fedora37_sphinx_package: + extends: .fedora37 variables: - CMAKE_CONFIGURATION: fedora36_sphinx_package + CMAKE_CONFIGURATION: fedora37_sphinx_package CTEST_SOURCE_SUBDIRECTORY: "Utilities/Sphinx" #### Build and test @@ -153,35 +153,35 @@ CMAKE_CI_BUILD_TYPE: Release CTEST_NO_WARNINGS_ALLOWED: 1 -.fedora36_extdeps: - extends: .fedora36 +.fedora37_extdeps: + extends: .fedora37 variables: - CMAKE_CONFIGURATION: fedora36_extdeps + CMAKE_CONFIGURATION: fedora37_extdeps CMAKE_CI_BUILD_TYPE: Release CTEST_NO_WARNINGS_ALLOWED: 1 -.fedora36_ninja: - extends: .fedora36 +.fedora37_ninja: + extends: .fedora37 variables: - CMAKE_CONFIGURATION: fedora36_ninja + CMAKE_CONFIGURATION: fedora37_ninja CMAKE_CI_BUILD_TYPE: Release CTEST_NO_WARNINGS_ALLOWED: 1 -.fedora36_ninja_multi: - extends: .fedora36 +.fedora37_ninja_multi: + extends: .fedora37 variables: - CMAKE_CONFIGURATION: fedora36_ninja_multi + CMAKE_CONFIGURATION: fedora37_ninja_multi CTEST_NO_WARNINGS_ALLOWED: 1 CMAKE_GENERATOR: "Ninja Multi-Config" -.fedora36_makefiles: - extends: .fedora36 +.fedora37_makefiles: + extends: .fedora37 variables: - CMAKE_CONFIGURATION: fedora36_makefiles + CMAKE_CONFIGURATION: fedora37_makefiles CTEST_NO_WARNINGS_ALLOWED: 1 CMAKE_GENERATOR: "Unix Makefiles" @@ -213,13 +213,13 @@ CTEST_MEMORYCHECK_TYPE: AddressSanitizer CTEST_MEMORYCHECK_SANITIZER_OPTIONS: "" -.fedora36_asan: +.fedora37_asan: extends: - - .fedora36 + - .fedora37 - .fedora_asan_addon variables: - CMAKE_CONFIGURATION: fedora36_asan + CMAKE_CONFIGURATION: fedora37_asan ### Intel Compiler @@ -437,7 +437,7 @@ .cmake_codespell_linux: stage: build - extends: .fedora36 + extends: .fedora37 script: - codespell interruptible: true @@ -580,7 +580,7 @@ .cmake_org_help: stage: build extends: - - .fedora36 + - .fedora37 - .linux_builder_tags - .cmake_org_help_artifacts script: diff --git a/.gitlab/upload.yml b/.gitlab/upload.yml index 38d40a9..27a6ab7 100644 --- a/.gitlab/upload.yml +++ b/.gitlab/upload.yml @@ -1,7 +1,7 @@ # Steps for uploading artifacts .rsync_upload_package: - image: "fedora:36" + image: "fedora:37" stage: upload tags: - cmake @@ -21,7 +21,7 @@ .rsync_upload_help: stage: upload - image: "fedora:36" + image: "fedora:37" tags: - cmake - docker diff --git a/Help/command/file.rst b/Help/command/file.rst index 673125d..2348937 100644 --- a/Help/command/file.rst +++ b/Help/command/file.rst @@ -1214,6 +1214,9 @@ directed to do so with the ``COMPRESSION`` option. Valid values for The ``<compression-level>`` should be between 0-9, with the default being 0. The ``COMPRESSION`` option must be present when ``COMPRESSION_LEVEL`` is given. +.. versionadded:: 3.26 + The ``<compression-level>`` of the ``Zstd`` algorithm can be set between 0-19. + .. note:: With ``FORMAT`` set to ``raw`` only one file will be compressed with the compression type specified by ``COMPRESSION``. diff --git a/Help/manual/cmake-generator-expressions.7.rst b/Help/manual/cmake-generator-expressions.7.rst index faa793f..a72eac1 100644 --- a/Help/manual/cmake-generator-expressions.7.rst +++ b/Help/manual/cmake-generator-expressions.7.rst @@ -1401,6 +1401,13 @@ In the following, the phrase "the ``tgt`` filename" means the name of the Note that ``tgt`` is not added as a dependency of the target this expression is evaluated on. + .. versionchanged:: 3.26 + When encountered during evaluation of :ref:`Target Usage Requirements`, + typically in an ``INTERFACE_*`` target property, lookup of the ``tgt`` + name occurs in the directory of the target specifying the requirement, + rather than the directory of the consuming target for which the + expression is being evaluated. + .. genex:: $<TARGET_PROPERTY:prop> Value of the property ``prop`` on the target for which the expression @@ -1704,6 +1711,13 @@ Export And Install Expressions when the target is used by another target in the same buildsystem. Expands to the empty string otherwise. +.. genex:: $<BUILD_LOCAL_INTERFACE:...> + + .. versionadded:: 3.26 + + Content of ``...`` when the target is used by another target in the same + buildsystem. Expands to the empty string otherwise. + .. genex:: $<INSTALL_PREFIX> Content of the install prefix when the target is exported via diff --git a/Help/release/dev/build-local-interface-genex.rst b/Help/release/dev/build-local-interface-genex.rst new file mode 100644 index 0000000..7fe702e --- /dev/null +++ b/Help/release/dev/build-local-interface-genex.rst @@ -0,0 +1,5 @@ +build-local-interface-genex +--------------------------- + +* The :genex:`BUILD_LOCAL_INTERFACE` generator expression was added to + prevent usage requirements from being exported to dependent projects. diff --git a/Modules/CMakeGenericSystem.cmake b/Modules/CMakeGenericSystem.cmake index e2925dc..77c1780 100644 --- a/Modules/CMakeGenericSystem.cmake +++ b/Modules/CMakeGenericSystem.cmake @@ -30,12 +30,18 @@ set(CMAKE_FIND_LIBRARY_SUFFIXES ".so" ".a") # LINK_LIBRARY_OVERRIDE_<LIBRARY> target properties set(CMAKE_LINK_LIBRARY_USING_DEFAULT_SUPPORTED TRUE) -set(CMAKE_AUTOGEN_ORIGIN_DEPENDS ON) -set(CMAKE_AUTOMOC_COMPILER_PREDEFINES ON) +if(NOT DEFINED CMAKE_AUTOGEN_ORIGIN_DEPENDS) + set(CMAKE_AUTOGEN_ORIGIN_DEPENDS ON) +endif() +if(NOT DEFINED CMAKE_AUTOMOC_COMPILER_PREDEFINES) + set(CMAKE_AUTOMOC_COMPILER_PREDEFINES ON) +endif() if(NOT DEFINED CMAKE_AUTOMOC_PATH_PREFIX) set(CMAKE_AUTOMOC_PATH_PREFIX OFF) endif() -set(CMAKE_AUTOMOC_MACRO_NAMES "Q_OBJECT" "Q_GADGET" "Q_NAMESPACE" "Q_NAMESPACE_EXPORT") +if(NOT DEFINED CMAKE_AUTOMOC_MACRO_NAMES) + set(CMAKE_AUTOMOC_MACRO_NAMES "Q_OBJECT" "Q_GADGET" "Q_NAMESPACE" "Q_NAMESPACE_EXPORT") +endif() # basically all general purpose OSs support shared libs set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS TRUE) diff --git a/Modules/Compiler/Clang.cmake b/Modules/Compiler/Clang.cmake index 4f9af37..b59b38c 100644 --- a/Modules/Compiler/Clang.cmake +++ b/Modules/Compiler/Clang.cmake @@ -44,7 +44,7 @@ else() set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-Xlinker" " ") set(CMAKE_${lang}_LINKER_WRAPPER_FLAG_SEP) - if(CMAKE_${lang}_COMPILER_TARGET) + if(CMAKE_${lang}_COMPILER_TARGET AND "${lang}" STREQUAL "CXX") if(CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.4.0) list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-target" "${CMAKE_${lang}_COMPILER_TARGET}") else() diff --git a/Modules/Compiler/GNU.cmake b/Modules/Compiler/GNU.cmake index 48639cd..5930e37 100644 --- a/Modules/Compiler/GNU.cmake +++ b/Modules/Compiler/GNU.cmake @@ -121,13 +121,15 @@ macro(__compiler_gnu lang) ) endif() - set(CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "${CMAKE_${lang}_COMPILER}") - if(CMAKE_${lang}_COMPILER_ARG1) - separate_arguments(_COMPILER_ARGS NATIVE_COMMAND "${CMAKE_${lang}_COMPILER_ARG1}") - list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND ${_COMPILER_ARGS}) - unset(_COMPILER_ARGS) + if("${lang}" STREQUAL "CXX") + set(CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "${CMAKE_${lang}_COMPILER}") + if(CMAKE_${lang}_COMPILER_ARG1) + separate_arguments(_COMPILER_ARGS NATIVE_COMMAND "${CMAKE_${lang}_COMPILER_ARG1}") + list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND ${_COMPILER_ARGS}) + unset(_COMPILER_ARGS) + endif() + list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-dM" "-E" "-c" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp") endif() - list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-dM" "-E" "-c" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp") if(NOT "x${lang}" STREQUAL "xFortran") set(CMAKE_PCH_EXTENSION .gch) diff --git a/Modules/Compiler/IBMClang.cmake b/Modules/Compiler/IBMClang.cmake index 9ed7658..a9d760f 100644 --- a/Modules/Compiler/IBMClang.cmake +++ b/Modules/Compiler/IBMClang.cmake @@ -36,7 +36,7 @@ macro(__compiler_ibmclang lang) set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-Xlinker" " ") set(CMAKE_${lang}_LINKER_WRAPPER_FLAG_SEP) - if(CMAKE_${lang}_COMPILER_TARGET) + if(CMAKE_${lang}_COMPILER_TARGET AND "${lang}" STREQUAL "CXX") list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "--target=${CMAKE_${lang}_COMPILER_TARGET}") endif() @@ -66,7 +66,9 @@ macro(__compiler_ibmclang lang) "\"${__ranlib}\" <TARGET>" ) - list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-dM" "-E" "-c" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp") + if("${lang}" STREQUAL "CXX") + list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-dM" "-E" "-c" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp") + endif() set(CMAKE_PCH_EXTENSION .pch) diff --git a/Modules/Compiler/Intel.cmake b/Modules/Compiler/Intel.cmake index 642e58a..317cfc7 100644 --- a/Modules/Compiler/Intel.cmake +++ b/Modules/Compiler/Intel.cmake @@ -30,13 +30,15 @@ else() string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O3") string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -O2 -g") - set(CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "${CMAKE_${lang}_COMPILER}") - if(CMAKE_${lang}_COMPILER_ARG1) - separate_arguments(_COMPILER_ARGS NATIVE_COMMAND "${CMAKE_${lang}_COMPILER_ARG1}") - list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND ${_COMPILER_ARGS}) - unset(_COMPILER_ARGS) + if("${lang}" STREQUAL "CXX") + set(CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "${CMAKE_${lang}_COMPILER}") + if(CMAKE_${lang}_COMPILER_ARG1) + separate_arguments(_COMPILER_ARGS NATIVE_COMMAND "${CMAKE_${lang}_COMPILER_ARG1}") + list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND ${_COMPILER_ARGS}) + unset(_COMPILER_ARGS) + endif() + list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-QdM" "-P" "-Za" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp") endif() - list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-QdM" "-P" "-Za" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp") if("x${lang}" STREQUAL "xFortran") set(CMAKE_${lang}_COMPILE_OPTIONS_WARNING_AS_ERROR "-warn" "errors") diff --git a/Modules/Compiler/IntelLLVM.cmake b/Modules/Compiler/IntelLLVM.cmake index 30de1a9..e256c8f 100644 --- a/Modules/Compiler/IntelLLVM.cmake +++ b/Modules/Compiler/IntelLLVM.cmake @@ -80,15 +80,17 @@ else() set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>") set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>") - set(CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "${CMAKE_${lang}_COMPILER}") - if(CMAKE_${lang}_COMPILER_ARG1) - separate_arguments(_COMPILER_ARGS NATIVE_COMMAND "${CMAKE_${lang}_COMPILER_ARG1}") - list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND ${_COMPILER_ARGS}) - unset(_COMPILER_ARGS) - endif() - list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-dM" "-E" "-c" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp") - if(CMAKE_${lang}_COMPILER_TARGET) - list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "--target=${CMAKE_${lang}_COMPILER_TARGET}") + if("${lang}" STREQUAL "CXX") + set(CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "${CMAKE_${lang}_COMPILER}") + if(CMAKE_${lang}_COMPILER_ARG1) + separate_arguments(_COMPILER_ARGS NATIVE_COMMAND "${CMAKE_${lang}_COMPILER_ARG1}") + list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND ${_COMPILER_ARGS}) + unset(_COMPILER_ARGS) + endif() + list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-dM" "-E" "-c" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp") + if(CMAKE_${lang}_COMPILER_TARGET) + list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "--target=${CMAKE_${lang}_COMPILER_TARGET}") + endif() endif() if("x${lang}" STREQUAL "xFortran") diff --git a/Modules/Compiler/LCC.cmake b/Modules/Compiler/LCC.cmake index bdee9a6..f8c2084 100644 --- a/Modules/Compiler/LCC.cmake +++ b/Modules/Compiler/LCC.cmake @@ -76,13 +76,15 @@ macro(__compiler_lcc lang) "\"${CMAKE_${lang}_COMPILER_RANLIB}\" <TARGET>" ) - set(CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "${CMAKE_${lang}_COMPILER}") - if(CMAKE_${lang}_COMPILER_ARG1) - separate_arguments(_COMPILER_ARGS NATIVE_COMMAND "${CMAKE_${lang}_COMPILER_ARG1}") - list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND ${_COMPILER_ARGS}) - unset(_COMPILER_ARGS) + if("${lang}" STREQUAL "CXX") + set(CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "${CMAKE_${lang}_COMPILER}") + if(CMAKE_${lang}_COMPILER_ARG1) + separate_arguments(_COMPILER_ARGS NATIVE_COMMAND "${CMAKE_${lang}_COMPILER_ARG1}") + list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND ${_COMPILER_ARGS}) + unset(_COMPILER_ARGS) + endif() + list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-dM" "-E" "-c" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp") endif() - list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-dM" "-E" "-c" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp") if(NOT "x${lang}" STREQUAL "xFortran") set(CMAKE_PCH_EXTENSION .gch) diff --git a/Modules/Compiler/QCC.cmake b/Modules/Compiler/QCC.cmake index 7fbfd10..b720dc1 100644 --- a/Modules/Compiler/QCC.cmake +++ b/Modules/Compiler/QCC.cmake @@ -22,13 +22,15 @@ macro(__compiler_qcc lang) set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE NO) set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER NO) - set(CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "${CMAKE_${lang}_COMPILER}") - if(CMAKE_${lang}_COMPILER_ARG1) - separate_arguments(_COMPILER_ARGS NATIVE_COMMAND "${CMAKE_${lang}_COMPILER_ARG1}") - list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND ${_COMPILER_ARGS}) - unset(_COMPILER_ARGS) + if("${lang}" STREQUAL "CXX") + set(CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "${CMAKE_${lang}_COMPILER}") + if(CMAKE_${lang}_COMPILER_ARG1) + separate_arguments(_COMPILER_ARGS NATIVE_COMMAND "${CMAKE_${lang}_COMPILER_ARG1}") + list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND ${_COMPILER_ARGS}) + unset(_COMPILER_ARGS) + endif() + list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-Wp,-dM" "-E" "-c" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp") endif() - list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-Wp,-dM" "-E" "-c" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp") unset(CMAKE_${lang}_COMPILE_OPTIONS_IPO) unset(CMAKE_${lang}_ARCHIVE_CREATE_IPO) diff --git a/Modules/Compiler/Tasking.cmake b/Modules/Compiler/Tasking.cmake index 5bf066e..82622fa 100644 --- a/Modules/Compiler/Tasking.cmake +++ b/Modules/Compiler/Tasking.cmake @@ -43,12 +43,14 @@ macro(__compiler_tasking lang) set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -cs <SOURCE> -o <ASSEMBLY_SOURCE>") set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -Ep <SOURCE> > <PREPROCESSED_SOURCE>") - set(CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "${CMAKE_${lang}_COMPILER}") - if(CMAKE_${lang}_COMPILER_ARG1) - separate_arguments(_COMPILER_ARGS NATIVE_COMMAND "${CMAKE_${lang}_COMPILER_ARG1}") - list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND ${_COMPILER_ARGS}) - unset(_COMPILER_ARGS) + if("${lang}" STREQUAL "CXX") + set(CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "${CMAKE_${lang}_COMPILER}") + if(CMAKE_${lang}_COMPILER_ARG1) + separate_arguments(_COMPILER_ARGS NATIVE_COMMAND "${CMAKE_${lang}_COMPILER_ARG1}") + list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND ${_COMPILER_ARGS}) + unset(_COMPILER_ARGS) + endif() + list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-Ep" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp") endif() - list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-Ep" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp") endmacro() diff --git a/Modules/FindCUDAToolkit.cmake b/Modules/FindCUDAToolkit.cmake index 365b72a..62e54c8 100644 --- a/Modules/FindCUDAToolkit.cmake +++ b/Modules/FindCUDAToolkit.cmake @@ -1060,7 +1060,9 @@ if(CUDAToolkit_FOUND) if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL 11.1.0) if(NOT TARGET CUDA::nvptxcompiler_static) _CUDAToolkit_find_and_add_import_lib(nvptxcompiler_static DEPS cuda_driver) - target_link_libraries(CUDA::nvptxcompiler_static INTERFACE Threads::Threads) + if(TARGET CUDA::nvptxcompiler_static) + target_link_libraries(CUDA::nvptxcompiler_static INTERFACE Threads::Threads) + endif() endif() endif() diff --git a/Modules/FindPython.cmake b/Modules/FindPython.cmake index d98bc95..3fb56e4 100644 --- a/Modules/FindPython.cmake +++ b/Modules/FindPython.cmake @@ -139,12 +139,11 @@ This module will set the following variables in your project Extension suffix for modules. - Information returned by - ``distutils.sysconfig.get_config_var('SOABI')`` or computed from - ``distutils.sysconfig.get_config_var('EXT_SUFFIX')`` or - ``python-config --extension-suffix``. If package ``distutils.sysconfig`` is - not available, ``sysconfig.get_config_var('SOABI')`` or - ``sysconfig.get_config_var('EXT_SUFFIX')`` are used. + Information computed from ``distutils.sysconfig.get_config_var('EXT_SUFFIX')`` + or ``distutils.sysconfig.get_config_var('SOABI')`` or + ``python3-config --extension-suffix``. If package ``distutils.sysconfig`` is + not available, ``sysconfig.get_config_var('EXT_SUFFIX')`` or + ``sysconfig.get_config_var('SOABI')`` are used. ``Python_Compiler_FOUND`` System has the Python compiler. diff --git a/Modules/FindPython/Support.cmake b/Modules/FindPython/Support.cmake index 7a127e4..9b78220 100644 --- a/Modules/FindPython/Support.cmake +++ b/Modules/FindPython/Support.cmake @@ -508,21 +508,16 @@ function (_PYTHON_GET_CONFIG_VAR _PYTHON_PGCV_VALUE NAME) list (REMOVE_DUPLICATES _values) endif() elseif (NAME STREQUAL "SOABI") + # first step: compute SOABI form EXT_SUFFIX config variable execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c - "import sys\ntry:\n from distutils import sysconfig\n sys.stdout.write(';'.join([sysconfig.get_config_var('SOABI') or '',sysconfig.get_config_var('EXT_SUFFIX') or '',sysconfig.get_config_var('SO') or '']))\nexcept Exception:\n import sysconfig;sys.stdout.write(';'.join([sysconfig.get_config_var('SOABI') or '',sysconfig.get_config_var('EXT_SUFFIX') or '',sysconfig.get_config_var('SO') or '']))" + "import sys\ntry:\n from distutils import sysconfig\n sys.stdout.write(sysconfig.get_config_var('EXT_SUFFIX') or '')\nexcept Exception:\n import sysconfig;sys.stdout.write(sysconfig.get_config_var('EXT_SUFFIX') or '')" RESULT_VARIABLE _result - OUTPUT_VARIABLE _soabi + OUTPUT_VARIABLE _values ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) if (_result) unset (_values) else() - foreach (_item IN LISTS _soabi) - if (_item) - set (_values "${_item}") - break() - endif() - endforeach() if (_values) # clean-up: remove prefix character and suffix if (_values MATCHES "^(\\.${CMAKE_SHARED_LIBRARY_SUFFIX}|\\.so|\\.pyd)$") @@ -532,6 +527,34 @@ function (_PYTHON_GET_CONFIG_VAR _PYTHON_PGCV_VALUE NAME) endif() endif() endif() + + # second step: use SOABI or SO config variables as fallback + if (NOT _values) + execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c + "import sys\ntry:\n from distutils import sysconfig\n sys.stdout.write(';'.join([sysconfig.get_config_var('SOABI') or '',sysconfig.get_config_var('SO') or '']))\nexcept Exception:\n import sysconfig;sys.stdout.write(';'.join([sysconfig.get_config_var('SOABI') or '',sysconfig.get_config_var('SO') or '']))" + RESULT_VARIABLE _result + OUTPUT_VARIABLE _soabi + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + if (_result) + unset (_values) + else() + foreach (_item IN LISTS _soabi) + if (_item) + set (_values "${_item}") + break() + endif() + endforeach() + if (_values) + # clean-up: remove prefix character and suffix + if (_values MATCHES "^(\\.${CMAKE_SHARED_LIBRARY_SUFFIX}|\\.so|\\.pyd)$") + set(_values "") + else() + string (REGEX REPLACE "^[.-](.+)(${CMAKE_SHARED_LIBRARY_SUFFIX}|\\.(so|pyd))$" "\\1" _values "${_values}") + endif() + endif() + endif() + endif() else() set (config_flag "${NAME}") if (NAME STREQUAL "CONFIGDIR") diff --git a/Modules/FindPython3.cmake b/Modules/FindPython3.cmake index 75b7a34..837300e 100644 --- a/Modules/FindPython3.cmake +++ b/Modules/FindPython3.cmake @@ -140,12 +140,11 @@ This module will set the following variables in your project Extension suffix for modules. - Information returned by - ``distutils.sysconfig.get_config_var('SOABI')`` or computed from - ``distutils.sysconfig.get_config_var('EXT_SUFFIX')`` or + Information computed from ``distutils.sysconfig.get_config_var('EXT_SUFFIX')`` + or ``distutils.sysconfig.get_config_var('SOABI')`` or ``python3-config --extension-suffix``. If package ``distutils.sysconfig`` is - not available, ``sysconfig.get_config_var('SOABI')`` or - ``sysconfig.get_config_var('EXT_SUFFIX')`` are used. + not available, ``sysconfig.get_config_var('EXT_SUFFIX')`` or + ``sysconfig.get_config_var('SOABI')`` are used. ``Python3_Compiler_FOUND`` System has the Python 3 compiler. diff --git a/Modules/Platform/Android-Clang.cmake b/Modules/Platform/Android-Clang.cmake index 3a279ca..aaaae9b 100644 --- a/Modules/Platform/Android-Clang.cmake +++ b/Modules/Platform/Android-Clang.cmake @@ -77,7 +77,9 @@ macro(__android_compiler_clang lang) if(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED) string(APPEND CMAKE_${lang}_COMPILER_TARGET "${CMAKE_SYSTEM_VERSION}") endif() - list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "--target=${CMAKE_${lang}_COMPILER_TARGET}") + if("${lang}" STREQUAL "CXX") + list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "--target=${CMAKE_${lang}_COMPILER_TARGET}") + endif() endif() if(CMAKE_GENERATOR MATCHES "Visual Studio") set(_ANDROID_STL_NOSTDLIBXX 1) diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 81bb358..ee7639f 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,7 +1,7 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 25) -set(CMake_VERSION_PATCH 20221116) +set(CMake_VERSION_PATCH 20221118) #set(CMake_VERSION_RC 0) set(CMake_VERSION_IS_DIRTY 0) diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index b1d238c..85f528d 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -3404,20 +3404,29 @@ bool HandleArchiveCreateCommand(std::vector<std::string> const& args, } int compressionLevel = 0; + int minCompressionLevel = 0; + int maxCompressionLevel = 9; + if (compress == cmSystemTools::TarCompressZstd) { + maxCompressionLevel = 19; + } + if (!parsedArgs.CompressionLevel.empty()) { if (parsedArgs.CompressionLevel.size() != 1 && !std::isdigit(parsedArgs.CompressionLevel[0])) { - status.SetError(cmStrCat("compression level ", - parsedArgs.CompressionLevel, - " should be in range 0 to 9")); + status.SetError( + cmStrCat("compression level ", parsedArgs.CompressionLevel, " for ", + parsedArgs.Compression, " should be in range ", + minCompressionLevel, " to ", maxCompressionLevel)); cmSystemTools::SetFatalErrorOccurred(); return false; } compressionLevel = std::stoi(parsedArgs.CompressionLevel); - if (compressionLevel < 0 || compressionLevel > 9) { - status.SetError(cmStrCat("compression level ", - parsedArgs.CompressionLevel, - " should be in range 0 to 9")); + if (compressionLevel < minCompressionLevel || + compressionLevel > maxCompressionLevel) { + status.SetError( + cmStrCat("compression level ", parsedArgs.CompressionLevel, " for ", + parsedArgs.Compression, " should be in range ", + minCompressionLevel, " to ", maxCompressionLevel)); cmSystemTools::SetFatalErrorOccurred(); return false; } diff --git a/Source/cmGeneratorExpression.cxx b/Source/cmGeneratorExpression.cxx index 21ace89..b605350 100644 --- a/Source/cmGeneratorExpression.cxx +++ b/Source/cmGeneratorExpression.cxx @@ -2,6 +2,7 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmGeneratorExpression.h" +#include <algorithm> #include <cassert> #include <memory> #include <utility> @@ -226,23 +227,33 @@ static std::string stripExportInterface( while (true) { std::string::size_type bPos = input.find("$<BUILD_INTERFACE:", lastPos); std::string::size_type iPos = input.find("$<INSTALL_INTERFACE:", lastPos); + std::string::size_type lPos = + input.find("$<BUILD_LOCAL_INTERFACE:", lastPos); - if (bPos == std::string::npos && iPos == std::string::npos) { + pos = std::min({ bPos, iPos, lPos }); + if (pos == std::string::npos) { break; } - if (bPos == std::string::npos) { - pos = iPos; - } else if (iPos == std::string::npos) { - pos = bPos; + result += input.substr(lastPos, pos - lastPos); + enum class FoundGenex + { + BuildInterface, + InstallInterface, + BuildLocalInterface, + } foundGenex = FoundGenex::BuildInterface; + if (pos == bPos) { + foundGenex = FoundGenex::BuildInterface; + pos += cmStrLen("$<BUILD_INTERFACE:"); + } else if (pos == iPos) { + foundGenex = FoundGenex::InstallInterface; + pos += cmStrLen("$<INSTALL_INTERFACE:"); + } else if (pos == lPos) { + foundGenex = FoundGenex::BuildLocalInterface; + pos += cmStrLen("$<BUILD_LOCAL_INTERFACE:"); } else { - pos = (bPos < iPos) ? bPos : iPos; + assert(false && "Invalid position found"); } - - result += input.substr(lastPos, pos - lastPos); - const bool gotInstallInterface = input[pos + 2] == 'I'; - pos += gotInstallInterface ? sizeof("$<INSTALL_INTERFACE:") - 1 - : sizeof("$<BUILD_INTERFACE:") - 1; nestingLevel = 1; const char* c = input.c_str() + pos; const char* const cStart = c; @@ -258,10 +269,10 @@ static std::string stripExportInterface( continue; } if (context == cmGeneratorExpression::BuildInterface && - !gotInstallInterface) { + foundGenex == FoundGenex::BuildInterface) { result += input.substr(pos, c - cStart); } else if (context == cmGeneratorExpression::InstallInterface && - gotInstallInterface) { + foundGenex == FoundGenex::InstallInterface) { const std::string content = input.substr(pos, c - cStart); if (resolveRelative) { prefixItems(content, result, "${_IMPORT_PREFIX}/"); @@ -274,9 +285,18 @@ static std::string stripExportInterface( } const std::string::size_type traversed = (c - cStart) + 1; if (!*c) { - result += std::string(gotInstallInterface ? "$<INSTALL_INTERFACE:" - : "$<BUILD_INTERFACE:") + - input.substr(pos, traversed); + auto remaining = input.substr(pos, traversed); + switch (foundGenex) { + case FoundGenex::BuildInterface: + result = cmStrCat(result, "$<BUILD_INTERFACE:", remaining); + break; + case FoundGenex::InstallInterface: + result = cmStrCat(result, "$<INSTALL_INTERFACE:", remaining); + break; + case FoundGenex::BuildLocalInterface: + result = cmStrCat(result, "$<BUILD_LOCAL_INTERFACE:", remaining); + break; + } } pos += traversed; lastPos = pos; diff --git a/Source/cmGeneratorExpressionNode.cxx b/Source/cmGeneratorExpressionNode.cxx index 562c31e..c14012e 100644 --- a/Source/cmGeneratorExpressionNode.cxx +++ b/Source/cmGeneratorExpressionNode.cxx @@ -114,6 +114,8 @@ static const struct OneNode buildInterfaceNode; static const struct ZeroNode installInterfaceNode; +static const struct OneNode buildLocalInterfaceNode; + struct BooleanOpNode : public cmGeneratorExpressionNode { BooleanOpNode(const char* op_, const char* successVal_, @@ -1970,7 +1972,10 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode } return std::string(); } - target = context->LG->FindGeneratorTargetToUse(targetName); + cmLocalGenerator const* lg = context->CurrentTarget + ? context->CurrentTarget->GetLocalGenerator() + : context->LG; + target = lg->FindGeneratorTargetToUse(targetName); if (!target) { std::ostringstream e; @@ -3320,6 +3325,7 @@ const cmGeneratorExpressionNode* cmGeneratorExpressionNode::GetNode( { "GENEX_EVAL", &genexEvalNode }, { "BUILD_INTERFACE", &buildInterfaceNode }, { "INSTALL_INTERFACE", &installInterfaceNode }, + { "BUILD_LOCAL_INTERFACE", &buildLocalInterfaceNode }, { "INSTALL_PREFIX", &installPrefixNode }, { "JOIN", &joinNode }, { "LINK_ONLY", &linkOnlyNode }, diff --git a/Source/cmGlobalVisualStudio10Generator.cxx b/Source/cmGlobalVisualStudio10Generator.cxx index d6d808d..266e08d 100644 --- a/Source/cmGlobalVisualStudio10Generator.cxx +++ b/Source/cmGlobalVisualStudio10Generator.cxx @@ -1155,8 +1155,6 @@ cmGlobalVisualStudio10Generator::GenerateBuildCommand( } else { makeCommand.Add(cmStrCat("/m:", std::to_string(jobs))); } - // Having msbuild.exe and cl.exe using multiple jobs is discouraged - makeCommand.Add("/p:CL_MPCount=1"); } // Respect the verbosity: 'n' normal will show build commands diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index ee74908..78d230e 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -1140,7 +1140,7 @@ cmSystemTools::CopyResult cmSystemTools::CopySingleFile( return CopyResult::Success; } - cmsys::Status status; + cmsys::SystemTools::CopyStatus status; status = cmsys::SystemTools::CloneFileContent(oldname, newname); if (!status) { // if cloning did not succeed, fall back to blockwise copy @@ -1149,14 +1149,24 @@ cmSystemTools::CopyResult cmSystemTools::CopySingleFile( if (!status) { if (err) { *err = status.GetString(); + switch (status.Path) { + case cmsys::SystemTools::CopyStatus::SourcePath: + *err = cmStrCat(*err, " (input)"); + break; + case cmsys::SystemTools::CopyStatus::DestPath: + *err = cmStrCat(*err, " (output)"); + break; + default: + break; + } } return CopyResult::Failure; } if (perms) { - status = SystemTools::SetPermissions(newname, perm); - if (!status) { + perms = SystemTools::SetPermissions(newname, perm); + if (!perms) { if (err) { - *err = status.GetString(); + *err = cmStrCat(perms.GetString(), " (output)"); } return CopyResult::Failure; } diff --git a/Source/kwsys/SystemTools.cxx b/Source/kwsys/SystemTools.cxx index fdd6b2d..a3ab51a 100644 --- a/Source/kwsys/SystemTools.cxx +++ b/Source/kwsys/SystemTools.cxx @@ -2290,8 +2290,8 @@ static std::string FileInDir(const std::string& source, const std::string& dir) return new_destination + '/' + SystemTools::GetFilenameName(source); } -Status SystemTools::CopyFileIfDifferent(std::string const& source, - std::string const& destination) +SystemTools::CopyStatus SystemTools::CopyFileIfDifferent( + std::string const& source, std::string const& destination) { // special check for a destination that is a directory // FilesDiffer does not handle file to directory compare @@ -2308,7 +2308,7 @@ Status SystemTools::CopyFileIfDifferent(std::string const& source, } } // at this point the files must be the same so return true - return Status::Success(); + return CopyStatus{ Status::Success(), CopyStatus::NoPath }; } #define KWSYS_ST_BUFFER 4096 @@ -2434,13 +2434,13 @@ bool SystemTools::TextFilesDiffer(const std::string& path1, return false; } -Status SystemTools::CopyFileContentBlockwise(std::string const& source, - std::string const& destination) +SystemTools::CopyStatus SystemTools::CopyFileContentBlockwise( + std::string const& source, std::string const& destination) { // Open files kwsys::ifstream fin(source.c_str(), std::ios::in | std::ios::binary); if (!fin) { - return Status::POSIX_errno(); + return CopyStatus{ Status::POSIX_errno(), CopyStatus::SourcePath }; } // try and remove the destination file so that read only destination files @@ -2452,7 +2452,7 @@ Status SystemTools::CopyFileContentBlockwise(std::string const& source, kwsys::ofstream fout(destination.c_str(), std::ios::out | std::ios::trunc | std::ios::binary); if (!fout) { - return Status::POSIX_errno(); + return CopyStatus{ Status::POSIX_errno(), CopyStatus::DestPath }; } // This copy loop is very sensitive on certain platforms with @@ -2481,10 +2481,10 @@ Status SystemTools::CopyFileContentBlockwise(std::string const& source, fout.close(); if (!fout) { - return Status::POSIX_errno(); + return CopyStatus{ Status::POSIX_errno(), CopyStatus::DestPath }; } - return Status::Success(); + return CopyStatus{ Status::Success(), CopyStatus::NoPath }; } /** @@ -2499,13 +2499,13 @@ Status SystemTools::CopyFileContentBlockwise(std::string const& source, * - The underlying filesystem does not support file cloning * - An unspecified error occurred */ -Status SystemTools::CloneFileContent(std::string const& source, - std::string const& destination) +SystemTools::CopyStatus SystemTools::CloneFileContent( + std::string const& source, std::string const& destination) { #if defined(__linux) && defined(FICLONE) int in = open(source.c_str(), O_RDONLY); if (in < 0) { - return Status::POSIX_errno(); + return CopyStatus{ Status::POSIX_errno(), CopyStatus::SourcePath }; } SystemTools::RemoveFile(destination); @@ -2513,14 +2513,14 @@ Status SystemTools::CloneFileContent(std::string const& source, int out = open(destination.c_str(), O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR); if (out < 0) { - Status status = Status::POSIX_errno(); + CopyStatus status{ Status::POSIX_errno(), CopyStatus::DestPath }; close(in); return status; } - Status status = Status::Success(); + CopyStatus status{ Status::Success(), CopyStatus::NoPath }; if (ioctl(out, FICLONE, in) < 0) { - status = Status::POSIX_errno(); + status = CopyStatus{ Status::POSIX_errno(), CopyStatus::NoPath }; } close(in); close(out); @@ -2532,40 +2532,41 @@ Status SystemTools::CloneFileContent(std::string const& source, // be updated by `copy_file_if_different` and `copy_file`. if (copyfile(source.c_str(), destination.c_str(), nullptr, COPYFILE_METADATA | COPYFILE_CLONE) < 0) { - return Status::POSIX_errno(); + return CopyStatus{ Status::POSIX_errno(), CopyStatus::NoPath }; } # if KWSYS_CXX_HAS_UTIMENSAT // utimensat is only available on newer Unixes and macOS 10.13+ if (utimensat(AT_FDCWD, destination.c_str(), nullptr, 0) < 0) { - return Status::POSIX_errno(); + return CopyStatus{ Status::POSIX_errno(), CopyStatus::DestPath }; } # else // fall back to utimes if (utimes(destination.c_str(), nullptr) < 0) { - return Status::POSIX_errno(); + return CopyStatus{ Status::POSIX_errno(), CopyStatus::DestPath }; } # endif - return Status::Success(); + return CopyStatus{ Status::Success(), CopyStatus::NoPath }; #else (void)source; (void)destination; - return Status::POSIX(ENOSYS); + return CopyStatus{ Status::POSIX(ENOSYS), CopyStatus::NoPath }; #endif } /** * Copy a file named by "source" to the file named by "destination". */ -Status SystemTools::CopyFileAlways(std::string const& source, - std::string const& destination) +SystemTools::CopyStatus SystemTools::CopyFileAlways( + std::string const& source, std::string const& destination) { - Status status; + CopyStatus status; mode_t perm = 0; Status perms = SystemTools::GetPermissions(source, perm); std::string real_destination = destination; if (SystemTools::FileIsDirectory(source)) { - status = SystemTools::MakeDirectory(destination); + status = CopyStatus{ SystemTools::MakeDirectory(destination), + CopyStatus::DestPath }; if (!status.IsSuccess()) { return status; } @@ -2590,7 +2591,8 @@ Status SystemTools::CopyFileAlways(std::string const& source, // Create destination directory if (!destination_dir.empty()) { - status = SystemTools::MakeDirectory(destination_dir); + status = CopyStatus{ SystemTools::MakeDirectory(destination_dir), + CopyStatus::DestPath }; if (!status.IsSuccess()) { return status; } @@ -2606,13 +2608,15 @@ Status SystemTools::CopyFileAlways(std::string const& source, } } if (perms) { - status = SystemTools::SetPermissions(real_destination, perm); + status = CopyStatus{ SystemTools::SetPermissions(real_destination, perm), + CopyStatus::DestPath }; } return status; } -Status SystemTools::CopyAFile(std::string const& source, - std::string const& destination, bool always) +SystemTools::CopyStatus SystemTools::CopyAFile(std::string const& source, + std::string const& destination, + bool always) { if (always) { return SystemTools::CopyFileAlways(source, destination); diff --git a/Source/kwsys/SystemTools.hxx.in b/Source/kwsys/SystemTools.hxx.in index acce015..56b65fd 100644 --- a/Source/kwsys/SystemTools.hxx.in +++ b/Source/kwsys/SystemTools.hxx.in @@ -566,11 +566,34 @@ public: const mode_t* mode = nullptr); /** + * Represent the result of a file copy operation. + * This is the result 'Status' and, if the operation failed, + * an indication of whether the error occurred on the source + * or destination path. + */ + struct CopyStatus : public Status + { + enum WhichPath + { + NoPath, + SourcePath, + DestPath, + }; + CopyStatus() = default; + CopyStatus(Status s, WhichPath p) + : Status(s) + , Path(p) + { + } + WhichPath Path = NoPath; + }; + + /** * Copy the source file to the destination file only * if the two files differ. */ - static Status CopyFileIfDifferent(std::string const& source, - std::string const& destination); + static CopyStatus CopyFileIfDifferent(std::string const& source, + std::string const& destination); /** * Compare the contents of two files. Return true if different @@ -588,13 +611,13 @@ public: /** * Blockwise copy source to destination file */ - static Status CopyFileContentBlockwise(std::string const& source, - std::string const& destination); + static CopyStatus CopyFileContentBlockwise(std::string const& source, + std::string const& destination); /** * Clone the source file to the destination file */ - static Status CloneFileContent(std::string const& source, - std::string const& destination); + static CopyStatus CloneFileContent(std::string const& source, + std::string const& destination); /** * Return true if the two files are the same file @@ -604,16 +627,17 @@ public: /** * Copy a file. */ - static Status CopyFileAlways(std::string const& source, - std::string const& destination); + static CopyStatus CopyFileAlways(std::string const& source, + std::string const& destination); /** * Copy a file. If the "always" argument is true the file is always * copied. If it is false, the file is copied only if it is new or * has changed. */ - static Status CopyAFile(std::string const& source, - std::string const& destination, bool always = true); + static CopyStatus CopyAFile(std::string const& source, + std::string const& destination, + bool always = true); /** * Copy content directory to another directory with all files and diff --git a/Tests/FindBoost/TestPython/CMakeLists.txt b/Tests/FindBoost/TestPython/CMakeLists.txt index 8ef18e9..494c9a3 100644 --- a/Tests/FindBoost/TestPython/CMakeLists.txt +++ b/Tests/FindBoost/TestPython/CMakeLists.txt @@ -2,10 +2,10 @@ cmake_minimum_required(VERSION 3.14) project(TestFindBoostPython CXX) include(CTest) -find_package(Boost OPTIONAL_COMPONENTS python27 python34 python35 python36 python37 python38 python39 python310) +find_package(Boost OPTIONAL_COMPONENTS python27 python34 python35 python36 python37 python38 python39 python310 python311 python312) set(FAILTEST TRUE) -foreach (v IN ITEMS 27 34 35 36 37 38 39 310) +foreach (v IN ITEMS 27 34 35 36 37 38 39 310 311 312) if (Boost_PYTHON${v}_FOUND) set(FAILTEST FALSE) break() diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index ad5cbb2..1174d0d 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -351,6 +351,7 @@ add_RunCMake_test(GenEx-LINK_LIBRARY) add_RunCMake_test(GenEx-LINK_GROUP) add_RunCMake_test(GenEx-TARGET_FILE -DLINKER_SUPPORTS_PDB=${LINKER_SUPPORTS_PDB}) add_RunCMake_test(GenEx-GENEX_EVAL) +add_RunCMake_test(GenEx-TARGET_PROPERTY) add_RunCMake_test(GenEx-TARGET_RUNTIME_DLLS) add_RunCMake_test(GenEx-PATH) add_RunCMake_test(GenEx-PATH_EQUAL) @@ -365,7 +366,6 @@ add_RunCMake_test(GetPrerequisites -DSAMPLE_EXE=$<TARGET_FILE:exit_code>) add_RunCMake_test(GNUInstallDirs -DSYSTEM_NAME=${CMAKE_SYSTEM_NAME}) add_RunCMake_test(GoogleTest) # Note: does not actually depend on Google Test add_RunCMake_test(Graphviz) -add_RunCMake_test(TargetPropertyGeneratorExpressions) add_RunCMake_test(Languages) add_RunCMake_test(LinkItemValidation) add_RunCMake_test(LinkStatic) diff --git a/Tests/RunCMake/ExportImport/BuildInstallInterfaceGenex-export.cmake b/Tests/RunCMake/ExportImport/BuildInstallInterfaceGenex-export.cmake new file mode 100644 index 0000000..94076bb --- /dev/null +++ b/Tests/RunCMake/ExportImport/BuildInstallInterfaceGenex-export.cmake @@ -0,0 +1,14 @@ +enable_language(C) + +add_library(mainlib STATIC foo.c) +target_compile_definitions(mainlib INTERFACE + $<BUILD_LOCAL_INTERFACE:BUILD_LOCAL_INTERFACE> + $<BUILD_INTERFACE:BUILD_INTERFACE> + $<INSTALL_INTERFACE:INSTALL_INTERFACE> + ) +add_library(locallib STATIC locallib.c) +target_link_libraries(locallib PRIVATE mainlib) + +install(TARGETS mainlib EXPORT export) +install(EXPORT export DESTINATION lib/cmake/install FILE install-config.cmake NAMESPACE install::) +export(EXPORT export FILE build-config.cmake NAMESPACE build::) diff --git a/Tests/RunCMake/ExportImport/BuildInstallInterfaceGenex-import.cmake b/Tests/RunCMake/ExportImport/BuildInstallInterfaceGenex-import.cmake new file mode 100644 index 0000000..3fe5fae --- /dev/null +++ b/Tests/RunCMake/ExportImport/BuildInstallInterfaceGenex-import.cmake @@ -0,0 +1,9 @@ +enable_language(C) + +find_package(build REQUIRED) +find_package(install REQUIRED) + +add_library(buildlib STATIC buildlib.c) +target_link_libraries(buildlib PRIVATE build::mainlib) +add_library(installlib STATIC installlib.c) +target_link_libraries(installlib PRIVATE install::mainlib) diff --git a/Tests/RunCMake/ExportImport/RunCMakeTest.cmake b/Tests/RunCMake/ExportImport/RunCMakeTest.cmake index d07fca2..b730047 100644 --- a/Tests/RunCMake/ExportImport/RunCMakeTest.cmake +++ b/Tests/RunCMake/ExportImport/RunCMakeTest.cmake @@ -22,3 +22,28 @@ function(run_ExportImport_test case) endfunction() run_ExportImport_test(SharedDep) + +function(run_ExportImportBuildInstall_test case) + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${case}-export-build) + set(CMAKE_INSTALL_PREFIX ${RunCMake_TEST_BINARY_DIR}/root) + if (NOT RunCMake_GENERATOR_IS_MULTI_CONFIG) + set(RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=Debug) + endif() + run_cmake(${case}-export) + unset(RunCMake_TEST_OPTIONS) + set(RunCMake_TEST_NO_CLEAN 1) + run_cmake_command(${case}-export-build ${CMAKE_COMMAND} --build . --config Debug) + run_cmake_command(${case}-export-install ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} -DBUILD_TYPE=Debug -P cmake_install.cmake) + unset(RunCMake_TEST_NO_CLEAN) + + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${case}-import-build) + run_cmake_with_options(${case}-import + -Dbuild_DIR=${RunCMake_BINARY_DIR}/${case}-export-build + -Dinstall_DIR=${CMAKE_INSTALL_PREFIX}/lib/cmake/install + ) + set(RunCMake_TEST_NO_CLEAN 1) + run_cmake_command(${case}-import-build ${CMAKE_COMMAND} --build . --config Debug) + unset(RunCMake_TEST_NO_CLEAN) +endfunction() + +run_ExportImportBuildInstall_test(BuildInstallInterfaceGenex) diff --git a/Tests/RunCMake/ExportImport/buildlib.c b/Tests/RunCMake/ExportImport/buildlib.c new file mode 100644 index 0000000..ac19310 --- /dev/null +++ b/Tests/RunCMake/ExportImport/buildlib.c @@ -0,0 +1,8 @@ +#if !(!defined(BUILD_LOCAL_INTERFACE) && defined(BUILD_INTERFACE) && \ + !defined(INSTALL_INTERFACE)) +# error "Incorrect compile definitions" +#endif + +void buildlib(void) +{ +} diff --git a/Tests/RunCMake/ExportImport/installlib.c b/Tests/RunCMake/ExportImport/installlib.c new file mode 100644 index 0000000..00d503c --- /dev/null +++ b/Tests/RunCMake/ExportImport/installlib.c @@ -0,0 +1,8 @@ +#if !(!defined(BUILD_LOCAL_INTERFACE) && !defined(BUILD_INTERFACE) && \ + defined(INSTALL_INTERFACE)) +# error "Incorrect compile definitions" +#endif + +void installlib(void) +{ +} diff --git a/Tests/RunCMake/ExportImport/locallib.c b/Tests/RunCMake/ExportImport/locallib.c new file mode 100644 index 0000000..f9e3d8d --- /dev/null +++ b/Tests/RunCMake/ExportImport/locallib.c @@ -0,0 +1,8 @@ +#if !(defined(BUILD_LOCAL_INTERFACE) && defined(BUILD_INTERFACE) && \ + !defined(INSTALL_INTERFACE)) +# error "Incorrect compile definitions" +#endif + +void locallib(void) +{ +} diff --git a/Tests/RunCMake/File_Archive/argument-validation-compression-level-1-stderr.txt b/Tests/RunCMake/File_Archive/argument-validation-compression-level-1-stderr.txt index d7bc79a..c2d4071 100644 --- a/Tests/RunCMake/File_Archive/argument-validation-compression-level-1-stderr.txt +++ b/Tests/RunCMake/File_Archive/argument-validation-compression-level-1-stderr.txt @@ -1,5 +1,5 @@ CMake Error at compression-level.cmake:39 \(file\): - file compression level 100 should be in range 0 to 9 + file compression level 100 for GZip should be in range 0 to 9 Call Stack \(most recent call first\): argument-validation-compression-level-1.cmake:8 \(check_compression_level\) CMakeLists.txt:3 \(include\) diff --git a/Tests/RunCMake/File_Archive/argument-validation-compression-level-2-stderr.txt b/Tests/RunCMake/File_Archive/argument-validation-compression-level-2-stderr.txt index 0f7bd9e..d4a4402 100644 --- a/Tests/RunCMake/File_Archive/argument-validation-compression-level-2-stderr.txt +++ b/Tests/RunCMake/File_Archive/argument-validation-compression-level-2-stderr.txt @@ -1,5 +1,5 @@ CMake Error at compression-level.cmake:39 \(file\): - file compression level high should be in range 0 to 9 + file compression level high for GZip should be in range 0 to 9 Call Stack \(most recent call first\): argument-validation-compression-level-2.cmake:8 \(check_compression_level\) CMakeLists.txt:3 \(include\) diff --git a/Tests/RunCMake/File_Archive/pax-zstd-compression-level.cmake b/Tests/RunCMake/File_Archive/pax-zstd-compression-level.cmake index 73fd84d..7002860 100644 --- a/Tests/RunCMake/File_Archive/pax-zstd-compression-level.cmake +++ b/Tests/RunCMake/File_Archive/pax-zstd-compression-level.cmake @@ -8,3 +8,6 @@ include(${CMAKE_CURRENT_LIST_DIR}/compression-level.cmake) check_compression_level("1") check_compression_level("5") check_compression_level("9") +check_compression_level("12") +check_compression_level("15") +check_compression_level("19") diff --git a/Tests/RunCMake/GeneratorExpression/TARGET_PROPERTY-ALIAS_GLOBAL-check.cmake b/Tests/RunCMake/GenEx-TARGET_PROPERTY/ALIAS_GLOBAL-check.cmake index 0fbf837..0fbf837 100644 --- a/Tests/RunCMake/GeneratorExpression/TARGET_PROPERTY-ALIAS_GLOBAL-check.cmake +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/ALIAS_GLOBAL-check.cmake diff --git a/Tests/RunCMake/GeneratorExpression/TARGET_PROPERTY-ALIAS_GLOBAL.cmake b/Tests/RunCMake/GenEx-TARGET_PROPERTY/ALIAS_GLOBAL.cmake index 212c034..212c034 100644 --- a/Tests/RunCMake/GeneratorExpression/TARGET_PROPERTY-ALIAS_GLOBAL.cmake +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/ALIAS_GLOBAL.cmake diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName-result.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName-result.txt index d00491f..d00491f 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName-result.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName-result.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName-stderr.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName-stderr.txt index 6da79b7..6da79b7 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName-stderr.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName-stderr.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName.cmake b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName.cmake index 5f083e2..d3f82aa 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName.cmake +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName.cmake @@ -1,3 +1,4 @@ +enable_language(CXX) add_subdirectory(BadInvalidName1) add_subdirectory(BadInvalidName2) add_subdirectory(BadInvalidName3) @@ -6,3 +7,6 @@ add_subdirectory(BadInvalidName5) add_subdirectory(BadInvalidName6) add_subdirectory(BadInvalidName7) add_subdirectory(BadInvalidName8) + +# Suppress generator-specific targets that might pollute the stderr. +set(CMAKE_SUPPRESS_REGENERATION TRUE) diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName1/CMakeLists.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName1/CMakeLists.txt index 13e1de7..13e1de7 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName1/CMakeLists.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName1/CMakeLists.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName2/CMakeLists.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName2/CMakeLists.txt index 4b78472..4b78472 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName2/CMakeLists.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName2/CMakeLists.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName3/CMakeLists.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName3/CMakeLists.txt index 516a049..516a049 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName3/CMakeLists.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName3/CMakeLists.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName4/CMakeLists.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName4/CMakeLists.txt index 02f2a1a..02f2a1a 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName4/CMakeLists.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName4/CMakeLists.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName5/CMakeLists.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName5/CMakeLists.txt index a653583..a653583 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName5/CMakeLists.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName5/CMakeLists.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName6/CMakeLists.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName6/CMakeLists.txt index 614458e..614458e 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName6/CMakeLists.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName6/CMakeLists.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName7/CMakeLists.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName7/CMakeLists.txt index 8a9fe80..8a9fe80 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName7/CMakeLists.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName7/CMakeLists.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName8/CMakeLists.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName8/CMakeLists.txt index b228159..b228159 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadInvalidName8/CMakeLists.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadInvalidName8/CMakeLists.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadNonTarget-result.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadNonTarget-result.txt index d00491f..d00491f 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadNonTarget-result.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadNonTarget-result.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadNonTarget-stderr.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadNonTarget-stderr.txt index d40b16b..0c9320b 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadNonTarget-stderr.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadNonTarget-stderr.txt @@ -1,4 +1,4 @@ -CMake Error at BadNonTarget.cmake:7 \(include_directories\): +CMake Error at BadNonTarget.cmake:6 \(include_directories\): Error evaluating generator expression: \$<TARGET_PROPERTY:NonExistent,INCLUDE_DIRECTORIES> diff --git a/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadNonTarget.cmake b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadNonTarget.cmake new file mode 100644 index 0000000..731d758 --- /dev/null +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadNonTarget.cmake @@ -0,0 +1,9 @@ +enable_language(CXX) +file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/main.cpp" + "int main(int, char **) { return 0; }\n") + +add_executable(main "${CMAKE_CURRENT_BINARY_DIR}/main.cpp") +include_directories("$<TARGET_PROPERTY:NonExistent,INCLUDE_DIRECTORIES>") + +# Suppress generator-specific targets that might pollute the stderr. +set(CMAKE_SUPPRESS_REGENERATION TRUE) diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference-result.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference-result.txt index d00491f..d00491f 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference-result.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference-result.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference-stderr.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference-stderr.txt index fa26861..fa26861 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference-stderr.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference-stderr.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference.cmake b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference.cmake index 5a99f7a..ee8b9ec 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference.cmake +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference.cmake @@ -1,6 +1,10 @@ +enable_language(CXX) add_subdirectory(BadSelfReference1) add_subdirectory(BadSelfReference2) add_subdirectory(BadSelfReference3) add_subdirectory(BadSelfReference4) add_subdirectory(BadSelfReference5) add_subdirectory(BadSelfReference6) + +# Suppress generator-specific targets that might pollute the stderr. +set(CMAKE_SUPPRESS_REGENERATION TRUE) diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference1/CMakeLists.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference1/CMakeLists.txt index 30c27f5..30c27f5 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference1/CMakeLists.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference1/CMakeLists.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference2/CMakeLists.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference2/CMakeLists.txt index c2322f4..c2322f4 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference2/CMakeLists.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference2/CMakeLists.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference3/CMakeLists.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference3/CMakeLists.txt index 3e6c30a..3e6c30a 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference3/CMakeLists.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference3/CMakeLists.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference4/CMakeLists.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference4/CMakeLists.txt index f79727a..f79727a 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference4/CMakeLists.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference4/CMakeLists.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference5/CMakeLists.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference5/CMakeLists.txt index c0badbf..c0badbf 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference5/CMakeLists.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference5/CMakeLists.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference6/CMakeLists.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference6/CMakeLists.txt index fcb6b3c..fcb6b3c 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference6/CMakeLists.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/BadSelfReference6/CMakeLists.txt diff --git a/Tests/RunCMake/GenEx-TARGET_PROPERTY/CMakeLists.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/CMakeLists.txt new file mode 100644 index 0000000..26a73f9 --- /dev/null +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/CMakeLists.txt @@ -0,0 +1,6 @@ +cmake_minimum_required(VERSION 3.3) +if(RunCMake_TEST STREQUAL "LOCATION") + cmake_minimum_required(VERSION 2.8.12) # Leave CMP0026 unset. +endif() +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/GeneratorExpression/TARGET_PROPERTY-INCLUDE_DIRECTORIES-check.cmake b/Tests/RunCMake/GenEx-TARGET_PROPERTY/INCLUDE_DIRECTORIES-check.cmake index ecf7bfe..ecf7bfe 100644 --- a/Tests/RunCMake/GeneratorExpression/TARGET_PROPERTY-INCLUDE_DIRECTORIES-check.cmake +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/INCLUDE_DIRECTORIES-check.cmake diff --git a/Tests/RunCMake/GeneratorExpression/TARGET_PROPERTY-INCLUDE_DIRECTORIES.cmake b/Tests/RunCMake/GenEx-TARGET_PROPERTY/INCLUDE_DIRECTORIES.cmake index e9855be..e9855be 100644 --- a/Tests/RunCMake/GeneratorExpression/TARGET_PROPERTY-INCLUDE_DIRECTORIES.cmake +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/INCLUDE_DIRECTORIES.cmake diff --git a/Tests/RunCMake/GeneratorExpression/TARGET_PROPERTY-LOCATION-stderr.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LOCATION-stderr.txt index a4c8dcd..a4c8dcd 100644 --- a/Tests/RunCMake/GeneratorExpression/TARGET_PROPERTY-LOCATION-stderr.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LOCATION-stderr.txt diff --git a/Tests/RunCMake/GeneratorExpression/TARGET_PROPERTY-LOCATION.cmake b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LOCATION.cmake index 8929cdb..8929cdb 100644 --- a/Tests/RunCMake/GeneratorExpression/TARGET_PROPERTY-LOCATION.cmake +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LOCATION.cmake diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle1-result.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle1-result.txt index d00491f..d00491f 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle1-result.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle1-result.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle1-stderr.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle1-stderr.txt index 8bff68e..8bff68e 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle1-stderr.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle1-stderr.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle1.cmake b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle1.cmake index 4b60214..775e5a0 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle1.cmake +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle1.cmake @@ -1,4 +1,4 @@ - +enable_language(CXX) add_library(empty1 empty.cpp) add_library(empty2 empty.cpp) @@ -6,3 +6,6 @@ target_link_libraries(empty1 LINK_PUBLIC $<$<STREQUAL:$<TARGET_PROPERTY:INCLUDE_DIRECTORIES>,/foo/bar>:empty2> ) + +# Suppress generator-specific targets that might pollute the stderr. +set(CMAKE_SUPPRESS_REGENERATION TRUE) diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle2-result.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle2-result.txt index d00491f..d00491f 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle2-result.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle2-result.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle2-stderr.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle2-stderr.txt index 044b77c..044b77c 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle2-stderr.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle2-stderr.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle2.cmake b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle2.cmake index 557eac1..fc14b48 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle2.cmake +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle2.cmake @@ -1,4 +1,4 @@ - +enable_language(CXX) add_library(empty1 empty.cpp) add_library(empty2 empty.cpp) @@ -6,3 +6,6 @@ target_link_libraries(empty1 LINK_PUBLIC $<$<STREQUAL:$<TARGET_PROPERTY:INTERFACE_INCLUDE_DIRECTORIES>,/foo/bar>:empty2> ) + +# Suppress generator-specific targets that might pollute the stderr. +set(CMAKE_SUPPRESS_REGENERATION TRUE) diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle3-result.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle3-result.txt index 573541a..573541a 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle3-result.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle3-result.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle3.cmake b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle3.cmake index 0f921d4..e084502 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle3.cmake +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle3.cmake @@ -1,4 +1,4 @@ - +enable_language(CXX) add_library(empty1 empty.cpp) add_library(empty2 empty.cpp) @@ -8,3 +8,6 @@ target_link_libraries(empty1 INTERFACE $<$<STREQUAL:$<TARGET_PROPERTY:INCLUDE_DIRECTORIES>,/foo/bar>:empty2> ) + +# Suppress generator-specific targets that might pollute the stderr. +set(CMAKE_SUPPRESS_REGENERATION TRUE) diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle4-result.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle4-result.txt index d00491f..d00491f 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle4-result.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle4-result.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle4-stderr.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle4-stderr.txt index d56b199..d56b199 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle4-stderr.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle4-stderr.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle4.cmake b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle4.cmake index ab6d0b2..42290de 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle4.cmake +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle4.cmake @@ -1,4 +1,4 @@ - +enable_language(CXX) add_library(empty1 empty.cpp) add_library(empty2 empty.cpp) @@ -12,3 +12,6 @@ target_link_libraries(empty1 add_library(empty3 empty.cpp) target_link_libraries(empty3 empty1) + +# Suppress generator-specific targets that might pollute the stderr. +set(CMAKE_SUPPRESS_REGENERATION TRUE) diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle5-result.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle5-result.txt index d00491f..d00491f 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle5-result.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle5-result.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle5-stderr.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle5-stderr.txt index cf4e6d7..cf4e6d7 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle5-stderr.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle5-stderr.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle5.cmake b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle5.cmake index dc180e3..9597176 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle5.cmake +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle5.cmake @@ -1,4 +1,4 @@ - +enable_language(CXX) add_library(empty1 INTERFACE IMPORTED) add_library(empty2 INTERFACE IMPORTED) @@ -8,3 +8,6 @@ set_property(TARGET empty1 PROPERTY INTERFACE_LINK_LIBRARIES add_library(empty3 empty.cpp) target_link_libraries(empty3 empty1) + +# Suppress generator-specific targets that might pollute the stderr. +set(CMAKE_SUPPRESS_REGENERATION TRUE) diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle6-result.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle6-result.txt index d00491f..d00491f 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle6-result.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle6-result.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle6-stderr.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle6-stderr.txt index 93cb573..93cb573 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle6-stderr.txt +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle6-stderr.txt diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle6.cmake b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle6.cmake index 91252d0..94a5419 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/LinkImplementationCycle6.cmake +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/LinkImplementationCycle6.cmake @@ -1,4 +1,4 @@ - +enable_language(CXX) add_library(empty1 SHARED empty.cpp) add_library(empty2 SHARED empty.cpp) @@ -12,3 +12,6 @@ target_link_libraries(empty1 add_library(empty3 SHARED empty.cpp) target_link_libraries(empty3 empty1) + +# Suppress generator-specific targets that might pollute the stderr. +set(CMAKE_SUPPRESS_REGENERATION TRUE) diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/RunCMakeTest.cmake b/Tests/RunCMake/GenEx-TARGET_PROPERTY/RunCMakeTest.cmake index 4294e9f..b613ad1 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/RunCMakeTest.cmake +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/RunCMakeTest.cmake @@ -1,11 +1,22 @@ include(RunCMake) -run_cmake(BadSelfReference) -run_cmake(BadNonTarget) +run_cmake(ALIAS_GLOBAL) run_cmake(BadInvalidName) +run_cmake(BadNonTarget) +run_cmake(BadSelfReference) +run_cmake(INCLUDE_DIRECTORIES) run_cmake(LinkImplementationCycle1) run_cmake(LinkImplementationCycle2) run_cmake(LinkImplementationCycle3) run_cmake(LinkImplementationCycle4) run_cmake(LinkImplementationCycle5) run_cmake(LinkImplementationCycle6) +run_cmake(LOCATION) +run_cmake(SOURCES) + +block() + run_cmake(Scope) + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/Scope-build) + set(RunCMake_TEST_NO_CLEAN 1) + run_cmake_command(Scope-build ${CMAKE_COMMAND} --build . --config Debug) +endblock() diff --git a/Tests/RunCMake/GeneratorExpression/TARGET_PROPERTY-SOURCES-check.cmake b/Tests/RunCMake/GenEx-TARGET_PROPERTY/SOURCES-check.cmake index c1a0f5b..c1a0f5b 100644 --- a/Tests/RunCMake/GeneratorExpression/TARGET_PROPERTY-SOURCES-check.cmake +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/SOURCES-check.cmake diff --git a/Tests/RunCMake/GeneratorExpression/TARGET_PROPERTY-SOURCES.cmake b/Tests/RunCMake/GenEx-TARGET_PROPERTY/SOURCES.cmake index dee7ead..dee7ead 100644 --- a/Tests/RunCMake/GeneratorExpression/TARGET_PROPERTY-SOURCES.cmake +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/SOURCES.cmake diff --git a/Tests/RunCMake/GenEx-TARGET_PROPERTY/Scope-build-stdout.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/Scope-build-stdout.txt new file mode 100644 index 0000000..fefad22 --- /dev/null +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/Scope-build-stdout.txt @@ -0,0 +1,6 @@ +.*iface scope1: 'SCOPED_A_1;SCOPED_B_1' +.*iface scope2: 'SCOPED_A_2' +.*iface scope2 in scope1: 'SCOPED_A_2' +.*custom scope1: 'SCOPED_A_1;SCOPED_B_1' +.*custom scope2: 'SCOPED_A_2' +.*custom scope2 in scope1: 'SCOPED_A_1' diff --git a/Tests/RunCMake/GenEx-TARGET_PROPERTY/Scope.c b/Tests/RunCMake/GenEx-TARGET_PROPERTY/Scope.c new file mode 100644 index 0000000..a4bec6f --- /dev/null +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/Scope.c @@ -0,0 +1,12 @@ +#ifndef SCOPED_A_1 +# error "SCOPED_A_1 not defined" +#endif +#ifndef SCOPED_B_1 +# error "SCOPED_B_1 not defined" +#endif +#ifndef SCOPED_A_2 +# error "SCOPED_A_2 not defined" +#endif +void Scope(void) +{ +} diff --git a/Tests/RunCMake/GenEx-TARGET_PROPERTY/Scope.cmake b/Tests/RunCMake/GenEx-TARGET_PROPERTY/Scope.cmake new file mode 100644 index 0000000..48a878a --- /dev/null +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/Scope.cmake @@ -0,0 +1,19 @@ +enable_language(C) + +add_subdirectory(Scope1) +add_subdirectory(Scope2) + +add_library(Scope Scope.c) +target_link_libraries(Scope PRIVATE + scope1_iface + scope2_iface + ) + +add_custom_target(Custom ALL VERBATIM + COMMAND ${CMAKE_COMMAND} -E echo "iface scope1: '$<TARGET_PROPERTY:scope1_iface,INTERFACE_COMPILE_DEFINITIONS>'" + COMMAND ${CMAKE_COMMAND} -E echo "iface scope2: '$<TARGET_PROPERTY:scope2_iface,INTERFACE_COMPILE_DEFINITIONS>'" + COMMAND ${CMAKE_COMMAND} -E echo "iface scope2 in scope1: '$<TARGET_GENEX_EVAL:scope1_iface,$<TARGET_PROPERTY:scope2_iface,INTERFACE_COMPILE_DEFINITIONS>>'" + COMMAND ${CMAKE_COMMAND} -E echo "custom scope1: '$<TARGET_GENEX_EVAL:scope1_iface,$<TARGET_PROPERTY:scope1_iface,CUSTOM_PROP>>'" + COMMAND ${CMAKE_COMMAND} -E echo "custom scope2: '$<TARGET_GENEX_EVAL:scope2_iface,$<TARGET_PROPERTY:scope2_iface,CUSTOM_PROP>>'" + COMMAND ${CMAKE_COMMAND} -E echo "custom scope2 in scope1: '$<TARGET_GENEX_EVAL:scope1_iface,$<TARGET_PROPERTY:scope2_iface,CUSTOM_PROP>>'" + ) diff --git a/Tests/RunCMake/GenEx-TARGET_PROPERTY/Scope1/CMakeLists.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/Scope1/CMakeLists.txt new file mode 100644 index 0000000..d546267 --- /dev/null +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/Scope1/CMakeLists.txt @@ -0,0 +1,15 @@ +add_library(scopedA INTERFACE IMPORTED) +set_property(TARGET scopedA PROPERTY INTERFACE_COMPILE_DEFINITIONS "SCOPED_A_1") + +add_library(scopedB INTERFACE IMPORTED) +set_property(TARGET scopedB PROPERTY INTERFACE_COMPILE_DEFINITIONS "SCOPED_B_1") + +add_library(scope1_iface INTERFACE) +set_property(TARGET scope1_iface PROPERTY INTERFACE_COMPILE_DEFINITIONS + "$<TARGET_PROPERTY:scopedA,INTERFACE_COMPILE_DEFINITIONS>" + "$<TARGET_PROPERTY:scopedB,INTERFACE_COMPILE_DEFINITIONS>" + ) +set_property(TARGET scope1_iface PROPERTY CUSTOM_PROP + "$<TARGET_PROPERTY:scopedA,INTERFACE_COMPILE_DEFINITIONS>" + "$<TARGET_PROPERTY:scopedB,INTERFACE_COMPILE_DEFINITIONS>" + ) diff --git a/Tests/RunCMake/GenEx-TARGET_PROPERTY/Scope2/CMakeLists.txt b/Tests/RunCMake/GenEx-TARGET_PROPERTY/Scope2/CMakeLists.txt new file mode 100644 index 0000000..a6d7e6b --- /dev/null +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/Scope2/CMakeLists.txt @@ -0,0 +1,10 @@ +add_library(scopedA INTERFACE IMPORTED) +set_property(TARGET scopedA PROPERTY INTERFACE_COMPILE_DEFINITIONS "SCOPED_A_2") + +add_library(scope2_iface INTERFACE) +set_property(TARGET scope2_iface PROPERTY INTERFACE_COMPILE_DEFINITIONS + "$<TARGET_PROPERTY:scopedA,INTERFACE_COMPILE_DEFINITIONS>" + ) +set_property(TARGET scope2_iface PROPERTY CUSTOM_PROP + "$<TARGET_PROPERTY:scopedA,INTERFACE_COMPILE_DEFINITIONS>" + ) diff --git a/Tests/RunCMake/GeneratorExpression/empty3.c b/Tests/RunCMake/GenEx-TARGET_PROPERTY/empty.c index e69de29..e69de29 100644 --- a/Tests/RunCMake/GeneratorExpression/empty3.c +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/empty.c diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/empty.cpp b/Tests/RunCMake/GenEx-TARGET_PROPERTY/empty.cpp index 11ec041..11ec041 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/empty.cpp +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/empty.cpp diff --git a/Tests/RunCMake/GeneratorExpression/empty2.c b/Tests/RunCMake/GenEx-TARGET_PROPERTY/empty2.c index e69de29..e69de29 100644 --- a/Tests/RunCMake/GeneratorExpression/empty2.c +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/empty2.c diff --git a/Tests/RunCMake/GenEx-TARGET_PROPERTY/empty3.c b/Tests/RunCMake/GenEx-TARGET_PROPERTY/empty3.c new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/empty3.c diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/main.cpp b/Tests/RunCMake/GenEx-TARGET_PROPERTY/main.cpp index f8b643a..f8b643a 100644 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/main.cpp +++ b/Tests/RunCMake/GenEx-TARGET_PROPERTY/main.cpp diff --git a/Tests/RunCMake/GeneratorExpression/RunCMakeTest.cmake b/Tests/RunCMake/GeneratorExpression/RunCMakeTest.cmake index edeb6bd..8d8c8dc 100644 --- a/Tests/RunCMake/GeneratorExpression/RunCMakeTest.cmake +++ b/Tests/RunCMake/GeneratorExpression/RunCMakeTest.cmake @@ -22,10 +22,6 @@ run_cmake(NonValidTarget-CXX_COMPILER_VERSION) run_cmake(NonValidTarget-Fortran_COMPILER_VERSION) run_cmake(NonValidTarget-TARGET_PROPERTY) run_cmake(NonValidTarget-TARGET_POLICY) -run_cmake(TARGET_PROPERTY-INCLUDE_DIRECTORIES) -run_cmake(TARGET_PROPERTY-LOCATION) -run_cmake(TARGET_PROPERTY-SOURCES) -run_cmake(TARGET_PROPERTY-ALIAS_GLOBAL) run_cmake(LINK_ONLY-not-linking) run_cmake(TARGET_EXISTS-no-arg) run_cmake(TARGET_EXISTS-empty-arg) diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadNonTarget.cmake b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadNonTarget.cmake deleted file mode 100644 index 97d81e9..0000000 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadNonTarget.cmake +++ /dev/null @@ -1,7 +0,0 @@ - -file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/main.cpp" - "int main(int, char **) { return 0; }\n") - -add_executable(TargetPropertyGeneratorExpressions - "${CMAKE_CURRENT_BINARY_DIR}/main.cpp") -include_directories("$<TARGET_PROPERTY:NonExistent,INCLUDE_DIRECTORIES>") diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/CMakeLists.txt b/Tests/RunCMake/TargetPropertyGeneratorExpressions/CMakeLists.txt deleted file mode 100644 index c3922d6..0000000 --- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ - -cmake_minimum_required(VERSION 3.3) -project(${RunCMake_TEST} CXX) - -# MSVC creates extra targets which pollute the stderr unless we set this. -set(CMAKE_SUPPRESS_REGENERATION TRUE) - -include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/file/COPY_FILE-input-missing-result.txt b/Tests/RunCMake/file/COPY_FILE-input-missing-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/file/COPY_FILE-input-missing-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/file/COPY_FILE-input-missing-stderr.txt b/Tests/RunCMake/file/COPY_FILE-input-missing-stderr.txt new file mode 100644 index 0000000..989925d --- /dev/null +++ b/Tests/RunCMake/file/COPY_FILE-input-missing-stderr.txt @@ -0,0 +1,14 @@ +^CMake Error at [^ +]*/Tests/RunCMake/file/COPY_FILE-input-missing.cmake:[0-9]+ \(file\): + file COPY_FILE failed to copy + + [^ +]*/Tests/RunCMake/file/COPY_FILE-input-missing-build/input-missing + + to + + [^ +]*/Tests/RunCMake/file/COPY_FILE-input-missing-build/output + + because: [^ +]+ \(input\)$ diff --git a/Tests/RunCMake/file/COPY_FILE-input-missing.cmake b/Tests/RunCMake/file/COPY_FILE-input-missing.cmake new file mode 100644 index 0000000..2d2c55e --- /dev/null +++ b/Tests/RunCMake/file/COPY_FILE-input-missing.cmake @@ -0,0 +1,3 @@ +set(oldname "${CMAKE_CURRENT_BINARY_DIR}/input-missing") +set(newname "${CMAKE_CURRENT_BINARY_DIR}/output") +file(COPY_FILE "${oldname}" "${newname}") diff --git a/Tests/RunCMake/file/COPY_FILE-output-missing-result.txt b/Tests/RunCMake/file/COPY_FILE-output-missing-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/file/COPY_FILE-output-missing-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/file/COPY_FILE-output-missing-stderr.txt b/Tests/RunCMake/file/COPY_FILE-output-missing-stderr.txt new file mode 100644 index 0000000..0e7d9f7 --- /dev/null +++ b/Tests/RunCMake/file/COPY_FILE-output-missing-stderr.txt @@ -0,0 +1,14 @@ +^CMake Error at [^ +]*/Tests/RunCMake/file/COPY_FILE-output-missing.cmake:[0-9]+ \(file\): + file COPY_FILE failed to copy + + [^ +]*/Tests/RunCMake/file/COPY_FILE-output-missing-build/input + + to + + [^ +]*/Tests/RunCMake/file/COPY_FILE-output-missing-build/output-missing/output + + because: [^ +]+ \(output\)$ diff --git a/Tests/RunCMake/file/COPY_FILE-output-missing.cmake b/Tests/RunCMake/file/COPY_FILE-output-missing.cmake new file mode 100644 index 0000000..22133e7 --- /dev/null +++ b/Tests/RunCMake/file/COPY_FILE-output-missing.cmake @@ -0,0 +1,4 @@ +set(oldname "${CMAKE_CURRENT_BINARY_DIR}/input") +set(newname "${CMAKE_CURRENT_BINARY_DIR}/output-missing/output") +file(WRITE "${oldname}" "") +file(COPY_FILE "${oldname}" "${newname}") diff --git a/Tests/RunCMake/file/RunCMakeTest.cmake b/Tests/RunCMake/file/RunCMakeTest.cmake index db88956..4ad00ff 100644 --- a/Tests/RunCMake/file/RunCMakeTest.cmake +++ b/Tests/RunCMake/file/RunCMakeTest.cmake @@ -65,6 +65,8 @@ run_cmake_script(COPY_FILE-file-ONLY_IF_DIFFERENT-no-overwrite) run_cmake_script(COPY_FILE-link-to-file) run_cmake_script(COPY_FILE-arg-missing) run_cmake_script(COPY_FILE-arg-unknown) +run_cmake_script(COPY_FILE-input-missing) +run_cmake_script(COPY_FILE-output-missing) run_cmake_script(RENAME-file-replace) run_cmake_script(RENAME-file-to-file) |