Merge topic 'cmake-diagnostics-check-order' 91e81bf262 Diagnostics: Ensure correct ordering 700f64cfb9 cmDiagnostics: Fix typo in source documentation Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !12002
diff --git a/.clang-tidy b/.clang-tidy index ccd74be..ae0dc23 100644 --- a/.clang-tidy +++ b/.clang-tidy
@@ -3,8 +3,10 @@ bugprone-*,\ -bugprone-assignment-in-if-condition,\ -bugprone-crtp-constructor-accessibility,\ +-bugprone-derived-method-shadowing-base-method,\ -bugprone-easily-swappable-parameters,\ -bugprone-empty-catch,\ +-bugprone-exception-escape,\ -bugprone-implicit-widening-of-multiplication-result,\ -bugprone-inc-dec-in-conditions,\ -bugprone-macro-parentheses,\ @@ -13,8 +15,10 @@ -bugprone-return-const-ref-from-parameter,\ -bugprone-suspicious-stringview-data-usage,\ -bugprone-switch-missing-default-case,\ +-bugprone-throwing-static-initialization,\ -bugprone-too-small-loop-variable,\ -bugprone-unchecked-optional-access,\ +-bugprone-unchecked-string-to-number-conversion,\ -bugprone-unused-local-non-trivial-variable,\ -bugprone-unused-return-value,\ -bugprone-use-after-move,\ @@ -22,13 +26,17 @@ -misc-confusable-identifiers,\ -misc-const-correctness,\ -misc-include-cleaner,\ +-misc-multiple-inheritance,\ -misc-non-private-member-variables-in-classes,\ -misc-no-recursion,\ +-misc-override-with-different-visibility,\ +-misc-predictable-rand,\ -misc-static-assert,\ -misc-use-anonymous-namespace,\ -misc-use-internal-linkage,\ modernize-*,\ -modernize-avoid-c-arrays,\ +-modernize-avoid-c-style-cast,\ -modernize-concat-nested-namespaces,\ -modernize-macro-to-enum,\ -modernize-return-braced-init-list,\ @@ -60,6 +68,9 @@ -readability-make-member-function-const,\ -readability-math-missing-parentheses,\ -readability-named-parameter,\ +-readability-redundant-casting,\ +-readability-redundant-parentheses,\ +-readability-redundant-typename,\ -readability-simplify-boolean-expr,\ -readability-static-accessed-through-instance,\ -readability-suspicious-call-argument,\
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7345496..8c78b99 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml
@@ -65,7 +65,7 @@ p:doc-package: extends: - - .fedora43_sphinx_package + - .fedora44_sphinx_package - .cmake_prep_doc_linux - .linux_x86_64_tags - .cmake_doc_artifacts @@ -129,18 +129,18 @@ - .cmake_cdash_artifacts - .rules -l:tidy-fedora43: +l:tidy-fedora44: extends: - - .fedora43_tidy + - .fedora44_tidy - .cmake_build_linux - .cmake_tidy_artifacts - .linux_x86_64_tags - .cmake_cdash_artifacts - .rules -l:pvs-studio-fedora43: +l:pvs-studio-fedora44: extends: - - .fedora43_pvs_studio + - .fedora44_pvs_studio - .cmake_build_linux - .linux_x86_64_tags - .cmake_cdash_artifacts @@ -150,9 +150,9 @@ CMAKE_CI_JOB_NIGHTLY: "true" CMAKE_CI_JOB_NO_MR: "true" -l:sphinx-fedora43: +l:sphinx-fedora44: extends: - - .fedora43_sphinx + - .fedora44_sphinx - .cmake_build_linux - .cmake_sphinx_artifacts - .linux_x86_64_tags @@ -161,34 +161,34 @@ CMAKE_CI_JOB_CONTINUOUS: "true" CMAKE_CI_JOB_HELP: "true" -l:clang-analyzer-fedora43: +l:clang-analyzer-fedora44: extends: - - .fedora43_clang_analyzer + - .fedora44_clang_analyzer - .cmake_build_linux - .linux_x86_64_tags - .rules variables: CMAKE_CI_JOB_NIGHTLY: "true" -l:clang-fuzzing-fedora43: +l:clang-fuzzing-fedora44: extends: - - .fedora43_clang_fuzzing + - .fedora44_clang_fuzzing - .cmake_build_linux - .linux_x86_64_tags - .rules -l:clazy-fedora43: +l:clazy-fedora44: extends: - - .fedora43_clazy + - .fedora44_clazy - .cmake_build_linux - .linux_x86_64_tags - .rules # Coverage builds -b:fedora43-gcc-gcov: +b:fedora44-gcc-gcov: extends: - - .fedora43_gcc_gcov + - .fedora44_gcc_gcov - .cmake_build_linux - .cmake_build_artifacts - .linux_x86_64_tags @@ -197,9 +197,9 @@ CMAKE_CI_JOB_NIGHTLY: "true" CMAKE_CI_JOB_RUN_MANUALLY: "true" -t:fedora43-gcc-gcov: +t:fedora44-gcc-gcov: extends: - - .fedora43_gcc_gcov + - .fedora44_gcc_gcov - .cmake_test_linux - .cmake_coverage_artifacts - .linux_x86_64_tags_x11 @@ -207,25 +207,25 @@ # Run coverage analysis even if the tests fail. allow_failure: true needs: - - b:fedora43-gcc-gcov + - b:fedora44-gcc-gcov variables: CMAKE_CI_JOB_NIGHTLY: "true" -a:fedora43-gcc-gcov: +a:fedora44-gcc-gcov: extends: - - .fedora43_gcc_gcov + - .fedora44_gcc_gcov - .cmake_coverage_linux - .cmake_cdash_artifacts - .linux_x86_64_tags - .rules needs: - - t:fedora43-gcc-gcov + - t:fedora44-gcc-gcov variables: CMAKE_CI_JOB_NIGHTLY: "true" -b:fedora43-bullseye-coverage: +b:fedora44-bullseye-coverage: extends: - - .fedora43_bullseye_coverage + - .fedora44_bullseye_coverage - .cmake_build_linux - .cmake_build_artifacts - .linux_x86_64_tags @@ -235,9 +235,9 @@ CMAKE_CI_JOB_NO_MR: "true" CMAKE_CI_JOB_RUN_MANUALLY: "true" -t:fedora43-bullseye-coverage: +t:fedora44-bullseye-coverage: extends: - - .fedora43_bullseye_coverage + - .fedora44_bullseye_coverage - .cmake_test_linux - .cmake_coverage_artifacts - .linux_x86_64_tags_x11 @@ -245,20 +245,20 @@ # Run coverage analysis even if the tests fail. allow_failure: true needs: - - b:fedora43-bullseye-coverage + - b:fedora44-bullseye-coverage variables: CMAKE_CI_JOB_NIGHTLY: "true" CMAKE_CI_JOB_NO_MR: "true" -a:fedora43-bullseye-coverage: +a:fedora44-bullseye-coverage: extends: - - .fedora43_bullseye_coverage + - .fedora44_bullseye_coverage - .cmake_coverage_linux - .cmake_cdash_artifacts - .linux_x86_64_tags - .rules needs: - - t:fedora43-bullseye-coverage + - t:fedora44-bullseye-coverage variables: CMAKE_CI_JOB_NIGHTLY: "true" CMAKE_CI_JOB_NO_MR: "true" @@ -352,9 +352,9 @@ variables: CMAKE_CI_JOB_NIGHTLY: "true" -t:fedora43-hip-radeon: +t:fedora44-hip-radeon: extends: - - .fedora43_hip_radeon + - .fedora44_hip_radeon - .cmake_test_linux_release - .linux_x86_64_tags_rocm6.2 - .rules @@ -362,9 +362,9 @@ variables: CMAKE_CI_JOB_NIGHTLY: "true" -t:fedora43-makefiles-lfortran: +t:fedora44-makefiles-lfortran: extends: - - .fedora43_makefiles_lfortran + - .fedora44_makefiles_lfortran - .cmake_test_linux_release - .linux_x86_64_tags - .rules @@ -372,9 +372,9 @@ variables: CMAKE_CI_JOB_NIGHTLY: "true" -t:fedora43-ninja-lfortran: +t:fedora44-ninja-lfortran: extends: - - .fedora43_ninja_lfortran + - .fedora44_ninja_lfortran - .cmake_test_linux_release - .linux_x86_64_tags - .rules @@ -382,17 +382,17 @@ variables: CMAKE_CI_JOB_NIGHTLY: "true" -t:fedora43-ninja-multi: +t:fedora44-ninja-multi: extends: - - .fedora43_ninja_multi + - .fedora44_ninja_multi - .cmake_test_linux_release - .linux_x86_64_tags - .rules - .needs_centos7_x86_64 -t:fedora43-ninja-clang: +t:fedora44-ninja-clang: extends: - - .fedora43_ninja_clang + - .fedora44_ninja_clang - .cmake_test_linux_release - .linux_x86_64_tags - .rules @@ -400,9 +400,9 @@ variables: CMAKE_CI_JOB_NIGHTLY: "true" -t:fedora43-ninja-gcc-std-reloc: +t:fedora44-ninja-gcc-std-reloc: extends: - - .fedora43_ninja_gcc_std_reloc + - .fedora44_ninja_gcc_std_reloc - .cmake_test_linux_release - .linux_x86_64_tags - .rules @@ -410,9 +410,9 @@ variables: CMAKE_CI_JOB_NIGHTLY: "true" -t:fedora43-ninja-multi-clang: +t:fedora44-ninja-multi-clang: extends: - - .fedora43_ninja_multi_clang + - .fedora44_ninja_multi_clang - .cmake_test_linux_release - .linux_x86_64_tags - .rules @@ -420,9 +420,9 @@ variables: CMAKE_CI_JOB_NIGHTLY: "true" -t:fedora43-makefiles-clang: +t:fedora44-makefiles-clang: extends: - - .fedora43_makefiles_clang + - .fedora44_makefiles_clang - .cmake_test_linux_release - .linux_x86_64_tags - .rules @@ -430,17 +430,17 @@ variables: CMAKE_CI_JOB_NIGHTLY: "true" -t:fedora43-makefiles: +t:fedora44-makefiles: extends: - - .fedora43_makefiles + - .fedora44_makefiles - .cmake_test_linux_release - .linux_x86_64_v3_tags - .rules - .needs_centos7_x86_64 -t:fedora43-makefiles-nospace: +t:fedora44-makefiles-nospace: extends: - - .fedora43_makefiles + - .fedora44_makefiles - .cmake_test_linux_release - .linux_x86_64_v3_tags - .cmake_junit_artifacts @@ -448,12 +448,12 @@ - .needs_centos7_x86_64 variables: GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake-ci" - CMAKE_CI_BUILD_NAME: fedora43_makefiles_nospace + CMAKE_CI_BUILD_NAME: fedora44_makefiles_nospace CMAKE_CI_JOB_NIGHTLY: "true" -t:fedora43-fastbuild: +t:fedora44-fastbuild: extends: - - .fedora43_fastbuild + - .fedora44_fastbuild - .cmake_test_linux_release - .linux_x86_64_v3_tags - .rules @@ -461,9 +461,9 @@ variables: CMAKE_CI_JOB_NIGHTLY: "true" -t:fedora43-instrumentation: +t:fedora44-instrumentation: extends: - - .fedora43_ninja_instrumentation + - .fedora44_ninja_instrumentation - .cmake_test_linux_release - .linux_x86_64_tags - .rules @@ -670,9 +670,9 @@ variables: CMAKE_CI_JOB_NIGHTLY: "true" -b:fedora43-ninja: +b:fedora44-ninja: extends: - - .fedora43_ninja + - .fedora44_ninja - .cmake_build_linux - .cmake_build_artifacts - .linux_x86_64_tags @@ -681,9 +681,9 @@ CMAKE_CI_JOB_CONTINUOUS: "true" CMAKE_CI_JOB_RUN_MANUALLY: "true" -b:fedora43-makefiles-symlinked: +b:fedora44-makefiles-symlinked: extends: - - .fedora43_makefiles_symlinked + - .fedora44_makefiles_symlinked - .cmake_build_linux - .cmake_build_artifacts - .linux_x86_64_tags @@ -722,9 +722,9 @@ CMAKE_CI_JOB_NIGHTLY: "true" CMAKE_CI_JOB_RUN_MANUALLY: "true" -b:fedora43-extdeps: +b:fedora44-extdeps: extends: - - .fedora43_extdeps + - .fedora44_extdeps - .cmake_build_linux_standalone - .linux_x86_64_tags - .rules @@ -732,27 +732,27 @@ CMAKE_CI_JOB_NIGHTLY: "true" CMAKE_CI_JOB_RUN_MANUALLY: "true" -t:fedora43-ninja: +t:fedora44-ninja: extends: - - .fedora43_ninja + - .fedora44_ninja - .cmake_test_linux - .linux_x86_64_tags_x11 - .cmake_test_artifacts - .rules needs: - - b:fedora43-ninja + - b:fedora44-ninja variables: CMAKE_CI_JOB_CONTINUOUS: "true" -t:fedora43-makefiles-symlinked: +t:fedora44-makefiles-symlinked: extends: - - .fedora43_makefiles_symlinked + - .fedora44_makefiles_symlinked - .cmake_test_linux - .linux_x86_64_tags_x11 - .cmake_test_artifacts - .rules needs: - - b:fedora43-makefiles-symlinked + - b:fedora44-makefiles-symlinked variables: CMAKE_CI_JOB_NIGHTLY: "true" @@ -945,9 +945,9 @@ ## Sanitizer builds -b:fedora43-asan: +b:fedora44-asan: extends: - - .fedora43_asan + - .fedora44_asan - .cmake_build_linux - .cmake_build_artifacts - .linux_x86_64_tags @@ -956,21 +956,21 @@ CMAKE_CI_JOB_NIGHTLY: "true" CMAKE_CI_JOB_RUN_MANUALLY: "true" -t:fedora43-asan: +t:fedora44-asan: extends: - - .fedora43_asan + - .fedora44_asan - .cmake_memcheck_linux - .linux_x86_64_tags - .cmake_junit_artifacts - .rules needs: - - b:fedora43-asan + - b:fedora44-asan variables: CMAKE_CI_JOB_NIGHTLY: "true" -t:fedora43-ninja-valgrind: +t:fedora44-ninja-valgrind: extends: - - .fedora43_ninja_valgrind + - .fedora44_ninja_valgrind - .cmake_test_linux_release # Use a fast CPU so that timeouts are less of a concern. - .linux_x86_64_tags_fast_x11
diff --git a/.gitlab/ci/bullseye.sh b/.gitlab/ci/bullseye.sh index 8c4cd2b..132588c 100755 --- a/.gitlab/ci/bullseye.sh +++ b/.gitlab/ci/bullseye.sh
@@ -7,12 +7,12 @@ exit 1 fi -readonly version="9.22.3" +readonly version="9.25.1" case "$(uname -s)-$(uname -m)" in Linux-x86_64) tarball="BullseyeCoverage-$version-Linux-x64.tar.xz" - sha256sum="d5be7e65d9363161b67fa77a30407c7c200d995af79a422c4e2e278802ba0776" + sha256sum="cc77ef1ffd846e9911a5a22c41a8e24c5e1f1c4c59c0c688b6756fcb14fa4af5" shatool="sha256sum" ;; *)
diff --git a/.gitlab/ci/configure_fedora43_clang_analyzer.cmake b/.gitlab/ci/configure_fedora43_clang_analyzer.cmake deleted file mode 100644 index c18dfe6..0000000 --- a/.gitlab/ci/configure_fedora43_clang_analyzer.cmake +++ /dev/null
@@ -1,4 +0,0 @@ -set(configure_no_sccache 1) -set(CMake_QT_MAJOR_VERSION "5" CACHE STRING "") - -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora43_common.cmake")
diff --git a/.gitlab/ci/configure_fedora43_makefiles_lfortran.cmake b/.gitlab/ci/configure_fedora43_makefiles_lfortran.cmake deleted file mode 100644 index 918c2c3..0000000 --- a/.gitlab/ci/configure_fedora43_makefiles_lfortran.cmake +++ /dev/null
@@ -1 +0,0 @@ -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora43_common_lfortran.cmake")
diff --git a/.gitlab/ci/configure_fedora43_ninja_lfortran.cmake b/.gitlab/ci/configure_fedora43_ninja_lfortran.cmake deleted file mode 100644 index 918c2c3..0000000 --- a/.gitlab/ci/configure_fedora43_ninja_lfortran.cmake +++ /dev/null
@@ -1 +0,0 @@ -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora43_common_lfortran.cmake")
diff --git a/.gitlab/ci/configure_fedora43_ninja_valgrind.cmake b/.gitlab/ci/configure_fedora43_ninja_valgrind.cmake deleted file mode 100644 index d156e20..0000000 --- a/.gitlab/ci/configure_fedora43_ninja_valgrind.cmake +++ /dev/null
@@ -1,6 +0,0 @@ -set(CMake_TEST_Qt5 ON CACHE BOOL "") -set(CMake_TEST_Qt6 ON CACHE BOOL "") - -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora43_valgrind.cmake") -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora43_ninja.cmake") -include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")
diff --git a/.gitlab/ci/configure_fedora43_pvs_studio.cmake b/.gitlab/ci/configure_fedora43_pvs_studio.cmake deleted file mode 100644 index ff6e7f0..0000000 --- a/.gitlab/ci/configure_fedora43_pvs_studio.cmake +++ /dev/null
@@ -1,3 +0,0 @@ -set(configure_no_sccache 1) -set(CMake_RUN_PVS_STUDIO ON CACHE BOOL "") -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora43_common.cmake")
diff --git a/.gitlab/ci/configure_fedora43_asan.cmake b/.gitlab/ci/configure_fedora44_asan.cmake similarity index 72% rename from .gitlab/ci/configure_fedora43_asan.cmake rename to .gitlab/ci/configure_fedora44_asan.cmake index 9913430..88f40c3 100644 --- a/.gitlab/ci/configure_fedora43_asan.cmake +++ b/.gitlab/ci/configure_fedora44_asan.cmake
@@ -2,4 +2,4 @@ set(CMAKE_CXX_FLAGS "-fsanitize=address" CACHE STRING "") set(CMake_QT_MAJOR_VERSION "5" CACHE STRING "") -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora43_common.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora44_common.cmake")
diff --git a/.gitlab/ci/configure_fedora43_bullseye_coverage.cmake b/.gitlab/ci/configure_fedora44_bullseye_coverage.cmake similarity index 94% rename from .gitlab/ci/configure_fedora43_bullseye_coverage.cmake rename to .gitlab/ci/configure_fedora44_bullseye_coverage.cmake index e9cf156..d2e44a9 100644 --- a/.gitlab/ci/configure_fedora43_bullseye_coverage.cmake +++ b/.gitlab/ci/configure_fedora44_bullseye_coverage.cmake
@@ -19,4 +19,4 @@ set(CMake_TEST_TLS_VERSION "1.3" CACHE STRING "") set(CMake_TEST_TLS_VERSION_URL_BAD "https://badtls-v1-1.kitware.com:8011" CACHE STRING "") -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora43_common.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora44_common.cmake")
diff --git a/.gitlab/ci/configure_fedora44_clang_analyzer.cmake b/.gitlab/ci/configure_fedora44_clang_analyzer.cmake new file mode 100644 index 0000000..58046b9 --- /dev/null +++ b/.gitlab/ci/configure_fedora44_clang_analyzer.cmake
@@ -0,0 +1,4 @@ +set(configure_no_sccache 1) +set(CMake_QT_MAJOR_VERSION "5" CACHE STRING "") + +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora44_common.cmake")
diff --git a/.gitlab/ci/configure_fedora43_clang_fuzzing.cmake b/.gitlab/ci/configure_fedora44_clang_fuzzing.cmake similarity index 100% rename from .gitlab/ci/configure_fedora43_clang_fuzzing.cmake rename to .gitlab/ci/configure_fedora44_clang_fuzzing.cmake
diff --git a/.gitlab/ci/configure_fedora43_clazy.cmake b/.gitlab/ci/configure_fedora44_clazy.cmake similarity index 66% rename from .gitlab/ci/configure_fedora43_clazy.cmake rename to .gitlab/ci/configure_fedora44_clazy.cmake index 1943447..7f2ec78 100644 --- a/.gitlab/ci/configure_fedora43_clazy.cmake +++ b/.gitlab/ci/configure_fedora44_clazy.cmake
@@ -2,4 +2,4 @@ set(CMake_QT_MAJOR_VERSION "5" CACHE STRING "") set(CMAKE_USE_SYSTEM_JSONCPP ON CACHE BOOL "") -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora43_common.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora44_common.cmake")
diff --git a/.gitlab/ci/configure_fedora43_common.cmake b/.gitlab/ci/configure_fedora44_common.cmake similarity index 100% rename from .gitlab/ci/configure_fedora43_common.cmake rename to .gitlab/ci/configure_fedora44_common.cmake
diff --git a/.gitlab/ci/configure_fedora43_common_clang.cmake b/.gitlab/ci/configure_fedora44_common_clang.cmake similarity index 91% rename from .gitlab/ci/configure_fedora43_common_clang.cmake rename to .gitlab/ci/configure_fedora44_common_clang.cmake index 941a040..c7b38b6 100644 --- a/.gitlab/ci/configure_fedora43_common_clang.cmake +++ b/.gitlab/ci/configure_fedora44_common_clang.cmake
@@ -1,4 +1,4 @@ -set(CMAKE_Fortran_COMPILER "/usr/bin/flang-21" CACHE FILEPATH "") +set(CMAKE_Fortran_COMPILER "/usr/bin/flang" CACHE FILEPATH "") set(CMAKE_Fortran_COMPILER_ID "LLVMFlang" CACHE STRING "") set(CMAKE_Fortran_COMPILER_SUPPORTS_F90 "1" CACHE BOOL "")
diff --git a/.gitlab/ci/configure_fedora43_common_lfortran.cmake b/.gitlab/ci/configure_fedora44_common_lfortran.cmake similarity index 100% rename from .gitlab/ci/configure_fedora43_common_lfortran.cmake rename to .gitlab/ci/configure_fedora44_common_lfortran.cmake
diff --git a/.gitlab/ci/configure_fedora43_extdeps.cmake b/.gitlab/ci/configure_fedora44_extdeps.cmake similarity index 100% rename from .gitlab/ci/configure_fedora43_extdeps.cmake rename to .gitlab/ci/configure_fedora44_extdeps.cmake
diff --git a/.gitlab/ci/configure_fedora43_fastbuild.cmake b/.gitlab/ci/configure_fedora44_fastbuild.cmake similarity index 100% rename from .gitlab/ci/configure_fedora43_fastbuild.cmake rename to .gitlab/ci/configure_fedora44_fastbuild.cmake
diff --git a/.gitlab/ci/configure_fedora43_gcc_gcov.cmake b/.gitlab/ci/configure_fedora44_gcc_gcov.cmake similarity index 95% rename from .gitlab/ci/configure_fedora43_gcc_gcov.cmake rename to .gitlab/ci/configure_fedora44_gcc_gcov.cmake index a40e0cc..e54437e 100644 --- a/.gitlab/ci/configure_fedora43_gcc_gcov.cmake +++ b/.gitlab/ci/configure_fedora44_gcc_gcov.cmake
@@ -28,4 +28,4 @@ # Do not bootstrap for the coverage test suite. set(CMAKE_SKIP_BOOTSTRAP_TEST TRUE CACHE BOOL "") -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora43_common.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora44_common.cmake")
diff --git a/.gitlab/ci/configure_fedora43_hip_radeon.cmake b/.gitlab/ci/configure_fedora44_hip_radeon.cmake similarity index 100% rename from .gitlab/ci/configure_fedora43_hip_radeon.cmake rename to .gitlab/ci/configure_fedora44_hip_radeon.cmake
diff --git a/.gitlab/ci/configure_fedora43_makefiles.cmake b/.gitlab/ci/configure_fedora44_makefiles.cmake similarity index 100% rename from .gitlab/ci/configure_fedora43_makefiles.cmake rename to .gitlab/ci/configure_fedora44_makefiles.cmake
diff --git a/.gitlab/ci/configure_fedora43_makefiles_clang.cmake b/.gitlab/ci/configure_fedora44_makefiles_clang.cmake similarity index 68% rename from .gitlab/ci/configure_fedora43_makefiles_clang.cmake rename to .gitlab/ci/configure_fedora44_makefiles_clang.cmake index e3f1ef9..02bf288 100644 --- a/.gitlab/ci/configure_fedora43_makefiles_clang.cmake +++ b/.gitlab/ci/configure_fedora44_makefiles_clang.cmake
@@ -2,4 +2,4 @@ set(CMAKE_TESTS_CDASH_SERVER "https://open.cdash.org" CACHE STRING "") endif() -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora43_common_clang.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora44_common_clang.cmake")
diff --git a/.gitlab/ci/configure_fedora44_makefiles_lfortran.cmake b/.gitlab/ci/configure_fedora44_makefiles_lfortran.cmake new file mode 100644 index 0000000..2289116 --- /dev/null +++ b/.gitlab/ci/configure_fedora44_makefiles_lfortran.cmake
@@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora44_common_lfortran.cmake")
diff --git a/.gitlab/ci/configure_fedora43_makefiles_symlinked.cmake b/.gitlab/ci/configure_fedora44_makefiles_symlinked.cmake similarity index 71% rename from .gitlab/ci/configure_fedora43_makefiles_symlinked.cmake rename to .gitlab/ci/configure_fedora44_makefiles_symlinked.cmake index c5ef84c..e14b28f 100644 --- a/.gitlab/ci/configure_fedora43_makefiles_symlinked.cmake +++ b/.gitlab/ci/configure_fedora44_makefiles_symlinked.cmake
@@ -2,4 +2,4 @@ set(CMake_TEST_GUI "ON" CACHE BOOL "") include("${CMAKE_CURRENT_LIST_DIR}/configure_symlinked_common.cmake") -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora43_common.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora44_common.cmake")
diff --git a/.gitlab/ci/configure_fedora43_ninja.cmake b/.gitlab/ci/configure_fedora44_ninja.cmake similarity index 96% rename from .gitlab/ci/configure_fedora43_ninja.cmake rename to .gitlab/ci/configure_fedora44_ninja.cmake index 94e6e81..d536871 100644 --- a/.gitlab/ci/configure_fedora43_ninja.cmake +++ b/.gitlab/ci/configure_fedora44_ninja.cmake
@@ -42,4 +42,4 @@ # Qt 6 requires C++17, so use Qt 5. set(CMake_QT_MAJOR_VERSION "5" CACHE STRING "") -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora43_common.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora44_common.cmake")
diff --git a/.gitlab/ci/configure_fedora43_ninja_clang.cmake b/.gitlab/ci/configure_fedora44_ninja_clang.cmake similarity index 75% rename from .gitlab/ci/configure_fedora43_ninja_clang.cmake rename to .gitlab/ci/configure_fedora44_ninja_clang.cmake index 6cf0f85..5e007f4 100644 --- a/.gitlab/ci/configure_fedora43_ninja_clang.cmake +++ b/.gitlab/ci/configure_fedora44_ninja_clang.cmake
@@ -1,3 +1,3 @@ set(CMake_TEST_MODULE_COMPILATION "named,compile_commands,collation,partitions,internal_partitions,export_bmi,install_bmi,shared,bmionly,build_database,import_std23" CACHE STRING "") -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora43_common_clang.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora44_common_clang.cmake")
diff --git a/.gitlab/ci/configure_fedora43_ninja_gcc_std_reloc.cmake b/.gitlab/ci/configure_fedora44_ninja_gcc_std_reloc.cmake similarity index 100% rename from .gitlab/ci/configure_fedora43_ninja_gcc_std_reloc.cmake rename to .gitlab/ci/configure_fedora44_ninja_gcc_std_reloc.cmake
diff --git a/.gitlab/ci/configure_fedora43_ninja_instrumentation.cmake b/.gitlab/ci/configure_fedora44_ninja_instrumentation.cmake similarity index 60% rename from .gitlab/ci/configure_fedora43_ninja_instrumentation.cmake rename to .gitlab/ci/configure_fedora44_ninja_instrumentation.cmake index daf845f..1033477 100644 --- a/.gitlab/ci/configure_fedora43_ninja_instrumentation.cmake +++ b/.gitlab/ci/configure_fedora44_ninja_instrumentation.cmake
@@ -1,3 +1,3 @@ set(CMake_ENABLE_INSTRUMENTATION "ON" CACHE BOOL "") set(CMake_TEST_GUI "OFF" CACHE BOOL "") -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora43_ninja.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora44_ninja.cmake")
diff --git a/.gitlab/ci/configure_fedora44_ninja_lfortran.cmake b/.gitlab/ci/configure_fedora44_ninja_lfortran.cmake new file mode 100644 index 0000000..2289116 --- /dev/null +++ b/.gitlab/ci/configure_fedora44_ninja_lfortran.cmake
@@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora44_common_lfortran.cmake")
diff --git a/.gitlab/ci/configure_fedora43_ninja_multi.cmake b/.gitlab/ci/configure_fedora44_ninja_multi.cmake similarity index 100% rename from .gitlab/ci/configure_fedora43_ninja_multi.cmake rename to .gitlab/ci/configure_fedora44_ninja_multi.cmake
diff --git a/.gitlab/ci/configure_fedora43_ninja_multi_clang.cmake b/.gitlab/ci/configure_fedora44_ninja_multi_clang.cmake similarity index 74% rename from .gitlab/ci/configure_fedora43_ninja_multi_clang.cmake rename to .gitlab/ci/configure_fedora44_ninja_multi_clang.cmake index 522d012..3a54edf 100644 --- a/.gitlab/ci/configure_fedora43_ninja_multi_clang.cmake +++ b/.gitlab/ci/configure_fedora44_ninja_multi_clang.cmake
@@ -1,3 +1,3 @@ set(CMake_TEST_MODULE_COMPILATION "named,compile_commands,collation,partitions,internal_partitions,export_bmi,install_bmi,shared,bmionly,build_database" CACHE STRING "") -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora43_common_clang.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora44_common_clang.cmake")
diff --git a/.gitlab/ci/configure_fedora44_ninja_valgrind.cmake b/.gitlab/ci/configure_fedora44_ninja_valgrind.cmake new file mode 100644 index 0000000..53f1b83 --- /dev/null +++ b/.gitlab/ci/configure_fedora44_ninja_valgrind.cmake
@@ -0,0 +1,6 @@ +set(CMake_TEST_Qt5 ON CACHE BOOL "") +set(CMake_TEST_Qt6 ON CACHE BOOL "") + +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora44_valgrind.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora44_ninja.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")
diff --git a/.gitlab/ci/configure_fedora44_pvs_studio.cmake b/.gitlab/ci/configure_fedora44_pvs_studio.cmake new file mode 100644 index 0000000..b15137e --- /dev/null +++ b/.gitlab/ci/configure_fedora44_pvs_studio.cmake
@@ -0,0 +1,3 @@ +set(configure_no_sccache 1) +set(CMake_RUN_PVS_STUDIO ON CACHE BOOL "") +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora44_common.cmake")
diff --git a/.gitlab/ci/configure_fedora43_sphinx.cmake b/.gitlab/ci/configure_fedora44_sphinx.cmake similarity index 100% rename from .gitlab/ci/configure_fedora43_sphinx.cmake rename to .gitlab/ci/configure_fedora44_sphinx.cmake
diff --git a/.gitlab/ci/configure_fedora43_sphinx_package.cmake b/.gitlab/ci/configure_fedora44_sphinx_package.cmake similarity index 100% rename from .gitlab/ci/configure_fedora43_sphinx_package.cmake rename to .gitlab/ci/configure_fedora44_sphinx_package.cmake
diff --git a/.gitlab/ci/configure_fedora43_tidy.cmake b/.gitlab/ci/configure_fedora44_tidy.cmake similarity index 85% rename from .gitlab/ci/configure_fedora43_tidy.cmake rename to .gitlab/ci/configure_fedora44_tidy.cmake index 5b0bd62..18e7743 100644 --- a/.gitlab/ci/configure_fedora43_tidy.cmake +++ b/.gitlab/ci/configure_fedora44_tidy.cmake
@@ -4,4 +4,4 @@ set(CMake_CLANG_TIDY_EXPORT_FIXES_DIR "$ENV{CI_PROJECT_DIR}/.gitlab/clang-tidy-fixes" CACHE PATH "") set(CMake_QT_MAJOR_VERSION "5" CACHE STRING "") -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora43_common.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora44_common.cmake")
diff --git a/.gitlab/ci/configure_fedora43_valgrind.cmake b/.gitlab/ci/configure_fedora44_valgrind.cmake similarity index 100% rename from .gitlab/ci/configure_fedora43_valgrind.cmake rename to .gitlab/ci/configure_fedora44_valgrind.cmake
diff --git a/.gitlab/ci/ctest_memcheck_fedora43.valgrind.supp b/.gitlab/ci/ctest_memcheck_fedora44.valgrind.supp similarity index 100% rename from .gitlab/ci/ctest_memcheck_fedora43.valgrind.supp rename to .gitlab/ci/ctest_memcheck_fedora44.valgrind.supp
diff --git a/.gitlab/ci/ctest_memcheck_fedora43_asan.lsan.supp b/.gitlab/ci/ctest_memcheck_fedora44_asan.lsan.supp similarity index 100% rename from .gitlab/ci/ctest_memcheck_fedora43_asan.lsan.supp rename to .gitlab/ci/ctest_memcheck_fedora44_asan.lsan.supp
diff --git a/.gitlab/ci/docker/fedora43-hip/Dockerfile b/.gitlab/ci/docker/fedora44-hip/Dockerfile similarity index 94% rename from .gitlab/ci/docker/fedora43-hip/Dockerfile rename to .gitlab/ci/docker/fedora44-hip/Dockerfile index 0f0cbed..463d19f 100644 --- a/.gitlab/ci/docker/fedora43-hip/Dockerfile +++ b/.gitlab/ci/docker/fedora44-hip/Dockerfile
@@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1 -ARG BASE_IMAGE=fedora:43 +ARG BASE_IMAGE=fedora:44 FROM ${BASE_IMAGE} AS dnf-cache LABEL maintainer="Brad King <brad.king@kitware.com>"
diff --git a/.gitlab/ci/docker/fedora43-hip/deps_packages.lst b/.gitlab/ci/docker/fedora44-hip/deps_packages.lst similarity index 93% rename from .gitlab/ci/docker/fedora43-hip/deps_packages.lst rename to .gitlab/ci/docker/fedora44-hip/deps_packages.lst index abae13a..bac9e53 100644 --- a/.gitlab/ci/docker/fedora43-hip/deps_packages.lst +++ b/.gitlab/ci/docker/fedora44-hip/deps_packages.lst
@@ -7,7 +7,6 @@ make # Install HIP language toolchain. -hsakmt-devel lld llvm rocm-comgr-devel
diff --git a/.gitlab/ci/docker/fedora43-hip/dnf.conf b/.gitlab/ci/docker/fedora44-hip/dnf.conf similarity index 100% rename from .gitlab/ci/docker/fedora43-hip/dnf.conf rename to .gitlab/ci/docker/fedora44-hip/dnf.conf
diff --git a/.gitlab/ci/docker/fedora43/Dockerfile b/.gitlab/ci/docker/fedora44/Dockerfile similarity index 98% rename from .gitlab/ci/docker/fedora43/Dockerfile rename to .gitlab/ci/docker/fedora44/Dockerfile index 86ee3b8..d36ccc9 100644 --- a/.gitlab/ci/docker/fedora43/Dockerfile +++ b/.gitlab/ci/docker/fedora44/Dockerfile
@@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1 -ARG BASE_IMAGE=fedora:43 +ARG BASE_IMAGE=fedora:44 FROM ${BASE_IMAGE} AS dnf-cache # Populate DNF cache w/ the fresh metadata and prefetch packages. @@ -132,4 +132,4 @@ tar -C /usr/local -xf /root/rvm.tar RUN --mount=type=bind,from=rbenv-build,source=/root,target=/root \ - tar -C / -xf /root/rbenv.tar && rbenv global 3.4.3 + tar -C / -xf /root/rbenv.tar && rbenv global 3.4.9
diff --git a/.gitlab/ci/docker/fedora43/build_iwyu.sh b/.gitlab/ci/docker/fedora44/build_iwyu.sh similarity index 100% rename from .gitlab/ci/docker/fedora43/build_iwyu.sh rename to .gitlab/ci/docker/fedora44/build_iwyu.sh
diff --git a/.gitlab/ci/docker/fedora43/build_rbenv.sh b/.gitlab/ci/docker/fedora44/build_rbenv.sh similarity index 92% rename from .gitlab/ci/docker/fedora43/build_rbenv.sh rename to .gitlab/ci/docker/fedora44/build_rbenv.sh index feb574f..f5ddd06 100755 --- a/.gitlab/ci/docker/fedora43/build_rbenv.sh +++ b/.gitlab/ci/docker/fedora44/build_rbenv.sh
@@ -7,7 +7,7 @@ # Ruby rbenv export RUBY_CONFIGURE_OPTS=--disable-install-doc export RUBY_BUILD_CURL_OPTS=-C- -rbenv install 3.4.3 -k -s -v +rbenv install 3.4.9 -k -s -v cat <<EOF >/tmp/exclude.lst *LICENSE*
diff --git a/.gitlab/ci/docker/fedora43/build_rust.sh b/.gitlab/ci/docker/fedora44/build_rust.sh similarity index 88% rename from .gitlab/ci/docker/fedora43/build_rust.sh rename to .gitlab/ci/docker/fedora44/build_rust.sh index 5ab91f7..1ee87eb 100755 --- a/.gitlab/ci/docker/fedora43/build_rust.sh +++ b/.gitlab/ci/docker/fedora44/build_rust.sh
@@ -2,7 +2,7 @@ set -e -typos_version=1.44.0 +typos_version=1.45.2 cargo install --root /usr/local --version "$typos_version" typos-cli strip /usr/local/bin/typos
diff --git a/.gitlab/ci/docker/fedora43/build_rvm.sh b/.gitlab/ci/docker/fedora44/build_rvm.sh similarity index 100% rename from .gitlab/ci/docker/fedora43/build_rvm.sh rename to .gitlab/ci/docker/fedora44/build_rvm.sh
diff --git a/.gitlab/ci/docker/fedora43/deps_packages.lst b/.gitlab/ci/docker/fedora44/deps_packages.lst similarity index 98% rename from .gitlab/ci/docker/fedora43/deps_packages.lst rename to .gitlab/ci/docker/fedora44/deps_packages.lst index 143c296..b763bb7 100644 --- a/.gitlab/ci/docker/fedora43/deps_packages.lst +++ b/.gitlab/ci/docker/fedora44/deps_packages.lst
@@ -96,7 +96,7 @@ hdf5-openmpi-devel ImageMagick-c++-devel jasper-devel -java-21-openjdk-devel +java-25-openjdk-devel jsoncpp-devel lapack-devel libarchive-devel
diff --git a/.gitlab/ci/docker/fedora43/dnf.conf b/.gitlab/ci/docker/fedora44/dnf.conf similarity index 100% rename from .gitlab/ci/docker/fedora43/dnf.conf rename to .gitlab/ci/docker/fedora44/dnf.conf
diff --git a/.gitlab/ci/docker/fedora43/install_deps.sh b/.gitlab/ci/docker/fedora44/install_deps.sh similarity index 100% rename from .gitlab/ci/docker/fedora43/install_deps.sh rename to .gitlab/ci/docker/fedora44/install_deps.sh
diff --git a/.gitlab/ci/docker/fedora43/iwyu_packages.lst b/.gitlab/ci/docker/fedora44/iwyu_packages.lst similarity index 100% rename from .gitlab/ci/docker/fedora43/iwyu_packages.lst rename to .gitlab/ci/docker/fedora44/iwyu_packages.lst
diff --git a/.gitlab/ci/docker/fedora43/rbenv_packages.lst b/.gitlab/ci/docker/fedora44/rbenv_packages.lst similarity index 93% rename from .gitlab/ci/docker/fedora43/rbenv_packages.lst rename to .gitlab/ci/docker/fedora44/rbenv_packages.lst index d16afff..7cba990 100644 --- a/.gitlab/ci/docker/fedora43/rbenv_packages.lst +++ b/.gitlab/ci/docker/fedora44/rbenv_packages.lst
@@ -1,5 +1,6 @@ rbenv ruby-build-rbenv +ruby-build-ruby # Packages needed for `rbenv` # https://github.com/rbenv/ruby-build/wiki#fedora
diff --git a/.gitlab/ci/docker/fedora43/rust_packages.lst b/.gitlab/ci/docker/fedora44/rust_packages.lst similarity index 100% rename from .gitlab/ci/docker/fedora43/rust_packages.lst rename to .gitlab/ci/docker/fedora44/rust_packages.lst
diff --git a/.gitlab/ci/docker/fedora43/rvm_packages.lst b/.gitlab/ci/docker/fedora44/rvm_packages.lst similarity index 100% rename from .gitlab/ci/docker/fedora43/rvm_packages.lst rename to .gitlab/ci/docker/fedora44/rvm_packages.lst
diff --git a/.gitlab/ci/env_fedora43_common_clang.sh b/.gitlab/ci/env_fedora43_common_clang.sh deleted file mode 100644 index 55533e7..0000000 --- a/.gitlab/ci/env_fedora43_common_clang.sh +++ /dev/null
@@ -1,3 +0,0 @@ -export CC=/usr/bin/clang-21 -export CXX=/usr/bin/clang++-21 -export FC=/usr/bin/flang-21
diff --git a/.gitlab/ci/env_fedora43_hip_radeon.sh b/.gitlab/ci/env_fedora43_hip_radeon.sh deleted file mode 100644 index 2c942a8..0000000 --- a/.gitlab/ci/env_fedora43_hip_radeon.sh +++ /dev/null
@@ -1,2 +0,0 @@ -export HIPCXX=/usr/bin/clang++-21 -export HIPFLAGS='--rocm-path=/usr --rocm-device-lib-path=/usr/lib64/rocm/llvm/lib/clang/19/amdgcn/bitcode'
diff --git a/.gitlab/ci/env_fedora43_makefiles_clang.sh b/.gitlab/ci/env_fedora43_makefiles_clang.sh deleted file mode 100644 index 3953f88..0000000 --- a/.gitlab/ci/env_fedora43_makefiles_clang.sh +++ /dev/null
@@ -1 +0,0 @@ -. .gitlab/ci/env_fedora43_common_clang.sh
diff --git a/.gitlab/ci/env_fedora43_makefiles_lfortran.sh b/.gitlab/ci/env_fedora43_makefiles_lfortran.sh deleted file mode 100644 index 6b02339..0000000 --- a/.gitlab/ci/env_fedora43_makefiles_lfortran.sh +++ /dev/null
@@ -1 +0,0 @@ -. .gitlab/ci/env_fedora43_common_lfortran.sh
diff --git a/.gitlab/ci/env_fedora43_makefiles_symlinked.cmake b/.gitlab/ci/env_fedora43_makefiles_symlinked.cmake deleted file mode 100644 index fb004e8..0000000 --- a/.gitlab/ci/env_fedora43_makefiles_symlinked.cmake +++ /dev/null
@@ -1 +0,0 @@ -include("${CMAKE_CURRENT_LIST_DIR}/env_fedora43_makefiles.cmake")
diff --git a/.gitlab/ci/env_fedora43_makefiles_symlinked.sh b/.gitlab/ci/env_fedora43_makefiles_symlinked.sh deleted file mode 100644 index 448b592..0000000 --- a/.gitlab/ci/env_fedora43_makefiles_symlinked.sh +++ /dev/null
@@ -1 +0,0 @@ -. .gitlab/ci/env_fedora43_makefiles.sh
diff --git a/.gitlab/ci/env_fedora43_ninja_clang.sh b/.gitlab/ci/env_fedora43_ninja_clang.sh deleted file mode 100644 index 3953f88..0000000 --- a/.gitlab/ci/env_fedora43_ninja_clang.sh +++ /dev/null
@@ -1 +0,0 @@ -. .gitlab/ci/env_fedora43_common_clang.sh
diff --git a/.gitlab/ci/env_fedora43_ninja_instrumentation.sh b/.gitlab/ci/env_fedora43_ninja_instrumentation.sh deleted file mode 100644 index cc89d0b..0000000 --- a/.gitlab/ci/env_fedora43_ninja_instrumentation.sh +++ /dev/null
@@ -1 +0,0 @@ -source .gitlab/ci/env_fedora43_ninja.sh
diff --git a/.gitlab/ci/env_fedora43_ninja_lfortran.sh b/.gitlab/ci/env_fedora43_ninja_lfortran.sh deleted file mode 100644 index 6b02339..0000000 --- a/.gitlab/ci/env_fedora43_ninja_lfortran.sh +++ /dev/null
@@ -1 +0,0 @@ -. .gitlab/ci/env_fedora43_common_lfortran.sh
diff --git a/.gitlab/ci/env_fedora43_ninja_multi_clang.sh b/.gitlab/ci/env_fedora43_ninja_multi_clang.sh deleted file mode 100644 index 3953f88..0000000 --- a/.gitlab/ci/env_fedora43_ninja_multi_clang.sh +++ /dev/null
@@ -1 +0,0 @@ -. .gitlab/ci/env_fedora43_common_clang.sh
diff --git a/.gitlab/ci/env_fedora43_ninja_valgrind.sh b/.gitlab/ci/env_fedora43_ninja_valgrind.sh deleted file mode 100644 index cc89d0b..0000000 --- a/.gitlab/ci/env_fedora43_ninja_valgrind.sh +++ /dev/null
@@ -1 +0,0 @@ -source .gitlab/ci/env_fedora43_ninja.sh
diff --git a/.gitlab/ci/env_fedora43_asan.sh b/.gitlab/ci/env_fedora44_asan.sh similarity index 100% rename from .gitlab/ci/env_fedora43_asan.sh rename to .gitlab/ci/env_fedora44_asan.sh
diff --git a/.gitlab/ci/env_fedora43_bullseye_coverage.sh b/.gitlab/ci/env_fedora44_bullseye_coverage.sh similarity index 100% rename from .gitlab/ci/env_fedora43_bullseye_coverage.sh rename to .gitlab/ci/env_fedora44_bullseye_coverage.sh
diff --git a/.gitlab/ci/env_fedora43_clang_analyzer.sh b/.gitlab/ci/env_fedora44_clang_analyzer.sh similarity index 100% rename from .gitlab/ci/env_fedora43_clang_analyzer.sh rename to .gitlab/ci/env_fedora44_clang_analyzer.sh
diff --git a/.gitlab/ci/env_fedora43_clang_fuzzing.sh b/.gitlab/ci/env_fedora44_clang_fuzzing.sh similarity index 100% rename from .gitlab/ci/env_fedora43_clang_fuzzing.sh rename to .gitlab/ci/env_fedora44_clang_fuzzing.sh
diff --git a/.gitlab/ci/env_fedora43_clazy.sh b/.gitlab/ci/env_fedora44_clazy.sh similarity index 100% rename from .gitlab/ci/env_fedora43_clazy.sh rename to .gitlab/ci/env_fedora44_clazy.sh
diff --git a/.gitlab/ci/env_fedora44_common_clang.sh b/.gitlab/ci/env_fedora44_common_clang.sh new file mode 100644 index 0000000..2200841 --- /dev/null +++ b/.gitlab/ci/env_fedora44_common_clang.sh
@@ -0,0 +1,3 @@ +export CC=/usr/bin/clang +export CXX=/usr/bin/clang++ +export FC=/usr/bin/flang
diff --git a/.gitlab/ci/env_fedora43_common_lfortran.sh b/.gitlab/ci/env_fedora44_common_lfortran.sh similarity index 100% rename from .gitlab/ci/env_fedora43_common_lfortran.sh rename to .gitlab/ci/env_fedora44_common_lfortran.sh
diff --git a/.gitlab/ci/env_fedora43_extdeps.sh b/.gitlab/ci/env_fedora44_extdeps.sh similarity index 100% rename from .gitlab/ci/env_fedora43_extdeps.sh rename to .gitlab/ci/env_fedora44_extdeps.sh
diff --git a/.gitlab/ci/env_fedora43_fastbuild.sh b/.gitlab/ci/env_fedora44_fastbuild.sh similarity index 100% rename from .gitlab/ci/env_fedora43_fastbuild.sh rename to .gitlab/ci/env_fedora44_fastbuild.sh
diff --git a/.gitlab/ci/env_fedora44_hip_radeon.patch b/.gitlab/ci/env_fedora44_hip_radeon.patch new file mode 100644 index 0000000..a6411ed --- /dev/null +++ b/.gitlab/ci/env_fedora44_hip_radeon.patch
@@ -0,0 +1,14 @@ +--- a/usr/lib/clang/22/include/cuda_wrappers/new ++++ b/usr/lib/clang/22/include/cuda_wrappers/new +@@ -98,9 +98,9 @@ + __device__ inline void *operator new[](__SIZE_TYPE__, void *__ptr) CUDA_NOEXCEPT { + return __ptr; + } +-#endif + __device__ inline void operator delete(void *, void *) CUDA_NOEXCEPT {} + __device__ inline void operator delete[](void *, void *) CUDA_NOEXCEPT {} ++#endif + + #pragma pop_macro("CUDA_NOEXCEPT") + +---
diff --git a/.gitlab/ci/env_fedora44_hip_radeon.sh b/.gitlab/ci/env_fedora44_hip_radeon.sh new file mode 100644 index 0000000..dfa0121 --- /dev/null +++ b/.gitlab/ci/env_fedora44_hip_radeon.sh
@@ -0,0 +1,4 @@ +export HIPCXX=/usr/bin/clang++ +export HIPFLAGS='--rocm-path=/usr --rocm-device-lib-path=/usr/lib64/rocm/llvm/lib/clang/20/lib/amdgcn/bitcode' + +git apply --unsafe-paths --directory=/ .gitlab/ci/env_fedora44_hip_radeon.patch
diff --git a/.gitlab/ci/env_fedora43_makefiles.cmake b/.gitlab/ci/env_fedora44_makefiles.cmake similarity index 100% rename from .gitlab/ci/env_fedora43_makefiles.cmake rename to .gitlab/ci/env_fedora44_makefiles.cmake
diff --git a/.gitlab/ci/env_fedora43_makefiles.sh b/.gitlab/ci/env_fedora44_makefiles.sh similarity index 100% rename from .gitlab/ci/env_fedora43_makefiles.sh rename to .gitlab/ci/env_fedora44_makefiles.sh
diff --git a/.gitlab/ci/env_fedora44_makefiles_clang.sh b/.gitlab/ci/env_fedora44_makefiles_clang.sh new file mode 100644 index 0000000..4d2ba81 --- /dev/null +++ b/.gitlab/ci/env_fedora44_makefiles_clang.sh
@@ -0,0 +1 @@ +. .gitlab/ci/env_fedora44_common_clang.sh
diff --git a/.gitlab/ci/env_fedora44_makefiles_lfortran.sh b/.gitlab/ci/env_fedora44_makefiles_lfortran.sh new file mode 100644 index 0000000..409404e --- /dev/null +++ b/.gitlab/ci/env_fedora44_makefiles_lfortran.sh
@@ -0,0 +1 @@ +. .gitlab/ci/env_fedora44_common_lfortran.sh
diff --git a/.gitlab/ci/env_fedora44_makefiles_symlinked.cmake b/.gitlab/ci/env_fedora44_makefiles_symlinked.cmake new file mode 100644 index 0000000..8c39210 --- /dev/null +++ b/.gitlab/ci/env_fedora44_makefiles_symlinked.cmake
@@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/env_fedora44_makefiles.cmake")
diff --git a/.gitlab/ci/env_fedora44_makefiles_symlinked.sh b/.gitlab/ci/env_fedora44_makefiles_symlinked.sh new file mode 100644 index 0000000..84a747c --- /dev/null +++ b/.gitlab/ci/env_fedora44_makefiles_symlinked.sh
@@ -0,0 +1 @@ +. .gitlab/ci/env_fedora44_makefiles.sh
diff --git a/.gitlab/ci/env_fedora43_ninja.sh b/.gitlab/ci/env_fedora44_ninja.sh similarity index 83% rename from .gitlab/ci/env_fedora43_ninja.sh rename to .gitlab/ci/env_fedora44_ninja.sh index 18c2158..3607fb1 100644 --- a/.gitlab/ci/env_fedora43_ninja.sh +++ b/.gitlab/ci/env_fedora44_ninja.sh
@@ -4,9 +4,9 @@ fi # This job builds CMake as C++11. Prevent C++17 headers from being used. -if test "$CMAKE_CONFIGURATION" = "fedora43_ninja" -a "$CI_JOB_STAGE" = "build"; then +if test "$CMAKE_CONFIGURATION" = "fedora44_ninja" -a "$CI_JOB_STAGE" = "build"; then for i in filesystem optional string_view; do - sed -i -e '$a#error "Use <cm/'"$i"'> instead"' "/usr/include/c++/15/$i" + sed -i -e '$a#error "Use <cm/'"$i"'> instead"' "/usr/include/c++/16/$i" done fi
diff --git a/.gitlab/ci/env_fedora44_ninja_clang.sh b/.gitlab/ci/env_fedora44_ninja_clang.sh new file mode 100644 index 0000000..4d2ba81 --- /dev/null +++ b/.gitlab/ci/env_fedora44_ninja_clang.sh
@@ -0,0 +1 @@ +. .gitlab/ci/env_fedora44_common_clang.sh
diff --git a/.gitlab/ci/env_fedora43_ninja_gcc_std_reloc.sh b/.gitlab/ci/env_fedora44_ninja_gcc_std_reloc.sh similarity index 85% rename from .gitlab/ci/env_fedora43_ninja_gcc_std_reloc.sh rename to .gitlab/ci/env_fedora44_ninja_gcc_std_reloc.sh index 91b824d..ae640b7 100644 --- a/.gitlab/ci/env_fedora43_ninja_gcc_std_reloc.sh +++ b/.gitlab/ci/env_fedora44_ninja_gcc_std_reloc.sh
@@ -1,6 +1,6 @@ # "Misplace" the `libstdc++.modules.json` file so that # `CMAKE_CXX_STDLIB_MODULES_JSON` is needed to use `import std`. -stdlib_modules_dir="/usr/lib/gcc/x86_64-redhat-linux/15" +stdlib_modules_dir="/usr/lib/gcc/x86_64-redhat-linux/16" mkdir "$stdlib_modules_dir.reloc" mv "$stdlib_modules_dir/libstdc++.modules.json" "$stdlib_modules_dir.reloc" export CMAKE_CI_CXX_STDLIB_MODULES_JSON="$stdlib_modules_dir.reloc/libstdc++.modules.json"
diff --git a/.gitlab/ci/env_fedora44_ninja_instrumentation.sh b/.gitlab/ci/env_fedora44_ninja_instrumentation.sh new file mode 100644 index 0000000..99f7538 --- /dev/null +++ b/.gitlab/ci/env_fedora44_ninja_instrumentation.sh
@@ -0,0 +1 @@ +source .gitlab/ci/env_fedora44_ninja.sh
diff --git a/.gitlab/ci/env_fedora44_ninja_lfortran.sh b/.gitlab/ci/env_fedora44_ninja_lfortran.sh new file mode 100644 index 0000000..409404e --- /dev/null +++ b/.gitlab/ci/env_fedora44_ninja_lfortran.sh
@@ -0,0 +1 @@ +. .gitlab/ci/env_fedora44_common_lfortran.sh
diff --git a/.gitlab/ci/env_fedora43_ninja_multi.sh b/.gitlab/ci/env_fedora44_ninja_multi.sh similarity index 100% rename from .gitlab/ci/env_fedora43_ninja_multi.sh rename to .gitlab/ci/env_fedora44_ninja_multi.sh
diff --git a/.gitlab/ci/env_fedora44_ninja_multi_clang.sh b/.gitlab/ci/env_fedora44_ninja_multi_clang.sh new file mode 100644 index 0000000..4d2ba81 --- /dev/null +++ b/.gitlab/ci/env_fedora44_ninja_multi_clang.sh
@@ -0,0 +1 @@ +. .gitlab/ci/env_fedora44_common_clang.sh
diff --git a/.gitlab/ci/env_fedora44_ninja_valgrind.sh b/.gitlab/ci/env_fedora44_ninja_valgrind.sh new file mode 100644 index 0000000..99f7538 --- /dev/null +++ b/.gitlab/ci/env_fedora44_ninja_valgrind.sh
@@ -0,0 +1 @@ +source .gitlab/ci/env_fedora44_ninja.sh
diff --git a/.gitlab/ci/env_fedora43_pvs_studio.sh b/.gitlab/ci/env_fedora44_pvs_studio.sh similarity index 100% rename from .gitlab/ci/env_fedora43_pvs_studio.sh rename to .gitlab/ci/env_fedora44_pvs_studio.sh
diff --git a/.gitlab/ci/env_windows_pellesc13.01.ps1 b/.gitlab/ci/env_windows_pellesc13.01.ps1 index 4a8b1ca..84a38ac 100644 --- a/.gitlab/ci/env_windows_pellesc13.01.ps1 +++ b/.gitlab/ci/env_windows_pellesc13.01.ps1
@@ -1,6 +1,2 @@ . .gitlab/ci/ninja-env.ps1 . .gitlab/ci/pellesc-env.ps1 - -# FIXME(#21536): Avoid requiring the end user to enable -# Pelles C's Microsoft extensions to use Windows APIs. -$env:CFLAGS = "-Ze"
diff --git a/.gitlab/ci/post_build_fedora43_tidy.sh b/.gitlab/ci/post_build_fedora44_tidy.sh similarity index 100% rename from .gitlab/ci/post_build_fedora43_tidy.sh rename to .gitlab/ci/post_build_fedora44_tidy.sh
diff --git a/.gitlab/ci/pre_build_fedora43_bullseye_coverage.sh b/.gitlab/ci/pre_build_fedora44_bullseye_coverage.sh similarity index 100% rename from .gitlab/ci/pre_build_fedora43_bullseye_coverage.sh rename to .gitlab/ci/pre_build_fedora44_bullseye_coverage.sh
diff --git a/.gitlab/ci/pre_configure_fedora43_bullseye_coverage.sh b/.gitlab/ci/pre_configure_fedora44_bullseye_coverage.sh similarity index 100% rename from .gitlab/ci/pre_configure_fedora43_bullseye_coverage.sh rename to .gitlab/ci/pre_configure_fedora44_bullseye_coverage.sh
diff --git a/.gitlab/ci/pre_configure_fedora43_tidy.sh b/.gitlab/ci/pre_configure_fedora44_tidy.sh similarity index 100% rename from .gitlab/ci/pre_configure_fedora43_tidy.sh rename to .gitlab/ci/pre_configure_fedora44_tidy.sh
diff --git a/.gitlab/ci/pre_test_fedora43_bullseye_coverage.sh b/.gitlab/ci/pre_test_fedora44_bullseye_coverage.sh similarity index 100% rename from .gitlab/ci/pre_test_fedora43_bullseye_coverage.sh rename to .gitlab/ci/pre_test_fedora44_bullseye_coverage.sh
diff --git a/.gitlab/os-linux.yml b/.gitlab/os-linux.yml index 4d9aff3..96fed40 100644 --- a/.gitlab/os-linux.yml +++ b/.gitlab/os-linux.yml
@@ -5,7 +5,7 @@ ### Release .linux_prep_source: - image: "fedora:43" + image: "fedora:44" variables: GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci" @@ -81,15 +81,15 @@ ### Fedora -.fedora43: - image: "kitware/cmake:ci-fedora43-x86_64-2026-04-28" +.fedora44: + image: "kitware/cmake:ci-fedora44-x86_64-2026-04-30" variables: GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci/long file name for testing purposes" CMAKE_ARCH: x86_64 -.fedora43_hip: - image: "kitware/cmake:ci-fedora43-hip-x86_64-2025-10-29" +.fedora44_hip: + image: "kitware/cmake:ci-fedora44-hip-x86_64-2026-04-30" variables: # FIXME(rocclr): device modules fail loading from binaries in paths with spaces @@ -98,26 +98,26 @@ #### Coverage builds -.fedora43_gcc_gcov: - extends: .fedora43 +.fedora44_gcc_gcov: + extends: .fedora44 variables: # See issue #20001 CMAKE_GENERATOR: "Unix Makefiles" - CMAKE_CONFIGURATION: fedora43_gcc_gcov + CMAKE_CONFIGURATION: fedora44_gcc_gcov CTEST_NO_WARNINGS_ALLOWED: 1 CMAKE_CI_BUILD_TYPE: Debug CMAKE_CI_TEST_TIMEOUT: "1500" CMAKE_CI_NO_INSTALL: 1 -.fedora43_bullseye_coverage: - extends: .fedora43 +.fedora44_bullseye_coverage: + extends: .fedora44 environment: name: bullseye-coverage variables: # See issue #20001 CMAKE_GENERATOR: "Unix Makefiles" - CMAKE_CONFIGURATION: fedora43_bullseye_coverage + CMAKE_CONFIGURATION: fedora44_bullseye_coverage CTEST_NO_WARNINGS_ALLOWED: 1 CMAKE_CI_BUILD_TYPE: Debug CMAKE_CI_TEST_TIMEOUT: "1500" @@ -125,61 +125,61 @@ #### Lint builds -.fedora43_tidy: - extends: .fedora43 +.fedora44_tidy: + extends: .fedora44 variables: - CMAKE_CONFIGURATION: fedora43_tidy + CMAKE_CONFIGURATION: fedora44_tidy CMAKE_CI_NO_INSTALL: 1 -.fedora43_pvs_studio: - extends: .fedora43 +.fedora44_pvs_studio: + extends: .fedora44 environment: name: pvs-studio variables: - CMAKE_CONFIGURATION: fedora43_pvs_studio + CMAKE_CONFIGURATION: fedora44_pvs_studio CMAKE_CI_NO_INSTALL: 1 -.fedora43_clang_analyzer: - extends: .fedora43 +.fedora44_clang_analyzer: + extends: .fedora44 variables: - CMAKE_CONFIGURATION: fedora43_clang_analyzer + CMAKE_CONFIGURATION: fedora44_clang_analyzer CMAKE_CI_BUILD_TYPE: Debug CTEST_NO_WARNINGS_ALLOWED: 1 CMAKE_CI_NO_INSTALL: 1 -.fedora43_clang_fuzzing: - extends: .fedora43 +.fedora44_clang_fuzzing: + extends: .fedora44 variables: - CMAKE_CONFIGURATION: fedora43_clang_fuzzing + CMAKE_CONFIGURATION: fedora44_clang_fuzzing CTEST_NO_WARNINGS_ALLOWED: 1 CMAKE_CI_NO_INSTALL: 1 -.fedora43_clazy: - extends: .fedora43 +.fedora44_clazy: + extends: .fedora44 variables: - CMAKE_CONFIGURATION: fedora43_clazy + CMAKE_CONFIGURATION: fedora44_clazy CMAKE_CI_BUILD_TYPE: Debug CTEST_NO_WARNINGS_ALLOWED: 1 CMAKE_CI_NO_INSTALL: 1 -.fedora43_sphinx: - extends: .fedora43 +.fedora44_sphinx: + extends: .fedora44 variables: - CMAKE_CONFIGURATION: fedora43_sphinx + CMAKE_CONFIGURATION: fedora44_sphinx CTEST_NO_WARNINGS_ALLOWED: 1 CTEST_SOURCE_SUBDIRECTORY: "Utilities/Sphinx" CMAKE_CI_NO_INSTALL: 1 -.fedora43_sphinx_package: - extends: .fedora43 +.fedora44_sphinx_package: + extends: .fedora44 variables: - CMAKE_CONFIGURATION: fedora43_sphinx_package + CMAKE_CONFIGURATION: fedora44_sphinx_package CTEST_SOURCE_SUBDIRECTORY: "Utilities/Sphinx" #### Build and test @@ -235,53 +235,53 @@ CMAKE_CI_BUILD_TYPE: Release CTEST_NO_WARNINGS_ALLOWED: 1 -.fedora43_extdeps: - extends: .fedora43 +.fedora44_extdeps: + extends: .fedora44 variables: - CMAKE_CONFIGURATION: fedora43_extdeps + CMAKE_CONFIGURATION: fedora44_extdeps CMAKE_CI_BUILD_TYPE: Release CTEST_NO_WARNINGS_ALLOWED: 1 -.fedora43_ninja: - extends: .fedora43 +.fedora44_ninja: + extends: .fedora44 variables: - CMAKE_CONFIGURATION: fedora43_ninja + CMAKE_CONFIGURATION: fedora44_ninja CMAKE_CI_BUILD_TYPE: Release CTEST_NO_WARNINGS_ALLOWED: 1 -.fedora43_makefiles: - extends: .fedora43 +.fedora44_makefiles: + extends: .fedora44 variables: - CMAKE_CONFIGURATION: fedora43_makefiles + CMAKE_CONFIGURATION: fedora44_makefiles CTEST_NO_WARNINGS_ALLOWED: 1 CMAKE_GENERATOR: "Unix Makefiles" -.fedora43_makefiles_symlinked: - extends: .fedora43 +.fedora44_makefiles_symlinked: + extends: .fedora44 variables: - CMAKE_CONFIGURATION: fedora43_makefiles_symlinked + CMAKE_CONFIGURATION: fedora44_makefiles_symlinked CTEST_NO_WARNINGS_ALLOWED: 1 CMAKE_GENERATOR: "Unix Makefiles" CMAKE_CI_IN_SYMLINK_TREE: 1 CMAKE_CI_BUILD_DIR: "real_work/work/build" -.fedora43_fastbuild: - extends: .fedora43 +.fedora44_fastbuild: + extends: .fedora44 variables: - CMAKE_CONFIGURATION: fedora43_fastbuild + CMAKE_CONFIGURATION: fedora44_fastbuild CTEST_NO_WARNINGS_ALLOWED: 1 CMAKE_GENERATOR: "FASTBuild" -.fedora43_ninja_instrumentation: - extends: .fedora43 +.fedora44_ninja_instrumentation: + extends: .fedora44 variables: - CMAKE_CONFIGURATION: fedora43_ninja_instrumentation + CMAKE_CONFIGURATION: fedora44_ninja_instrumentation CTEST_NO_WARNINGS_ALLOWED: 1 CMAKE_GENERATOR: "Ninja" @@ -300,57 +300,57 @@ variables: CMAKE_CONFIGURATION: debian13_ninja_clang -.fedora43_makefiles_clang: - extends: .fedora43 +.fedora44_makefiles_clang: + extends: .fedora44 variables: - CMAKE_CONFIGURATION: fedora43_makefiles_clang + CMAKE_CONFIGURATION: fedora44_makefiles_clang CMAKE_GENERATOR: "Unix Makefiles" -.fedora43_makefiles_lfortran: - extends: .fedora43 +.fedora44_makefiles_lfortran: + extends: .fedora44 variables: # FIXME(lfortran): -rpath flags with spaces not forwarded GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake-ci" - CMAKE_CONFIGURATION: fedora43_makefiles_lfortran + CMAKE_CONFIGURATION: fedora44_makefiles_lfortran CMAKE_GENERATOR: "Unix Makefiles" CTEST_LABELS: "Fortran" -.fedora43_ninja_lfortran: - extends: .fedora43 +.fedora44_ninja_lfortran: + extends: .fedora44 variables: # FIXME(lfortran): -rpath flags with spaces not forwarded GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake-ci" - CMAKE_CONFIGURATION: fedora43_ninja_lfortran + CMAKE_CONFIGURATION: fedora44_ninja_lfortran CTEST_LABELS: "Fortran" -.fedora43_ninja_multi: - extends: .fedora43 +.fedora44_ninja_multi: + extends: .fedora44 variables: - CMAKE_CONFIGURATION: fedora43_ninja_multi + CMAKE_CONFIGURATION: fedora44_ninja_multi CMAKE_GENERATOR: "Ninja Multi-Config" -.fedora43_ninja_clang: - extends: .fedora43 +.fedora44_ninja_clang: + extends: .fedora44 variables: - CMAKE_CONFIGURATION: fedora43_ninja_clang + CMAKE_CONFIGURATION: fedora44_ninja_clang -.fedora43_ninja_gcc_std_reloc: - extends: .fedora43 +.fedora44_ninja_gcc_std_reloc: + extends: .fedora44 variables: - CMAKE_CONFIGURATION: fedora43_ninja_gcc_std_reloc + CMAKE_CONFIGURATION: fedora44_ninja_gcc_std_reloc CTEST_LABELS: "CXXModules" -.fedora43_ninja_multi_clang: - extends: .fedora43 +.fedora44_ninja_multi_clang: + extends: .fedora44 variables: - CMAKE_CONFIGURATION: fedora43_ninja_multi_clang + CMAKE_CONFIGURATION: fedora44_ninja_multi_clang CMAKE_GENERATOR: "Ninja Multi-Config" ### Sanitizers @@ -373,23 +373,23 @@ CTEST_MEMORYCHECK_TYPE: Valgrind CMAKE_CI_RUN_MEMCHECK: "true" CMAKE_CI_TEST_TIMEOUT: "1500" - CMAKE_VALGRIND_CONFIGURATION: fedora43 + CMAKE_VALGRIND_CONFIGURATION: fedora44 -.fedora43_asan: +.fedora44_asan: extends: - - .fedora43 + - .fedora44 - .fedora_asan_addon variables: - CMAKE_CONFIGURATION: fedora43_asan + CMAKE_CONFIGURATION: fedora44_asan -.fedora43_ninja_valgrind: +.fedora44_ninja_valgrind: extends: - - .fedora43 + - .fedora44 - .fedora_valgrind_addon variables: - CMAKE_CONFIGURATION: fedora43_ninja_valgrind + CMAKE_CONFIGURATION: fedora44_ninja_valgrind ### Intel Compiler @@ -599,11 +599,11 @@ CMAKE_CONFIGURATION: debian13_hip_radeon CTEST_LABELS: "HIP" -.fedora43_hip_radeon: - extends: .fedora43_hip +.fedora44_hip_radeon: + extends: .fedora44_hip variables: - CMAKE_CONFIGURATION: fedora43_hip_radeon + CMAKE_CONFIGURATION: fedora44_hip_radeon CTEST_LABELS: "HIP" .hip6.3_nvidia: @@ -758,14 +758,14 @@ .cmake_version_update_linux: stage: build - extends: .fedora43 + extends: .fedora44 script: - .gitlab/ci/cmake_version_update.sh interruptible: false # The job internally fetches and retries. .cmake_spellcheck_linux: stage: build - extends: .fedora43 + extends: .fedora44 script: - .gitlab/ci/codespell.bash - .gitlab/ci/typos.bash @@ -936,7 +936,7 @@ .cmake_org_help: stage: build extends: - - .fedora43 + - .fedora44 - .linux_x86_64_tags - .cmake_org_help_artifacts script:
diff --git a/.gitlab/upload.yml b/.gitlab/upload.yml index 47316d1..7e7516b 100644 --- a/.gitlab/upload.yml +++ b/.gitlab/upload.yml
@@ -1,7 +1,7 @@ # Steps for uploading artifacts .rsync_upload_package: - image: "fedora:43" + image: "fedora:44" stage: upload tags: - cmake @@ -21,7 +21,7 @@ .rsync_upload_help: stage: upload - image: "fedora:43" + image: "fedora:44" tags: - cmake - docker
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 64acb89..b986c76 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml
@@ -113,7 +113,7 @@ # NOTE See BUG https://github.com/crate-ci/typos/issues/390 - repo: https://github.com/adhtruong/mirrors-typos - rev: v1.44.0 + rev: v1.45.2 hooks: - id: typos # NOTE Override hook's default args to prevent automatic
diff --git a/CTestCustom.cmake.in b/CTestCustom.cmake.in index 75642c9..591da55 100644 --- a/CTestCustom.cmake.in +++ b/CTestCustom.cmake.in
@@ -51,6 +51,7 @@ "Warning: Function .* can throw only the exceptions thrown by the function .* it overrides\\." "WarningMessagesDialog\\.cxx" "warning.*directory name.*CMake-Xcode.*/bin/.*does not exist.*" + "stl_algo(base)?\\.h:[0-9:]* warning: loop not unrolled" "stl_deque.h:1051" "Tests/CMakeLib/testCTestResourceSpec.cxx:.*warning: missing initializer for member.*cmCTestResourceSpec::.*" # GCC 4.8 disagrees with later compilers on C++11 initializer list conversion "(Lexer|Parser).*warning.*conversion.*may (alter its value|change the sign)"
diff --git a/Help/command/ctest_test.rst b/Help/command/ctest_test.rst index ad43cd2..47dfe23 100644 --- a/Help/command/ctest_test.rst +++ b/Help/command/ctest_test.rst
@@ -183,6 +183,13 @@ file is **not** uploaded to CDash because it would be redundant with CTest's ``Test.xml`` file. +``COVERAGE_TOOL <tool>`` + .. versionadded:: 4.4 + + Specify the ``<tool>`` used for collecting coverage during the running + of the tests. See the CTest :ref:`CoverageTool <ctest-CoverageTool>` + setting for details. + ``QUIET`` .. versionadded:: 3.3
diff --git a/Help/command/install.rst b/Help/command/install.rst index 0d6ccb6..e69d266 100644 --- a/Help/command/install.rst +++ b/Help/command/install.rst
@@ -61,9 +61,8 @@ but not recommended. .. versionadded:: 4.4 - The :ref:`CMD_INSTALL_ABSOLUTE_DESTINATION <CMD_INSTALL_ABSOLUTE_DESTINATION>` - diagnostic can be enabled to warn or error out when an absolute destination - is provided. + The :diagnostic:`CMD_INSTALL_ABSOLUTE_DESTINATION` diagnostic can be + enabled to warn or error out when an absolute destination is provided. When a relative path is given, it is interpreted relative to the value of the :variable:`CMAKE_INSTALL_PREFIX` variable.
diff --git a/Help/dev/README.rst b/Help/dev/README.rst index 84766a6..050ec07 100644 --- a/Help/dev/README.rst +++ b/Help/dev/README.rst
@@ -41,12 +41,14 @@ * The `CMake Testing Guide`_. * The `CMake Experimental Features Guide`_. * The `CMake Debugging Guide`_. +* The `CMake Diagnostics Guide`_. .. _`CMake Source Code Guide`: source.rst .. _`CMake Documentation Guide`: documentation.rst .. _`CMake Testing Guide`: testing.rst .. _`CMake Experimental Features Guide`: experimental.rst .. _`CMake Debugging Guide`: debug.rst +.. _`CMake Diagnostics Guide`: diagnostics.rst Maintainer Documentation ========================
diff --git a/Help/dev/diagnostics.rst b/Help/dev/diagnostics.rst new file mode 100644 index 0000000..394f4d6 --- /dev/null +++ b/Help/dev/diagnostics.rst
@@ -0,0 +1,157 @@ +CMake Diagnostics Guide +*********************** + +The following is a guide on how CMake should issue diagnostics. +See documentation on `CMake Development`_ for more information. + +.. _`CMake Development`: README.rst + +TL;DR Porting Guide (from CMake < 4.4) +====================================== + +I want to write ``IssueMessage(MessageType::AUTHOR_WARNING, ...``: + Write ``IssueDiagnostic(cmDiagnostics::CMD_AUTHOR, ...`` instead. + +I want to write ``IssueMessage(MessageType::DEPRECATION_WARNING, ...``: + Write ``IssueDiagnostic(cmDiagnostics::CMD_DEPRECATED, ...`` instead. + +I want to write ``IssueMessage(MessageType::AUTHOR_ERROR, ...``: + No, you don't. Under the old system, there isn't a meaningful difference + between ``AUTHOR_WARNING`` and ``AUTHOR_ERROR``; at least, not as arguments + to ``IssueMessage``. + +I want to write ``IssueMessage(MessageType::DEPRECATION_ERROR, ...``: + See ``AUTHOR_ERROR``. + +History +======= + +Prior to CMake 4.4, CMake did not have a formal system for issuing diagnostics. +The messaging system had message types for author diagnostics and deprecation +diagnostics which conflated category and severity. Worse, although these types +*purported* to allow the caller to specify severity, this information is not +actually honored. Other diagnostics existed which did not use these types. + +More importantly, the mechanisms for managing severity differed depending on +the diagnostic. Variables to control a diagnostic might be documented, +undocumented, or non-existent. Spelling of command-line options to control +diagnostics was inconsistent, as was the ability to make diagnostics fatal. +Adding new categories required significant effort, as the logic to handle a +diagnostic was bespoke at every layer. + +CMake Diagnostic Framework +========================== + +CMake 4.4 introduced a structured framework for issuing and managing +diagnostics. The ``cmDiagnostics.h`` header enumerates all available +diagnostic categories. All code to manage diagnostics leverages either this +table or helper code generated from the same, such that it is the *only* +non-documentation location that needs to be updated to add a new diagnostic +category. The framework is also responsible for determining the severity of a +diagnostic, based on the combination of category defaults and user preferences, +and for presenting the user with a consistent set of control mechanisms. + +Numeric identifiers associated with diagnostic categories are only used +internally and are never persisted. This means that numbers can be reassigned +at any time. This also permits ensuring that numbers are consecutive, which +allows iterating over all categories using a simple ``for`` loop. (Note that +such loops will typically start from ``1``, not ``0``, as ``0`` is reserved +for the 'NONE' category which is used primarily as a virtual parent.) Where +necessary, macros provided by ``cmDiagnostics.h`` can generate code for each +diagnostic category. + +Refer to ``Help/manual/cmake-diagnostics.7.rst`` for user-facing documentation. + +Issuing Diagnostics +=================== + +Diagnostics are the CMake equivalent of compiler warnings, with categorization +providing both additional information and additional response control to users. + +Diagnostics are issued via the ``IssueDiagnostic`` method. This method is +provided on various objects, with ``cmMakefile`` being the most prominent, and +typically exists alongside an ``IssueMessage`` method. The latter is not +deprecated, and should still be used to issue messages outside of the +diagnostic categories, such as hard errors or informational messages. + +The historic ``{AUTHOR,DEPRECATION}_{WARNING,ERROR}`` message types, however, +have been removed. These are replaced by ``IssueDiagnostic`` and the +``CMD_{AUTHOR,DEPRECATED}`` diagnostic categories. Because the methods have +similar signatures, porting in many cases can be accomplished by replacing the +method name and first argument (the former message type, newly the diagnostic +category). For example, where prior versions of CMake wrote: + +.. code:: c++ + + mf->IssueMessage(MessageType::AUTHOR_WARNING, ...); + +CMake 4.4 and later should write: + +.. code:: c++ + + mf->IssueDiagnostic(cmDiagnostics::CMD_AUTHOR, ...); + +(Note that the ``"cmDiagnostics.h"`` header may need to be newly included.) + +As previously mentioned, the purported severity was ignored by ``cmMessenger``, +which instead used its own internal state to decide whether a message should +be a warning or an error. This logic overrode the severity component of the +message type as passed into the method. As a result, although the new method +does not accept a severity, this is actually consistent with the historic +behavior and does not represent any loss of functionality. + +.. note:: + + When issuing diagnostics targeted at build-system authors, please consult the + complete list of available diagnostics, as a more specific category may be + available. In some cases, it may even make sense to add a new category. + +Adding Diagnostic Categories +============================ + +Adding new diagnostic categories involves four steps. + +1. The new category must be added to ``cmDiagnostics.h``. The diagnostics + table looks like this: + + .. code:: c++ + + #define CM_FOR_EACH_DIAGNOSTIC_TABLE(ACTION, SELECT) \ + SELECT(ACTION, Warn, CMD_NONE, CMD_AUTHOR, 12) \ + SELECT(ACTION, Warn, CMD_AUTHOR, CMD_DEPRECATED, 1) \ + ... + + Add a new entry. All entries must begin with ``SELECT(ACTION,``. The + second argument is the *default* state of the diagnostic and should + typically be ``Warn``, but may be ``Ignore`` if the diagnostic should be + opt-in. Defaulting to ``SendError`` would be exceptional, and defaulting + to ``FatalError`` is not recommended under any circumstances. The third + argument is the *parent* of the diagnostic (see below). The fourth is the + actual name of the diagnostic. The fifth and final argument is the CMake + preset version corresponding to the introduction of the argument, which + should be the latest preset version as used by the version of CMake under + development. + + .. note:: + + In the event that the development version has not already introduced a + new preset version, adding a new diagnostic will additionally require + introducing a new preset version. + + Diagnostics are hierarchical and **must** be listed in order of a + depth-first search. (If you imagine the order of items in a typical tree + view which has been fully expanded, that is depth-first order.) Each + diagnostic has a direct parent. Recursive alterations to a diagnostic will + also affect all descendant diagnostics. + +2. A documentation page for the new diagnostic must be created under + ``Help/diagnostic``, and a link to the same added to the Diagnostics + manual, ``Help/manual/cmake-diagnostics.7.rst``. + +3. The new presets fields must be mentioned in the CMake presets version + history, found at the bottom of ``Help/manual/cmake-presets.7.rst``. Note + that the documentation of the fields themselves is generated. + +4. The ``Utilities/Scripts/regenerate-presets.py`` script must be run to + generate the updated presets schema and documentation. Don't forget to + review and commit the changes made by this script.
diff --git a/Help/dev/experimental.rst b/Help/dev/experimental.rst index 30d53ff..61b77c0 100644 --- a/Help/dev/experimental.rst +++ b/Help/dev/experimental.rst
@@ -37,7 +37,7 @@ * The package name associated with specific targets may be specified using the ``CMAKE_EXPORT_FIND_PACKAGE_NAME`` variable and/or -``EXPORT_FIND_PACKAGE_NAME`` target property. + ``EXPORT_FIND_PACKAGE_NAME`` target property. Export |CPS| Package Information for ``install(EXPORT)`` ======================================================== @@ -102,7 +102,7 @@ * Targets with the property set to a true value will have their C++ build information exported to the build database. -Software Bill Of Materials |SBOM| +Software Bill Of Materials (SBOM) ================================= In order to activate support for the :command:`install(SBOM)` command,
diff --git a/Help/dev/source.rst b/Help/dev/source.rst index ec4e12c..046be1e 100644 --- a/Help/dev/source.rst +++ b/Help/dev/source.rst
@@ -287,10 +287,10 @@ * ``<cmext/type_traits>``: * ``cm::is_pair``: - Checks if a type is a std::pair<> type. + Checks if a type is a std::pair<> type. * ``cm::is_tuple``: - Checks if a type is a std::tuple<> type. + Checks if a type is a std::tuple<> type. * ``cm::is_container``: Checks if a type is a container type.
diff --git a/Help/diagnostic/CMD_AUTHOR.rst b/Help/diagnostic/CMD_AUTHOR.rst new file mode 100644 index 0000000..c309f31 --- /dev/null +++ b/Help/diagnostic/CMD_AUTHOR.rst
@@ -0,0 +1,16 @@ +CMD_AUTHOR +---------- + +.. diagnostic:: + :default: warn + + Warn about a build system's incorrect use of CMake, or of a CMake interface + provided by a dependency. This is the category triggered by + :command:`message(AUTHOR_WARNING)`. It is also the ancestor of many other + diagnostic categories. + + The most important aspect of this category is that it represents issues with + a project's build system which typically require alteration to the same. + This is to say that users simply trying to build a project obtained elsewhere + will typically not be interested in these warnings, except to perhaps report + them to the project's developer(s).
diff --git a/Help/diagnostic/CMD_DEPRECATED.rst b/Help/diagnostic/CMD_DEPRECATED.rst new file mode 100644 index 0000000..dfb23d5 --- /dev/null +++ b/Help/diagnostic/CMD_DEPRECATED.rst
@@ -0,0 +1,9 @@ +CMD_DEPRECATED +-------------- + +.. diagnostic:: + :default: warn + :parent: CMD_AUTHOR + + Warn about use of a deprecated function or package. This is the category + triggered by :command:`message(DEPRECATION)`.
diff --git a/Help/diagnostic/CMD_INSTALL_ABSOLUTE_DESTINATION.rst b/Help/diagnostic/CMD_INSTALL_ABSOLUTE_DESTINATION.rst new file mode 100644 index 0000000..b7c6e08 --- /dev/null +++ b/Help/diagnostic/CMD_INSTALL_ABSOLUTE_DESTINATION.rst
@@ -0,0 +1,10 @@ +CMD_INSTALL_ABSOLUTE_DESTINATION +-------------------------------- + +.. diagnostic:: + :default: ignore + :parent: CMD_AUTHOR + + Warn when an :command:`install` command specifies an absolute ``DESTINATION`` + path. Absolute destinations are typically undesirable because they prevent + the installation prefix from being overridden at install time.
diff --git a/Help/diagnostic/CMD_UNINITIALIZED.rst b/Help/diagnostic/CMD_UNINITIALIZED.rst new file mode 100644 index 0000000..8c2edc8 --- /dev/null +++ b/Help/diagnostic/CMD_UNINITIALIZED.rst
@@ -0,0 +1,7 @@ +CMD_UNINITIALIZED +----------------- + +.. diagnostic:: + :default: ignore + + Warn if an uninitialized variable is dereferenced.
diff --git a/Help/diagnostic/CMD_UNUSED_CLI.rst b/Help/diagnostic/CMD_UNUSED_CLI.rst new file mode 100644 index 0000000..718598e --- /dev/null +++ b/Help/diagnostic/CMD_UNUSED_CLI.rst
@@ -0,0 +1,12 @@ +CMD_UNUSED_CLI +-------------- + +.. diagnostic:: + :default: ignore + + Warn about variables that are declared on the command line, but not used. + + This diagnostic is issued outside of the configuration / generation phases. + Accordingly, while the action of this warning category can be queried as + usual, the :command:`cmake_diagnostic` command is unable to affect the action + of this diagnostic.
diff --git a/Help/guide/ide-integration/index.rst b/Help/guide/ide-integration/index.rst index f335e1f..809cf73 100644 --- a/Help/guide/ide-integration/index.rst +++ b/Help/guide/ide-integration/index.rst
@@ -40,7 +40,7 @@ user-specific counterpart, ``CMakeUserPresets.json``. This file contains information on the various configure presets that a user may want. Each preset may have a different compiler, build flags, etc. The details of this format are -explained in the :manual:`cmake(1)` manual. +explained in the :manual:`cmake-presets(7)` manual. IDE vendors are encouraged to read and evaluate this file the same way CMake does, and present the user with the presets listed in the file. Users should be @@ -71,12 +71,12 @@ of the platform to be exceeded, the IDE should instead construct a temporary cache script and pass it with the :option:`-C <cmake -C>` flag. -While reading, parsing, and evaluating the contents of ``CMakePresets.json`` is +While reading, parsing, and evaluating the contents of CMake presets files is straightforward, it is not trivial. In addition to the documentation, IDE vendors may also wish to refer to the CMake source code and test cases for a better understanding of how to implement the format. :download:`This file <../../manual/presets/schema.json>` provides a -machine-readable JSON schema for the ``CMakePresets.json`` format that IDE +machine-readable JSON schema for the CMake presets file format that IDE vendors may find useful for validation and providing editing assistance. Configuring
diff --git a/Help/guide/tutorial/Configuration and Cache Variables.rst b/Help/guide/tutorial/Configuration and Cache Variables.rst index ec93090..7da09ed 100644 --- a/Help/guide/tutorial/Configuration and Cache Variables.rst +++ b/Help/guide/tutorial/Configuration and Cache Variables.rst
@@ -506,6 +506,12 @@ Command line flags can be mixed with presets. Command line flags have precedence over values found in a preset. +.. note:: + On CMake 4.4 and newer, CMake can also load presets from any file specified + with :option:`cmake --presets-file`. This can be useful when reusing settings + across multiple projects, since it avoids having to duplicate them in + separate ``CMakePresets.json`` files for each project. + Presets also support limited macros, variables that can be brace-expanded inside the preset. The only one of interest to us is the ``${sourceDir}`` macro, which expands to the root directory of the project. We can use this to set our @@ -557,7 +563,7 @@ Build and Run ------------- -We can now use the preset file to manage our configuration. +We can now use the presets file to manage our configuration. .. code-block:: console
diff --git a/Help/guide/user-interaction/index.rst b/Help/guide/user-interaction/index.rst index f11b23d..12d6b84 100644 --- a/Help/guide/user-interaction/index.rst +++ b/Help/guide/user-interaction/index.rst
@@ -425,7 +425,7 @@ presets can set the build directory, generator, cache variables, environment variables, and other command-line options. All of these options can be overridden by the -user. The full details of the ``CMakePresets.json`` format +user. The full details of the CMake presets format are listed in the :manual:`cmake-presets(7)` manual. Using presets on the command-line
diff --git a/Help/manual/cmake-diagnostics.7.rst b/Help/manual/cmake-diagnostics.7.rst index 5612299..de2b705 100644 --- a/Help/manual/cmake-diagnostics.7.rst +++ b/Help/manual/cmake-diagnostics.7.rst
@@ -32,71 +32,62 @@ * Issues that may impact the ability of the project to be built with newer versions of CMake. -Diagnostic Actions ------------------- +Controlling Diagnostics +======================= -The action taken when a particular diagnostic is triggered depends on the -diagnostic category. Most categories will warn by default. The -:command:`cmake_diagnostic` command and :option:`-W <cmake -W>` options can be -used to control what action occurs when a diagnostic of a particular category -is triggered. The possible actions are described in the documentation of the -same. +Each diagnostic category has an associated action to be taken when that +diagnostic is triggered. Most categories will warn by default. The available +actions are described in the :command:`cmake_diagnostic` command documentation. + +CMake maintains a diagnostic state stack that is similar to the policy state. +The initial state of the stack is determined by four factors, which are, in +order of precedence: + +* The default action associated with the diagnostic. + +* The action associated with the diagnostic stored in the CMake variable cache, + which is used to persist the initial state between CMake runs. + +* The :preset:`configurePresets.warnings` and :preset:`configurePresets.errors` + fields of :manual:`CMake Presets <cmake-presets(7)>`. + +* The :option:`-W[no-][error=] <cmake -W>` command line arguments. + +.. note:: + + Because command line arguments operate both recursively and in the order + specified, some combinations of diagnostic arguments may result in later + arguments completely overwriting the action of earlier arguments. For + example, ``-Wno-child -Wparent`` will result in the ``child`` warning being + enabled, because ``-Wparent`` promotes both ``parent`` and ``child`` to at + least ``WARN`` severity. CMake presets are evaluated in order from most + ancestral to least ancestral. + +During script execution, the :command:`cmake_diagnostic` command can be used to +query or alter the state, or to perform limited stack manipulations. + +When a diagnostic is issued at configure time (or during script execution, when +CMake is running in script mode), the current diagnostic state controls the +action. Diagnostics issued at generate time, or outside of the configuration +and generation phases must make use of recorded state information. While CMake +strives to preserve this information in a way that matches the recorded state +to the state as of the CMake command which ultimately causes a diagnostic to be +issued, CMake may sometimes fall back to the state when processing of a +subdirectory completed, or even the root state. This may limit the ability of +the :command:`cmake_diagnostic` command to control such diagnostics, especially +if called from a function or included file. This is especially the case for +diagnostics that are not directly coupled to a CMake command. Diagnostic Categories ===================== -The following categories are defined. +The following categories are defined: -``CMD_AUTHOR`` (``-Wauthor``) ------------------------------ +.. toctree:: + :maxdepth: 1 -:Default: Warn - -Warn about a build system's incorrect use of CMake, or of a CMake interface -provided by a dependency. This is the category triggered by -:command:`message(AUTHOR_WARNING)`. It is also the ancestor of many other -diagnostic categories. - -The most important aspect of this category is that it represents issues with -a project's build system which typically require alteration to the same. This -is to say that users simply trying to build a project obtained elsewhere will -typically not be interested in these warnings, except to perhaps report them -to the project's developer(s). - -``CMD_DEPRECATED`` (``-Wdeprecated``) -------------------------------------- - -:Default: Warn -:Parent: ``CMD_AUTHOR`` - -Warn about use of a deprecated function or package. This is the category -triggered by :command:`message(DEPRECATION)`. - -``CMD_UNINITIALIZED`` (``-Wuninitialized``) -------------------------------------------- - -:Default: Ignore - -Warn if an uninitialized variable is dereferenced. - -``CMD_UNUSED_CLI`` (``-Wunused-cli``) -------------------------------------- - -:Default: Warn - -Warn about variables that are declared on the command line, but not used. - -Although the action of this warning category can be queried as usual, changes -made using the :command:`cmake_diagnostic` command have no effect. - -.. _CMD_INSTALL_ABSOLUTE_DESTINATION: - -``CMD_INSTALL_ABSOLUTE_DESTINATION`` (``-Winstall-absolute-destination``) -------------------------------------------------------------------------- - -:Default: Ignore - -Warn when an :command:`install` command specifies an absolute -``DESTINATION`` path. Absolute destinations are typically undesirable -because they prevent the installation prefix from being overridden at -install time. + /diagnostic/CMD_AUTHOR + /diagnostic/CMD_DEPRECATED + /diagnostic/CMD_INSTALL_ABSOLUTE_DESTINATION + /diagnostic/CMD_UNINITIALIZED + /diagnostic/CMD_UNUSED_CLI
diff --git a/Help/manual/cmake-presets.7.rst b/Help/manual/cmake-presets.7.rst index 4c67213..d5f7c98 100644 --- a/Help/manual/cmake-presets.7.rst +++ b/Help/manual/cmake-presets.7.rst
@@ -1,4 +1,4 @@ -.. cmake-manual-description: CMakePresets.json +.. cmake-manual-description: CMake Presets Reference cmake-presets(7) **************** @@ -16,8 +16,12 @@ for common ways to configure a project. This may be done to support CI builds, or for users who frequently use the same build. CMake supports two main files, ``CMakePresets.json`` and ``CMakeUserPresets.json``, that allow users to -specify common configure options and share them with others. CMake also -supports files included with the ``include`` field. +specify common configure options and share them with others. + +.. presets-versionadded:: 4 + + CMake also supports files included with the :preset:`include` field. See + `Includes`_ for more details. ``CMakePresets.json`` and ``CMakeUserPresets.json`` live in the project's root directory. They both have exactly the same format, and both are optional @@ -31,6 +35,13 @@ project is using Git, ``CMakePresets.json`` may be tracked, and ``CMakeUserPresets.json`` should be added to the ``.gitignore``. +.. versionadded:: 4.4 + + CMake also supports specifying a file from which to read presets via the + :cmake-option:`--presets-file` option. If this option is specified, neither + of ``CMakePresets.json`` nor ``CMakeUserPresets.json`` are required to be + present, and any presets defined in those files will be ignored/unavailable. + Format ====== @@ -41,7 +52,7 @@ .. presets-versionadded:: 10 - Preset files may include comments using the key ``$comment`` at any level + Presets files may include comments using the key ``$comment`` at any level within the JSON object to provide documentation. The root object recognizes the following fields: @@ -51,14 +62,15 @@ Includes ^^^^^^^^ -``CMakePresets.json`` and ``CMakeUserPresets.json`` can include other files -with the ``include`` field in file version ``4`` and later. Files included -by these files can also include other files. If ``CMakePresets.json`` and -``CMakeUserPresets.json`` are both present, ``CMakeUserPresets.json`` -implicitly includes ``CMakePresets.json``, even with no ``include`` field, -in all versions of the format. +.. presets-versionadded:: 4 -If a preset file contains presets that inherit from presets in another file, +CMake presets files can include other files with the :preset:`include` field. +Files included in this manner can also include other files. If +``CMakePresets.json`` and ``CMakeUserPresets.json`` are both present, +``CMakeUserPresets.json`` implicitly includes ``CMakePresets.json``, even with +no :preset:`include` field, in all versions of the format. + +If a presets file contains presets that inherit from presets in another file, the file must include the other file either directly or indirectly. Include cycles are not allowed among files. If ``a.json`` includes ``b.json``, ``b.json`` cannot include ``a.json``. However, a file may be @@ -70,14 +82,14 @@ .. presets-versionchanged:: 7 - The ``include`` field supports `macro expansion`_, but only ``$penv{}`` macro - expansion. + The :preset:`include` field supports `macro expansion`_, but only ``$penv{}`` + macro expansion. .. presets-versionchanged:: 9 - The ``include`` field supports `macro expansion`_, except for ``$env{}`` and - preset-specific macros (i.e., those derived from the fields inside a preset's - definition like ``presetName``). + The :preset:`include` field supports `macro expansion`_, except for + ``$env{}`` and preset-specific macros (i.e., those derived from the fields + inside a preset's definition like ``presetName``). .. _`Configure Preset`: @@ -268,12 +280,12 @@ ``${fileDir}`` .. presets-versionadded:: 4 - Path to the directory containing the preset file which defines the preset + Path to the directory containing the presets file which defines the preset being used. .. presets-versionchanged:: 12 - This macro *always* expands to the directory of the current preset file + This macro *always* expands to the directory of the current presets file containing the macro, regardless of the preset being used. For example, consider the following scenario. @@ -296,7 +308,7 @@ .. note:: Since the ``${fileDir}`` macro in version 12 is expanded in the context - of the current preset file, it is the version of the current file, rather + of the current presets file, it is the version of the current file, rather than the version of the root file containing the preset being used, which enables this alternative behavior. @@ -351,9 +363,8 @@ Versions ======== -The JSON schema of ``CMakePresets.json`` and ``CMakeUserPresets.json`` -follows a version scheme where new versions are added and allowed in newer -versions of CMake. +The JSON schema of CMake presets files follows a version scheme where new +versions are added and allowed in newer versions of CMake. A list of the supported versions along with the version of CMake in which they were added and a summary of the new features and changes is given below. @@ -431,7 +442,7 @@ * Changes to `Includes`_ - * The ``include`` field now supports ``$penv{}`` `macro expansion`_. + * The :preset:`include` field now supports ``$penv{}`` `macro expansion`_. ``8`` .. versionadded:: 3.28 @@ -443,7 +454,8 @@ * Changes to `Includes`_ - * The ``include`` field now supports other types of `macro expansion`_. + * The :preset:`include` field now supports other types of + `macro expansion`_. ``10`` .. versionadded:: 3.31 @@ -480,7 +492,7 @@ * Changes to `Macro Expansion`_ * The `${fileDir} <CMakePresets fileDir_>`_ macro now always expands to - the directory of preset file containing the ``${fileDir}`` macro, + the directory of presets file containing the ``${fileDir}`` macro, regardless of whether it is inherited by another preset in a different directory. @@ -493,4 +505,4 @@ ====== :download:`This file </manual/presets/schema.json>` provides a machine-readable -JSON schema for the ``CMakePresets.json`` format. +JSON schema for the CMake presets file format.
diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index a2ddcef..71318dd 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst
@@ -806,6 +806,7 @@ /variable/CTEST_SVN_UPDATE_OPTIONS /variable/CTEST_TEST_LOAD /variable/CTEST_TEST_TIMEOUT + /variable/CTEST_TEST_COVERAGE_TOOL /variable/CTEST_TLS_VERIFY /variable/CTEST_TLS_VERSION /variable/CTEST_UPDATE_COMMAND
diff --git a/Help/manual/cmake.1.rst b/Help/manual/cmake.1.rst index eef6f6d..7b7680f 100644 --- a/Help/manual/cmake.1.rst +++ b/Help/manual/cmake.1.rst
@@ -686,12 +686,15 @@ .. option:: --preset <preset>, --preset=<preset> - Reads a :manual:`preset <cmake-presets(7)>` from ``CMakePresets.json`` and - ``CMakeUserPresets.json`` files, which must be located in the same directory - as the top level ``CMakeLists.txt`` file. The preset may specify the - generator, the build directory, a list of variables, and other arguments to - pass to CMake. At least one of ``CMakePresets.json`` or - ``CMakeUserPresets.json`` must be present. + Reads a :manual:`preset <cmake-presets(7)>` from CMake presets files. + ``CMakePresets.json`` and ``CMakeUserPresets.json`` are the default files, + which must be located in the same directory as the top level + ``CMakeLists.txt`` file. A file can also be specified with + :cmake-option:`--presets-file`. + + The preset may specify the generator, the build directory, a list of + variables, and other arguments to pass to CMake. + The :manual:`CMake GUI <cmake-gui(1)>` also recognizes and supports ``CMakePresets.json`` and ``CMakeUserPresets.json`` files. For full details on these files, see :manual:`cmake-presets(7)`. @@ -699,25 +702,49 @@ The presets are read before all other command line options, although the :cmake-option:`-S` option can be used to specify the source directory containing the ``CMakePresets.json`` and ``CMakeUserPresets.json`` files. - If :cmake-option:`-S` is not given, the current directory is assumed to - be the top level source directory and must contain the presets files. The - options specified by the chosen preset (variables, generator, etc.) can all - be overridden by manually specifying them on the command line. For example, - if the preset sets a variable called ``MYVAR`` to ``1``, but the user sets - it to ``2`` with a ``-D`` argument, the value ``2`` is preferred. + If neither :cmake-option:`-S` nor :cmake-option:`--presets-file` are given, + the current working directory is assumed to be the top level source directory + and must contain ``CMakePresets.json`` and/or ``CMakeUserPresets.json``. + + The options specified by the chosen preset (variables, generator, etc.) + can all be overridden by manually specifying them on the command line. + For example, if the preset sets a variable called ``MYVAR`` to ``1``, + but the user sets it to ``2`` with a :cmake-option:`-D` argument, + the value ``2`` is preferred. .. versionadded:: 3.21 - The ``-B`` option may optionally be specified with a different binary - directory than the one specified by the ``binaryDir`` key of the - configure preset. + The :cmake-option:`-B` option may optionally be specified with a different + binary directory than the one specified by the + :preset:`configurePresets.binaryDir` field. + + .. versionchanged:: 4.4 + If :cmake-option:`--presets-file` is specified, neither of + ``CMakePresets.json`` nor ``CMakeUserPresets.json`` are required to be + present. In prior versions, the presence of these files in the top-level + source directory (whether via :cmake-option:`-S` or the current working + directory) was strictly required. + +.. option:: --presets-file <file>, --presets-file=<file> + + .. versionadded:: 4.4 + + Reads :manual:`presets <cmake-presets(7)>` from the given ``<file>``. The + specified path may be absolute or relative to the current working directory. + If ``--presets-file`` is given, presets defined in ``CMakePresets.json`` and + ``CMakeUserPresets.json`` will be ignored. .. option:: --list-presets[=<type>] Lists the available presets of the specified ``<type>``. Valid values for ``<type>`` are ``configure``, ``build``, ``test``, ``package``, or ``all``. - If ``<type>`` is omitted, ``configure`` is assumed. The current working - directory must contain CMake preset files unless the :cmake-option:`-S` - option is used to specify a different top level source directory. + If ``<type>`` is omitted, ``configure`` is assumed. + + .. versionchanged:: 4.4 + If :cmake-option:`--presets-file` is specified, the presets defined in the + given ``<file>`` will be listed. Otherwise, the top-level source directory + (whether via :cmake-option:`-S` or the current working directory) must + contain ``CMakePresets.json`` and/or ``CMakeUserPresets.json``. + In prior versions, the latter was strictly required. .. option:: --debugger @@ -793,9 +820,10 @@ .. option:: --preset <preset>, --preset=<preset> - Use a build preset to specify build options. The project binary directory - is inferred from the ``configurePreset`` key unless a directory is specified - after ``--build``. See :manual:`preset <cmake-presets(7)>` for more details. + Use a build :manual:`preset <cmake-presets(7)>` to specify build options. + The project binary directory is inferred from the + :preset:`buildPresets.configurePreset` key unless a directory is specified + after ``--build``. .. versionadded:: 4.3 ``cmake --build`` now supports specifying a build directory and @@ -803,7 +831,19 @@ .. versionchanged:: 4.4 ``cmake --build <dir> --preset`` no longer needs to be called from the - directory containing the CMake presets files. + directory containing ``CMakePresets.json`` or ``CMakeUserPresets.json``. + If :cmake-build-option:`--presets-file` is specified, CMake will use that + file; otherwise, the presets file(s) can be inferred from the current + build directory's ``CMakeCache.txt``. + +.. option:: --presets-file <file>, --presets-file=<file> + + .. versionadded:: 4.4 + + Reads :manual:`presets <cmake-presets(7)>` from the given ``<file>``. The + specified path may be absolute or relative to the current working directory. + If ``--presets-file`` is given, presets defined in ``CMakePresets.json`` and + ``CMakeUserPresets.json`` will be ignored. .. option:: --list-presets @@ -811,7 +851,10 @@ .. versionchanged:: 4.4 ``cmake --build <dir> --list-presets`` no longer needs to be called from - the directory containing the CMake presets files. + the directory containing ``CMakePresets.json`` or ``CMakeUserPresets.json``. + If :cmake-build-option:`--presets-file` is specified, only presets defined + in the given ``<file>`` will be listed; otherwise, the presets file(s) are + inferred from the current build directory's ``CMakeCache.txt``. .. option:: -j [<jobs>], --parallel [<jobs>] @@ -1909,10 +1952,8 @@ .. option:: --preset <preset>, --preset=<preset> - Use a workflow preset to specify a workflow. The project binary directory - is inferred from the initial configure preset. The current working directory - must contain CMake preset files. - See :manual:`preset <cmake-presets(7)>` for more details. + Use a workflow :manual:`preset <cmake-presets(7)>` to specify a workflow. + The project binary directory is inferred from the initial configure preset. .. versionchanged:: 3.31 When following immediately after the ``--workflow`` option, @@ -1923,10 +1964,31 @@ $ cmake --workflow my-preset + .. versionchanged:: 4.4 + If :cmake-workflow-option:`--presets-file` is specified, neither of + ``CMakePresets.json`` nor ``CMakeUserPresets.json`` are required to be + present. Otherwise, they are required to be present in the top level + source directory. In prior versions, this was strictly required. + +.. option:: --presets-file <file>, --presets-file=<file> + + .. versionadded:: 4.4 + + Reads :manual:`presets <cmake-presets(7)>` from the given ``<file>``. The + specified path may be absolute or relative to the current working directory. + If ``--presets-file`` is given, presets defined in ``CMakePresets.json`` and + ``CMakeUserPresets.json`` will be ignored. + .. option:: --list-presets - Lists the available workflow presets. The current working directory must - contain CMake preset files. + Lists the available workflow presets. + + .. versionchanged:: 4.4 + If :cmake-workflow-option:`--presets-file` is specified, neither of + ``CMakePresets.json`` nor ``CMakeUserPresets.json`` are required to be + present, and only presets defined in the given ``<file>`` will be listed. + Otherwise, they are required to be present in the top level source + directory. In prior versions, this was strictly required. .. option:: --fresh
diff --git a/Help/manual/cpack.1.rst b/Help/manual/cpack.1.rst index b6ac331..686d153 100644 --- a/Help/manual/cpack.1.rst +++ b/Help/manual/cpack.1.rst
@@ -120,13 +120,37 @@ Override/define :variable:`CPACK_PACKAGE_VENDOR`. -.. option:: --preset <presetName> +.. option:: --preset <preset>, --preset=<preset> - Use a preset from :manual:`cmake-presets(7)`. + Use a package :manual:`preset <cmake-presets(7)>` to specify package + options. The project binary directory is inferred from the + :preset:`packagePresets.configurePreset` key. + + .. versionchanged:: 4.4 + If :cpack-option:`--presets-file` is specified, neither of + ``CMakePresets.json`` nor ``CMakeUserPresets.json`` are required to be + present. Otherwise, they are required to be present in the top level + source directory. In prior versions, this was strictly required. + +.. option:: --presets-file <file>, --presets-file=<file> + + .. versionadded:: 4.4 + + Reads :manual:`presets <cmake-presets(7)>` from the given ``<file>``. The + specified path may be absolute or relative to the current working directory. + If ``--presets-file`` is given, presets defined in ``CMakePresets.json`` and + ``CMakeUserPresets.json`` will be ignored. .. option:: --list-presets - List presets from :manual:`cmake-presets(7)`. + Lists the available package presets. + + .. versionchanged:: 4.4 + If :cpack-option:`--presets-file` is specified, neither of + ``CMakePresets.json`` nor ``CMakeUserPresets.json`` are required to be + present, and only presets defined in the given ``<file>`` will be listed. + Otherwise, they are required to be present in the top level source + directory. In prior versions, this was strictly required. .. include:: include/OPTIONS_HELP.rst
diff --git a/Help/manual/ctest.1.rst b/Help/manual/ctest.1.rst index dba20c1..4ab9d75 100644 --- a/Help/manual/ctest.1.rst +++ b/Help/manual/ctest.1.rst
@@ -69,20 +69,41 @@ .. option:: --preset <preset>, --preset=<preset> - Use a test preset to specify test options. The project binary directory - is inferred from the ``configurePreset`` key. The current working directory - must contain CMake preset files. - See :manual:`preset <cmake-presets(7)>` for more details. + Use a test :manual:`preset <cmake-presets(7)>` to specify test options. The + project binary directory is inferred from the + :preset:`testPresets.configurePreset` key. .. versionadded:: 3.30 - The ``--test-dir`` option may optionally be specified with a different - binary directory than the one specified by the ``configurePreset`` key - of the test preset. + The :ctest-option:`--test-dir` option may be specified with a different + binary directory than the one specified by the + :preset:`testPresets.configurePreset` key. + + .. versionchanged:: 4.4 + If :ctest-option:`--presets-file` is specified, neither of + ``CMakePresets.json`` nor ``CMakeUserPresets.json`` are required to be + present. Otherwise, they are required to be present in the top level + source directory. In prior versions, this was strictly required. + +.. option:: --presets-file <file>, --presets-file=<file> + + .. versionadded:: 4.4 + + Reads :manual:`presets <cmake-presets(7)>` from the given ``<file>``. The + specified path may be absolute or relative to the current working directory. + If ``--presets-file`` is given, presets defined in ``CMakePresets.json`` and + ``CMakeUserPresets.json`` will be ignored. .. option:: --list-presets Lists the available test presets. The current working directory must contain - CMake preset files. + ``CMakePresets.json`` and/or ``CMakeUserPresets.json``. + + .. versionchanged:: 4.4 + If :ctest-option:`--presets-file` is specified, neither of + ``CMakePresets.json`` nor ``CMakeUserPresets.json`` are required to be + present, and only presets defined in the given ``<file>`` will be listed. + Otherwise, they are required to be present in the top level source + directory. In prior versions, this was strictly required. .. option:: -C <cfg>, --build-config <cfg> @@ -1362,8 +1383,41 @@ * `CTest Script`_ variable: :variable:`CTEST_TEST_TIMEOUT` * :module:`CTest` module variable: ``DART_TESTING_TIMEOUT`` +.. _`ctest-CoverageTool`: + +``CoverageTool`` + .. versionadded:: 4.4 + + Specify the tool used for collecting coverage during the running + of the tests. The tool may be one of: + + ``LLVM-COV`` + This value indicates the usage of Clang's source-based code coverage + which "operates on AST and preprocessor information directly". + For more information, see the `Clang Source-based Code Coverage`_ + documentation. + + CTest will run each test with the ``LLVM_PROFILE_FILE`` environment + variable set to ``<directory>/<test-name>_<process-id>.profraw``, + where ``<directory>`` is the absolute path to the directory where + the ``CTestTestfile.cmake`` that describes the test is located. + This configures Clang Source-based Code Coverage to uniquely identify + the coverage information gathered by each test without any collisions. + + Any existing ``<directory>/<test-name>_*.profraw`` files for a test + are removed before running the test. Any existing ``LLVM_PROFILE_FILE`` + environment variable is ignored. + + If no value is specified, no work is done and nothing is added to the + environment. + + * `CTest Script`_ variable: :variable:`CTEST_TEST_COVERAGE_TOOL` + * :module:`CTest` module variable: :variable:`CTEST_TEST_COVERAGE_TOOL` + To report extra test values to CDash, see :ref:`Additional Test Measurements`. +.. _`Clang Source-based Code Coverage`: https://clang.llvm.org/docs/SourceBasedCodeCoverage.html + .. _`CTest Coverage Step`: CTest Coverage Step
diff --git a/Help/manual/presets/buildPresets-properties.rst b/Help/manual/presets/buildPresets-properties.rst index 842ee40..1256280 100644 --- a/Help/manual/presets/buildPresets-properties.rst +++ b/Help/manual/presets/buildPresets-properties.rst
@@ -18,9 +18,10 @@ An optional boolean specifying whether or not a preset should be hidden. If a preset is hidden, it cannot be used in the :cmake-build-option:`--preset` argument and does not have to have a - valid ``configurePreset``, even from inheritance. ``hidden`` - presets are intended to be used as a base for other presets to - inherit via the ``inherits`` field. + valid :preset:`buildPresets.configurePreset`, even from + inheritance. ``hidden`` presets are intended to be used as a base + for other presets to inherit via the + :preset:`buildPresets.inherits` field. .. _`CMakePresets.buildPresets.inherits`: @@ -136,7 +137,7 @@ .. versionchanged:: 4.3 This field does not accept negative integer values, regardless of - the version in the preset file. + the version in the presets file. .. _`CMakePresets.buildPresets.targets`:
diff --git a/Help/manual/presets/execution-properties.rst b/Help/manual/presets/execution-properties.rst index ebe80fc..8e3d4a0 100644 --- a/Help/manual/presets/execution-properties.rst +++ b/Help/manual/presets/execution-properties.rst
@@ -29,7 +29,7 @@ .. versionchanged:: 4.3 This field does not accept negative integer values, - regardless of the version in the preset file. + regardless of the version in the presets file. .. _`CMakePresets.testPresets.execution.resourceSpecFile`:
diff --git a/Help/manual/presets/packagePresets-properties.rst b/Help/manual/presets/packagePresets-properties.rst index 2c21b53..863500f 100644 --- a/Help/manual/presets/packagePresets-properties.rst +++ b/Help/manual/presets/packagePresets-properties.rst
@@ -17,9 +17,10 @@ An optional boolean specifying whether or not a preset should be hidden. If a preset is hidden, it cannot be used in the :cpack-option:`--preset` argument and does not have to have a valid - ``configurePreset``, even from inheritance. ``hidden`` presets are - intended to be used as a base for other presets to inherit via the - ``inherits`` field. + :preset:`packagePresets.configurePreset`, even from + inheritance. ``hidden`` presets are intended to be used as a base + for other presets to inherit via the + :preset:`packagePresets.inherits` field. .. _`CMakePresets.packagePresets.inherits`:
diff --git a/Help/manual/presets/schema.json b/Help/manual/presets/schema.json index cd52447..128c829 100644 --- a/Help/manual/presets/schema.json +++ b/Help/manual/presets/schema.json
@@ -1856,6 +1856,9 @@ "buildPresets.environment@v2..": { "type": "object", "description": "An optional map of environment variables. The key is the variable name (which must not be an empty string). Each variable is set regardless of whether or not a value was given to it by the process's environment. This field supports macro expansion, and environment variables in this map may reference each other, and may be listed in any order, as long as such references do not cause a cycle (for example,if ENV_1 is $env{ENV_2}, ENV_2 may not be $env{ENV_1}.) Environment variables are inherited through the inherits field, and the preset's environment will be the union of its own environment and the environment from all its parents. If multiple presets in this union define the same variable, the standard rules of inherits are applied. Setting a variable to null causes it to not be set, even if a value was inherited from another preset.", + "propertyNames": { + "pattern": "^.+$" + }, "properties": {}, "additionalProperties": { "anyOf": [
diff --git a/Help/manual/presets/schema.yaml b/Help/manual/presets/schema.yaml index fe56d73..7650fa4 100644 --- a/Help/manual/presets/schema.yaml +++ b/Help/manual/presets/schema.yaml
@@ -963,9 +963,10 @@ An optional boolean specifying whether or not a preset should be hidden. If a preset is hidden, it cannot be used in the :cmake-build-option:`--preset` argument and does not have to have a - valid ``configurePreset``, even from inheritance. ``hidden`` - presets are intended to be used as a base for other presets to - inherit via the ``inherits`` field. + valid :preset:`buildPresets.configurePreset`, even from + inheritance. ``hidden`` presets are intended to be used as a base + for other presets to inherit via the + :preset:`buildPresets.inherits` field. inherits: *preset-inherits condition: *condition vendor: *preset-vendor @@ -988,6 +989,8 @@ ExternalProject may use a different (system default) compiler than the top-level CMake project. properties: {} + propertyNames: + pattern: '^.+$' additionalProperties: *environment-additional-properties configurePreset: type: string @@ -1033,7 +1036,7 @@ .. versionchanged:: 4.3 This field does not accept negative integer values, regardless of - the version in the preset file. + the version in the presets file. minimum: 0 targets: anyOf: @@ -1181,9 +1184,10 @@ An optional boolean specifying whether or not a preset should be hidden. If a preset is hidden, it cannot be used in the :ctest-option:`--preset` argument and does not have to have a valid - ``configurePreset``, even from inheritance. ``hidden`` presets are - intended to be used as a base for other presets to inherit via the - ``inherits`` field. + :preset:`testPresets.configurePreset`, even from + inheritance. ``hidden`` presets are intended to be used as a base + for other presets to inherit via the + :preset:`testPresets.inherits` field. inherits: *preset-inherits condition: *condition vendor: *preset-vendor @@ -1629,7 +1633,7 @@ .. versionchanged:: 4.3 This field does not accept negative integer values, - regardless of the version in the preset file. + regardless of the version in the presets file. minimum: 0 resourceSpecFile: type: string @@ -1819,9 +1823,10 @@ An optional boolean specifying whether or not a preset should be hidden. If a preset is hidden, it cannot be used in the :cpack-option:`--preset` argument and does not have to have a valid - ``configurePreset``, even from inheritance. ``hidden`` presets are - intended to be used as a base for other presets to inherit via the - ``inherits`` field. + :preset:`packagePresets.configurePreset`, even from + inheritance. ``hidden`` presets are intended to be used as a base + for other presets to inherit via the + :preset:`packagePresets.inherits` field. inherits: *preset-inherits condition: *condition vendor: *preset-vendor
diff --git a/Help/manual/presets/testPresets-properties.rst b/Help/manual/presets/testPresets-properties.rst index 293d88f..6e71ab4 100644 --- a/Help/manual/presets/testPresets-properties.rst +++ b/Help/manual/presets/testPresets-properties.rst
@@ -17,9 +17,10 @@ An optional boolean specifying whether or not a preset should be hidden. If a preset is hidden, it cannot be used in the :ctest-option:`--preset` argument and does not have to have a valid - ``configurePreset``, even from inheritance. ``hidden`` presets are - intended to be used as a base for other presets to inherit via the - ``inherits`` field. + :preset:`testPresets.configurePreset`, even from + inheritance. ``hidden`` presets are intended to be used as a base + for other presets to inherit via the + :preset:`testPresets.inherits` field. .. _`CMakePresets.testPresets.inherits`:
diff --git a/Help/release/3.23.rst b/Help/release/3.23.rst index 20e43c5..ece6941 100644 --- a/Help/release/3.23.rst +++ b/Help/release/3.23.rst
@@ -19,7 +19,7 @@ which allows the files to include other files. * :manual:`cmake-presets(7)` files now support a ``${fileDir}`` macro, which - contains the directory containing the preset file. + contains the directory containing the presets file. * :manual:`cmake-presets(7)` gained support for specifying the ``resolvePackageReferences`` command line option in a build preset to control
diff --git a/Help/release/dev/ctest-llvm-cov.rst b/Help/release/dev/ctest-llvm-cov.rst new file mode 100644 index 0000000..f6ca701 --- /dev/null +++ b/Help/release/dev/ctest-llvm-cov.rst
@@ -0,0 +1,6 @@ +ctest-llvm-cov +-------------- + +* :manual:`ctest(1)` gained a :ref:`CoverageTool <ctest-CoverageTool>` + option in :ref:`Dashboard Client` mode to configure tests for + coverage collection by ``llvm-cov``.
diff --git a/Help/release/dev/install-absolute-dest-configure-time.rst b/Help/release/dev/install-absolute-dest-configure-time.rst index 25a9c0a..580a46c 100644 --- a/Help/release/dev/install-absolute-dest-configure-time.rst +++ b/Help/release/dev/install-absolute-dest-configure-time.rst
@@ -3,8 +3,10 @@ * CMake gained the ability to diagnose :command:`install` commands that specify an absolute ``DESTINATION`` path via the - :ref:`CMD_INSTALL_ABSOLUTE_DESTINATION <CMD_INSTALL_ABSOLUTE_DESTINATION>` - diagnostic category. This diagnostic may be controlled with the - :option:`-Winstall-absolute-destination <cmake -W>` command-line option, the - ``installAbsoluteDestination`` field in a :manual:`cmake-presets(7)` - ``warnings`` object, or the :command:`cmake_diagnostic` command. + :diagnostic:`CMD_INSTALL_ABSOLUTE_DESTINATION` diagnostic category. + This diagnostic may be controlled with the + :option:`-Winstall-absolute-destination <cmake -W>` command-line option, + the ``installAbsoluteDestination`` field in a + :manual:`CMake Presets <cmake-presets(7)>` + :preset:`configurePresets.warnings` object, + or the :command:`cmake_diagnostic` command.
diff --git a/Help/release/dev/presets-file-arg.rst b/Help/release/dev/presets-file-arg.rst new file mode 100644 index 0000000..7cfc969 --- /dev/null +++ b/Help/release/dev/presets-file-arg.rst
@@ -0,0 +1,11 @@ +presets-file-arg +---------------- + +* :manual:`cmake(1)`, :manual:`ctest(1)`, and :manual:`cpack(1)` gained + ``--presets-file`` arguments to support loading + :manual:`presets <cmake-presets(7)>` from the specified file instead of + ``CMakePresets.json`` and/or ``CMakeUserPresets.json``. See + :option:`cmake --presets-file`, + :option:`cmake --build --presets-file <cmake--build --presets-file>`, + :option:`cmake --workflow --presets-file <cmake--workflow --presets-file>`, + :option:`ctest --presets-file`, and :option:`cpack --presets-file` for details.
diff --git a/Help/release/dev/presets-fileDir.rst b/Help/release/dev/presets-fileDir.rst index 45f41d2..6ee8603 100644 --- a/Help/release/dev/presets-fileDir.rst +++ b/Help/release/dev/presets-fileDir.rst
@@ -3,5 +3,5 @@ * :manual:`cmake-presets(7)` files now support schema version 12. The :ref:`${fileDir} <CMakePresets fileDir>` macro now always expands to the - directory of the preset file containing the ``${fileDir}`` macro, regardless + directory of the presets file containing the ``${fileDir}`` macro, regardless of whether it is inherited by another preset in a different directory.
diff --git a/Help/variable/CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION.rst b/Help/variable/CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION.rst index 84a27e5..5ee7bf3 100644 --- a/Help/variable/CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION.rst +++ b/Help/variable/CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION.rst
@@ -11,8 +11,7 @@ .. versionadded:: 4.4 - The :ref:`CMD_INSTALL_ABSOLUTE_DESTINATION <CMD_INSTALL_ABSOLUTE_DESTINATION>` - diagnostic can be used to to generate errors for absolute install destinations - at generate time. + The :diagnostic:`CMD_INSTALL_ABSOLUTE_DESTINATION` diagnostic can be used to + generate errors for absolute install destinations at generate time. See also :variable:`CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION`.
diff --git a/Help/variable/CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION.rst b/Help/variable/CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION.rst index fac680e..ac40b3d 100644 --- a/Help/variable/CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION.rst +++ b/Help/variable/CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION.rst
@@ -10,8 +10,7 @@ .. versionadded:: 4.4 - The :ref:`CMD_INSTALL_ABSOLUTE_DESTINATION <CMD_INSTALL_ABSOLUTE_DESTINATION>` - diagnostic can be used to to generate warnings for absolute install destinations - at generate time. + The :diagnostic:`CMD_INSTALL_ABSOLUTE_DESTINATION` diagnostic can be used to + generate warnings for absolute install destinations at generate time. See also :variable:`CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION`.
diff --git a/Help/variable/CTEST_TEST_COVERAGE_TOOL.rst b/Help/variable/CTEST_TEST_COVERAGE_TOOL.rst new file mode 100644 index 0000000..bc94825 --- /dev/null +++ b/Help/variable/CTEST_TEST_COVERAGE_TOOL.rst
@@ -0,0 +1,7 @@ +CTEST_TEST_COVERAGE_TOOL +------------------------ + +.. versionadded:: 4.4 + +Specify the CTest :ref:`CoverageTool <ctest-CoverageTool>` setting +in a :manual:`ctest(1)` :ref:`Dashboard Client` script.
diff --git a/Modules/DartConfiguration.tcl.in b/Modules/DartConfiguration.tcl.in index 67d9f8f..409a5c6 100644 --- a/Modules/DartConfiguration.tcl.in +++ b/Modules/DartConfiguration.tcl.in
@@ -107,3 +107,6 @@ # specify behavior for retrying the submission CTestSubmitRetryDelay: @CTEST_SUBMIT_RETRY_DELAY@ CTestSubmitRetryCount: @CTEST_SUBMIT_RETRY_COUNT@ + +# Invoke each test with environment variables configuring tool's collection. +CTestTestCoverageTool: @CTEST_TEST_COVERAGE_TOOL@
diff --git a/Modules/FindArmadillo.cmake b/Modules/FindArmadillo.cmake index 901ea22..861540b 100644 --- a/Modules/FindArmadillo.cmake +++ b/Modules/FindArmadillo.cmake
@@ -133,7 +133,7 @@ set(Armadillo_VERSION_NAME "EARLY RELEASE") if(EXISTS "${ARMADILLO_INCLUDE_DIR}/armadillo_bits/arma_version.hpp") - # Read and parse armdillo version header file for version number + # Read and parse Armadillo version header file for version number. file(STRINGS "${ARMADILLO_INCLUDE_DIR}/armadillo_bits/arma_version.hpp" _ARMA_HEADER_CONTENTS REGEX "#define ARMA_VERSION_[A-Z]+ ") string(REGEX REPLACE ".*#define ARMA_VERSION_MAJOR ([0-9]+).*" "\\1" ARMADILLO_VERSION_MAJOR "${_ARMA_HEADER_CONTENTS}") string(REGEX REPLACE ".*#define ARMA_VERSION_MINOR ([0-9]+).*" "\\1" ARMADILLO_VERSION_MINOR "${_ARMA_HEADER_CONTENTS}") @@ -176,8 +176,6 @@ ) mark_as_advanced(ARMADILLO_LIBRARY) set(_ARMA_REQUIRED_VARS ARMADILLO_LIBRARY) -else() - set(ARMADILLO_LIBRARY "") endif() # Transitive linking with the wrapper does not work with MSVC,
diff --git a/Modules/FindCUDAToolkit.cmake b/Modules/FindCUDAToolkit.cmake index 8a6e1fb..73e30d2 100644 --- a/Modules/FindCUDAToolkit.cmake +++ b/Modules/FindCUDAToolkit.cmake
@@ -1539,10 +1539,13 @@ _CUDAToolkit_find_and_add_import_lib( sanitizer ONLY_SEARCH_FOR sanitizer-public - LIBRARY_SEARCH_DIRS - "${CUDAToolkit_LIBRARY_ROOT}/compute-sanitizer" - "${CUDAToolkit_LIBRARY_ROOT}/Sanitizer" - "${CUDAToolkit_LIBRARY_ROOT}/extras/Sanitizer" + EXTRA_PATH_SUFFIXES + "../compute-sanitizer" + "../../../compute-sanitizer" + "../Sanitizer" + "../../../Sanitizer" + "../extras/Sanitizer" + "../../../extras/Sanitizer" EXTRA_INCLUDE_DIRS "${CUDAToolkit_CUPTI_INCLUDE_DIR}" ) if(TARGET CUDA::sanitizer)
diff --git a/Modules/Platform/Windows-PellesC-ASM_POASM.cmake b/Modules/Platform/Windows-PellesC-ASM_POASM.cmake index 2cafaef..2bff21f 100644 --- a/Modules/Platform/Windows-PellesC-ASM_POASM.cmake +++ b/Modules/Platform/Windows-PellesC-ASM_POASM.cmake
@@ -6,3 +6,8 @@ set(CMAKE_ASM_POASM_COMPILE_OBJECT "<CMAKE_ASM_POASM_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -Fo<OBJECT> <SOURCE>") + +string(APPEND CMAKE_ASM_POASM_FLAGS_DEBUG_INIT " -Zi") +string(APPEND CMAKE_ASM_POASM_FLAGS_RELEASE_INIT "") +string(APPEND CMAKE_ASM_POASM_FLAGS_RELWITHDEBINFO_INIT " -Zi") +string(APPEND CMAKE_ASM_POASM_FLAGS_MINSIZEREL_INIT "")
diff --git a/Modules/Platform/Windows-PellesC-C.cmake b/Modules/Platform/Windows-PellesC-C.cmake index 64fd5f6..f5a3dad 100644 --- a/Modules/Platform/Windows-PellesC-C.cmake +++ b/Modules/Platform/Windows-PellesC-C.cmake
@@ -6,3 +6,12 @@ set(CMAKE_C_COMPILE_OBJECT "<CMAKE_C_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -Fo<OBJECT> -c <SOURCE>") + +# Enable Pelles C's Microsoft extensions to use Windows APIs. +# The flag also disables standard definitions, so add them. +string(APPEND CMAKE_C_FLAGS_INIT " -Ze -D__STDC__=1 -D__STDC_VERSION__=__POCC_STDC_VERSION__") + +string(APPEND CMAKE_C_FLAGS_DEBUG_INIT " -Zi -Ob0") +string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -Ot -Ob2 -DNDEBUG=1") +string(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO_INIT " -Zi -Ot -Ob1 -DNDEBUG=1") +string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -Os -Ob1 -DNDEBUG=1")
diff --git a/Modules/Platform/Windows-PellesC.cmake b/Modules/Platform/Windows-PellesC.cmake index eb16576..d29cc4a 100644 --- a/Modules/Platform/Windows-PellesC.cmake +++ b/Modules/Platform/Windows-PellesC.cmake
@@ -6,6 +6,8 @@ set(CMAKE_LINK_DEF_FILE_FLAG "-def:") set(CMAKE_LINK_LIBRARY_FLAG "") +set(CMAKE_BUILD_TYPE_INIT Debug) + macro(__windows_compiler_pellesc lang) set(CMAKE_${lang}_CREATE_STATIC_LIBRARY "<CMAKE_AR> <LINK_FLAGS> -out:<TARGET> <OBJECTS>") @@ -27,3 +29,8 @@ endif() enable_language(RC) endmacro() + +foreach (t IN ITEMS EXE SHARED MODULE) + string(APPEND CMAKE_${t}_LINKER_FLAGS_DEBUG_INIT " -debug -debugtype:both -dbg") + string(APPEND CMAKE_${t}_LINKER_FLAGS_RELWITHDEBINFO_INIT " -debug -debugtype:both -dbg") +endforeach ()
diff --git a/Modules/ProcessorCount.cmake b/Modules/ProcessorCount.cmake index 260b663..b8fa1fa 100644 --- a/Modules/ProcessorCount.cmake +++ b/Modules/ProcessorCount.cmake
@@ -94,12 +94,13 @@ execute_process(COMMAND ${ProcessorCount_cmd_sysctl} -n hw.ncpu ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE - OUTPUT_VARIABLE count) + OUTPUT_VARIABLE count + RESULT_VARIABLE _count_ok) #message("ProcessorCount: trying sysctl '${ProcessorCount_cmd_sysctl}'") endif() endif() - if(NOT count) + if(NOT (_count_ok EQUAL 0 AND count GREATER 0)) # Linux (systems with nproc): # Prefer nproc to getconf if available as getconf may return the host CPU count in Linux containers find_program(ProcessorCount_cmd_nproc nproc) @@ -108,12 +109,13 @@ execute_process(COMMAND ${ProcessorCount_cmd_nproc} ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE - OUTPUT_VARIABLE count) + OUTPUT_VARIABLE count + RESULT_VARIABLE _count_ok) #message("ProcessorCount: trying nproc '${ProcessorCount_cmd_nproc}'") endif() endif() - if(NOT count) + if(NOT (_count_ok EQUAL 0 AND count GREATER 0)) # Linux (systems with getconf): find_program(ProcessorCount_cmd_getconf getconf) mark_as_advanced(ProcessorCount_cmd_getconf) @@ -121,12 +123,13 @@ execute_process(COMMAND ${ProcessorCount_cmd_getconf} _NPROCESSORS_ONLN ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE - OUTPUT_VARIABLE count) + OUTPUT_VARIABLE count + RESULT_VARIABLE _count_ok) #message("ProcessorCount: trying getconf '${ProcessorCount_cmd_getconf}'") endif() endif() - if(NOT count) + if(NOT (_count_ok EQUAL 0 AND count GREATER 0)) # HPUX (systems with machinfo): find_program(ProcessorCount_cmd_machinfo machinfo PATHS /usr/contrib/bin) @@ -150,15 +153,18 @@ execute_process(COMMAND ${ProcessorCount_cmd_mpsched} -s OUTPUT_QUIET ERROR_STRIP_TRAILING_WHITESPACE - ERROR_VARIABLE mpsched_output) - string(REGEX MATCHALL "Processor Count *: *([0-9]+)" procs "${mpsched_output}") - set(count "${CMAKE_MATCH_1}") + ERROR_VARIABLE mpsched_output + RESULT_VARIABLE _mpsched_ok) + if(_mpsched_ok EQUAL 0) + string(REGEX MATCHALL "Processor Count *: *([0-9]+)" procs "${mpsched_output}") + set(count "${CMAKE_MATCH_1}") + endif() #message("ProcessorCount: trying mpsched -s '${ProcessorCount_cmd_mpsched}'") endif() endif() endif() - if(NOT count) + if(NOT count GREATER 0) # AIX (systems with lsconf): find_program(ProcessorCount_cmd_lsconf lsconf PATHS /usr/sbin) @@ -167,14 +173,17 @@ execute_process(COMMAND ${ProcessorCount_cmd_lsconf} ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE - OUTPUT_VARIABLE lsconf_output) - string(REGEX MATCHALL "Number Of Processors: ([0-9]+)" procs "${lsconf_output}") - set(count "${CMAKE_MATCH_1}") + OUTPUT_VARIABLE lsconf_output + RESULT_VARIABLE _lsconf_ok) + if(_lsconf_ok EQUAL 0) + string(REGEX MATCHALL "Number Of Processors: ([0-9]+)" procs "${lsconf_output}") + set(count "${CMAKE_MATCH_1}") + endif() #message("ProcessorCount: trying lsconf '${ProcessorCount_cmd_lsconf}'") endif() endif() - if(NOT count) + if(NOT count GREATER 0) # QNX (systems with pidin): find_program(ProcessorCount_cmd_pidin pidin) mark_as_advanced(ProcessorCount_cmd_pidin) @@ -182,14 +191,17 @@ execute_process(COMMAND ${ProcessorCount_cmd_pidin} info ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE - OUTPUT_VARIABLE pidin_output) - string(REGEX MATCHALL "Processor[0-9]+: " procs "${pidin_output}") - list(LENGTH procs count) + OUTPUT_VARIABLE pidin_output + RESULT_VARIABLE _pidin_ok) + if(_pidin_ok EQUAL 0) + string(REGEX MATCHALL "Processor[0-9]+: " procs "${pidin_output}") + list(LENGTH procs count) + endif() #message("ProcessorCount: trying pidin '${ProcessorCount_cmd_pidin}'") endif() endif() - if(NOT count) + if(NOT count GREATER 0) # Sun (systems where psrinfo tool is available) find_program(ProcessorCount_cmd_psrinfo psrinfo PATHS /usr/sbin /sbin) mark_as_advanced(ProcessorCount_cmd_psrinfo) @@ -197,13 +209,16 @@ execute_process(COMMAND ${ProcessorCount_cmd_psrinfo} -p -v ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE - OUTPUT_VARIABLE psrinfo_output) - string(REGEX MATCHALL "has [0-9]+ virtual processor" procs "${psrinfo_output}") - set(count "") - foreach(proc ${procs}) - string(REGEX MATCH "has ([0-9]+) virtual" res ${proc}) - math(EXPR count "${count} + ${CMAKE_MATCH_1}") - endforeach() + OUTPUT_VARIABLE psrinfo_output + RESULT_VARIABLE _psrinfo_ok) + if(_psrinfo_ok EQUAL 0) + string(REGEX MATCHALL "has [0-9]+ virtual processor" procs "${psrinfo_output}") + set(count "") + foreach(proc IN LISTS procs) + string(REGEX MATCH "has ([0-9]+) virtual" res ${proc}) + math(EXPR count "${count} + ${CMAKE_MATCH_1}") + endforeach() + endif() #message("ProcessorCount: trying '${ProcessorCount_cmd_psrinfo}' -p -v") else() # Sun (systems where uname -X emits "NumCPU" in its output): @@ -213,9 +228,12 @@ execute_process(COMMAND ${ProcessorCount_cmd_uname} -X ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE - OUTPUT_VARIABLE uname_X_output) - string(REGEX MATCHALL "NumCPU = ([0-9]+)" procs "${uname_X_output}") - set(count "${CMAKE_MATCH_1}") + OUTPUT_VARIABLE uname_X_output + RESULT_VARIABLE _uname_X_ok) + if(_uname_X_ok EQUAL 0) + string(REGEX MATCHALL "NumCPU = ([0-9]+)" procs "${uname_X_output}") + set(count "${CMAKE_MATCH_1}") + endif() #message("ProcessorCount: trying uname -X '${ProcessorCount_cmd_uname}'") endif() endif() @@ -224,7 +242,7 @@ # Execute this code when all previously attempted methods return empty # output: # - if(NOT count) + if(NOT count GREATER 0) # Systems with /proc/cpuinfo: set(cpuinfo_file /proc/cpuinfo) if(EXISTS "${cpuinfo_file}") @@ -237,7 +255,7 @@ endif() endif() - if(NOT count) + if(NOT count GREATER 0) # Haiku find_program(ProcessorCount_cmd_sysinfo sysinfo) mark_as_advanced(ProcessorCount_cmd_sysinfo) @@ -245,9 +263,12 @@ execute_process(COMMAND ${ProcessorCount_cmd_sysinfo} ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE - OUTPUT_VARIABLE sysinfo_X_output) - string(REGEX MATCHALL "\nCPU #[0-9]+:" procs "\n${sysinfo_X_output}") - list(LENGTH procs count) + OUTPUT_VARIABLE sysinfo_X_output + RESULT_VARIABLE _sysinfo_ok) + if(_sysinfo_ok EQUAL 0) + string(REGEX MATCHALL "\nCPU #[0-9]+:" procs "\n${sysinfo_X_output}") + list(LENGTH procs count) + endif() #message("ProcessorCount: trying sysinfo '${ProcessorCount_cmd_sysinfo}'") endif() endif() @@ -255,7 +276,7 @@ # Since cygwin builds of CMake do not define WIN32 anymore, but they still # run on Windows, and will still have this env var defined: # - if(NOT count) + if(NOT count GREATER 0) set(count "$ENV{NUMBER_OF_PROCESSORS}") #message("ProcessorCount: last fallback, trying environment variable") endif()
diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index e7a0aef..a5910ef 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt
@@ -125,6 +125,7 @@ cmCLocaleEnvironmentScope.cxx cmCMakePath.h cmCMakePath.cxx + cmCMakePresetsArgs.h cmCMakePresetsErrors.cxx cmCMakePresetsErrors.h cmCMakePresetsGraph.cxx
diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index df39ab1..54bc9ad 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake
@@ -1,7 +1,7 @@ # CMake version number components. set(CMake_VERSION_MAJOR 4) set(CMake_VERSION_MINOR 3) -set(CMake_VERSION_PATCH 20260430) +set(CMake_VERSION_PATCH 20260505) #set(CMake_VERSION_RC 0) set(CMake_VERSION_IS_DIRTY 0)
diff --git a/Source/CPack/cpack.cxx b/Source/CPack/cpack.cxx index a7ed74b..c595378 100644 --- a/Source/CPack/cpack.cxx +++ b/Source/CPack/cpack.cxx
@@ -19,6 +19,7 @@ #include "cmsys/Encoding.hxx" +#include "cmCMakePresetsArgs.h" #include "cmCMakePresetsGraph.h" #include "cmCPackGenerator.h" #include "cmCPackGeneratorFactory.h" @@ -46,7 +47,7 @@ cmDocumentationEntry const cmDocumentationUsage = { {}, " cpack [options]" }; -cmDocumentationEntry const cmDocumentationOptions[14] = { +cmDocumentationEntry const cmDocumentationOptions[] = { { "-G <generators>", "Override/define CPACK_GENERATOR" }, { "-C <Configurations>", "Specify the project configuration(s)" }, { "-D <var>=<value>", "Set a CPack variable." }, @@ -60,6 +61,7 @@ { "-B <packageDirectory>", "Override/define CPACK_PACKAGE_DIRECTORY" }, { "--vendor <vendorName>", "Override/define CPACK_PACKAGE_VENDOR" }, { "--preset", "Read arguments from a package preset" }, + { "--presets-file", "Load package presets from the given file" }, { "--list-presets", "List available package presets" } }; @@ -130,8 +132,7 @@ std::string cpackProjectVendor; std::string cpackConfigFile; - std::string preset; - bool listPresets = false; + cmCMakePresetsArgs presetsArgs; std::map<std::string, std::string> definitions; @@ -162,6 +163,12 @@ return true; }; + auto const presetFileLambda = [&presetsArgs](std::string const& value, + cmake*, cmMakefile*) -> bool { + presetsArgs.PresetsFile = cmSystemTools::ToNormalizedPathOnDisk(value); + return true; + }; + using CommandArgument = cmCommandLineArgument<bool(std::string const&, cmake*, cmMakefile*)>; @@ -201,9 +208,11 @@ CommandArgument::setToValue(cpackProjectVendor) }, CommandArgument{ "--preset", "No preset specified for --preset", CommandArgument::Values::One, - CommandArgument::setToValue(preset) }, + CommandArgument::setToValue(presetsArgs.PresetName) }, CommandArgument{ "--list-presets", CommandArgument::Values::Zero, - CommandArgument::setToTrue(listPresets) }, + CommandArgument::setToTrue(presetsArgs.ListPresets) }, + CommandArgument{ "--presets-file", "No file specified for --presets-file", + CommandArgument::Values::One, presetFileLambda }, CommandArgument{ "-D", CommandArgument::Values::One, CommandArgument::RequiresSeparator::No, [&log, &definitions](std::string const& arg, cmake*, @@ -249,7 +258,7 @@ generators.SetLogger(&log); // Set up presets - if (!preset.empty() || listPresets) { + if (presetsArgs.HasPresetsArg()) { auto const workingDirectory = cmSystemTools::GetLogicalWorkingDirectory(); auto const presetGeneratorsPresent = @@ -262,7 +271,8 @@ }; cmCMakePresetsGraph presetsGraph; - auto result = presetsGraph.ReadProjectPresets(workingDirectory); + auto result = presetsGraph.ReadProjectPresets(workingDirectory, + presetsArgs.PresetsFile); if (result != true) { cmCPack_Log(&log, cmCPackLog::LOG_ERROR, "Could not read presets from " @@ -271,13 +281,13 @@ return 1; } - if (listPresets) { + if (presetsArgs.ListPresets) { presetsGraph.PrintPackagePresetList(presetGeneratorsPresent); return 0; } - auto resolveResult = - presetsGraph.ResolvePreset(preset, presetsGraph.PackagePresets); + auto resolveResult = presetsGraph.ResolvePreset( + presetsArgs.PresetName, presetsGraph.PackagePresets); auto resolveError = cmCMakePresetsGraph::FormatPresetError< cmCMakePresetsGraph::PackagePreset>(resolveResult.StatusCode, resolveResult.ErrorPresetName,
diff --git a/Source/CTest/cmCTestBuildCommand.cxx b/Source/CTest/cmCTestBuildCommand.cxx index 7bbf5a3..6546088 100644 --- a/Source/CTest/cmCTestBuildCommand.cxx +++ b/Source/CTest/cmCTestBuildCommand.cxx
@@ -81,7 +81,7 @@ mf.GetSafeDefinition("CTEST_SOURCE_DIRECTORY"); cmCMakePresetsGraph presetsGraph; - if (!presetsGraph.ReadProjectPresets(sourceDirectory)) { + if (!presetsGraph.ReadProjectPresets(sourceDirectory, "")) { status.SetError( cmStrCat("Could not read presets from \"", sourceDirectory, "\": ", presetsGraph.parseState.GetErrorMessage()));
diff --git a/Source/CTest/cmCTestConfigureCommand.cxx b/Source/CTest/cmCTestConfigureCommand.cxx index bede3b1..3e9e1dc 100644 --- a/Source/CTest/cmCTestConfigureCommand.cxx +++ b/Source/CTest/cmCTestConfigureCommand.cxx
@@ -64,7 +64,7 @@ if (!presetName.empty()) { cmCMakePresetsGraph presetsGraph; - if (!presetsGraph.ReadProjectPresets(sourceDirectory)) { + if (!presetsGraph.ReadProjectPresets(sourceDirectory, "")) { status.SetError( cmStrCat("Could not read presets from \"", sourceDirectory, "\": ", presetsGraph.parseState.GetErrorMessage()));
diff --git a/Source/CTest/cmCTestRunTest.cxx b/Source/CTest/cmCTestRunTest.cxx index c5e7ce1..eaf5831 100644 --- a/Source/CTest/cmCTestRunTest.cxx +++ b/Source/CTest/cmCTestRunTest.cxx
@@ -14,7 +14,10 @@ #include <cm/memory> #include <cm/optional> +#include <cm/string_view> +#include <cmext/string_view> +#include "cmsys/Glob.hxx" #include "cmsys/RegularExpression.hxx" #include "cmCTest.h" @@ -874,6 +877,35 @@ diff.ApplyTo(env); } + // Inject LLVM Profile name : + // https://clang.llvm.org/docs/SourceBasedCodeCoverage.html#running-the-instrumented-program + if (this->CTest->GetCTestConfiguration("CTestTestCoverageTool") == + "LLVM-COV"_s || + this->TestHandler->TestOptions.CoverageTool == "LLVM-COV"_s) { + + // Isolate the test from any ambient LLVM_PROFILE_FILE + env.UnPutEnv("LLVM_PROFILE_FILE"); + // Value is <Test Dir>/<testName>_<processID>.profraw + std::string profileEnv = + cmStrCat(this->TestProperties->CTestDirectory, "/", + this->TestProperties->Name, "_%p.profraw"_s); + cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT, + this->Index + << ": Using environment variable LLVM_PROFILE_FILE="_s + << profileEnv << " \n", + this->TestHandler->GetQuiet()); + env.PutEnv(cmStrCat("LLVM_PROFILE_FILE="_s, profileEnv)); + // ProcessID -> * to allow for glob to find all + // files generated by the test + cmSystemTools::ReplaceString(profileEnv, "%p", "*"); + + cmsys::Glob glob; + glob.FindFiles(profileEnv); + for (std::string const& file : glob.GetFiles()) { + cmSystemTools::RemoveFile(file); + } + }; + if (this->UseAllocatedResources) { this->SetupResourcesEnvironment(env); } else {
diff --git a/Source/CTest/cmCTestTestCommand.cxx b/Source/CTest/cmCTestTestCommand.cxx index 2d923a4..1c0d4e7 100644 --- a/Source/CTest/cmCTestTestCommand.cxx +++ b/Source/CTest/cmCTestTestCommand.cxx
@@ -96,6 +96,9 @@ if (!args.ResourceSpecFile.empty()) { handler->TestOptions.ResourceSpecFile = args.ResourceSpecFile; } + if (!args.CoverageTool.empty()) { + handler->TestOptions.CoverageTool = args.CoverageTool; + } if (!args.StopTime.empty()) { this->CTest->SetStopTime(args.StopTime); }
diff --git a/Source/CTest/cmCTestTestCommand.h b/Source/CTest/cmCTestTestCommand.h index 125d5a5..00297f6 100644 --- a/Source/CTest/cmCTestTestCommand.h +++ b/Source/CTest/cmCTestTestCommand.h
@@ -46,6 +46,7 @@ std::string TestLoad; std::string ResourceSpecFile; std::string OutputJUnit; + std::string CoverageTool; bool StopOnFailure = false; }; @@ -74,6 +75,7 @@ .Bind("TEST_LOAD"_s, &TestArguments::TestLoad) .Bind("RESOURCE_SPEC_FILE"_s, &TestArguments::ResourceSpecFile) .Bind("STOP_ON_FAILURE"_s, &TestArguments::StopOnFailure) + .Bind("COVERAGE_TOOL"_s, &TestArguments::CoverageTool) .Bind("OUTPUT_JUNIT"_s, &TestArguments::OutputJUnit); }
diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx index 65957af..9731a17 100644 --- a/Source/CTest/cmCTestTestHandler.cxx +++ b/Source/CTest/cmCTestTestHandler.cxx
@@ -2493,7 +2493,8 @@ cmCTestTestProperties test; test.Name = testname; test.Args = args; - test.Directory = cmSystemTools::GetLogicalWorkingDirectory(); + test.CTestDirectory = cmSystemTools::GetLogicalWorkingDirectory(); + test.Directory = test.CTestDirectory; cmCTestOptionalLog(this->CTest, DEBUG, "Set test directory: " << test.Directory << std::endl, this->Quiet);
diff --git a/Source/CTest/cmCTestTestHandler.h b/Source/CTest/cmCTestTestHandler.h index 4d4dbb8..c6238da 100644 --- a/Source/CTest/cmCTestTestHandler.h +++ b/Source/CTest/cmCTestTestHandler.h
@@ -56,6 +56,8 @@ std::string ResourceSpecFile; std::string JUnitXMLFileName; + std::string CoverageTool; + std::vector<std::string> TestPassthroughArguments; }; @@ -131,7 +133,10 @@ void AppendError(cm::string_view err); cm::optional<std::string> Error; std::string Name; + // working directory for test, overridden by WORKING_DIRECTORY property std::string Directory; + // Original directory of test creation + std::string CTestDirectory; std::vector<std::string> Args; std::vector<std::string> RequiredFiles; std::vector<std::string> Depends;
diff --git a/Source/LexerParser/cmDependsJavaParser.cxx b/Source/LexerParser/cmDependsJavaParser.cxx index e85bf98..578646f 100644 --- a/Source/LexerParser/cmDependsJavaParser.cxx +++ b/Source/LexerParser/cmDependsJavaParser.cxx
@@ -119,13 +119,16 @@ # pragma GCC diagnostic ignored "-Wconversion" # pragma GCC diagnostic ignored "-Wfree-nonheap-object" #endif +#if defined(__GNUC__) && __GNUC__ >= 16 +# pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif #if defined(__clang__) && defined(__has_warning) # if __has_warning("-Wunused-but-set-variable") # pragma clang diagnostic ignored "-Wunused-but-set-variable" # endif #endif -#line 129 "cmDependsJavaParser.cxx" +#line 132 "cmDependsJavaParser.cxx" # ifndef YY_CAST # ifdef __cplusplus @@ -813,42 +816,42 @@ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 184, 184, 193, 201, 209, 217, 225, 233, 242, - 250, 259, 267, 276, 281, 286, 291, 296, 301, 306, - 311, 317, 325, 334, 344, 353, 362, 370, 380, 386, - 393, 400, 406, 413, 422, 432, 442, 451, 459, 468, - 477, 483, 492, 498, 507, 513, 522, 534, 542, 551, - 563, 576, 584, 592, 601, 609, 618, 618, 618, 619, - 620, 620, 620, 620, 620, 620, 621, 624, 634, 643, - 652, 661, 671, 677, 686, 695, 704, 712, 721, 730, - 736, 745, 753, 761, 769, 778, 786, 795, 801, 809, - 818, 826, 835, 844, 853, 861, 870, 878, 886, 895, - 904, 914, 921, 931, 941, 948, 955, 958, 964, 974, - 984, 994, 1000, 1010, 1020, 1030, 1039, 1049, 1060, 1070, - 1077, 1087, 1096, 1106, 1115, 1125, 1131, 1141, 1150, 1160, - 1170, 1177, 1186, 1195, 1204, 1213, 1221, 1230, 1239, 1249, - 1259, 1268, 1278, 1288, 1295, 1304, 1314, 1323, 1333, 1342, - 1349, 1359, 1368, 1378, 1387, 1396, 1406, 1416, 1425, 1435, - 1444, 1453, 1462, 1471, 1480, 1490, 1499, 1508, 1517, 1526, - 1536, 1545, 1554, 1563, 1572, 1581, 1590, 1599, 1608, 1617, - 1626, 1635, 1645, 1655, 1666, 1676, 1686, 1695, 1704, 1713, - 1722, 1731, 1740, 1750, 1760, 1770, 1780, 1787, 1794, 1801, - 1811, 1818, 1828, 1838, 1847, 1857, 1866, 1876, 1883, 1890, - 1897, 1905, 1912, 1922, 1929, 1939, 1949, 1956, 1966, 1975, - 1985, 1995, 2004, 2014, 2023, 2033, 2044, 2051, 2058, 2069, - 2079, 2089, 2099, 2108, 2118, 2125, 2135, 2144, 2154, 2161, - 2171, 2180, 2190, 2199, 2205, 2214, 2223, 2232, 2241, 2251, - 2261, 2268, 2278, 2285, 2295, 2304, 2314, 2323, 2332, 2341, - 2351, 2358, 2368, 2377, 2387, 2397, 2403, 2410, 2420, 2430, - 2440, 2451, 2461, 2472, 2482, 2493, 2503, 2513, 2522, 2531, - 2540, 2549, 2559, 2569, 2579, 2588, 2597, 2606, 2615, 2625, - 2635, 2645, 2654, 2663, 2672, 2682, 2691, 2700, 2707, 2716, - 2725, 2734, 2744, 2753, 2762, 2772, 2781, 2790, 2799, 2809, - 2818, 2827, 2836, 2845, 2854, 2864, 2873, 2882, 2892, 2901, - 2911, 2920, 2930, 2939, 2949, 2958, 2968, 2977, 2987, 2996, - 3006, 3015, 3025, 3035, 3045, 3054, 3064, 3073, 3082, 3091, - 3100, 3109, 3118, 3127, 3136, 3145, 3154, 3163, 3173, 3183, - 3193, 3202 + 0, 187, 187, 196, 204, 212, 220, 228, 236, 245, + 253, 262, 270, 279, 284, 289, 294, 299, 304, 309, + 314, 320, 328, 337, 347, 356, 365, 373, 383, 389, + 396, 403, 409, 416, 425, 435, 445, 454, 462, 471, + 480, 486, 495, 501, 510, 516, 525, 537, 545, 554, + 566, 579, 587, 595, 604, 612, 621, 621, 621, 622, + 623, 623, 623, 623, 623, 623, 624, 627, 637, 646, + 655, 664, 674, 680, 689, 698, 707, 715, 724, 733, + 739, 748, 756, 764, 772, 781, 789, 798, 804, 812, + 821, 829, 838, 847, 856, 864, 873, 881, 889, 898, + 907, 917, 924, 934, 944, 951, 958, 961, 967, 977, + 987, 997, 1003, 1013, 1023, 1033, 1042, 1052, 1063, 1073, + 1080, 1090, 1099, 1109, 1118, 1128, 1134, 1144, 1153, 1163, + 1173, 1180, 1189, 1198, 1207, 1216, 1224, 1233, 1242, 1252, + 1262, 1271, 1281, 1291, 1298, 1307, 1317, 1326, 1336, 1345, + 1352, 1362, 1371, 1381, 1390, 1399, 1409, 1419, 1428, 1438, + 1447, 1456, 1465, 1474, 1483, 1493, 1502, 1511, 1520, 1529, + 1539, 1548, 1557, 1566, 1575, 1584, 1593, 1602, 1611, 1620, + 1629, 1638, 1648, 1658, 1669, 1679, 1689, 1698, 1707, 1716, + 1725, 1734, 1743, 1753, 1763, 1773, 1783, 1790, 1797, 1804, + 1814, 1821, 1831, 1841, 1850, 1860, 1869, 1879, 1886, 1893, + 1900, 1908, 1915, 1925, 1932, 1942, 1952, 1959, 1969, 1978, + 1988, 1998, 2007, 2017, 2026, 2036, 2047, 2054, 2061, 2072, + 2082, 2092, 2102, 2111, 2121, 2128, 2138, 2147, 2157, 2164, + 2174, 2183, 2193, 2202, 2208, 2217, 2226, 2235, 2244, 2254, + 2264, 2271, 2281, 2288, 2298, 2307, 2317, 2326, 2335, 2344, + 2354, 2361, 2371, 2380, 2390, 2400, 2406, 2413, 2423, 2433, + 2443, 2454, 2464, 2475, 2485, 2496, 2506, 2516, 2525, 2534, + 2543, 2552, 2562, 2572, 2582, 2591, 2600, 2609, 2618, 2628, + 2638, 2648, 2657, 2666, 2675, 2685, 2694, 2703, 2710, 2719, + 2728, 2737, 2747, 2756, 2765, 2775, 2784, 2793, 2802, 2812, + 2821, 2830, 2839, 2848, 2857, 2867, 2876, 2885, 2895, 2904, + 2914, 2923, 2933, 2942, 2952, 2961, 2971, 2980, 2990, 2999, + 3009, 3018, 3028, 3038, 3048, 3057, 3067, 3076, 3085, 3094, + 3103, 3112, 3121, 3130, 3139, 3148, 3157, 3166, 3176, 3186, + 3196, 3205 }; #endif @@ -2469,214 +2472,214 @@ switch (yyn) { case 2: /* Goal: CompilationUnit */ -#line 185 "cmDependsJavaParser.y" +#line 188 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2480 "cmDependsJavaParser.cxx" +#line 2483 "cmDependsJavaParser.cxx" break; case 3: /* Literal: IntegerLiteral */ -#line 194 "cmDependsJavaParser.y" +#line 197 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2491 "cmDependsJavaParser.cxx" +#line 2494 "cmDependsJavaParser.cxx" break; case 4: /* Literal: jp_FLOATINGPOINTLITERAL */ -#line 202 "cmDependsJavaParser.y" +#line 205 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2502 "cmDependsJavaParser.cxx" +#line 2505 "cmDependsJavaParser.cxx" break; case 5: /* Literal: jp_BOOLEANLITERAL */ -#line 210 "cmDependsJavaParser.y" +#line 213 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2513 "cmDependsJavaParser.cxx" +#line 2516 "cmDependsJavaParser.cxx" break; case 6: /* Literal: jp_CHARACTERLITERAL */ -#line 218 "cmDependsJavaParser.y" +#line 221 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2524 "cmDependsJavaParser.cxx" +#line 2527 "cmDependsJavaParser.cxx" break; case 7: /* Literal: jp_STRINGLITERAL */ -#line 226 "cmDependsJavaParser.y" +#line 229 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2535 "cmDependsJavaParser.cxx" +#line 2538 "cmDependsJavaParser.cxx" break; case 8: /* Literal: jp_NULLLITERAL */ -#line 234 "cmDependsJavaParser.y" +#line 237 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2546 "cmDependsJavaParser.cxx" +#line 2549 "cmDependsJavaParser.cxx" break; case 9: /* IntegerLiteral: jp_DECIMALINTEGERLITERAL */ -#line 243 "cmDependsJavaParser.y" +#line 246 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2557 "cmDependsJavaParser.cxx" +#line 2560 "cmDependsJavaParser.cxx" break; case 10: /* IntegerLiteral: jp_HEXINTEGERLITERAL */ -#line 251 "cmDependsJavaParser.y" +#line 254 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2568 "cmDependsJavaParser.cxx" +#line 2571 "cmDependsJavaParser.cxx" break; case 11: /* Type: PrimitiveType */ -#line 260 "cmDependsJavaParser.y" +#line 263 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2579 "cmDependsJavaParser.cxx" +#line 2582 "cmDependsJavaParser.cxx" break; case 12: /* Type: ReferenceType */ -#line 268 "cmDependsJavaParser.y" +#line 271 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2590 "cmDependsJavaParser.cxx" +#line 2593 "cmDependsJavaParser.cxx" break; case 13: /* PrimitiveType: jp_BYTE_TYPE */ -#line 277 "cmDependsJavaParser.y" +#line 280 "cmDependsJavaParser.y" { jpElementStart(0); } -#line 2598 "cmDependsJavaParser.cxx" +#line 2601 "cmDependsJavaParser.cxx" break; case 14: /* PrimitiveType: jp_SHORT_TYPE */ -#line 282 "cmDependsJavaParser.y" +#line 285 "cmDependsJavaParser.y" { jpElementStart(0); } -#line 2606 "cmDependsJavaParser.cxx" +#line 2609 "cmDependsJavaParser.cxx" break; case 15: /* PrimitiveType: jp_INT_TYPE */ -#line 287 "cmDependsJavaParser.y" +#line 290 "cmDependsJavaParser.y" { jpElementStart(0); } -#line 2614 "cmDependsJavaParser.cxx" +#line 2617 "cmDependsJavaParser.cxx" break; case 16: /* PrimitiveType: jp_LONG_TYPE */ -#line 292 "cmDependsJavaParser.y" +#line 295 "cmDependsJavaParser.y" { jpElementStart(0); } -#line 2622 "cmDependsJavaParser.cxx" +#line 2625 "cmDependsJavaParser.cxx" break; case 17: /* PrimitiveType: jp_CHAR_TYPE */ -#line 297 "cmDependsJavaParser.y" +#line 300 "cmDependsJavaParser.y" { jpElementStart(0); } -#line 2630 "cmDependsJavaParser.cxx" +#line 2633 "cmDependsJavaParser.cxx" break; case 18: /* PrimitiveType: jp_FLOAT_TYPE */ -#line 302 "cmDependsJavaParser.y" +#line 305 "cmDependsJavaParser.y" { jpElementStart(0); } -#line 2638 "cmDependsJavaParser.cxx" +#line 2641 "cmDependsJavaParser.cxx" break; case 19: /* PrimitiveType: jp_DOUBLE_TYPE */ -#line 307 "cmDependsJavaParser.y" +#line 310 "cmDependsJavaParser.y" { jpElementStart(0); } -#line 2646 "cmDependsJavaParser.cxx" +#line 2649 "cmDependsJavaParser.cxx" break; case 20: /* PrimitiveType: jp_BOOLEAN_TYPE */ -#line 312 "cmDependsJavaParser.y" +#line 315 "cmDependsJavaParser.y" { jpElementStart(0); } -#line 2654 "cmDependsJavaParser.cxx" +#line 2657 "cmDependsJavaParser.cxx" break; case 21: /* ReferenceType: ClassOrInterfaceType */ -#line 318 "cmDependsJavaParser.y" +#line 321 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2665 "cmDependsJavaParser.cxx" +#line 2668 "cmDependsJavaParser.cxx" break; case 22: /* ReferenceType: ArrayType */ -#line 326 "cmDependsJavaParser.y" +#line 329 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2676 "cmDependsJavaParser.cxx" +#line 2679 "cmDependsJavaParser.cxx" break; case 23: /* ClassOrInterfaceType: Name */ -#line 335 "cmDependsJavaParser.y" +#line 338 "cmDependsJavaParser.y" { jpElementStart(1); jpStoreClass((yyvsp[0].str)); @@ -2684,44 +2687,44 @@ (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2688 "cmDependsJavaParser.cxx" +#line 2691 "cmDependsJavaParser.cxx" break; case 24: /* ClassType: ClassOrInterfaceType */ -#line 345 "cmDependsJavaParser.y" +#line 348 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2699 "cmDependsJavaParser.cxx" +#line 2702 "cmDependsJavaParser.cxx" break; case 25: /* InterfaceType: ClassOrInterfaceType */ -#line 354 "cmDependsJavaParser.y" +#line 357 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2710 "cmDependsJavaParser.cxx" +#line 2713 "cmDependsJavaParser.cxx" break; case 26: /* ArrayType: PrimitiveType Dims */ -#line 363 "cmDependsJavaParser.y" +#line 366 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2721 "cmDependsJavaParser.cxx" +#line 2724 "cmDependsJavaParser.cxx" break; case 27: /* ArrayType: Name Dims */ -#line 371 "cmDependsJavaParser.y" +#line 374 "cmDependsJavaParser.y" { jpElementStart(2); jpStoreClass((yyvsp[-1].str)); @@ -2729,56 +2732,56 @@ (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2733 "cmDependsJavaParser.cxx" +#line 2736 "cmDependsJavaParser.cxx" break; case 28: /* Name: SimpleName */ -#line 381 "cmDependsJavaParser.y" +#line 384 "cmDependsJavaParser.y" { jpElementStart(1); (yyval.str) = (yyvsp[0].str); } -#line 2742 "cmDependsJavaParser.cxx" +#line 2745 "cmDependsJavaParser.cxx" break; case 29: /* Name: QualifiedName */ -#line 387 "cmDependsJavaParser.y" +#line 390 "cmDependsJavaParser.y" { jpElementStart(1); (yyval.str) = (yyvsp[0].str); } -#line 2751 "cmDependsJavaParser.cxx" +#line 2754 "cmDependsJavaParser.cxx" break; case 30: /* SimpleName: Identifier */ -#line 394 "cmDependsJavaParser.y" +#line 397 "cmDependsJavaParser.y" { jpElementStart(1); (yyval.str) = (yyvsp[0].str); } -#line 2760 "cmDependsJavaParser.cxx" +#line 2763 "cmDependsJavaParser.cxx" break; case 31: /* Identifier: jp_NAME */ -#line 401 "cmDependsJavaParser.y" +#line 404 "cmDependsJavaParser.y" { jpElementStart(1); (yyval.str) = (yyvsp[0].str); } -#line 2769 "cmDependsJavaParser.cxx" +#line 2772 "cmDependsJavaParser.cxx" break; case 32: /* Identifier: jp_DOLLAR jp_NAME */ -#line 407 "cmDependsJavaParser.y" +#line 410 "cmDependsJavaParser.y" { jpElementStart(2); (yyval.str) = (yyvsp[0].str); } -#line 2778 "cmDependsJavaParser.cxx" +#line 2781 "cmDependsJavaParser.cxx" break; case 33: /* QualifiedName: Name jp_DOT Identifier */ -#line 414 "cmDependsJavaParser.y" +#line 417 "cmDependsJavaParser.y" { jpElementStart(3); yyGetParser->AddClassFound((yyvsp[-2].str)); @@ -2786,11 +2789,11 @@ yyGetParser->DeallocateParserType(&((yyvsp[-2].str))); (yyval.str) = const_cast<char*>(yyGetParser->GetCurrentCombine()); } -#line 2790 "cmDependsJavaParser.cxx" +#line 2793 "cmDependsJavaParser.cxx" break; case 34: /* QualifiedName: Name jp_DOT jp_CLASS */ -#line 423 "cmDependsJavaParser.y" +#line 426 "cmDependsJavaParser.y" { jpElementStart(3); jpStoreClass((yyvsp[-2].str)); @@ -2799,11 +2802,11 @@ (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2803 "cmDependsJavaParser.cxx" +#line 2806 "cmDependsJavaParser.cxx" break; case 35: /* QualifiedName: Name jp_DOT jp_THIS */ -#line 433 "cmDependsJavaParser.y" +#line 436 "cmDependsJavaParser.y" { jpElementStart(3); jpStoreClass((yyvsp[-2].str)); @@ -2812,118 +2815,118 @@ (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2816 "cmDependsJavaParser.cxx" +#line 2819 "cmDependsJavaParser.cxx" break; case 36: /* QualifiedName: SimpleType jp_DOT jp_CLASS */ -#line 443 "cmDependsJavaParser.y" +#line 446 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2827 "cmDependsJavaParser.cxx" +#line 2830 "cmDependsJavaParser.cxx" break; case 37: /* SimpleType: PrimitiveType */ -#line 452 "cmDependsJavaParser.y" +#line 455 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2838 "cmDependsJavaParser.cxx" +#line 2841 "cmDependsJavaParser.cxx" break; case 38: /* SimpleType: jp_VOID */ -#line 460 "cmDependsJavaParser.y" +#line 463 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2849 "cmDependsJavaParser.cxx" +#line 2852 "cmDependsJavaParser.cxx" break; case 39: /* CompilationUnit: PackageDeclarationopt ImportDeclarations TypeDeclarations */ -#line 469 "cmDependsJavaParser.y" +#line 472 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2860 "cmDependsJavaParser.cxx" +#line 2863 "cmDependsJavaParser.cxx" break; case 40: /* PackageDeclarationopt: %empty */ -#line 477 "cmDependsJavaParser.y" +#line 480 "cmDependsJavaParser.y" { jpElementStart(0); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2870 "cmDependsJavaParser.cxx" +#line 2873 "cmDependsJavaParser.cxx" break; case 41: /* PackageDeclarationopt: PackageDeclaration */ -#line 484 "cmDependsJavaParser.y" +#line 487 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2881 "cmDependsJavaParser.cxx" +#line 2884 "cmDependsJavaParser.cxx" break; case 42: /* ImportDeclarations: %empty */ -#line 492 "cmDependsJavaParser.y" +#line 495 "cmDependsJavaParser.y" { jpElementStart(0); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2891 "cmDependsJavaParser.cxx" +#line 2894 "cmDependsJavaParser.cxx" break; case 43: /* ImportDeclarations: ImportDeclarations ImportDeclaration */ -#line 499 "cmDependsJavaParser.y" +#line 502 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2902 "cmDependsJavaParser.cxx" +#line 2905 "cmDependsJavaParser.cxx" break; case 44: /* TypeDeclarations: %empty */ -#line 507 "cmDependsJavaParser.y" +#line 510 "cmDependsJavaParser.y" { jpElementStart(0); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2912 "cmDependsJavaParser.cxx" +#line 2915 "cmDependsJavaParser.cxx" break; case 45: /* TypeDeclarations: TypeDeclarations TypeDeclaration */ -#line 514 "cmDependsJavaParser.y" +#line 517 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2923 "cmDependsJavaParser.cxx" +#line 2926 "cmDependsJavaParser.cxx" break; case 46: /* PackageDeclaration: jp_PACKAGE Name jp_SEMICOL */ -#line 523 "cmDependsJavaParser.y" +#line 526 "cmDependsJavaParser.y" { jpElementStart(3); yyGetParser->SetCurrentPackage((yyvsp[-1].str)); @@ -2933,33 +2936,33 @@ (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2937 "cmDependsJavaParser.cxx" +#line 2940 "cmDependsJavaParser.cxx" break; case 47: /* ImportDeclaration: SingleTypeImportDeclaration */ -#line 535 "cmDependsJavaParser.y" +#line 538 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2948 "cmDependsJavaParser.cxx" +#line 2951 "cmDependsJavaParser.cxx" break; case 48: /* ImportDeclaration: TypeImportOnDemandDeclaration */ -#line 543 "cmDependsJavaParser.y" +#line 546 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2959 "cmDependsJavaParser.cxx" +#line 2962 "cmDependsJavaParser.cxx" break; case 49: /* SingleTypeImportDeclaration: jp_IMPORT Name jp_SEMICOL */ -#line 552 "cmDependsJavaParser.y" +#line 555 "cmDependsJavaParser.y" { jpElementStart(3); yyGetParser->AddPackagesImport((yyvsp[-1].str)); @@ -2969,11 +2972,11 @@ (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2973 "cmDependsJavaParser.cxx" +#line 2976 "cmDependsJavaParser.cxx" break; case 50: /* TypeImportOnDemandDeclaration: jp_IMPORT Name jp_DOT jp_TIMES jp_SEMICOL */ -#line 564 "cmDependsJavaParser.y" +#line 567 "cmDependsJavaParser.y" { jpElementStart(5); std::string str = (yyvsp[-3].str); @@ -2984,77 +2987,77 @@ (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2988 "cmDependsJavaParser.cxx" +#line 2991 "cmDependsJavaParser.cxx" break; case 51: /* TypeDeclaration: ClassDeclaration */ -#line 577 "cmDependsJavaParser.y" +#line 580 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 2999 "cmDependsJavaParser.cxx" +#line 3002 "cmDependsJavaParser.cxx" break; case 52: /* TypeDeclaration: InterfaceDeclaration */ -#line 585 "cmDependsJavaParser.y" +#line 588 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3010 "cmDependsJavaParser.cxx" +#line 3013 "cmDependsJavaParser.cxx" break; case 53: /* TypeDeclaration: jp_SEMICOL */ -#line 593 "cmDependsJavaParser.y" +#line 596 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3021 "cmDependsJavaParser.cxx" +#line 3024 "cmDependsJavaParser.cxx" break; case 54: /* Modifiers: Modifier */ -#line 602 "cmDependsJavaParser.y" +#line 605 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3032 "cmDependsJavaParser.cxx" +#line 3035 "cmDependsJavaParser.cxx" break; case 55: /* Modifiers: Modifiers Modifier */ -#line 610 "cmDependsJavaParser.y" +#line 613 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3043 "cmDependsJavaParser.cxx" +#line 3046 "cmDependsJavaParser.cxx" break; case 67: /* ClassHeader: Modifiersopt jp_CLASS Identifier */ -#line 625 "cmDependsJavaParser.y" +#line 628 "cmDependsJavaParser.y" { yyGetParser->StartClass((yyvsp[0].str)); jpElementStart(3); yyGetParser->DeallocateParserType(&((yyvsp[0].str))); jpCheckEmpty(3); } -#line 3054 "cmDependsJavaParser.cxx" +#line 3057 "cmDependsJavaParser.cxx" break; case 68: /* ClassDeclaration: ClassHeader ClassBody */ -#line 635 "cmDependsJavaParser.y" +#line 638 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); @@ -3062,11 +3065,11 @@ yyGetParser->SetCurrentCombine(""); yyGetParser->EndClass(); } -#line 3066 "cmDependsJavaParser.cxx" +#line 3069 "cmDependsJavaParser.cxx" break; case 69: /* ClassDeclaration: ClassHeader Interfaces ClassBody */ -#line 644 "cmDependsJavaParser.y" +#line 647 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(2); @@ -3074,11 +3077,11 @@ yyGetParser->SetCurrentCombine(""); yyGetParser->EndClass(); } -#line 3078 "cmDependsJavaParser.cxx" +#line 3081 "cmDependsJavaParser.cxx" break; case 70: /* ClassDeclaration: ClassHeader Super ClassBody */ -#line 653 "cmDependsJavaParser.y" +#line 656 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -3086,11 +3089,11 @@ yyGetParser->SetCurrentCombine(""); yyGetParser->EndClass(); } -#line 3090 "cmDependsJavaParser.cxx" +#line 3093 "cmDependsJavaParser.cxx" break; case 71: /* ClassDeclaration: ClassHeader Super Interfaces ClassBody */ -#line 662 "cmDependsJavaParser.y" +#line 665 "cmDependsJavaParser.y" { jpElementStart(4); jpCheckEmpty(4); @@ -3098,226 +3101,226 @@ yyGetParser->SetCurrentCombine(""); yyGetParser->EndClass(); } -#line 3102 "cmDependsJavaParser.cxx" +#line 3105 "cmDependsJavaParser.cxx" break; case 72: /* Modifiersopt: %empty */ -#line 671 "cmDependsJavaParser.y" +#line 674 "cmDependsJavaParser.y" { jpElementStart(0); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3112 "cmDependsJavaParser.cxx" +#line 3115 "cmDependsJavaParser.cxx" break; case 73: /* Modifiersopt: Modifiers */ -#line 678 "cmDependsJavaParser.y" +#line 681 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3123 "cmDependsJavaParser.cxx" +#line 3126 "cmDependsJavaParser.cxx" break; case 74: /* Super: jp_EXTENDS ClassType */ -#line 687 "cmDependsJavaParser.y" +#line 690 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3134 "cmDependsJavaParser.cxx" +#line 3137 "cmDependsJavaParser.cxx" break; case 75: /* Interfaces: jp_IMPLEMENTS InterfaceTypeList */ -#line 696 "cmDependsJavaParser.y" +#line 699 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3145 "cmDependsJavaParser.cxx" +#line 3148 "cmDependsJavaParser.cxx" break; case 76: /* InterfaceTypeList: InterfaceType */ -#line 705 "cmDependsJavaParser.y" +#line 708 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3156 "cmDependsJavaParser.cxx" +#line 3159 "cmDependsJavaParser.cxx" break; case 77: /* InterfaceTypeList: InterfaceTypeList jp_COMMA InterfaceType */ -#line 713 "cmDependsJavaParser.y" +#line 716 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3167 "cmDependsJavaParser.cxx" +#line 3170 "cmDependsJavaParser.cxx" break; case 78: /* ClassBody: jp_CURLYSTART ClassBodyDeclarations jp_CURLYEND */ -#line 722 "cmDependsJavaParser.y" +#line 725 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3178 "cmDependsJavaParser.cxx" +#line 3181 "cmDependsJavaParser.cxx" break; case 79: /* ClassBodyDeclarations: %empty */ -#line 730 "cmDependsJavaParser.y" +#line 733 "cmDependsJavaParser.y" { jpElementStart(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3188 "cmDependsJavaParser.cxx" +#line 3191 "cmDependsJavaParser.cxx" break; case 80: /* ClassBodyDeclarations: ClassBodyDeclarations ClassBodyDeclaration */ -#line 737 "cmDependsJavaParser.y" +#line 740 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3199 "cmDependsJavaParser.cxx" +#line 3202 "cmDependsJavaParser.cxx" break; case 81: /* ClassBodyDeclaration: ClassMemberDeclaration */ -#line 746 "cmDependsJavaParser.y" +#line 749 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3210 "cmDependsJavaParser.cxx" +#line 3213 "cmDependsJavaParser.cxx" break; case 82: /* ClassBodyDeclaration: StaticInitializer */ -#line 754 "cmDependsJavaParser.y" +#line 757 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3221 "cmDependsJavaParser.cxx" +#line 3224 "cmDependsJavaParser.cxx" break; case 83: /* ClassBodyDeclaration: ConstructorDeclaration */ -#line 762 "cmDependsJavaParser.y" +#line 765 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3232 "cmDependsJavaParser.cxx" +#line 3235 "cmDependsJavaParser.cxx" break; case 84: /* ClassBodyDeclaration: TypeDeclaration */ -#line 770 "cmDependsJavaParser.y" +#line 773 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3243 "cmDependsJavaParser.cxx" +#line 3246 "cmDependsJavaParser.cxx" break; case 85: /* ClassMemberDeclaration: FieldDeclaration */ -#line 779 "cmDependsJavaParser.y" +#line 782 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3254 "cmDependsJavaParser.cxx" +#line 3257 "cmDependsJavaParser.cxx" break; case 86: /* ClassMemberDeclaration: MethodDeclaration */ -#line 787 "cmDependsJavaParser.y" +#line 790 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3265 "cmDependsJavaParser.cxx" +#line 3268 "cmDependsJavaParser.cxx" break; case 87: /* FieldDeclaration: Modifiersopt Type VariableDeclarators jp_SEMICOL */ -#line 796 "cmDependsJavaParser.y" +#line 799 "cmDependsJavaParser.y" { jpElementStart(4); } -#line 3273 "cmDependsJavaParser.cxx" +#line 3276 "cmDependsJavaParser.cxx" break; case 88: /* VariableDeclarators: VariableDeclarator */ -#line 802 "cmDependsJavaParser.y" +#line 805 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3284 "cmDependsJavaParser.cxx" +#line 3287 "cmDependsJavaParser.cxx" break; case 89: /* VariableDeclarators: VariableDeclarators jp_COMMA VariableDeclarator */ -#line 810 "cmDependsJavaParser.y" +#line 813 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3295 "cmDependsJavaParser.cxx" +#line 3298 "cmDependsJavaParser.cxx" break; case 90: /* VariableDeclarator: VariableDeclaratorId */ -#line 819 "cmDependsJavaParser.y" +#line 822 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3306 "cmDependsJavaParser.cxx" +#line 3309 "cmDependsJavaParser.cxx" break; case 91: /* VariableDeclarator: VariableDeclaratorId jp_EQUALS VariableInitializer */ -#line 827 "cmDependsJavaParser.y" +#line 830 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3317 "cmDependsJavaParser.cxx" +#line 3320 "cmDependsJavaParser.cxx" break; case 92: /* VariableDeclaratorId: Identifier */ -#line 836 "cmDependsJavaParser.y" +#line 839 "cmDependsJavaParser.y" { jpElementStart(1); yyGetParser->DeallocateParserType(&((yyvsp[0].str))); @@ -3325,77 +3328,77 @@ (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3329 "cmDependsJavaParser.cxx" +#line 3332 "cmDependsJavaParser.cxx" break; case 93: /* VariableDeclaratorId: VariableDeclaratorId jp_BRACKETSTART jp_BRACKETEND */ -#line 845 "cmDependsJavaParser.y" +#line 848 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3340 "cmDependsJavaParser.cxx" +#line 3343 "cmDependsJavaParser.cxx" break; case 94: /* VariableInitializer: Expression */ -#line 854 "cmDependsJavaParser.y" +#line 857 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3351 "cmDependsJavaParser.cxx" +#line 3354 "cmDependsJavaParser.cxx" break; case 95: /* VariableInitializer: ArrayInitializer */ -#line 862 "cmDependsJavaParser.y" +#line 865 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3362 "cmDependsJavaParser.cxx" +#line 3365 "cmDependsJavaParser.cxx" break; case 96: /* MethodDeclaration: MethodHeader jp_SEMICOL */ -#line 871 "cmDependsJavaParser.y" +#line 874 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3373 "cmDependsJavaParser.cxx" +#line 3376 "cmDependsJavaParser.cxx" break; case 97: /* MethodDeclaration: MethodHeader MethodBody */ -#line 879 "cmDependsJavaParser.y" +#line 882 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3384 "cmDependsJavaParser.cxx" +#line 3387 "cmDependsJavaParser.cxx" break; case 98: /* MethodDeclaration: MethodHeader MethodBody jp_SEMICOL */ -#line 887 "cmDependsJavaParser.y" +#line 890 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3395 "cmDependsJavaParser.cxx" +#line 3398 "cmDependsJavaParser.cxx" break; case 99: /* MethodHeader: Modifiersopt Type MethodDeclarator Throwsopt */ -#line 896 "cmDependsJavaParser.y" +#line 899 "cmDependsJavaParser.y" { jpElementStart(4); jpCheckEmpty(4); @@ -3403,11 +3406,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 3407 "cmDependsJavaParser.cxx" +#line 3410 "cmDependsJavaParser.cxx" break; case 100: /* MethodHeader: Modifiersopt jp_VOID MethodDeclarator Throwsopt */ -#line 905 "cmDependsJavaParser.y" +#line 908 "cmDependsJavaParser.y" { jpElementStart(4); jpCheckEmpty(4); @@ -3415,22 +3418,22 @@ yyGetParser->SetCurrentCombine(""); } -#line 3419 "cmDependsJavaParser.cxx" +#line 3422 "cmDependsJavaParser.cxx" break; case 101: /* Throwsopt: %empty */ -#line 914 "cmDependsJavaParser.y" +#line 917 "cmDependsJavaParser.y" { jpElementStart(0); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3430 "cmDependsJavaParser.cxx" +#line 3433 "cmDependsJavaParser.cxx" break; case 102: /* Throwsopt: Throws */ -#line 922 "cmDependsJavaParser.y" +#line 925 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -3438,11 +3441,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 3442 "cmDependsJavaParser.cxx" +#line 3445 "cmDependsJavaParser.cxx" break; case 103: /* MethodDeclarator: Identifier jp_PARESTART FormalParameterListopt jp_PAREEND */ -#line 932 "cmDependsJavaParser.y" +#line 935 "cmDependsJavaParser.y" { jpElementStart(4); yyGetParser->DeallocateParserType(&((yyvsp[-3].str))); @@ -3451,40 +3454,40 @@ yyGetParser->SetCurrentCombine(""); } -#line 3455 "cmDependsJavaParser.cxx" +#line 3458 "cmDependsJavaParser.cxx" break; case 104: /* MethodDeclarator: MethodDeclarator jp_BRACKETSTART jp_BRACKETEND */ -#line 942 "cmDependsJavaParser.y" +#line 945 "cmDependsJavaParser.y" { jpElementStart(3); } -#line 3464 "cmDependsJavaParser.cxx" +#line 3467 "cmDependsJavaParser.cxx" break; case 105: /* FormalParameterListopt: %empty */ -#line 948 "cmDependsJavaParser.y" +#line 951 "cmDependsJavaParser.y" { jpElementStart(0); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3475 "cmDependsJavaParser.cxx" +#line 3478 "cmDependsJavaParser.cxx" break; case 107: /* FormalParameterList: FormalParameter */ -#line 959 "cmDependsJavaParser.y" +#line 962 "cmDependsJavaParser.y" { jpElementStart(1); } -#line 3484 "cmDependsJavaParser.cxx" +#line 3487 "cmDependsJavaParser.cxx" break; case 108: /* FormalParameterList: FormalParameterList jp_COMMA FormalParameter */ -#line 965 "cmDependsJavaParser.y" +#line 968 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -3492,11 +3495,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 3496 "cmDependsJavaParser.cxx" +#line 3499 "cmDependsJavaParser.cxx" break; case 109: /* FormalParameter: Modifiersopt Type VariableDeclaratorId */ -#line 975 "cmDependsJavaParser.y" +#line 978 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -3504,11 +3507,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 3508 "cmDependsJavaParser.cxx" +#line 3511 "cmDependsJavaParser.cxx" break; case 110: /* Throws: jp_THROWS ClassTypeList */ -#line 985 "cmDependsJavaParser.y" +#line 988 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); @@ -3516,20 +3519,20 @@ yyGetParser->SetCurrentCombine(""); } -#line 3520 "cmDependsJavaParser.cxx" +#line 3523 "cmDependsJavaParser.cxx" break; case 111: /* ClassTypeList: ClassType */ -#line 995 "cmDependsJavaParser.y" +#line 998 "cmDependsJavaParser.y" { jpElementStart(1); } -#line 3529 "cmDependsJavaParser.cxx" +#line 3532 "cmDependsJavaParser.cxx" break; case 112: /* ClassTypeList: ClassTypeList jp_COMMA ClassType */ -#line 1001 "cmDependsJavaParser.y" +#line 1004 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -3537,11 +3540,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 3541 "cmDependsJavaParser.cxx" +#line 3544 "cmDependsJavaParser.cxx" break; case 113: /* MethodBody: Block */ -#line 1011 "cmDependsJavaParser.y" +#line 1014 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -3549,11 +3552,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 3553 "cmDependsJavaParser.cxx" +#line 3556 "cmDependsJavaParser.cxx" break; case 114: /* StaticInitializer: jp_STATIC Block */ -#line 1021 "cmDependsJavaParser.y" +#line 1024 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); @@ -3561,11 +3564,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 3565 "cmDependsJavaParser.cxx" +#line 3568 "cmDependsJavaParser.cxx" break; case 115: /* ConstructorDeclaration: Modifiersopt ConstructorDeclarator Throwsopt ConstructorBody */ -#line 1031 "cmDependsJavaParser.y" +#line 1034 "cmDependsJavaParser.y" { jpElementStart(4); jpCheckEmpty(4); @@ -3573,11 +3576,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 3577 "cmDependsJavaParser.cxx" +#line 3580 "cmDependsJavaParser.cxx" break; case 116: /* ConstructorDeclaration: Modifiersopt ConstructorDeclarator Throwsopt ConstructorBody jp_SEMICOL */ -#line 1040 "cmDependsJavaParser.y" +#line 1043 "cmDependsJavaParser.y" { jpElementStart(5); jpCheckEmpty(5); @@ -3585,11 +3588,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 3589 "cmDependsJavaParser.cxx" +#line 3592 "cmDependsJavaParser.cxx" break; case 117: /* ConstructorDeclarator: SimpleName jp_PARESTART FormalParameterListopt jp_PAREEND */ -#line 1050 "cmDependsJavaParser.y" +#line 1053 "cmDependsJavaParser.y" { jpElementStart(4); yyGetParser->DeallocateParserType(&((yyvsp[-3].str))); @@ -3598,11 +3601,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 3602 "cmDependsJavaParser.cxx" +#line 3605 "cmDependsJavaParser.cxx" break; case 118: /* ConstructorBody: jp_CURLYSTART ExplicitConstructorInvocationopt BlockStatementsopt jp_CURLYEND */ -#line 1061 "cmDependsJavaParser.y" +#line 1064 "cmDependsJavaParser.y" { jpElementStart(4); jpCheckEmpty(4); @@ -3610,22 +3613,22 @@ yyGetParser->SetCurrentCombine(""); } -#line 3614 "cmDependsJavaParser.cxx" +#line 3617 "cmDependsJavaParser.cxx" break; case 119: /* ExplicitConstructorInvocationopt: %empty */ -#line 1070 "cmDependsJavaParser.y" +#line 1073 "cmDependsJavaParser.y" { jpElementStart(0); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3625 "cmDependsJavaParser.cxx" +#line 3628 "cmDependsJavaParser.cxx" break; case 120: /* ExplicitConstructorInvocationopt: ExplicitConstructorInvocationopt ExplicitConstructorInvocation */ -#line 1078 "cmDependsJavaParser.y" +#line 1081 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); @@ -3633,11 +3636,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 3637 "cmDependsJavaParser.cxx" +#line 3640 "cmDependsJavaParser.cxx" break; case 121: /* ExplicitConstructorInvocation: jp_THIS jp_PARESTART ArgumentListopt jp_PAREEND jp_SEMICOL */ -#line 1088 "cmDependsJavaParser.y" +#line 1091 "cmDependsJavaParser.y" { jpElementStart(5); jpCheckEmpty(5); @@ -3645,11 +3648,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 3649 "cmDependsJavaParser.cxx" +#line 3652 "cmDependsJavaParser.cxx" break; case 122: /* ExplicitConstructorInvocation: jp_SUPER jp_PARESTART ArgumentListopt jp_PAREEND jp_SEMICOL */ -#line 1097 "cmDependsJavaParser.y" +#line 1100 "cmDependsJavaParser.y" { jpElementStart(5); jpCheckEmpty(5); @@ -3657,22 +3660,22 @@ yyGetParser->SetCurrentCombine(""); } -#line 3661 "cmDependsJavaParser.cxx" +#line 3664 "cmDependsJavaParser.cxx" break; case 123: /* InterfaceHeader: Modifiersopt jp_INTERFACE Identifier */ -#line 1107 "cmDependsJavaParser.y" +#line 1110 "cmDependsJavaParser.y" { yyGetParser->StartClass((yyvsp[0].str)); jpElementStart(3); yyGetParser->DeallocateParserType(&((yyvsp[0].str))); jpCheckEmpty(3); } -#line 3672 "cmDependsJavaParser.cxx" +#line 3675 "cmDependsJavaParser.cxx" break; case 124: /* InterfaceDeclaration: InterfaceHeader ExtendsInterfacesopt InterfaceBody */ -#line 1116 "cmDependsJavaParser.y" +#line 1119 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); @@ -3680,21 +3683,21 @@ yyGetParser->SetCurrentCombine(""); yyGetParser->EndClass(); } -#line 3684 "cmDependsJavaParser.cxx" +#line 3687 "cmDependsJavaParser.cxx" break; case 125: /* ExtendsInterfacesopt: %empty */ -#line 1125 "cmDependsJavaParser.y" +#line 1128 "cmDependsJavaParser.y" { jpElementStart(0); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3694 "cmDependsJavaParser.cxx" +#line 3697 "cmDependsJavaParser.cxx" break; case 126: /* ExtendsInterfacesopt: ExtendsInterfaces */ -#line 1132 "cmDependsJavaParser.y" +#line 1135 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -3702,11 +3705,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 3706 "cmDependsJavaParser.cxx" +#line 3709 "cmDependsJavaParser.cxx" break; case 127: /* ExtendsInterfaces: jp_EXTENDS InterfaceType */ -#line 1142 "cmDependsJavaParser.y" +#line 1145 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); @@ -3714,11 +3717,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 3718 "cmDependsJavaParser.cxx" +#line 3721 "cmDependsJavaParser.cxx" break; case 128: /* ExtendsInterfaces: ExtendsInterfaces jp_COMMA InterfaceType */ -#line 1151 "cmDependsJavaParser.y" +#line 1154 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -3726,11 +3729,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 3730 "cmDependsJavaParser.cxx" +#line 3733 "cmDependsJavaParser.cxx" break; case 129: /* InterfaceBody: jp_CURLYSTART InterfaceMemberDeclarations jp_CURLYEND */ -#line 1161 "cmDependsJavaParser.y" +#line 1164 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -3738,33 +3741,33 @@ yyGetParser->SetCurrentCombine(""); } -#line 3742 "cmDependsJavaParser.cxx" +#line 3745 "cmDependsJavaParser.cxx" break; case 130: /* InterfaceMemberDeclarations: %empty */ -#line 1170 "cmDependsJavaParser.y" +#line 1173 "cmDependsJavaParser.y" { jpElementStart(0); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3753 "cmDependsJavaParser.cxx" +#line 3756 "cmDependsJavaParser.cxx" break; case 131: /* InterfaceMemberDeclarations: InterfaceMemberDeclarations InterfaceMemberDeclaration */ -#line 1178 "cmDependsJavaParser.y" +#line 1181 "cmDependsJavaParser.y" { jpElementStart(2); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3764 "cmDependsJavaParser.cxx" +#line 3767 "cmDependsJavaParser.cxx" break; case 132: /* InterfaceMemberDeclaration: ConstantDeclaration */ -#line 1187 "cmDependsJavaParser.y" +#line 1190 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -3772,11 +3775,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 3776 "cmDependsJavaParser.cxx" +#line 3779 "cmDependsJavaParser.cxx" break; case 133: /* InterfaceMemberDeclaration: AbstractMethodDeclaration */ -#line 1196 "cmDependsJavaParser.y" +#line 1199 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -3784,11 +3787,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 3788 "cmDependsJavaParser.cxx" +#line 3791 "cmDependsJavaParser.cxx" break; case 134: /* InterfaceMemberDeclaration: ClassDeclaration */ -#line 1205 "cmDependsJavaParser.y" +#line 1208 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -3796,22 +3799,22 @@ yyGetParser->SetCurrentCombine(""); } -#line 3800 "cmDependsJavaParser.cxx" +#line 3803 "cmDependsJavaParser.cxx" break; case 135: /* InterfaceMemberDeclaration: ClassDeclaration jp_SEMICOL */ -#line 1214 "cmDependsJavaParser.y" +#line 1217 "cmDependsJavaParser.y" { jpElementStart(2); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3811 "cmDependsJavaParser.cxx" +#line 3814 "cmDependsJavaParser.cxx" break; case 136: /* InterfaceMemberDeclaration: InterfaceDeclaration */ -#line 1222 "cmDependsJavaParser.y" +#line 1225 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -3819,22 +3822,22 @@ yyGetParser->SetCurrentCombine(""); } -#line 3823 "cmDependsJavaParser.cxx" +#line 3826 "cmDependsJavaParser.cxx" break; case 137: /* InterfaceMemberDeclaration: InterfaceDeclaration jp_SEMICOL */ -#line 1231 "cmDependsJavaParser.y" +#line 1234 "cmDependsJavaParser.y" { jpElementStart(2); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3834 "cmDependsJavaParser.cxx" +#line 3837 "cmDependsJavaParser.cxx" break; case 138: /* ConstantDeclaration: FieldDeclaration */ -#line 1240 "cmDependsJavaParser.y" +#line 1243 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -3842,11 +3845,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 3846 "cmDependsJavaParser.cxx" +#line 3849 "cmDependsJavaParser.cxx" break; case 139: /* AbstractMethodDeclaration: MethodHeader Semicols */ -#line 1250 "cmDependsJavaParser.y" +#line 1253 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); @@ -3854,11 +3857,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 3858 "cmDependsJavaParser.cxx" +#line 3861 "cmDependsJavaParser.cxx" break; case 140: /* Semicols: jp_SEMICOL */ -#line 1260 "cmDependsJavaParser.y" +#line 1263 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -3866,11 +3869,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 3870 "cmDependsJavaParser.cxx" +#line 3873 "cmDependsJavaParser.cxx" break; case 141: /* Semicols: Semicols jp_SEMICOL */ -#line 1269 "cmDependsJavaParser.y" +#line 1272 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); @@ -3878,11 +3881,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 3882 "cmDependsJavaParser.cxx" +#line 3885 "cmDependsJavaParser.cxx" break; case 142: /* ArrayInitializer: jp_CURLYSTART VariableInitializersOptional jp_CURLYEND */ -#line 1279 "cmDependsJavaParser.y" +#line 1282 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -3890,22 +3893,22 @@ yyGetParser->SetCurrentCombine(""); } -#line 3894 "cmDependsJavaParser.cxx" +#line 3897 "cmDependsJavaParser.cxx" break; case 143: /* VariableInitializersOptional: %empty */ -#line 1288 "cmDependsJavaParser.y" +#line 1291 "cmDependsJavaParser.y" { jpElementStart(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3905 "cmDependsJavaParser.cxx" +#line 3908 "cmDependsJavaParser.cxx" break; case 144: /* VariableInitializersOptional: VariableInitializers */ -#line 1296 "cmDependsJavaParser.y" +#line 1299 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -3913,11 +3916,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 3917 "cmDependsJavaParser.cxx" +#line 3920 "cmDependsJavaParser.cxx" break; case 145: /* VariableInitializersOptional: VariableInitializers jp_COMMA */ -#line 1305 "cmDependsJavaParser.y" +#line 1308 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); @@ -3925,11 +3928,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 3929 "cmDependsJavaParser.cxx" +#line 3932 "cmDependsJavaParser.cxx" break; case 146: /* VariableInitializers: VariableInitializer */ -#line 1315 "cmDependsJavaParser.y" +#line 1318 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -3937,11 +3940,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 3941 "cmDependsJavaParser.cxx" +#line 3944 "cmDependsJavaParser.cxx" break; case 147: /* VariableInitializers: VariableInitializers jp_COMMA VariableInitializer */ -#line 1324 "cmDependsJavaParser.y" +#line 1327 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -3949,33 +3952,33 @@ yyGetParser->SetCurrentCombine(""); } -#line 3953 "cmDependsJavaParser.cxx" +#line 3956 "cmDependsJavaParser.cxx" break; case 148: /* Block: jp_CURLYSTART BlockStatementsopt jp_CURLYEND */ -#line 1334 "cmDependsJavaParser.y" +#line 1337 "cmDependsJavaParser.y" { jpElementStart(4); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3964 "cmDependsJavaParser.cxx" +#line 3967 "cmDependsJavaParser.cxx" break; case 149: /* BlockStatementsopt: %empty */ -#line 1342 "cmDependsJavaParser.y" +#line 1345 "cmDependsJavaParser.y" { jpElementStart(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 3975 "cmDependsJavaParser.cxx" +#line 3978 "cmDependsJavaParser.cxx" break; case 150: /* BlockStatementsopt: BlockStatements */ -#line 1350 "cmDependsJavaParser.y" +#line 1353 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -3983,11 +3986,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 3987 "cmDependsJavaParser.cxx" +#line 3990 "cmDependsJavaParser.cxx" break; case 151: /* BlockStatements: BlockStatement */ -#line 1360 "cmDependsJavaParser.y" +#line 1363 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -3995,11 +3998,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 3999 "cmDependsJavaParser.cxx" +#line 4002 "cmDependsJavaParser.cxx" break; case 152: /* BlockStatements: BlockStatements BlockStatement */ -#line 1369 "cmDependsJavaParser.y" +#line 1372 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(2); @@ -4007,11 +4010,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4011 "cmDependsJavaParser.cxx" +#line 4014 "cmDependsJavaParser.cxx" break; case 153: /* BlockStatement: LocalVariableDeclarationStatement */ -#line 1379 "cmDependsJavaParser.y" +#line 1382 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4019,11 +4022,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4023 "cmDependsJavaParser.cxx" +#line 4026 "cmDependsJavaParser.cxx" break; case 154: /* BlockStatement: Statement */ -#line 1388 "cmDependsJavaParser.y" +#line 1391 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4031,11 +4034,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4035 "cmDependsJavaParser.cxx" +#line 4038 "cmDependsJavaParser.cxx" break; case 155: /* BlockStatement: ClassDeclaration */ -#line 1397 "cmDependsJavaParser.y" +#line 1400 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4043,11 +4046,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4047 "cmDependsJavaParser.cxx" +#line 4050 "cmDependsJavaParser.cxx" break; case 156: /* LocalVariableDeclarationStatement: LocalVariableDeclaration jp_SEMICOL */ -#line 1407 "cmDependsJavaParser.y" +#line 1410 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(2); @@ -4055,11 +4058,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4059 "cmDependsJavaParser.cxx" +#line 4062 "cmDependsJavaParser.cxx" break; case 157: /* LocalVariableDeclaration: Modifiers Type VariableDeclarators */ -#line 1417 "cmDependsJavaParser.y" +#line 1420 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(3); @@ -4067,11 +4070,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4071 "cmDependsJavaParser.cxx" +#line 4074 "cmDependsJavaParser.cxx" break; case 158: /* LocalVariableDeclaration: Type VariableDeclarators */ -#line 1426 "cmDependsJavaParser.y" +#line 1429 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(2); @@ -4079,11 +4082,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4083 "cmDependsJavaParser.cxx" +#line 4086 "cmDependsJavaParser.cxx" break; case 159: /* Statement: StatementWithoutTrailingSubstatement */ -#line 1436 "cmDependsJavaParser.y" +#line 1439 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4091,11 +4094,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4095 "cmDependsJavaParser.cxx" +#line 4098 "cmDependsJavaParser.cxx" break; case 160: /* Statement: LabeledStatement */ -#line 1445 "cmDependsJavaParser.y" +#line 1448 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4103,11 +4106,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4107 "cmDependsJavaParser.cxx" +#line 4110 "cmDependsJavaParser.cxx" break; case 161: /* Statement: IfThenStatement */ -#line 1454 "cmDependsJavaParser.y" +#line 1457 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4115,11 +4118,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4119 "cmDependsJavaParser.cxx" +#line 4122 "cmDependsJavaParser.cxx" break; case 162: /* Statement: IfThenElseStatement */ -#line 1463 "cmDependsJavaParser.y" +#line 1466 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4127,11 +4130,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4131 "cmDependsJavaParser.cxx" +#line 4134 "cmDependsJavaParser.cxx" break; case 163: /* Statement: WhileStatement */ -#line 1472 "cmDependsJavaParser.y" +#line 1475 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4139,11 +4142,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4143 "cmDependsJavaParser.cxx" +#line 4146 "cmDependsJavaParser.cxx" break; case 164: /* Statement: ForStatement */ -#line 1481 "cmDependsJavaParser.y" +#line 1484 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4151,11 +4154,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4155 "cmDependsJavaParser.cxx" +#line 4158 "cmDependsJavaParser.cxx" break; case 165: /* StatementNoShortIf: StatementWithoutTrailingSubstatement */ -#line 1491 "cmDependsJavaParser.y" +#line 1494 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4163,11 +4166,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4167 "cmDependsJavaParser.cxx" +#line 4170 "cmDependsJavaParser.cxx" break; case 166: /* StatementNoShortIf: LabeledStatementNoShortIf */ -#line 1500 "cmDependsJavaParser.y" +#line 1503 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4175,11 +4178,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4179 "cmDependsJavaParser.cxx" +#line 4182 "cmDependsJavaParser.cxx" break; case 167: /* StatementNoShortIf: IfThenElseStatementNoShortIf */ -#line 1509 "cmDependsJavaParser.y" +#line 1512 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4187,11 +4190,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4191 "cmDependsJavaParser.cxx" +#line 4194 "cmDependsJavaParser.cxx" break; case 168: /* StatementNoShortIf: WhileStatementNoShortIf */ -#line 1518 "cmDependsJavaParser.y" +#line 1521 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4199,11 +4202,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4203 "cmDependsJavaParser.cxx" +#line 4206 "cmDependsJavaParser.cxx" break; case 169: /* StatementNoShortIf: ForStatementNoShortIf */ -#line 1527 "cmDependsJavaParser.y" +#line 1530 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4211,11 +4214,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4215 "cmDependsJavaParser.cxx" +#line 4218 "cmDependsJavaParser.cxx" break; case 170: /* StatementWithoutTrailingSubstatement: Block */ -#line 1537 "cmDependsJavaParser.y" +#line 1540 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4223,11 +4226,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4227 "cmDependsJavaParser.cxx" +#line 4230 "cmDependsJavaParser.cxx" break; case 171: /* StatementWithoutTrailingSubstatement: EmptyStatement */ -#line 1546 "cmDependsJavaParser.y" +#line 1549 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4235,11 +4238,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4239 "cmDependsJavaParser.cxx" +#line 4242 "cmDependsJavaParser.cxx" break; case 172: /* StatementWithoutTrailingSubstatement: ExpressionStatement */ -#line 1555 "cmDependsJavaParser.y" +#line 1558 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4247,11 +4250,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4251 "cmDependsJavaParser.cxx" +#line 4254 "cmDependsJavaParser.cxx" break; case 173: /* StatementWithoutTrailingSubstatement: SwitchStatement */ -#line 1564 "cmDependsJavaParser.y" +#line 1567 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4259,11 +4262,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4263 "cmDependsJavaParser.cxx" +#line 4266 "cmDependsJavaParser.cxx" break; case 174: /* StatementWithoutTrailingSubstatement: DoStatement */ -#line 1573 "cmDependsJavaParser.y" +#line 1576 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4271,11 +4274,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4275 "cmDependsJavaParser.cxx" +#line 4278 "cmDependsJavaParser.cxx" break; case 175: /* StatementWithoutTrailingSubstatement: BreakStatement */ -#line 1582 "cmDependsJavaParser.y" +#line 1585 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4283,11 +4286,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4287 "cmDependsJavaParser.cxx" +#line 4290 "cmDependsJavaParser.cxx" break; case 176: /* StatementWithoutTrailingSubstatement: ContinueStatement */ -#line 1591 "cmDependsJavaParser.y" +#line 1594 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4295,11 +4298,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4299 "cmDependsJavaParser.cxx" +#line 4302 "cmDependsJavaParser.cxx" break; case 177: /* StatementWithoutTrailingSubstatement: ReturnStatement */ -#line 1600 "cmDependsJavaParser.y" +#line 1603 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4307,11 +4310,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4311 "cmDependsJavaParser.cxx" +#line 4314 "cmDependsJavaParser.cxx" break; case 178: /* StatementWithoutTrailingSubstatement: SynchronizedStatement */ -#line 1609 "cmDependsJavaParser.y" +#line 1612 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4319,11 +4322,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4323 "cmDependsJavaParser.cxx" +#line 4326 "cmDependsJavaParser.cxx" break; case 179: /* StatementWithoutTrailingSubstatement: ThrowStatement */ -#line 1618 "cmDependsJavaParser.y" +#line 1621 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4331,11 +4334,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4335 "cmDependsJavaParser.cxx" +#line 4338 "cmDependsJavaParser.cxx" break; case 180: /* StatementWithoutTrailingSubstatement: TryStatement */ -#line 1627 "cmDependsJavaParser.y" +#line 1630 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4343,11 +4346,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4347 "cmDependsJavaParser.cxx" +#line 4350 "cmDependsJavaParser.cxx" break; case 181: /* StatementWithoutTrailingSubstatement: AssertStatement */ -#line 1636 "cmDependsJavaParser.y" +#line 1639 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4355,11 +4358,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4359 "cmDependsJavaParser.cxx" +#line 4362 "cmDependsJavaParser.cxx" break; case 182: /* EmptyStatement: jp_SEMICOL */ -#line 1646 "cmDependsJavaParser.y" +#line 1649 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4367,11 +4370,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4371 "cmDependsJavaParser.cxx" +#line 4374 "cmDependsJavaParser.cxx" break; case 183: /* LabeledStatement: Identifier jp_COLON Statement */ -#line 1656 "cmDependsJavaParser.y" +#line 1659 "cmDependsJavaParser.y" { jpElementStart(3); yyGetParser->DeallocateParserType(&((yyvsp[-2].str))); @@ -4380,11 +4383,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4384 "cmDependsJavaParser.cxx" +#line 4387 "cmDependsJavaParser.cxx" break; case 184: /* LabeledStatementNoShortIf: Identifier jp_COLON StatementNoShortIf */ -#line 1667 "cmDependsJavaParser.y" +#line 1670 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -4392,11 +4395,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4396 "cmDependsJavaParser.cxx" +#line 4399 "cmDependsJavaParser.cxx" break; case 185: /* ExpressionStatement: StatementExpression jp_SEMICOL */ -#line 1677 "cmDependsJavaParser.y" +#line 1680 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); @@ -4404,11 +4407,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4408 "cmDependsJavaParser.cxx" +#line 4411 "cmDependsJavaParser.cxx" break; case 186: /* StatementExpression: Assignment */ -#line 1687 "cmDependsJavaParser.y" +#line 1690 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4416,11 +4419,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4420 "cmDependsJavaParser.cxx" +#line 4423 "cmDependsJavaParser.cxx" break; case 187: /* StatementExpression: PreIncrementExpression */ -#line 1696 "cmDependsJavaParser.y" +#line 1699 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4428,11 +4431,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4432 "cmDependsJavaParser.cxx" +#line 4435 "cmDependsJavaParser.cxx" break; case 188: /* StatementExpression: PreDecrementExpression */ -#line 1705 "cmDependsJavaParser.y" +#line 1708 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4440,11 +4443,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4444 "cmDependsJavaParser.cxx" +#line 4447 "cmDependsJavaParser.cxx" break; case 189: /* StatementExpression: PostIncrementExpression */ -#line 1714 "cmDependsJavaParser.y" +#line 1717 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4452,11 +4455,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4456 "cmDependsJavaParser.cxx" +#line 4459 "cmDependsJavaParser.cxx" break; case 190: /* StatementExpression: PostDecrementExpression */ -#line 1723 "cmDependsJavaParser.y" +#line 1726 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4464,11 +4467,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4468 "cmDependsJavaParser.cxx" +#line 4471 "cmDependsJavaParser.cxx" break; case 191: /* StatementExpression: MethodInvocation */ -#line 1732 "cmDependsJavaParser.y" +#line 1735 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4476,11 +4479,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4480 "cmDependsJavaParser.cxx" +#line 4483 "cmDependsJavaParser.cxx" break; case 192: /* StatementExpression: ClassInstanceCreationExpression */ -#line 1741 "cmDependsJavaParser.y" +#line 1744 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4488,11 +4491,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4492 "cmDependsJavaParser.cxx" +#line 4495 "cmDependsJavaParser.cxx" break; case 193: /* IfThenStatement: jp_IF jp_PARESTART Expression jp_PAREEND Statement */ -#line 1751 "cmDependsJavaParser.y" +#line 1754 "cmDependsJavaParser.y" { jpElementStart(5); jpCheckEmpty(5); @@ -4500,11 +4503,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4504 "cmDependsJavaParser.cxx" +#line 4507 "cmDependsJavaParser.cxx" break; case 194: /* IfThenElseStatement: jp_IF jp_PARESTART Expression jp_PAREEND StatementNoShortIf jp_ELSE Statement */ -#line 1761 "cmDependsJavaParser.y" +#line 1764 "cmDependsJavaParser.y" { jpElementStart(7); jpCheckEmpty(7); @@ -4512,11 +4515,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4516 "cmDependsJavaParser.cxx" +#line 4519 "cmDependsJavaParser.cxx" break; case 195: /* IfThenElseStatementNoShortIf: jp_IF jp_PARESTART Expression jp_PAREEND StatementNoShortIf jp_ELSE StatementNoShortIf */ -#line 1771 "cmDependsJavaParser.y" +#line 1774 "cmDependsJavaParser.y" { jpElementStart(7); jpCheckEmpty(7); @@ -4524,40 +4527,40 @@ yyGetParser->SetCurrentCombine(""); } -#line 4528 "cmDependsJavaParser.cxx" +#line 4531 "cmDependsJavaParser.cxx" break; case 196: /* SwitchStatement: jp_SWITCH jp_PARESTART Expression jp_PAREEND SwitchBlock */ -#line 1781 "cmDependsJavaParser.y" +#line 1784 "cmDependsJavaParser.y" { jpElementStart(5); } -#line 4537 "cmDependsJavaParser.cxx" +#line 4540 "cmDependsJavaParser.cxx" break; case 197: /* SwitchBlock: jp_CURLYSTART SwitchBlockStatementGroups SwitchLabelsopt jp_CURLYEND */ -#line 1788 "cmDependsJavaParser.y" +#line 1791 "cmDependsJavaParser.y" { jpElementStart(4); } -#line 4546 "cmDependsJavaParser.cxx" +#line 4549 "cmDependsJavaParser.cxx" break; case 198: /* SwitchLabelsopt: %empty */ -#line 1794 "cmDependsJavaParser.y" +#line 1797 "cmDependsJavaParser.y" { jpElementStart(0); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 4557 "cmDependsJavaParser.cxx" +#line 4560 "cmDependsJavaParser.cxx" break; case 199: /* SwitchLabelsopt: SwitchLabels */ -#line 1802 "cmDependsJavaParser.y" +#line 1805 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4565,22 +4568,22 @@ yyGetParser->SetCurrentCombine(""); } -#line 4569 "cmDependsJavaParser.cxx" +#line 4572 "cmDependsJavaParser.cxx" break; case 200: /* SwitchBlockStatementGroups: %empty */ -#line 1811 "cmDependsJavaParser.y" +#line 1814 "cmDependsJavaParser.y" { jpElementStart(0); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 4580 "cmDependsJavaParser.cxx" +#line 4583 "cmDependsJavaParser.cxx" break; case 201: /* SwitchBlockStatementGroups: SwitchBlockStatementGroups SwitchBlockStatementGroup */ -#line 1819 "cmDependsJavaParser.y" +#line 1822 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); @@ -4588,11 +4591,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4592 "cmDependsJavaParser.cxx" +#line 4595 "cmDependsJavaParser.cxx" break; case 202: /* SwitchBlockStatementGroup: SwitchLabels BlockStatements */ -#line 1829 "cmDependsJavaParser.y" +#line 1832 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); @@ -4600,11 +4603,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4604 "cmDependsJavaParser.cxx" +#line 4607 "cmDependsJavaParser.cxx" break; case 203: /* SwitchLabels: SwitchLabel */ -#line 1839 "cmDependsJavaParser.y" +#line 1842 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4612,11 +4615,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4616 "cmDependsJavaParser.cxx" +#line 4619 "cmDependsJavaParser.cxx" break; case 204: /* SwitchLabels: SwitchLabels SwitchLabel */ -#line 1848 "cmDependsJavaParser.y" +#line 1851 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); @@ -4624,11 +4627,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4628 "cmDependsJavaParser.cxx" +#line 4631 "cmDependsJavaParser.cxx" break; case 205: /* SwitchLabel: jp_CASE ConstantExpression jp_COLON */ -#line 1858 "cmDependsJavaParser.y" +#line 1861 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -4636,11 +4639,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4640 "cmDependsJavaParser.cxx" +#line 4643 "cmDependsJavaParser.cxx" break; case 206: /* SwitchLabel: jp_DEFAULT jp_COLON */ -#line 1867 "cmDependsJavaParser.y" +#line 1870 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); @@ -4648,58 +4651,58 @@ yyGetParser->SetCurrentCombine(""); } -#line 4652 "cmDependsJavaParser.cxx" +#line 4655 "cmDependsJavaParser.cxx" break; case 207: /* WhileStatement: jp_WHILE jp_PARESTART Expression jp_PAREEND Statement */ -#line 1877 "cmDependsJavaParser.y" +#line 1880 "cmDependsJavaParser.y" { jpElementStart(5); } -#line 4661 "cmDependsJavaParser.cxx" +#line 4664 "cmDependsJavaParser.cxx" break; case 208: /* WhileStatementNoShortIf: jp_WHILE jp_PARESTART Expression jp_PAREEND StatementNoShortIf */ -#line 1884 "cmDependsJavaParser.y" +#line 1887 "cmDependsJavaParser.y" { jpElementStart(5); } -#line 4670 "cmDependsJavaParser.cxx" +#line 4673 "cmDependsJavaParser.cxx" break; case 209: /* DoStatement: jp_DO Statement jp_WHILE jp_PARESTART Expression jp_PAREEND jp_SEMICOL */ -#line 1891 "cmDependsJavaParser.y" +#line 1894 "cmDependsJavaParser.y" { jpElementStart(7); } -#line 4679 "cmDependsJavaParser.cxx" +#line 4682 "cmDependsJavaParser.cxx" break; case 210: /* ForStatement: jp_FOR jp_PARESTART ForInitopt jp_SEMICOL Expressionopt jp_SEMICOL ForUpdateopt jp_PAREEND Statement */ -#line 1899 "cmDependsJavaParser.y" +#line 1902 "cmDependsJavaParser.y" { jpElementStart(9); } -#line 4688 "cmDependsJavaParser.cxx" +#line 4691 "cmDependsJavaParser.cxx" break; case 211: /* ForUpdateopt: %empty */ -#line 1905 "cmDependsJavaParser.y" +#line 1908 "cmDependsJavaParser.y" { jpElementStart(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 4699 "cmDependsJavaParser.cxx" +#line 4702 "cmDependsJavaParser.cxx" break; case 212: /* ForUpdateopt: ForUpdate */ -#line 1913 "cmDependsJavaParser.y" +#line 1916 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4707,22 +4710,22 @@ yyGetParser->SetCurrentCombine(""); } -#line 4711 "cmDependsJavaParser.cxx" +#line 4714 "cmDependsJavaParser.cxx" break; case 213: /* ForInitopt: %empty */ -#line 1922 "cmDependsJavaParser.y" +#line 1925 "cmDependsJavaParser.y" { jpElementStart(0); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 4722 "cmDependsJavaParser.cxx" +#line 4725 "cmDependsJavaParser.cxx" break; case 214: /* ForInitopt: ForInit */ -#line 1930 "cmDependsJavaParser.y" +#line 1933 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4730,33 +4733,33 @@ yyGetParser->SetCurrentCombine(""); } -#line 4734 "cmDependsJavaParser.cxx" +#line 4737 "cmDependsJavaParser.cxx" break; case 215: /* ForStatementNoShortIf: jp_FOR jp_PARESTART ForInitopt jp_SEMICOL Expressionopt jp_SEMICOL ForUpdateopt jp_PAREEND StatementNoShortIf */ -#line 1941 "cmDependsJavaParser.y" +#line 1944 "cmDependsJavaParser.y" { jpElementStart(9); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 4745 "cmDependsJavaParser.cxx" +#line 4748 "cmDependsJavaParser.cxx" break; case 216: /* Expressionopt: %empty */ -#line 1949 "cmDependsJavaParser.y" +#line 1952 "cmDependsJavaParser.y" { jpElementStart(0); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 4756 "cmDependsJavaParser.cxx" +#line 4759 "cmDependsJavaParser.cxx" break; case 217: /* Expressionopt: Expression */ -#line 1957 "cmDependsJavaParser.y" +#line 1960 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4764,11 +4767,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4768 "cmDependsJavaParser.cxx" +#line 4771 "cmDependsJavaParser.cxx" break; case 218: /* ForInit: StatementExpressionList */ -#line 1967 "cmDependsJavaParser.y" +#line 1970 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4776,11 +4779,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4780 "cmDependsJavaParser.cxx" +#line 4783 "cmDependsJavaParser.cxx" break; case 219: /* ForInit: LocalVariableDeclaration */ -#line 1976 "cmDependsJavaParser.y" +#line 1979 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4788,11 +4791,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4792 "cmDependsJavaParser.cxx" +#line 4795 "cmDependsJavaParser.cxx" break; case 220: /* ForUpdate: StatementExpressionList */ -#line 1986 "cmDependsJavaParser.y" +#line 1989 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4800,11 +4803,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4804 "cmDependsJavaParser.cxx" +#line 4807 "cmDependsJavaParser.cxx" break; case 221: /* StatementExpressionList: StatementExpression */ -#line 1996 "cmDependsJavaParser.y" +#line 1999 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4812,11 +4815,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4816 "cmDependsJavaParser.cxx" +#line 4819 "cmDependsJavaParser.cxx" break; case 222: /* StatementExpressionList: StatementExpressionList jp_COMMA StatementExpression */ -#line 2005 "cmDependsJavaParser.y" +#line 2008 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -4824,11 +4827,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4828 "cmDependsJavaParser.cxx" +#line 4831 "cmDependsJavaParser.cxx" break; case 223: /* AssertStatement: jp_ASSERT Expression jp_SEMICOL */ -#line 2015 "cmDependsJavaParser.y" +#line 2018 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -4836,11 +4839,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4840 "cmDependsJavaParser.cxx" +#line 4843 "cmDependsJavaParser.cxx" break; case 224: /* AssertStatement: jp_ASSERT Expression jp_COLON Expression jp_SEMICOL */ -#line 2024 "cmDependsJavaParser.y" +#line 2027 "cmDependsJavaParser.y" { jpElementStart(5); jpCheckEmpty(5); @@ -4848,11 +4851,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4852 "cmDependsJavaParser.cxx" +#line 4855 "cmDependsJavaParser.cxx" break; case 225: /* BreakStatement: jp_BREAK Identifieropt jp_SEMICOL */ -#line 2034 "cmDependsJavaParser.y" +#line 2037 "cmDependsJavaParser.y" { jpElementStart(3); yyGetParser->DeallocateParserType(&((yyvsp[-1].str))); @@ -4861,31 +4864,31 @@ yyGetParser->SetCurrentCombine(""); } -#line 4865 "cmDependsJavaParser.cxx" +#line 4868 "cmDependsJavaParser.cxx" break; case 226: /* Identifieropt: %empty */ -#line 2044 "cmDependsJavaParser.y" +#line 2047 "cmDependsJavaParser.y" { jpElementStart(0); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 4876 "cmDependsJavaParser.cxx" +#line 4879 "cmDependsJavaParser.cxx" break; case 227: /* Identifieropt: Identifier */ -#line 2052 "cmDependsJavaParser.y" +#line 2055 "cmDependsJavaParser.y" { jpElementStart(1); } -#line 4885 "cmDependsJavaParser.cxx" +#line 4888 "cmDependsJavaParser.cxx" break; case 228: /* ContinueStatement: jp_CONTINUE Identifieropt jp_SEMICOL */ -#line 2059 "cmDependsJavaParser.y" +#line 2062 "cmDependsJavaParser.y" { jpElementStart(3); yyGetParser->DeallocateParserType(&((yyvsp[-1].str))); @@ -4894,11 +4897,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4898 "cmDependsJavaParser.cxx" +#line 4901 "cmDependsJavaParser.cxx" break; case 229: /* ReturnStatement: jp_RETURN Expressionopt jp_SEMICOL */ -#line 2070 "cmDependsJavaParser.y" +#line 2073 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -4906,11 +4909,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4910 "cmDependsJavaParser.cxx" +#line 4913 "cmDependsJavaParser.cxx" break; case 230: /* ThrowStatement: jp_THROW Expression jp_SEMICOL */ -#line 2080 "cmDependsJavaParser.y" +#line 2083 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -4918,11 +4921,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4922 "cmDependsJavaParser.cxx" +#line 4925 "cmDependsJavaParser.cxx" break; case 231: /* SynchronizedStatement: jp_SYNCHRONIZED jp_PARESTART Expression jp_PAREEND Block */ -#line 2090 "cmDependsJavaParser.y" +#line 2093 "cmDependsJavaParser.y" { jpElementStart(5); jpCheckEmpty(5); @@ -4930,11 +4933,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4934 "cmDependsJavaParser.cxx" +#line 4937 "cmDependsJavaParser.cxx" break; case 232: /* TryStatement: jp_TRY Block Catches */ -#line 2100 "cmDependsJavaParser.y" +#line 2103 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -4942,11 +4945,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4946 "cmDependsJavaParser.cxx" +#line 4949 "cmDependsJavaParser.cxx" break; case 233: /* TryStatement: jp_TRY Block Catchesopt Finally */ -#line 2109 "cmDependsJavaParser.y" +#line 2112 "cmDependsJavaParser.y" { jpElementStart(4); jpCheckEmpty(4); @@ -4954,22 +4957,22 @@ yyGetParser->SetCurrentCombine(""); } -#line 4958 "cmDependsJavaParser.cxx" +#line 4961 "cmDependsJavaParser.cxx" break; case 234: /* Catchesopt: %empty */ -#line 2118 "cmDependsJavaParser.y" +#line 2121 "cmDependsJavaParser.y" { jpElementStart(1); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 4969 "cmDependsJavaParser.cxx" +#line 4972 "cmDependsJavaParser.cxx" break; case 235: /* Catchesopt: Catches */ -#line 2126 "cmDependsJavaParser.y" +#line 2129 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4977,11 +4980,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4981 "cmDependsJavaParser.cxx" +#line 4984 "cmDependsJavaParser.cxx" break; case 236: /* Catches: CatchClause */ -#line 2136 "cmDependsJavaParser.y" +#line 2139 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -4989,11 +4992,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 4993 "cmDependsJavaParser.cxx" +#line 4996 "cmDependsJavaParser.cxx" break; case 237: /* Catches: Catches CatchClause */ -#line 2145 "cmDependsJavaParser.y" +#line 2148 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); @@ -5001,20 +5004,20 @@ yyGetParser->SetCurrentCombine(""); } -#line 5005 "cmDependsJavaParser.cxx" +#line 5008 "cmDependsJavaParser.cxx" break; case 238: /* CatchClause: jp_CATCH jp_PARESTART FormalParameter jp_PAREEND Block */ -#line 2155 "cmDependsJavaParser.y" +#line 2158 "cmDependsJavaParser.y" { jpElementStart(5); } -#line 5014 "cmDependsJavaParser.cxx" +#line 5017 "cmDependsJavaParser.cxx" break; case 239: /* Finally: jp_FINALLY Block */ -#line 2162 "cmDependsJavaParser.y" +#line 2165 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); @@ -5022,11 +5025,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5026 "cmDependsJavaParser.cxx" +#line 5029 "cmDependsJavaParser.cxx" break; case 240: /* Primary: PrimaryNoNewArray */ -#line 2172 "cmDependsJavaParser.y" +#line 2175 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5034,11 +5037,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5038 "cmDependsJavaParser.cxx" +#line 5041 "cmDependsJavaParser.cxx" break; case 241: /* Primary: ArrayCreationExpression */ -#line 2181 "cmDependsJavaParser.y" +#line 2184 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5046,11 +5049,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5050 "cmDependsJavaParser.cxx" +#line 5053 "cmDependsJavaParser.cxx" break; case 242: /* PrimaryNoNewArray: Literal */ -#line 2191 "cmDependsJavaParser.y" +#line 2194 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5058,20 +5061,20 @@ yyGetParser->SetCurrentCombine(""); } -#line 5062 "cmDependsJavaParser.cxx" +#line 5065 "cmDependsJavaParser.cxx" break; case 243: /* PrimaryNoNewArray: jp_THIS */ -#line 2200 "cmDependsJavaParser.y" +#line 2203 "cmDependsJavaParser.y" { jpElementStart(1); } -#line 5071 "cmDependsJavaParser.cxx" +#line 5074 "cmDependsJavaParser.cxx" break; case 244: /* PrimaryNoNewArray: jp_PARESTART Expression jp_PAREEND */ -#line 2206 "cmDependsJavaParser.y" +#line 2209 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -5079,11 +5082,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5083 "cmDependsJavaParser.cxx" +#line 5086 "cmDependsJavaParser.cxx" break; case 245: /* PrimaryNoNewArray: ClassInstanceCreationExpression */ -#line 2215 "cmDependsJavaParser.y" +#line 2218 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5091,11 +5094,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5095 "cmDependsJavaParser.cxx" +#line 5098 "cmDependsJavaParser.cxx" break; case 246: /* PrimaryNoNewArray: FieldAccess */ -#line 2224 "cmDependsJavaParser.y" +#line 2227 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5103,11 +5106,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5107 "cmDependsJavaParser.cxx" +#line 5110 "cmDependsJavaParser.cxx" break; case 247: /* PrimaryNoNewArray: MethodInvocation */ -#line 2233 "cmDependsJavaParser.y" +#line 2236 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5115,11 +5118,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5119 "cmDependsJavaParser.cxx" +#line 5122 "cmDependsJavaParser.cxx" break; case 248: /* PrimaryNoNewArray: ArrayAccess */ -#line 2242 "cmDependsJavaParser.y" +#line 2245 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5127,11 +5130,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5131 "cmDependsJavaParser.cxx" +#line 5134 "cmDependsJavaParser.cxx" break; case 249: /* ClassInstanceCreationExpression: New ClassType jp_PARESTART ArgumentListopt jp_PAREEND ClassBodyOpt */ -#line 2252 "cmDependsJavaParser.y" +#line 2255 "cmDependsJavaParser.y" { jpElementStart(6); jpCheckEmpty(6); @@ -5139,22 +5142,22 @@ yyGetParser->SetCurrentCombine(""); } -#line 5143 "cmDependsJavaParser.cxx" +#line 5146 "cmDependsJavaParser.cxx" break; case 250: /* ClassBodyOpt: %empty */ -#line 2261 "cmDependsJavaParser.y" +#line 2264 "cmDependsJavaParser.y" { jpElementStart(0); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 5154 "cmDependsJavaParser.cxx" +#line 5157 "cmDependsJavaParser.cxx" break; case 251: /* ClassBodyOpt: ClassBody */ -#line 2269 "cmDependsJavaParser.y" +#line 2272 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5162,22 +5165,22 @@ yyGetParser->SetCurrentCombine(""); } -#line 5166 "cmDependsJavaParser.cxx" +#line 5169 "cmDependsJavaParser.cxx" break; case 252: /* ArgumentListopt: %empty */ -#line 2278 "cmDependsJavaParser.y" +#line 2281 "cmDependsJavaParser.y" { jpElementStart(0); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 5177 "cmDependsJavaParser.cxx" +#line 5180 "cmDependsJavaParser.cxx" break; case 253: /* ArgumentListopt: ArgumentList */ -#line 2286 "cmDependsJavaParser.y" +#line 2289 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5185,11 +5188,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5189 "cmDependsJavaParser.cxx" +#line 5192 "cmDependsJavaParser.cxx" break; case 254: /* ArgumentList: Expression */ -#line 2296 "cmDependsJavaParser.y" +#line 2299 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5197,11 +5200,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5201 "cmDependsJavaParser.cxx" +#line 5204 "cmDependsJavaParser.cxx" break; case 255: /* ArgumentList: ArgumentList jp_COMMA Expression */ -#line 2305 "cmDependsJavaParser.y" +#line 2308 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -5209,11 +5212,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5213 "cmDependsJavaParser.cxx" +#line 5216 "cmDependsJavaParser.cxx" break; case 256: /* ArrayCreationExpression: New PrimitiveType DimExprs Dimsopt */ -#line 2315 "cmDependsJavaParser.y" +#line 2318 "cmDependsJavaParser.y" { jpElementStart(4); jpCheckEmpty(4); @@ -5221,11 +5224,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5225 "cmDependsJavaParser.cxx" +#line 5228 "cmDependsJavaParser.cxx" break; case 257: /* ArrayCreationExpression: New ClassOrInterfaceType DimExprs Dimsopt */ -#line 2324 "cmDependsJavaParser.y" +#line 2327 "cmDependsJavaParser.y" { jpElementStart(4); jpCheckEmpty(4); @@ -5233,11 +5236,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5237 "cmDependsJavaParser.cxx" +#line 5240 "cmDependsJavaParser.cxx" break; case 258: /* ArrayCreationExpression: New PrimitiveType Dims ArrayInitializer */ -#line 2333 "cmDependsJavaParser.y" +#line 2336 "cmDependsJavaParser.y" { jpElementStart(4); jpCheckEmpty(4); @@ -5245,11 +5248,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5249 "cmDependsJavaParser.cxx" +#line 5252 "cmDependsJavaParser.cxx" break; case 259: /* ArrayCreationExpression: New ClassOrInterfaceType Dims ArrayInitializer */ -#line 2342 "cmDependsJavaParser.y" +#line 2345 "cmDependsJavaParser.y" { jpElementStart(4); jpCheckEmpty(4); @@ -5257,22 +5260,22 @@ yyGetParser->SetCurrentCombine(""); } -#line 5261 "cmDependsJavaParser.cxx" +#line 5264 "cmDependsJavaParser.cxx" break; case 260: /* Dimsopt: %empty */ -#line 2351 "cmDependsJavaParser.y" +#line 2354 "cmDependsJavaParser.y" { jpElementStart(0); (yyval.str) = 0; yyGetParser->SetCurrentCombine(""); } -#line 5272 "cmDependsJavaParser.cxx" +#line 5275 "cmDependsJavaParser.cxx" break; case 261: /* Dimsopt: Dims */ -#line 2359 "cmDependsJavaParser.y" +#line 2362 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5280,11 +5283,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5284 "cmDependsJavaParser.cxx" +#line 5287 "cmDependsJavaParser.cxx" break; case 262: /* DimExprs: DimExpr */ -#line 2369 "cmDependsJavaParser.y" +#line 2372 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5292,11 +5295,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5296 "cmDependsJavaParser.cxx" +#line 5299 "cmDependsJavaParser.cxx" break; case 263: /* DimExprs: DimExprs DimExpr */ -#line 2378 "cmDependsJavaParser.y" +#line 2381 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); @@ -5304,11 +5307,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5308 "cmDependsJavaParser.cxx" +#line 5311 "cmDependsJavaParser.cxx" break; case 264: /* DimExpr: jp_BRACKETSTART Expression jp_BRACKETEND */ -#line 2388 "cmDependsJavaParser.y" +#line 2391 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -5316,29 +5319,29 @@ yyGetParser->SetCurrentCombine(""); } -#line 5320 "cmDependsJavaParser.cxx" +#line 5323 "cmDependsJavaParser.cxx" break; case 265: /* Dims: jp_BRACKETSTART jp_BRACKETEND */ -#line 2398 "cmDependsJavaParser.y" +#line 2401 "cmDependsJavaParser.y" { jpElementStart(2); } -#line 5329 "cmDependsJavaParser.cxx" +#line 5332 "cmDependsJavaParser.cxx" break; case 266: /* Dims: Dims jp_BRACKETSTART jp_BRACKETEND */ -#line 2404 "cmDependsJavaParser.y" +#line 2407 "cmDependsJavaParser.y" { jpElementStart(3); } -#line 5338 "cmDependsJavaParser.cxx" +#line 5341 "cmDependsJavaParser.cxx" break; case 267: /* FieldAccess: Primary jp_DOT Identifier */ -#line 2411 "cmDependsJavaParser.y" +#line 2414 "cmDependsJavaParser.y" { jpElementStart(3); yyGetParser->DeallocateParserType(&((yyvsp[0].str))); @@ -5347,11 +5350,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5351 "cmDependsJavaParser.cxx" +#line 5354 "cmDependsJavaParser.cxx" break; case 268: /* FieldAccess: jp_SUPER jp_DOT Identifier */ -#line 2421 "cmDependsJavaParser.y" +#line 2424 "cmDependsJavaParser.y" { jpElementStart(3); yyGetParser->DeallocateParserType(&((yyvsp[0].str))); @@ -5360,11 +5363,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5364 "cmDependsJavaParser.cxx" +#line 5367 "cmDependsJavaParser.cxx" break; case 269: /* FieldAccess: jp_THIS jp_DOT Identifier */ -#line 2431 "cmDependsJavaParser.y" +#line 2434 "cmDependsJavaParser.y" { jpElementStart(3); yyGetParser->DeallocateParserType(&((yyvsp[0].str))); @@ -5373,11 +5376,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5377 "cmDependsJavaParser.cxx" +#line 5380 "cmDependsJavaParser.cxx" break; case 270: /* FieldAccess: Primary jp_DOT jp_THIS */ -#line 2441 "cmDependsJavaParser.y" +#line 2444 "cmDependsJavaParser.y" { jpElementStart(3); yyGetParser->DeallocateParserType(&((yyvsp[0].str))); @@ -5386,11 +5389,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5390 "cmDependsJavaParser.cxx" +#line 5393 "cmDependsJavaParser.cxx" break; case 271: /* MethodInvocation: Name jp_PARESTART ArgumentListopt jp_PAREEND */ -#line 2452 "cmDependsJavaParser.y" +#line 2455 "cmDependsJavaParser.y" { jpElementStart(4); yyGetParser->DeallocateParserType(&((yyvsp[-3].str))); @@ -5399,11 +5402,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5403 "cmDependsJavaParser.cxx" +#line 5406 "cmDependsJavaParser.cxx" break; case 272: /* MethodInvocation: Primary jp_DOT Identifier jp_PARESTART ArgumentListopt jp_PAREEND */ -#line 2462 "cmDependsJavaParser.y" +#line 2465 "cmDependsJavaParser.y" { jpElementStart(6); yyGetParser->DeallocateParserType(&((yyvsp[-5].str))); @@ -5413,11 +5416,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5417 "cmDependsJavaParser.cxx" +#line 5420 "cmDependsJavaParser.cxx" break; case 273: /* MethodInvocation: jp_SUPER jp_DOT Identifier jp_PARESTART ArgumentListopt jp_PAREEND */ -#line 2473 "cmDependsJavaParser.y" +#line 2476 "cmDependsJavaParser.y" { jpElementStart(6); yyGetParser->DeallocateParserType(&((yyvsp[-3].str))); @@ -5426,11 +5429,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5430 "cmDependsJavaParser.cxx" +#line 5433 "cmDependsJavaParser.cxx" break; case 274: /* MethodInvocation: jp_THIS jp_DOT Identifier jp_PARESTART ArgumentListopt jp_PAREEND */ -#line 2483 "cmDependsJavaParser.y" +#line 2486 "cmDependsJavaParser.y" { jpElementStart(6); yyGetParser->DeallocateParserType(&((yyvsp[-3].str))); @@ -5439,11 +5442,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5443 "cmDependsJavaParser.cxx" +#line 5446 "cmDependsJavaParser.cxx" break; case 275: /* ArrayAccess: Name jp_BRACKETSTART Expression jp_BRACKETEND */ -#line 2494 "cmDependsJavaParser.y" +#line 2497 "cmDependsJavaParser.y" { jpElementStart(4); yyGetParser->DeallocateParserType(&((yyvsp[-3].str))); @@ -5452,11 +5455,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5456 "cmDependsJavaParser.cxx" +#line 5459 "cmDependsJavaParser.cxx" break; case 276: /* ArrayAccess: PrimaryNoNewArray jp_BRACKETSTART Expression jp_BRACKETEND */ -#line 2504 "cmDependsJavaParser.y" +#line 2507 "cmDependsJavaParser.y" { jpElementStart(4); jpCheckEmpty(4); @@ -5464,11 +5467,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5468 "cmDependsJavaParser.cxx" +#line 5471 "cmDependsJavaParser.cxx" break; case 277: /* PostfixExpression: Primary */ -#line 2514 "cmDependsJavaParser.y" +#line 2517 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5476,11 +5479,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5480 "cmDependsJavaParser.cxx" +#line 5483 "cmDependsJavaParser.cxx" break; case 278: /* PostfixExpression: Name */ -#line 2523 "cmDependsJavaParser.y" +#line 2526 "cmDependsJavaParser.y" { jpElementStart(1); yyGetParser->DeallocateParserType(&((yyvsp[0].str))); @@ -5488,11 +5491,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5492 "cmDependsJavaParser.cxx" +#line 5495 "cmDependsJavaParser.cxx" break; case 279: /* PostfixExpression: ArrayType jp_DOT jp_CLASS */ -#line 2532 "cmDependsJavaParser.y" +#line 2535 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -5500,11 +5503,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5504 "cmDependsJavaParser.cxx" +#line 5507 "cmDependsJavaParser.cxx" break; case 280: /* PostfixExpression: PostIncrementExpression */ -#line 2541 "cmDependsJavaParser.y" +#line 2544 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5512,11 +5515,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5516 "cmDependsJavaParser.cxx" +#line 5519 "cmDependsJavaParser.cxx" break; case 281: /* PostfixExpression: PostDecrementExpression */ -#line 2550 "cmDependsJavaParser.y" +#line 2553 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5524,11 +5527,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5528 "cmDependsJavaParser.cxx" +#line 5531 "cmDependsJavaParser.cxx" break; case 282: /* PostIncrementExpression: PostfixExpression jp_PLUSPLUS */ -#line 2560 "cmDependsJavaParser.y" +#line 2563 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); @@ -5536,11 +5539,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5540 "cmDependsJavaParser.cxx" +#line 5543 "cmDependsJavaParser.cxx" break; case 283: /* PostDecrementExpression: PostfixExpression jp_MINUSMINUS */ -#line 2570 "cmDependsJavaParser.y" +#line 2573 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); @@ -5548,11 +5551,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5552 "cmDependsJavaParser.cxx" +#line 5555 "cmDependsJavaParser.cxx" break; case 284: /* UnaryExpression: PreIncrementExpression */ -#line 2580 "cmDependsJavaParser.y" +#line 2583 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5560,11 +5563,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5564 "cmDependsJavaParser.cxx" +#line 5567 "cmDependsJavaParser.cxx" break; case 285: /* UnaryExpression: PreDecrementExpression */ -#line 2589 "cmDependsJavaParser.y" +#line 2592 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5572,11 +5575,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5576 "cmDependsJavaParser.cxx" +#line 5579 "cmDependsJavaParser.cxx" break; case 286: /* UnaryExpression: jp_PLUS UnaryExpression */ -#line 2598 "cmDependsJavaParser.y" +#line 2601 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); @@ -5584,11 +5587,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5588 "cmDependsJavaParser.cxx" +#line 5591 "cmDependsJavaParser.cxx" break; case 287: /* UnaryExpression: jp_MINUS UnaryExpression */ -#line 2607 "cmDependsJavaParser.y" +#line 2610 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); @@ -5596,11 +5599,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5600 "cmDependsJavaParser.cxx" +#line 5603 "cmDependsJavaParser.cxx" break; case 288: /* UnaryExpression: UnaryExpressionNotPlusMinus */ -#line 2616 "cmDependsJavaParser.y" +#line 2619 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5608,11 +5611,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5612 "cmDependsJavaParser.cxx" +#line 5615 "cmDependsJavaParser.cxx" break; case 289: /* PreIncrementExpression: jp_PLUSPLUS UnaryExpression */ -#line 2626 "cmDependsJavaParser.y" +#line 2629 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); @@ -5620,11 +5623,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5624 "cmDependsJavaParser.cxx" +#line 5627 "cmDependsJavaParser.cxx" break; case 290: /* PreDecrementExpression: jp_MINUSMINUS UnaryExpression */ -#line 2636 "cmDependsJavaParser.y" +#line 2639 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); @@ -5632,11 +5635,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5636 "cmDependsJavaParser.cxx" +#line 5639 "cmDependsJavaParser.cxx" break; case 291: /* UnaryExpressionNotPlusMinus: PostfixExpression */ -#line 2646 "cmDependsJavaParser.y" +#line 2649 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5644,11 +5647,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5648 "cmDependsJavaParser.cxx" +#line 5651 "cmDependsJavaParser.cxx" break; case 292: /* UnaryExpressionNotPlusMinus: jp_TILDE UnaryExpression */ -#line 2655 "cmDependsJavaParser.y" +#line 2658 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); @@ -5656,11 +5659,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5660 "cmDependsJavaParser.cxx" +#line 5663 "cmDependsJavaParser.cxx" break; case 293: /* UnaryExpressionNotPlusMinus: jp_EXCLAMATION UnaryExpression */ -#line 2664 "cmDependsJavaParser.y" +#line 2667 "cmDependsJavaParser.y" { jpElementStart(2); jpCheckEmpty(2); @@ -5668,11 +5671,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5672 "cmDependsJavaParser.cxx" +#line 5675 "cmDependsJavaParser.cxx" break; case 294: /* UnaryExpressionNotPlusMinus: CastExpression */ -#line 2673 "cmDependsJavaParser.y" +#line 2676 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5680,11 +5683,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5684 "cmDependsJavaParser.cxx" +#line 5687 "cmDependsJavaParser.cxx" break; case 295: /* CastExpression: jp_PARESTART PrimitiveType Dimsopt jp_PAREEND UnaryExpression */ -#line 2683 "cmDependsJavaParser.y" +#line 2686 "cmDependsJavaParser.y" { jpElementStart(5); jpCheckEmpty(5); @@ -5692,11 +5695,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5696 "cmDependsJavaParser.cxx" +#line 5699 "cmDependsJavaParser.cxx" break; case 296: /* CastExpression: jp_PARESTART Expression jp_PAREEND UnaryExpressionNotPlusMinus */ -#line 2692 "cmDependsJavaParser.y" +#line 2695 "cmDependsJavaParser.y" { jpElementStart(4); jpCheckEmpty(4); @@ -5704,20 +5707,20 @@ yyGetParser->SetCurrentCombine(""); } -#line 5708 "cmDependsJavaParser.cxx" +#line 5711 "cmDependsJavaParser.cxx" break; case 297: /* CastExpression: jp_PARESTART Name Dims jp_PAREEND UnaryExpressionNotPlusMinus */ -#line 2701 "cmDependsJavaParser.y" +#line 2704 "cmDependsJavaParser.y" { jpElementStart(5); } -#line 5717 "cmDependsJavaParser.cxx" +#line 5720 "cmDependsJavaParser.cxx" break; case 298: /* MultiplicativeExpression: UnaryExpression */ -#line 2708 "cmDependsJavaParser.y" +#line 2711 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5725,11 +5728,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5729 "cmDependsJavaParser.cxx" +#line 5732 "cmDependsJavaParser.cxx" break; case 299: /* MultiplicativeExpression: MultiplicativeExpression jp_TIMES UnaryExpression */ -#line 2717 "cmDependsJavaParser.y" +#line 2720 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -5737,11 +5740,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5741 "cmDependsJavaParser.cxx" +#line 5744 "cmDependsJavaParser.cxx" break; case 300: /* MultiplicativeExpression: MultiplicativeExpression jp_DIVIDE UnaryExpression */ -#line 2726 "cmDependsJavaParser.y" +#line 2729 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -5749,11 +5752,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5753 "cmDependsJavaParser.cxx" +#line 5756 "cmDependsJavaParser.cxx" break; case 301: /* MultiplicativeExpression: MultiplicativeExpression jp_PERCENT UnaryExpression */ -#line 2735 "cmDependsJavaParser.y" +#line 2738 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -5761,11 +5764,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5765 "cmDependsJavaParser.cxx" +#line 5768 "cmDependsJavaParser.cxx" break; case 302: /* AdditiveExpression: MultiplicativeExpression */ -#line 2745 "cmDependsJavaParser.y" +#line 2748 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5773,11 +5776,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5777 "cmDependsJavaParser.cxx" +#line 5780 "cmDependsJavaParser.cxx" break; case 303: /* AdditiveExpression: AdditiveExpression jp_PLUS MultiplicativeExpression */ -#line 2754 "cmDependsJavaParser.y" +#line 2757 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -5785,11 +5788,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5789 "cmDependsJavaParser.cxx" +#line 5792 "cmDependsJavaParser.cxx" break; case 304: /* AdditiveExpression: AdditiveExpression jp_MINUS MultiplicativeExpression */ -#line 2763 "cmDependsJavaParser.y" +#line 2766 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -5797,11 +5800,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5801 "cmDependsJavaParser.cxx" +#line 5804 "cmDependsJavaParser.cxx" break; case 305: /* ShiftExpression: AdditiveExpression */ -#line 2773 "cmDependsJavaParser.y" +#line 2776 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5809,11 +5812,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5813 "cmDependsJavaParser.cxx" +#line 5816 "cmDependsJavaParser.cxx" break; case 306: /* ShiftExpression: ShiftExpression jp_LTLT AdditiveExpression */ -#line 2782 "cmDependsJavaParser.y" +#line 2785 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -5821,11 +5824,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5825 "cmDependsJavaParser.cxx" +#line 5828 "cmDependsJavaParser.cxx" break; case 307: /* ShiftExpression: ShiftExpression jp_GTGT AdditiveExpression */ -#line 2791 "cmDependsJavaParser.y" +#line 2794 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -5833,11 +5836,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5837 "cmDependsJavaParser.cxx" +#line 5840 "cmDependsJavaParser.cxx" break; case 308: /* ShiftExpression: ShiftExpression jp_GTGTGT AdditiveExpression */ -#line 2800 "cmDependsJavaParser.y" +#line 2803 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -5845,11 +5848,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5849 "cmDependsJavaParser.cxx" +#line 5852 "cmDependsJavaParser.cxx" break; case 309: /* RelationalExpression: ShiftExpression */ -#line 2810 "cmDependsJavaParser.y" +#line 2813 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5857,11 +5860,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5861 "cmDependsJavaParser.cxx" +#line 5864 "cmDependsJavaParser.cxx" break; case 310: /* RelationalExpression: RelationalExpression jp_LESSTHAN ShiftExpression */ -#line 2819 "cmDependsJavaParser.y" +#line 2822 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -5869,11 +5872,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5873 "cmDependsJavaParser.cxx" +#line 5876 "cmDependsJavaParser.cxx" break; case 311: /* RelationalExpression: RelationalExpression jp_GREATER ShiftExpression */ -#line 2828 "cmDependsJavaParser.y" +#line 2831 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -5881,11 +5884,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5885 "cmDependsJavaParser.cxx" +#line 5888 "cmDependsJavaParser.cxx" break; case 312: /* RelationalExpression: RelationalExpression jp_LTEQUALS ShiftExpression */ -#line 2837 "cmDependsJavaParser.y" +#line 2840 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -5893,11 +5896,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5897 "cmDependsJavaParser.cxx" +#line 5900 "cmDependsJavaParser.cxx" break; case 313: /* RelationalExpression: RelationalExpression jp_GTEQUALS ShiftExpression */ -#line 2846 "cmDependsJavaParser.y" +#line 2849 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -5905,11 +5908,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5909 "cmDependsJavaParser.cxx" +#line 5912 "cmDependsJavaParser.cxx" break; case 314: /* RelationalExpression: RelationalExpression jp_INSTANCEOF ReferenceType */ -#line 2855 "cmDependsJavaParser.y" +#line 2858 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -5917,11 +5920,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5921 "cmDependsJavaParser.cxx" +#line 5924 "cmDependsJavaParser.cxx" break; case 315: /* EqualityExpression: RelationalExpression */ -#line 2865 "cmDependsJavaParser.y" +#line 2868 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5929,11 +5932,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5933 "cmDependsJavaParser.cxx" +#line 5936 "cmDependsJavaParser.cxx" break; case 316: /* EqualityExpression: EqualityExpression jp_EQUALSEQUALS RelationalExpression */ -#line 2874 "cmDependsJavaParser.y" +#line 2877 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -5941,11 +5944,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5945 "cmDependsJavaParser.cxx" +#line 5948 "cmDependsJavaParser.cxx" break; case 317: /* EqualityExpression: EqualityExpression jp_EXCLAMATIONEQUALS RelationalExpression */ -#line 2883 "cmDependsJavaParser.y" +#line 2886 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -5953,11 +5956,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5957 "cmDependsJavaParser.cxx" +#line 5960 "cmDependsJavaParser.cxx" break; case 318: /* AndExpression: EqualityExpression */ -#line 2893 "cmDependsJavaParser.y" +#line 2896 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5965,11 +5968,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5969 "cmDependsJavaParser.cxx" +#line 5972 "cmDependsJavaParser.cxx" break; case 319: /* AndExpression: AndExpression jp_AND EqualityExpression */ -#line 2902 "cmDependsJavaParser.y" +#line 2905 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -5977,11 +5980,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5981 "cmDependsJavaParser.cxx" +#line 5984 "cmDependsJavaParser.cxx" break; case 320: /* ExclusiveOrExpression: AndExpression */ -#line 2912 "cmDependsJavaParser.y" +#line 2915 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -5989,11 +5992,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 5993 "cmDependsJavaParser.cxx" +#line 5996 "cmDependsJavaParser.cxx" break; case 321: /* ExclusiveOrExpression: ExclusiveOrExpression jp_CARROT AndExpression */ -#line 2921 "cmDependsJavaParser.y" +#line 2924 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -6001,11 +6004,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6005 "cmDependsJavaParser.cxx" +#line 6008 "cmDependsJavaParser.cxx" break; case 322: /* InclusiveOrExpression: ExclusiveOrExpression */ -#line 2931 "cmDependsJavaParser.y" +#line 2934 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -6013,11 +6016,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6017 "cmDependsJavaParser.cxx" +#line 6020 "cmDependsJavaParser.cxx" break; case 323: /* InclusiveOrExpression: InclusiveOrExpression jp_PIPE ExclusiveOrExpression */ -#line 2940 "cmDependsJavaParser.y" +#line 2943 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -6025,11 +6028,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6029 "cmDependsJavaParser.cxx" +#line 6032 "cmDependsJavaParser.cxx" break; case 324: /* ConditionalAndExpression: InclusiveOrExpression */ -#line 2950 "cmDependsJavaParser.y" +#line 2953 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -6037,11 +6040,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6041 "cmDependsJavaParser.cxx" +#line 6044 "cmDependsJavaParser.cxx" break; case 325: /* ConditionalAndExpression: ConditionalAndExpression jp_ANDAND InclusiveOrExpression */ -#line 2959 "cmDependsJavaParser.y" +#line 2962 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -6049,11 +6052,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6053 "cmDependsJavaParser.cxx" +#line 6056 "cmDependsJavaParser.cxx" break; case 326: /* ConditionalOrExpression: ConditionalAndExpression */ -#line 2969 "cmDependsJavaParser.y" +#line 2972 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -6061,11 +6064,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6065 "cmDependsJavaParser.cxx" +#line 6068 "cmDependsJavaParser.cxx" break; case 327: /* ConditionalOrExpression: ConditionalOrExpression jp_PIPEPIPE ConditionalAndExpression */ -#line 2978 "cmDependsJavaParser.y" +#line 2981 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -6073,11 +6076,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6077 "cmDependsJavaParser.cxx" +#line 6080 "cmDependsJavaParser.cxx" break; case 328: /* ConditionalExpression: ConditionalOrExpression */ -#line 2988 "cmDependsJavaParser.y" +#line 2991 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -6085,11 +6088,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6089 "cmDependsJavaParser.cxx" +#line 6092 "cmDependsJavaParser.cxx" break; case 329: /* ConditionalExpression: ConditionalOrExpression jp_QUESTION Expression jp_COLON ConditionalExpression */ -#line 2997 "cmDependsJavaParser.y" +#line 3000 "cmDependsJavaParser.y" { jpElementStart(5); jpCheckEmpty(5); @@ -6097,11 +6100,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6101 "cmDependsJavaParser.cxx" +#line 6104 "cmDependsJavaParser.cxx" break; case 330: /* AssignmentExpression: ConditionalExpression */ -#line 3007 "cmDependsJavaParser.y" +#line 3010 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -6109,11 +6112,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6113 "cmDependsJavaParser.cxx" +#line 6116 "cmDependsJavaParser.cxx" break; case 331: /* AssignmentExpression: Assignment */ -#line 3016 "cmDependsJavaParser.y" +#line 3019 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -6121,11 +6124,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6125 "cmDependsJavaParser.cxx" +#line 6128 "cmDependsJavaParser.cxx" break; case 332: /* Assignment: LeftHandSide AssignmentOperator AssignmentExpression */ -#line 3026 "cmDependsJavaParser.y" +#line 3029 "cmDependsJavaParser.y" { jpElementStart(3); jpCheckEmpty(3); @@ -6133,11 +6136,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6137 "cmDependsJavaParser.cxx" +#line 6140 "cmDependsJavaParser.cxx" break; case 333: /* LeftHandSide: Name */ -#line 3036 "cmDependsJavaParser.y" +#line 3039 "cmDependsJavaParser.y" { jpElementStart(1); yyGetParser->DeallocateParserType(&((yyvsp[0].str))); @@ -6146,11 +6149,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6150 "cmDependsJavaParser.cxx" +#line 6153 "cmDependsJavaParser.cxx" break; case 334: /* LeftHandSide: FieldAccess */ -#line 3046 "cmDependsJavaParser.y" +#line 3049 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -6158,11 +6161,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6162 "cmDependsJavaParser.cxx" +#line 6165 "cmDependsJavaParser.cxx" break; case 335: /* LeftHandSide: ArrayAccess */ -#line 3055 "cmDependsJavaParser.y" +#line 3058 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -6170,11 +6173,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6174 "cmDependsJavaParser.cxx" +#line 6177 "cmDependsJavaParser.cxx" break; case 336: /* AssignmentOperator: jp_EQUALS */ -#line 3065 "cmDependsJavaParser.y" +#line 3068 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -6182,11 +6185,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6186 "cmDependsJavaParser.cxx" +#line 6189 "cmDependsJavaParser.cxx" break; case 337: /* AssignmentOperator: jp_TIMESEQUALS */ -#line 3074 "cmDependsJavaParser.y" +#line 3077 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -6194,11 +6197,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6198 "cmDependsJavaParser.cxx" +#line 6201 "cmDependsJavaParser.cxx" break; case 338: /* AssignmentOperator: jp_DIVIDEEQUALS */ -#line 3083 "cmDependsJavaParser.y" +#line 3086 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -6206,11 +6209,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6210 "cmDependsJavaParser.cxx" +#line 6213 "cmDependsJavaParser.cxx" break; case 339: /* AssignmentOperator: jp_PERCENTEQUALS */ -#line 3092 "cmDependsJavaParser.y" +#line 3095 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -6218,11 +6221,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6222 "cmDependsJavaParser.cxx" +#line 6225 "cmDependsJavaParser.cxx" break; case 340: /* AssignmentOperator: jp_PLUSEQUALS */ -#line 3101 "cmDependsJavaParser.y" +#line 3104 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -6230,11 +6233,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6234 "cmDependsJavaParser.cxx" +#line 6237 "cmDependsJavaParser.cxx" break; case 341: /* AssignmentOperator: jp_MINUSEQUALS */ -#line 3110 "cmDependsJavaParser.y" +#line 3113 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -6242,11 +6245,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6246 "cmDependsJavaParser.cxx" +#line 6249 "cmDependsJavaParser.cxx" break; case 342: /* AssignmentOperator: jp_LESLESEQUALS */ -#line 3119 "cmDependsJavaParser.y" +#line 3122 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -6254,11 +6257,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6258 "cmDependsJavaParser.cxx" +#line 6261 "cmDependsJavaParser.cxx" break; case 343: /* AssignmentOperator: jp_GTGTEQUALS */ -#line 3128 "cmDependsJavaParser.y" +#line 3131 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -6266,11 +6269,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6270 "cmDependsJavaParser.cxx" +#line 6273 "cmDependsJavaParser.cxx" break; case 344: /* AssignmentOperator: jp_GTGTGTEQUALS */ -#line 3137 "cmDependsJavaParser.y" +#line 3140 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -6278,11 +6281,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6282 "cmDependsJavaParser.cxx" +#line 6285 "cmDependsJavaParser.cxx" break; case 345: /* AssignmentOperator: jp_ANDEQUALS */ -#line 3146 "cmDependsJavaParser.y" +#line 3149 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -6290,11 +6293,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6294 "cmDependsJavaParser.cxx" +#line 6297 "cmDependsJavaParser.cxx" break; case 346: /* AssignmentOperator: jp_CARROTEQUALS */ -#line 3155 "cmDependsJavaParser.y" +#line 3158 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -6302,11 +6305,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6306 "cmDependsJavaParser.cxx" +#line 6309 "cmDependsJavaParser.cxx" break; case 347: /* AssignmentOperator: jp_PIPEEQUALS */ -#line 3164 "cmDependsJavaParser.y" +#line 3167 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -6314,11 +6317,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6318 "cmDependsJavaParser.cxx" +#line 6321 "cmDependsJavaParser.cxx" break; case 348: /* Expression: AssignmentExpression */ -#line 3174 "cmDependsJavaParser.y" +#line 3177 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -6326,11 +6329,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6330 "cmDependsJavaParser.cxx" +#line 6333 "cmDependsJavaParser.cxx" break; case 349: /* ConstantExpression: Expression */ -#line 3184 "cmDependsJavaParser.y" +#line 3187 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -6338,11 +6341,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6342 "cmDependsJavaParser.cxx" +#line 6345 "cmDependsJavaParser.cxx" break; case 350: /* New: jp_NEW */ -#line 3194 "cmDependsJavaParser.y" +#line 3197 "cmDependsJavaParser.y" { jpElementStart(1); jpCheckEmpty(1); @@ -6350,11 +6353,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6354 "cmDependsJavaParser.cxx" +#line 6357 "cmDependsJavaParser.cxx" break; case 351: /* New: Name jp_DOT jp_NEW */ -#line 3203 "cmDependsJavaParser.y" +#line 3206 "cmDependsJavaParser.y" { jpElementStart(3); jpStoreClass((yyvsp[-2].str)); @@ -6363,11 +6366,11 @@ yyGetParser->SetCurrentCombine(""); } -#line 6367 "cmDependsJavaParser.cxx" +#line 6370 "cmDependsJavaParser.cxx" break; -#line 6371 "cmDependsJavaParser.cxx" +#line 6374 "cmDependsJavaParser.cxx" default: break; } @@ -6591,7 +6594,7 @@ return yyresult; } -#line 3212 "cmDependsJavaParser.y" +#line 3215 "cmDependsJavaParser.y" /* End of grammar */
diff --git a/Source/LexerParser/cmDependsJavaParser.y b/Source/LexerParser/cmDependsJavaParser.y index 01d0017..7679212 100644 --- a/Source/LexerParser/cmDependsJavaParser.y +++ b/Source/LexerParser/cmDependsJavaParser.y
@@ -44,6 +44,9 @@ # pragma GCC diagnostic ignored "-Wconversion" # pragma GCC diagnostic ignored "-Wfree-nonheap-object" #endif +#if defined(__GNUC__) && __GNUC__ >= 16 +# pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif #if defined(__clang__) && defined(__has_warning) # if __has_warning("-Wunused-but-set-variable") # pragma clang diagnostic ignored "-Wunused-but-set-variable"
diff --git a/Source/LexerParser/cmExprParser.cxx b/Source/LexerParser/cmExprParser.cxx index d30d5cf..d4168a0 100644 --- a/Source/LexerParser/cmExprParser.cxx +++ b/Source/LexerParser/cmExprParser.cxx
@@ -112,6 +112,9 @@ # pragma GCC diagnostic ignored "-Wconversion" # pragma GCC diagnostic ignored "-Wfree-nonheap-object" #endif +#if defined(__GNUC__) && __GNUC__ >= 16 +# pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif #if defined(__clang__) && defined(__has_warning) # if __has_warning("-Wunused-but-set-variable") # pragma clang diagnostic ignored "-Wunused-but-set-variable" @@ -125,7 +128,7 @@ # pragma diag_suppress 550 /* variable set but never used */ #endif -#line 129 "cmExprParser.cxx" +#line 132 "cmExprParser.cxx" # ifndef YY_CAST # ifdef __cplusplus @@ -567,9 +570,9 @@ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint8 yyrline[] = { - 0, 86, 86, 91, 94, 99, 102, 107, 110, 115, - 118, 122, 128, 131, 135, 141, 144, 148, 152, 158, - 161, 164, 168, 173, 176 + 0, 89, 89, 94, 97, 102, 105, 110, 113, 118, + 121, 125, 131, 134, 138, 144, 147, 151, 155, 161, + 164, 167, 171, 176, 179 }; #endif @@ -1430,199 +1433,199 @@ switch (yyn) { case 2: /* start: exp */ -#line 86 "cmExprParser.y" +#line 89 "cmExprParser.y" { cmExpr_yyget_extra(yyscanner)->SetResult((yyvsp[0].Number)); } -#line 1438 "cmExprParser.cxx" +#line 1441 "cmExprParser.cxx" break; case 3: /* exp: bitwiseor */ -#line 91 "cmExprParser.y" +#line 94 "cmExprParser.y" { (yyval.Number) = (yyvsp[0].Number); } -#line 1446 "cmExprParser.cxx" +#line 1449 "cmExprParser.cxx" break; case 4: /* exp: exp exp_OR bitwiseor */ -#line 94 "cmExprParser.y" +#line 97 "cmExprParser.y" { (yyval.Number) = (yyvsp[-2].Number) | (yyvsp[0].Number); } -#line 1454 "cmExprParser.cxx" +#line 1457 "cmExprParser.cxx" break; case 5: /* bitwiseor: bitwisexor */ -#line 99 "cmExprParser.y" +#line 102 "cmExprParser.y" { (yyval.Number) = (yyvsp[0].Number); } -#line 1462 "cmExprParser.cxx" +#line 1465 "cmExprParser.cxx" break; case 6: /* bitwiseor: bitwiseor exp_XOR bitwisexor */ -#line 102 "cmExprParser.y" +#line 105 "cmExprParser.y" { (yyval.Number) = (yyvsp[-2].Number) ^ (yyvsp[0].Number); } -#line 1470 "cmExprParser.cxx" +#line 1473 "cmExprParser.cxx" break; case 7: /* bitwisexor: bitwiseand */ -#line 107 "cmExprParser.y" +#line 110 "cmExprParser.y" { (yyval.Number) = (yyvsp[0].Number); } -#line 1478 "cmExprParser.cxx" +#line 1481 "cmExprParser.cxx" break; case 8: /* bitwisexor: bitwisexor exp_AND bitwiseand */ -#line 110 "cmExprParser.y" +#line 113 "cmExprParser.y" { (yyval.Number) = (yyvsp[-2].Number) & (yyvsp[0].Number); } -#line 1486 "cmExprParser.cxx" +#line 1489 "cmExprParser.cxx" break; case 9: /* bitwiseand: shift */ -#line 115 "cmExprParser.y" +#line 118 "cmExprParser.y" { (yyval.Number) = (yyvsp[0].Number); } -#line 1494 "cmExprParser.cxx" +#line 1497 "cmExprParser.cxx" break; case 10: /* bitwiseand: bitwiseand exp_SHIFTLEFT shift */ -#line 118 "cmExprParser.y" +#line 121 "cmExprParser.y" { (yyval.Number) = cmExpr_yyget_extra(yyscanner) ->ShL((yyvsp[-2].Number), (yyvsp[0].Number)); } -#line 1503 "cmExprParser.cxx" +#line 1506 "cmExprParser.cxx" break; case 11: /* bitwiseand: bitwiseand exp_SHIFTRIGHT shift */ -#line 122 "cmExprParser.y" +#line 125 "cmExprParser.y" { (yyval.Number) = cmExpr_yyget_extra(yyscanner) ->ShR((yyvsp[-2].Number), (yyvsp[0].Number)); } -#line 1512 "cmExprParser.cxx" +#line 1515 "cmExprParser.cxx" break; case 12: /* shift: term */ -#line 128 "cmExprParser.y" +#line 131 "cmExprParser.y" { (yyval.Number) = (yyvsp[0].Number); } -#line 1520 "cmExprParser.cxx" +#line 1523 "cmExprParser.cxx" break; case 13: /* shift: shift exp_PLUS term */ -#line 131 "cmExprParser.y" +#line 134 "cmExprParser.y" { (yyval.Number) = cmExpr_yyget_extra(yyscanner) ->Add((yyvsp[-2].Number), (yyvsp[0].Number)); } -#line 1529 "cmExprParser.cxx" +#line 1532 "cmExprParser.cxx" break; case 14: /* shift: shift exp_MINUS term */ -#line 135 "cmExprParser.y" +#line 138 "cmExprParser.y" { (yyval.Number) = cmExpr_yyget_extra(yyscanner) ->Sub((yyvsp[-2].Number), (yyvsp[0].Number)); } -#line 1538 "cmExprParser.cxx" +#line 1541 "cmExprParser.cxx" break; case 15: /* term: unary */ -#line 141 "cmExprParser.y" +#line 144 "cmExprParser.y" { (yyval.Number) = (yyvsp[0].Number); } -#line 1546 "cmExprParser.cxx" +#line 1549 "cmExprParser.cxx" break; case 16: /* term: term exp_TIMES unary */ -#line 144 "cmExprParser.y" +#line 147 "cmExprParser.y" { (yyval.Number) = cmExpr_yyget_extra(yyscanner) ->Mul((yyvsp[-2].Number), (yyvsp[0].Number)); } -#line 1555 "cmExprParser.cxx" +#line 1558 "cmExprParser.cxx" break; case 17: /* term: term exp_DIVIDE unary */ -#line 148 "cmExprParser.y" +#line 151 "cmExprParser.y" { (yyval.Number) = cmExpr_yyget_extra(yyscanner) ->Div((yyvsp[-2].Number), (yyvsp[0].Number)); } -#line 1564 "cmExprParser.cxx" +#line 1567 "cmExprParser.cxx" break; case 18: /* term: term exp_MOD unary */ -#line 152 "cmExprParser.y" +#line 155 "cmExprParser.y" { (yyval.Number) = cmExpr_yyget_extra(yyscanner) ->Mod((yyvsp[-2].Number), (yyvsp[0].Number)); } -#line 1573 "cmExprParser.cxx" +#line 1576 "cmExprParser.cxx" break; case 19: /* unary: factor */ -#line 158 "cmExprParser.y" +#line 161 "cmExprParser.y" { (yyval.Number) = (yyvsp[0].Number); } -#line 1581 "cmExprParser.cxx" +#line 1584 "cmExprParser.cxx" break; case 20: /* unary: exp_PLUS unary */ -#line 161 "cmExprParser.y" +#line 164 "cmExprParser.y" { (yyval.Number) = + (yyvsp[0].Number); } -#line 1589 "cmExprParser.cxx" +#line 1592 "cmExprParser.cxx" break; case 21: /* unary: exp_MINUS unary */ -#line 164 "cmExprParser.y" +#line 167 "cmExprParser.y" { (yyval.Number) = cmExpr_yyget_extra(yyscanner) ->Neg((yyvsp[0].Number)); } -#line 1598 "cmExprParser.cxx" +#line 1601 "cmExprParser.cxx" break; case 22: /* unary: exp_NOT unary */ -#line 168 "cmExprParser.y" +#line 171 "cmExprParser.y" { (yyval.Number) = ~ (yyvsp[0].Number); } -#line 1606 "cmExprParser.cxx" +#line 1609 "cmExprParser.cxx" break; case 23: /* factor: exp_NUMBER */ -#line 173 "cmExprParser.y" +#line 176 "cmExprParser.y" { (yyval.Number) = (yyvsp[0].Number); } -#line 1614 "cmExprParser.cxx" +#line 1617 "cmExprParser.cxx" break; case 24: /* factor: exp_OPENPARENT exp exp_CLOSEPARENT */ -#line 176 "cmExprParser.y" +#line 179 "cmExprParser.y" { (yyval.Number) = (yyvsp[-1].Number); } -#line 1622 "cmExprParser.cxx" +#line 1625 "cmExprParser.cxx" break; -#line 1626 "cmExprParser.cxx" +#line 1629 "cmExprParser.cxx" default: break; } @@ -1846,7 +1849,7 @@ return yyresult; } -#line 181 "cmExprParser.y" +#line 184 "cmExprParser.y" /* End of grammar */
diff --git a/Source/LexerParser/cmExprParser.y b/Source/LexerParser/cmExprParser.y index edd3bc5..b4f7e60 100644 --- a/Source/LexerParser/cmExprParser.y +++ b/Source/LexerParser/cmExprParser.y
@@ -37,6 +37,9 @@ # pragma GCC diagnostic ignored "-Wconversion" # pragma GCC diagnostic ignored "-Wfree-nonheap-object" #endif +#if defined(__GNUC__) && __GNUC__ >= 16 +# pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif #if defined(__clang__) && defined(__has_warning) # if __has_warning("-Wunused-but-set-variable") # pragma clang diagnostic ignored "-Wunused-but-set-variable"
diff --git a/Source/LexerParser/cmFortranParser.cxx b/Source/LexerParser/cmFortranParser.cxx index a43f4fc..5bc20b0 100644 --- a/Source/LexerParser/cmFortranParser.cxx +++ b/Source/LexerParser/cmFortranParser.cxx
@@ -132,13 +132,16 @@ # pragma GCC diagnostic ignored "-Wconversion" # pragma GCC diagnostic ignored "-Wfree-nonheap-object" #endif +#if defined(__GNUC__) && __GNUC__ >= 16 +# pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif #if defined(__clang__) && defined(__has_warning) # if __has_warning("-Wunused-but-set-variable") # pragma clang diagnostic ignored "-Wunused-but-set-variable" # endif #endif -#line 142 "cmFortranParser.cxx" +#line 145 "cmFortranParser.cxx" # ifndef YY_CAST # ifdef __cplusplus @@ -610,13 +613,13 @@ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 106, 106, 106, 109, 113, 118, 123, 129, 136, - 141, 146, 150, 155, 167, 172, 177, 182, 187, 192, - 197, 202, 207, 211, 215, 219, 223, 224, 229, 229, - 229, 230, 230, 231, 231, 232, 232, 233, 233, 234, - 234, 235, 235, 236, 236, 237, 237, 238, 238, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257 + 0, 109, 109, 109, 112, 116, 121, 126, 132, 139, + 144, 149, 153, 158, 170, 175, 180, 185, 190, 195, + 200, 205, 210, 214, 218, 222, 226, 227, 232, 232, + 232, 233, 233, 234, 234, 235, 235, 236, 236, 237, + 237, 238, 238, 239, 239, 240, 240, 241, 241, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260 }; #endif @@ -1327,21 +1330,21 @@ switch (yykind) { case YYSYMBOL_STRING: /* STRING */ -#line 100 "cmFortranParser.y" +#line 103 "cmFortranParser.y" { free(((*yyvaluep).string)); } -#line 1333 "cmFortranParser.cxx" +#line 1336 "cmFortranParser.cxx" break; case YYSYMBOL_WORD: /* WORD */ -#line 100 "cmFortranParser.y" +#line 103 "cmFortranParser.y" { free(((*yyvaluep).string)); } -#line 1339 "cmFortranParser.cxx" +#line 1342 "cmFortranParser.cxx" break; case YYSYMBOL_CPP_INCLUDE_ANGLE: /* CPP_INCLUDE_ANGLE */ -#line 100 "cmFortranParser.y" +#line 103 "cmFortranParser.y" { free(((*yyvaluep).string)); } -#line 1345 "cmFortranParser.cxx" +#line 1348 "cmFortranParser.cxx" break; default: @@ -1618,47 +1621,47 @@ switch (yyn) { case 4: /* stmt: INTERFACE EOSTMT */ -#line 109 "cmFortranParser.y" +#line 112 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_SetInInterface(parser, true); } -#line 1627 "cmFortranParser.cxx" +#line 1630 "cmFortranParser.cxx" break; case 5: /* stmt: USE WORD other EOSTMT */ -#line 113 "cmFortranParser.y" +#line 116 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleUse(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1637 "cmFortranParser.cxx" +#line 1640 "cmFortranParser.cxx" break; case 6: /* stmt: MODULE WORD EOSTMT */ -#line 118 "cmFortranParser.y" +#line 121 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleModule(parser, (yyvsp[-1].string)); free((yyvsp[-1].string)); } -#line 1647 "cmFortranParser.cxx" +#line 1650 "cmFortranParser.cxx" break; case 7: /* stmt: SUBMODULE LPAREN WORD RPAREN WORD EOSTMT */ -#line 123 "cmFortranParser.y" +#line 126 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleSubmodule(parser, (yyvsp[-3].string), (yyvsp[-1].string)); free((yyvsp[-3].string)); free((yyvsp[-1].string)); } -#line 1658 "cmFortranParser.cxx" +#line 1661 "cmFortranParser.cxx" break; case 8: /* stmt: SUBMODULE LPAREN WORD COLON WORD RPAREN WORD EOSTMT */ -#line 129 "cmFortranParser.y" +#line 132 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleSubmoduleNested(parser, (yyvsp[-5].string), (yyvsp[-3].string), (yyvsp[-1].string)); @@ -1666,50 +1669,50 @@ free((yyvsp[-3].string)); free((yyvsp[-1].string)); } -#line 1670 "cmFortranParser.cxx" +#line 1673 "cmFortranParser.cxx" break; case 9: /* stmt: INTERFACE WORD EOSTMT */ -#line 136 "cmFortranParser.y" +#line 139 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_SetInInterface(parser, true); free((yyvsp[-1].string)); } -#line 1680 "cmFortranParser.cxx" +#line 1683 "cmFortranParser.cxx" break; case 10: /* stmt: END INTERFACE WORD EOSTMT */ -#line 141 "cmFortranParser.y" +#line 144 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_SetInInterface(parser, false); free((yyvsp[-1].string)); } -#line 1690 "cmFortranParser.cxx" +#line 1693 "cmFortranParser.cxx" break; case 11: /* stmt: END INTERFACE EOSTMT */ -#line 146 "cmFortranParser.y" +#line 149 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_SetInInterface(parser, false); } -#line 1699 "cmFortranParser.cxx" +#line 1702 "cmFortranParser.cxx" break; case 12: /* stmt: USE DCOLON WORD other EOSTMT */ -#line 150 "cmFortranParser.y" +#line 153 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleUse(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1709 "cmFortranParser.cxx" +#line 1712 "cmFortranParser.cxx" break; case 13: /* stmt: USE COMMA WORD DCOLON WORD other EOSTMT */ -#line 155 "cmFortranParser.y" +#line 158 "cmFortranParser.y" { if (cmsysString_strcasecmp((yyvsp[-4].string), "non_intrinsic") == 0) { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); @@ -1722,139 +1725,139 @@ free((yyvsp[-4].string)); free((yyvsp[-2].string)); } -#line 1726 "cmFortranParser.cxx" +#line 1729 "cmFortranParser.cxx" break; case 14: /* stmt: INCLUDE STRING EOSTMT */ -#line 167 "cmFortranParser.y" +#line 170 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleInclude(parser, (yyvsp[-1].string)); free((yyvsp[-1].string)); } -#line 1736 "cmFortranParser.cxx" +#line 1739 "cmFortranParser.cxx" break; case 15: /* stmt: CPP_LINE_DIRECTIVE STRING other EOSTMT */ -#line 172 "cmFortranParser.y" +#line 175 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleLineDirective(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1746 "cmFortranParser.cxx" +#line 1749 "cmFortranParser.cxx" break; case 16: /* stmt: CPP_INCLUDE_ANGLE other EOSTMT */ -#line 177 "cmFortranParser.y" +#line 180 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleInclude(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1756 "cmFortranParser.cxx" +#line 1759 "cmFortranParser.cxx" break; case 17: /* stmt: include STRING other EOSTMT */ -#line 182 "cmFortranParser.y" +#line 185 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleInclude(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1766 "cmFortranParser.cxx" +#line 1769 "cmFortranParser.cxx" break; case 18: /* stmt: define WORD other EOSTMT */ -#line 187 "cmFortranParser.y" +#line 190 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleDefine(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1776 "cmFortranParser.cxx" +#line 1779 "cmFortranParser.cxx" break; case 19: /* stmt: undef WORD other EOSTMT */ -#line 192 "cmFortranParser.y" +#line 195 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleUndef(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1786 "cmFortranParser.cxx" +#line 1789 "cmFortranParser.cxx" break; case 20: /* stmt: ifdef WORD other EOSTMT */ -#line 197 "cmFortranParser.y" +#line 200 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleIfdef(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1796 "cmFortranParser.cxx" +#line 1799 "cmFortranParser.cxx" break; case 21: /* stmt: ifndef WORD other EOSTMT */ -#line 202 "cmFortranParser.y" +#line 205 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleIfndef(parser, (yyvsp[-2].string)); free((yyvsp[-2].string)); } -#line 1806 "cmFortranParser.cxx" +#line 1809 "cmFortranParser.cxx" break; case 22: /* stmt: if other EOSTMT */ -#line 207 "cmFortranParser.y" +#line 210 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleIf(parser); } -#line 1815 "cmFortranParser.cxx" +#line 1818 "cmFortranParser.cxx" break; case 23: /* stmt: elif other EOSTMT */ -#line 211 "cmFortranParser.y" +#line 214 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleElif(parser); } -#line 1824 "cmFortranParser.cxx" +#line 1827 "cmFortranParser.cxx" break; case 24: /* stmt: else other EOSTMT */ -#line 215 "cmFortranParser.y" +#line 218 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleElse(parser); } -#line 1833 "cmFortranParser.cxx" +#line 1836 "cmFortranParser.cxx" break; case 25: /* stmt: endif other EOSTMT */ -#line 219 "cmFortranParser.y" +#line 222 "cmFortranParser.y" { cmFortranParser* parser = cmFortran_yyget_extra(yyscanner); cmFortranParser_RuleEndif(parser); } -#line 1842 "cmFortranParser.cxx" +#line 1845 "cmFortranParser.cxx" break; case 49: /* misc_code: WORD */ -#line 241 "cmFortranParser.y" +#line 244 "cmFortranParser.y" { free ((yyvsp[0].string)); } -#line 1848 "cmFortranParser.cxx" +#line 1851 "cmFortranParser.cxx" break; case 56: /* misc_code: STRING */ -#line 248 "cmFortranParser.y" +#line 251 "cmFortranParser.y" { free ((yyvsp[0].string)); } -#line 1854 "cmFortranParser.cxx" +#line 1857 "cmFortranParser.cxx" break; -#line 1858 "cmFortranParser.cxx" +#line 1861 "cmFortranParser.cxx" default: break; } @@ -2078,6 +2081,6 @@ return yyresult; } -#line 260 "cmFortranParser.y" +#line 263 "cmFortranParser.y" /* End of grammar */
diff --git a/Source/LexerParser/cmFortranParser.y b/Source/LexerParser/cmFortranParser.y index 431d6ab..77eaf75 100644 --- a/Source/LexerParser/cmFortranParser.y +++ b/Source/LexerParser/cmFortranParser.y
@@ -57,6 +57,9 @@ # pragma GCC diagnostic ignored "-Wconversion" # pragma GCC diagnostic ignored "-Wfree-nonheap-object" #endif +#if defined(__GNUC__) && __GNUC__ >= 16 +# pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif #if defined(__clang__) && defined(__has_warning) # if __has_warning("-Wunused-but-set-variable") # pragma clang diagnostic ignored "-Wunused-but-set-variable"
diff --git a/Source/LexerParser/cmFortranParserTokens.h b/Source/LexerParser/cmFortranParserTokens.h index cb2b999..51b6a45 100644 --- a/Source/LexerParser/cmFortranParserTokens.h +++ b/Source/LexerParser/cmFortranParserTokens.h
@@ -100,7 +100,7 @@ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { -#line 76 "cmFortranParser.y" +#line 79 "cmFortranParser.y" char* string;
diff --git a/Source/QtDialog/QCMake.cxx b/Source/QtDialog/QCMake.cxx index 9e11197..eb743bc 100644 --- a/Source/QtDialog/QCMake.cxx +++ b/Source/QtDialog/QCMake.cxx
@@ -541,7 +541,8 @@ void QCMake::loadPresets() { auto result = this->CMakePresetsGraph.ReadProjectPresets( - this->SourceDirectory.toStdString(), true); + this->SourceDirectory.toStdString(), "", + cmCMakePresetsGraph::ReadOption::AllowNoFiles); if (!result) { emit this->presetLoadError( this->SourceDirectory,
diff --git a/Source/QtDialog/QCMake.h b/Source/QtDialog/QCMake.h index 32c964c..9be5259 100644 --- a/Source/QtDialog/QCMake.h +++ b/Source/QtDialog/QCMake.h
@@ -111,7 +111,7 @@ cmDiagnostics::DiagnosticAction); /// check if project IDE open is possible and emit openPossible signal void checkOpenPossible(); - /// Reload the preset files and tree + /// Reload the presets files and tree void loadPresets(); public:
diff --git a/Source/cmCMakePresetsArgs.h b/Source/cmCMakePresetsArgs.h new file mode 100644 index 0000000..7228c9d --- /dev/null +++ b/Source/cmCMakePresetsArgs.h
@@ -0,0 +1,78 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file LICENSE.rst or https://cmake.org/licensing for details. */ +#pragma once + +#include <string> + +class cmCMakePresetsArgsBase +{ +public: + virtual ~cmCMakePresetsArgsBase() = default; + + virtual bool HasPresetsArg() const { return !this->PresetName.empty(); }; + virtual void Clear() { this->PresetName.clear(); } + + std::string PresetName; + std::string PresetsFile; + +protected: + cmCMakePresetsArgsBase() = default; +}; + +class cmCMakePresetsArgs : public cmCMakePresetsArgsBase +{ +public: + bool HasPresetsArg() const override + { + return this->cmCMakePresetsArgsBase::HasPresetsArg() || this->ListPresets; + } + + void Clear() override + { + this->cmCMakePresetsArgsBase::Clear(); + this->ListPresets = false; + } + + bool ListPresets = false; +}; + +class cmCMakePresetsConfigureArgs : public cmCMakePresetsArgsBase +{ +public: + enum class ListPresetsOption + { + None, + Configure, + Build, + Test, + Package, + Workflow, + All, + }; + + bool HasPresetsArg() const override + { + return this->cmCMakePresetsArgsBase::HasPresetsArg() || + this->ListPresets != ListPresetsOption::None; + } + + void Clear() override + { + this->cmCMakePresetsArgsBase::Clear(); + this->ListPresets = ListPresetsOption::None; + } + + ListPresetsOption ListPresets = ListPresetsOption::None; +}; + +class cmCMakePresetsWorkflowArgs : public cmCMakePresetsArgs +{ +public: + void Clear() override + { + this->cmCMakePresetsArgs::Clear(); + this->Fresh = false; + } + + bool Fresh = false; +};
diff --git a/Source/cmCMakePresetsErrors.cxx b/Source/cmCMakePresetsErrors.cxx index 6b454ac..be3d193 100644 --- a/Source/cmCMakePresetsErrors.cxx +++ b/Source/cmCMakePresetsErrors.cxx
@@ -80,9 +80,16 @@ state->AddErrorAtValue("Invalid preset", value); } -void INVALID_PRESET_NAMED(std::string const& presetName, cmJSONState* state) +void INVALID_PRESET_NAMED(std::string const& presetName, + std::string const& kind, cmJSONState* state, + std::string const& detail) { - state->AddError(cmStrCat("Invalid preset: \"", presetName, '"')); + std::string err_msg = + cmStrCat("Invalid ", kind, " preset: \"", presetName, '"'); + if (!detail.empty()) { + err_msg = cmStrCat(err_msg, ": ", detail); + } + state->AddError(err_msg); } void INVALID_VARIABLE(Json::Value const* value, cmJSONState* state) @@ -97,17 +104,18 @@ } void CYCLIC_PRESET_INHERITANCE(std::string const& presetName, - cmJSONState* state) + std::string const& kind, cmJSONState* state) { - state->AddError( - cmStrCat("Cyclic preset inheritance for preset \"", presetName, '"')); + state->AddError(cmStrCat("Cyclic preset inheritance for ", kind, + " preset \"", presetName, '"')); } void INHERITED_PRESET_UNREACHABLE_FROM_FILE(std::string const& presetName, + std::string const& kind, cmJSONState* state) { - state->AddError(cmStrCat("Inherited preset \"", presetName, + state->AddError(cmStrCat("Inherited ", kind, " preset \"", presetName, "\" is unreachable from preset's file")); } @@ -197,7 +205,7 @@ void CYCLIC_INCLUDE(std::string const& file, cmJSONState* state) { - state->AddError(cmStrCat("Cyclic include among preset files: ", file)); + state->AddError(cmStrCat("Cyclic include among presets files: ", file)); } void TEST_OUTPUT_TRUNCATION_UNSUPPORTED(cmJSONState* state)
diff --git a/Source/cmCMakePresetsErrors.h b/Source/cmCMakePresetsErrors.h index a153d92..e8ca3e5 100644 --- a/Source/cmCMakePresetsErrors.h +++ b/Source/cmCMakePresetsErrors.h
@@ -35,16 +35,19 @@ void INVALID_PRESET(Json::Value const* value, cmJSONState* state); -void INVALID_PRESET_NAMED(std::string const& presetName, cmJSONState* state); +void INVALID_PRESET_NAMED(std::string const& presetName, + std::string const& kind, cmJSONState* state, + std::string const& detail); void INVALID_VARIABLE(Json::Value const* value, cmJSONState* state); void DUPLICATE_PRESETS(std::string const& presetName, cmJSONState* state); void CYCLIC_PRESET_INHERITANCE(std::string const& presetName, - cmJSONState* state); + std::string const& kind, cmJSONState* state); void INHERITED_PRESET_UNREACHABLE_FROM_FILE(std::string const& presetName, + std::string const& kind, cmJSONState* state); void CONFIGURE_PRESET_UNREACHABLE_FROM_FILE(std::string const& presetName,
diff --git a/Source/cmCMakePresetsGraph.cxx b/Source/cmCMakePresetsGraph.cxx index 7e57854..98dc6c6 100644 --- a/Source/cmCMakePresetsGraph.cxx +++ b/Source/cmCMakePresetsGraph.cxx
@@ -109,8 +109,8 @@ { switch (cycleStatus[preset.Name]) { case CycleStatus::InProgress: - cmCMakePresetsErrors::CYCLIC_PRESET_INHERITANCE(preset.Name, - &graph.parseState); + cmCMakePresetsErrors::CYCLIC_PRESET_INHERITANCE( + preset.Name, preset.kind(), &graph.parseState); return false; case CycleStatus::Verified: return true; @@ -121,28 +121,32 @@ cycleStatus[preset.Name] = CycleStatus::InProgress; if (preset.Environment.count("") != 0) { - cmCMakePresetsErrors::INVALID_PRESET_NAMED(preset.Name, &graph.parseState); + cmCMakePresetsErrors::INVALID_PRESET_NAMED( + preset.Name, preset.kind(), &graph.parseState, + "Empty environment variable names are not allowed"); return false; } bool result = preset.VisitPresetBeforeInherit(); if (!result) { - cmCMakePresetsErrors::INVALID_PRESET_NAMED(preset.Name, &graph.parseState); + cmCMakePresetsErrors::INVALID_PRESET_NAMED( + preset.Name, preset.kind(), &graph.parseState, preset.ErrorDetail); return false; } for (auto const& i : preset.Inherits) { auto parent = presets.find(i); if (parent == presets.end()) { - cmCMakePresetsErrors::INVALID_PRESET_NAMED(preset.Name, - &graph.parseState); + cmCMakePresetsErrors::INVALID_PRESET_NAMED( + preset.Name, preset.kind(), &graph.parseState, + cmStrCat("Could not find inherited preset \"", i, "\"")); return false; } auto& parentPreset = parent->second.Unexpanded; if (!preset.OriginFile->ReachableFiles.count(parentPreset.OriginFile)) { cmCMakePresetsErrors::INHERITED_PRESET_UNREACHABLE_FROM_FILE( - preset.Name, &graph.parseState); + preset.Name, preset.kind(), &graph.parseState); return false; } @@ -152,8 +156,8 @@ result = preset.VisitPresetInherit(parentPreset); if (!result) { - cmCMakePresetsErrors::INVALID_PRESET_NAMED(preset.Name, - &graph.parseState); + cmCMakePresetsErrors::INVALID_PRESET_NAMED( + preset.Name, preset.kind(), &graph.parseState, preset.ErrorDetail); return false; } @@ -171,7 +175,8 @@ result = preset.VisitPresetAfterInherit(graph.GetVersion(preset), &graph.parseState); if (!result) { - cmCMakePresetsErrors::INVALID_PRESET_NAMED(preset.Name, &graph.parseState); + cmCMakePresetsErrors::INVALID_PRESET_NAMED( + preset.Name, preset.kind(), &graph.parseState, preset.ErrorDetail); return false; } @@ -453,8 +458,9 @@ switch (VisitEnv(*v.second, envCycles[v.first], macroExpanders, graph->GetVersion(preset))) { case ExpandMacroResult::Error: - cmCMakePresetsErrors::INVALID_PRESET_NAMED(preset.Name, - &graph->parseState); + cmCMakePresetsErrors::INVALID_PRESET_NAMED( + preset.Name, preset.kind(), &graph->parseState, + "Invalid macro expansion"); return false; case ExpandMacroResult::Ignore: out.reset(); @@ -471,8 +477,8 @@ cm::optional<bool> result; if (!preset.ConditionEvaluator->Evaluate( macroExpanders, graph->GetVersion(preset), result)) { - cmCMakePresetsErrors::INVALID_PRESET_NAMED(preset.Name, - &graph->parseState); + cmCMakePresetsErrors::INVALID_PRESET_NAMED( + preset.Name, preset.kind(), &graph->parseState, "Invalid condition"); return false; } if (!result) { @@ -911,6 +917,8 @@ { auto& preset = *this; if (preset.Environment.count("") != 0) { + this->ErrorDetail = + "Empty environment variable names are not allowed in configure presets"; return false; } @@ -945,6 +953,7 @@ } if (preset.CacheVariables.count("") != 0) { + this->ErrorDetail = "Empty cache variable names are not allowed"; return false; } } @@ -977,7 +986,12 @@ bool cmCMakePresetsGraph::BuildPreset::VisitPresetAfterInherit( int /* version */, cmJSONState* /*stat*/) { - return this->Hidden || !this->ConfigurePreset.empty(); + if (!this->Hidden && this->ConfigurePreset.empty()) { + this->ErrorDetail = "Build presets must either be hidden or have an " + "associated configure preset"; + return false; + } + return true; } bool cmCMakePresetsGraph::TestPreset::VisitPresetInherit( @@ -1087,7 +1101,12 @@ bool cmCMakePresetsGraph::TestPreset::VisitPresetAfterInherit( int /* version */, cmJSONState* /*state*/) { - return this->Hidden || !this->ConfigurePreset.empty(); + if (!this->Hidden && this->ConfigurePreset.empty()) { + this->ErrorDetail = "Test presets must either be hidden or have an " + "associated configure preset"; + return false; + } + return true; } bool cmCMakePresetsGraph::PackagePreset::VisitPresetInherit( @@ -1116,7 +1135,12 @@ bool cmCMakePresetsGraph::PackagePreset::VisitPresetAfterInherit( int /* version */, cmJSONState* /*state*/) { - return this->Hidden || !this->ConfigurePreset.empty(); + if (!this->Hidden && this->ConfigurePreset.empty()) { + this->ErrorDetail = "Package presets must either be hidden or have an " + "associated configure preset"; + return false; + } + return true; } bool cmCMakePresetsGraph::WorkflowPreset::VisitPresetInherit( @@ -1142,12 +1166,13 @@ } bool cmCMakePresetsGraph::ReadProjectPresets(std::string const& sourceDir, - bool allowNoFiles) + std::string const& presetsFile, + ReadOption readFilesOption) { this->SourceDir = cmSystemTools::CollapseFullPath(sourceDir); this->ClearPresets(); - if (!this->ReadProjectPresetsInternal(allowNoFiles)) { + if (!this->ReadProjectPresetsInternal(presetsFile, readFilesOption)) { this->ClearPresets(); return false; } @@ -1183,33 +1208,46 @@ return {}; } -bool cmCMakePresetsGraph::ReadProjectPresetsInternal(bool allowNoFiles) +bool cmCMakePresetsGraph::ReadProjectPresetsInternal( + std::string const& presetsFile, ReadOption readFilesOption) { bool haveOneFile = false; File* file; - std::string filename = GetUserFilename(this->SourceDir); + std::string filename; std::vector<File*> inProgressFiles; - if (cmSystemTools::FileExists(filename)) { - if (!this->ReadJSONFile(filename, RootType::User, ReadReason::Root, - inProgressFiles, file, this->errors)) { - return false; - } - haveOneFile = true; - } else { - filename = GetFilename(this->SourceDir); + if (!presetsFile.empty()) { + filename = presetsFile; if (cmSystemTools::FileExists(filename)) { - if (!this->ReadJSONFile(filename, RootType::Project, ReadReason::Root, + if (!this->ReadJSONFile(filename, RootType::Any, ReadReason::Root, inProgressFiles, file, this->errors)) { return false; } haveOneFile = true; } + } else { + filename = GetUserFilename(this->SourceDir); + if (cmSystemTools::FileExists(filename)) { + if (!this->ReadJSONFile(filename, RootType::User, ReadReason::Root, + inProgressFiles, file, this->errors)) { + return false; + } + haveOneFile = true; + } else { + filename = GetFilename(this->SourceDir); + if (cmSystemTools::FileExists(filename)) { + if (!this->ReadJSONFile(filename, RootType::Project, ReadReason::Root, + inProgressFiles, file, this->errors)) { + return false; + } + haveOneFile = true; + } + } } assert(inProgressFiles.empty()); if (!haveOneFile) { - if (allowNoFiles) { + if (readFilesOption == ReadOption::AllowNoFiles) { return true; } cmCMakePresetsErrors::FILE_NOT_FOUND(filename, &this->parseState);
diff --git a/Source/cmCMakePresetsGraph.h b/Source/cmCMakePresetsGraph.h index 209fd64..f04dfdd 100644 --- a/Source/cmCMakePresetsGraph.h +++ b/Source/cmCMakePresetsGraph.h
@@ -84,6 +84,8 @@ std::map<std::string, cm::optional<std::string>> Environment; + std::string ErrorDetail; + virtual bool VisitPresetInherit(Preset const& parent) = 0; virtual bool VisitPresetBeforeInherit() { return true; } @@ -453,8 +455,15 @@ return preset.OriginFile->Version; } - bool ReadProjectPresets(std::string const& sourceDir, - bool allowNoFiles = false); + enum class ReadOption + { + RequireFiles, + AllowNoFiles, + }; + + bool ReadProjectPresets( + std::string const& sourceDir, std::string const& presetsFile, + ReadOption readFilesOption = ReadOption::RequireFiles); std::string GetGeneratorForPreset(std::string const& presetName) const; @@ -472,6 +481,7 @@ private: enum class RootType { + Any, Project, User, }; @@ -482,7 +492,8 @@ Included, }; - bool ReadProjectPresetsInternal(bool allowNoFiles); + bool ReadProjectPresetsInternal(std::string const& presetsFile, + ReadOption readFilesOption); bool ReadJSONFile(std::string const& filename, RootType rootType, ReadReason readReason, std::vector<File*>& inProgressFiles, File*& file, std::string& errMsg);
diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index e57bd9d..caf450e 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx
@@ -42,6 +42,7 @@ #include "cm_parse_date.h" +#include "cmCMakePresetsArgs.h" #include "cmCMakePresetsGraph.h" #include "cmCTestBuildAndTest.h" #include "cmCTestScriptHandler.h" @@ -1501,13 +1502,13 @@ return false; } -bool cmCTest::SetArgsFromPreset(std::string const& presetName, - bool listPresets) +bool cmCTest::SetArgsFromPreset(cmCMakePresetsArgs const& args) { auto const workingDirectory = cmSystemTools::GetLogicalWorkingDirectory(); cmCMakePresetsGraph settingsFile; - auto result = settingsFile.ReadProjectPresets(workingDirectory); + auto result = + settingsFile.ReadProjectPresets(workingDirectory, args.PresetsFile); if (result != true) { cmSystemTools::Error(cmStrCat("Could not read presets from ", workingDirectory, ":\n", @@ -1515,13 +1516,13 @@ return false; } - if (listPresets) { + if (args.ListPresets) { settingsFile.PrintTestPresetList(); return true; } auto resolveResult = - settingsFile.ResolvePreset(presetName, settingsFile.TestPresets); + settingsFile.ResolvePreset(args.PresetName, settingsFile.TestPresets); auto resolveError = cmCMakePresetsGraph::FormatPresetError<cmCMakePresetsGraph::TestPreset>( resolveResult.StatusCode, resolveResult.ErrorPresetName, @@ -1801,8 +1802,7 @@ bool processSteps = false; bool SRArgumentSpecified = false; std::vector<std::pair<std::string, bool>> runScripts; - bool listPresets = false; - std::string presetName; + cmCMakePresetsArgs presetsArgs; // copy the command line cm::append(this->Impl->InitialCommandLineArguments, args); @@ -1990,14 +1990,21 @@ auto const presetArguments = std::vector<CommandArgument>{ CommandArgument{ "--list-presets", CommandArgument::Values::Zero, - [&listPresets](std::string const&) -> bool { - listPresets = true; + [&presetsArgs](std::string const&) -> bool { + presetsArgs.ListPresets = true; return true; } }, CommandArgument{ "--preset", "'--preset' requires an argument", CommandArgument::Values::One, - [&presetName](std::string const& presetArg) -> bool { - presetName = presetArg; + [&presetsArgs](std::string const& presetArg) -> bool { + presetsArgs.PresetName = presetArg; + return true; + } }, + CommandArgument{ "--presets-file", "'--presets-file' requires an argument", + CommandArgument::Values::One, + [&presetsArgs](std::string const& presetFileArg) -> bool { + presetsArgs.PresetsFile = + cmSystemTools::ToNormalizedPathOnDisk(presetFileArg); return true; } } }; @@ -2490,9 +2497,9 @@ } } - if (listPresets || !presetName.empty()) { - bool success = this->SetArgsFromPreset(presetName, listPresets); - if (listPresets) { + if (presetsArgs.HasPresetsArg()) { + bool success = this->SetArgsFromPreset(presetsArgs); + if (presetsArgs.ListPresets) { return static_cast<int>(!success); } if (!success) { @@ -2607,8 +2614,8 @@ } } - // TestProgressOutput only supported if console supports it and not logging - // to a file + // TestProgressOutput only supported if console supports it and not + // logging to a file this->Impl->TestProgressOutput = this->Impl->TestProgressOutput && !this->Impl->OutputLogFile && this->ProgressOutputSupportedByConsole(); #ifdef _WIN32 @@ -3260,6 +3267,7 @@ // CTest Test Step set("CTEST_TEST_TIMEOUT", "TimeOut"); + set("CTEST_TEST_COVERAGE_TOOL", "CTestTestCoverageTool"); // CTest Coverage Step set("CTEST_COVERAGE_COMMAND", "CoverageCommand");
diff --git a/Source/cmCTest.h b/Source/cmCTest.h index 46c88b7..8dce347 100644 --- a/Source/cmCTest.h +++ b/Source/cmCTest.h
@@ -20,6 +20,7 @@ #include "cmProcessOutput.h" class cmake; +class cmCMakePresetsArgs; class cmGeneratedFileStream; class cmInstrumentation; class cmMakefile; @@ -452,7 +453,7 @@ bool AddVariableDefinition(std::string const& arg); /** set command line arguments read from a test preset */ - bool SetArgsFromPreset(std::string const& presetName, bool listPresets); + bool SetArgsFromPreset(cmCMakePresetsArgs const& args); /** returns true iff the console supports progress output */ static bool ProgressOutputSupportedByConsole();
diff --git a/Source/cmDocumentation.cxx b/Source/cmDocumentation.cxx index 66e3730..0cc2b64 100644 --- a/Source/cmDocumentation.cxx +++ b/Source/cmDocumentation.cxx
@@ -26,7 +26,7 @@ #include "cmVersion.h" namespace { -cmDocumentationEntry const cmDocumentationStandardOptions[21] = { +cmDocumentationEntry const cmDocumentationStandardOptions[] = { { "-h,-H,--help,-help,-usage,/?", "Print usage information and exit." }, { "--version[=json-v1],-version[=json-v1],/V[=json-v1],/version[=json-v1] " "[<file>]", @@ -39,6 +39,12 @@ { "--help-command-list [<file>]", "List commands with help available and exit." }, { "--help-commands [<file>]", "Print cmake-commands manual and exit." }, + { "--help-diagnostic <diag> [<file>]", + "Print help for one diagnostic and exit." }, + { "--help-diagnostic-list [<file>]", + "List diagnostics with help available and exit." }, + { "--help-diagnostics [<file>]", + "Print cmake-diagnostics manual and exit." }, { "--help-module <mod> [<file>]", "Print help for one module and exit." }, { "--help-module-list [<file>]", "List modules with help available and exit." }, @@ -164,6 +170,8 @@ return this->PrintHelpOneManual(os); case cmDocumentation::OneCommand: return this->PrintHelpOneCommand(os); + case cmDocumentation::OneDiagnostic: + return this->PrintHelpOneDiagnostic(os); case cmDocumentation::OneModule: return this->PrintHelpOneModule(os); case cmDocumentation::OnePolicy: @@ -176,6 +184,8 @@ return this->PrintHelpListManuals(os); case cmDocumentation::ListCommands: return this->PrintHelpListCommands(os); + case cmDocumentation::ListDiagnostics: + return this->PrintHelpListDiagnostics(os); case cmDocumentation::ListModules: return this->PrintHelpListModules(os); case cmDocumentation::ListProperties: @@ -377,6 +387,11 @@ cmSystemTools::Message( "Warning: --help-compatcommands no longer supported"); return true; + } else if (strcmp(argv[i], "--help-diagnostics") == 0) { + help.HelpType = cmDocumentation::OneManual; + help.Argument = "cmake-diagnostics.7"; + i += int(get_opt_argument(i + 1, help.Filename)); + this->WarnFormFromFilename(help, result); } else if (strcmp(argv[i], "--help-full") == 0) { help.HelpType = cmDocumentation::Full; i += int(get_opt_argument(i + 1, help.Filename)); @@ -393,6 +408,12 @@ i += int(get_opt_argument(i + 1, help.Filename)); help.Argument = cmSystemTools::LowerCase(help.Argument); this->WarnFormFromFilename(help, result); + } else if (strcmp(argv[i], "--help-diagnostic") == 0) { + help.HelpType = cmDocumentation::OneDiagnostic; + i += int(get_opt_argument(i + 1, help.Argument)); + i += int(get_opt_argument(i + 1, help.Filename)); + help.Argument = cmSystemTools::UpperCase(help.Argument); + this->WarnFormFromFilename(help, result); } else if (strcmp(argv[i], "--help-module") == 0) { help.HelpType = cmDocumentation::OneModule; i += int(get_opt_argument(i + 1, help.Argument)); @@ -421,6 +442,9 @@ } else if (strcmp(argv[i], "--help-command-list") == 0) { help.HelpType = cmDocumentation::ListCommands; i += int(get_opt_argument(i + 1, help.Filename)); + } else if (strcmp(argv[i], "--help-diagnostic-list") == 0) { + help.HelpType = cmDocumentation::ListDiagnostics; + i += int(get_opt_argument(i + 1, help.Filename)); } else if (strcmp(argv[i], "--help-module-list") == 0) { help.HelpType = cmDocumentation::ListModules; i += int(get_opt_argument(i + 1, help.Filename)); @@ -622,6 +646,25 @@ return true; } +bool cmDocumentation::PrintHelpOneDiagnostic(std::ostream& os) +{ + std::string dname = cmSystemTools::UpperCase(this->CurrentArgument); + if (this->PrintFiles(os, cmStrCat("diagnostic/", dname))) { + return true; + } + // Argument was not a command. Complain. + os << "Argument \"" << this->CurrentArgument + << "\" to --help-command is not a CMake diagnostic. " + "Use --help-diagnostic-list to see all diagnostics.\n"; + return false; +} + +bool cmDocumentation::PrintHelpListDiagnostics(std::ostream& os) +{ + this->PrintNames(os, "diagnostic/*"); + return true; +} + bool cmDocumentation::PrintHelpOneModule(std::ostream& os) { std::string mname = this->CurrentArgument;
diff --git a/Source/cmDocumentation.h b/Source/cmDocumentation.h index dd0fadb..e23cee9 100644 --- a/Source/cmDocumentation.h +++ b/Source/cmDocumentation.h
@@ -30,6 +30,7 @@ Full, ListManuals, ListCommands, + ListDiagnostics, ListModules, ListProperties, ListVariables, @@ -38,6 +39,7 @@ OneArbitrary, OneManual, OneCommand, + OneDiagnostic, OneModule, OneProperty, OneVariable, @@ -124,12 +126,14 @@ bool PrintHelpOneArbitrary(std::ostream& os); bool PrintHelpOneManual(std::ostream& os); bool PrintHelpOneCommand(std::ostream& os); + bool PrintHelpOneDiagnostic(std::ostream& os); bool PrintHelpOneModule(std::ostream& os); bool PrintHelpOnePolicy(std::ostream& os); bool PrintHelpOneProperty(std::ostream& os); bool PrintHelpOneVariable(std::ostream& os); bool PrintHelpListManuals(std::ostream& os); bool PrintHelpListCommands(std::ostream& os); + bool PrintHelpListDiagnostics(std::ostream& os); bool PrintHelpListModules(std::ostream& os); bool PrintHelpListProperties(std::ostream& os); bool PrintHelpListVariables(std::ostream& os);
diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx index aeb68a3..9d8311d 100644 --- a/Source/cmExportFileGenerator.cxx +++ b/Source/cmExportFileGenerator.cxx
@@ -63,8 +63,8 @@ openmodeApp); } else { // Generate atomically and with copy-if-different. - std::unique_ptr<cmGeneratedFileStream> ap( - new cmGeneratedFileStream(this->MainImportFile, true)); + auto ap = + cm::make_unique<cmGeneratedFileStream>(this->MainImportFile, true); ap->SetCopyIfDifferent(true); foutPtr = std::move(ap); }
diff --git a/Source/cmExtraEclipseCDT4Generator.cxx b/Source/cmExtraEclipseCDT4Generator.cxx index 9a5e109..7427422 100644 --- a/Source/cmExtraEclipseCDT4Generator.cxx +++ b/Source/cmExtraEclipseCDT4Generator.cxx
@@ -463,7 +463,8 @@ } void cmExtraEclipseCDT4Generator::WriteGroups( - SourceGroupVector const& sourceGroups, std::string& linkName, + SourceGroupVector const& sourceGroups, + cmSourceGroupFiles const& sourceGroupFiles, std::string& linkName, cmXMLWriter& xml) { for (auto const& sg : sourceGroups) { @@ -475,10 +476,11 @@ xml, linkName3, "virtual:/virtual", VirtualFolder); SourceGroupVector const& children = sg->GetGroupChildren(); if (!children.empty()) { - this->WriteGroups(children, linkName, xml); + this->WriteGroups(children, sourceGroupFiles, linkName, xml); } - std::vector<cmSourceFile const*> sFiles = sg->GetSourceFiles(); - for (cmSourceFile const* file : sFiles) { + std::vector<cmSourceFile const*> const& sourceFiles = + sourceGroupFiles.GetSourceFiles(sg.get()); + for (cmSourceFile const* file : sourceFiles) { std::string const& fullPath = file->GetFullPath(); if (!cmSystemTools::FileIsDirectory(fullPath)) { @@ -521,17 +523,18 @@ break; // skip generating the linked resources to the source files } // get the files from the source lists then add them to the groups + cmSourceGroupFiles sourceGroupFiles; std::vector<cmSourceFile*> files; target->GetSourceFiles( files, makefile->GetSafeDefinition("CMAKE_BUILD_TYPE")); for (cmSourceFile* sf : files) { // Add the file to the list of sources. - std::string const& source = sf->ResolveFullPath(); - cmSourceGroup* sourceGroup = lg->FindSourceGroup(source); - sourceGroup->AssignSource(sf); + sourceGroupFiles.Add(lg->FindSourceGroup(sf->ResolveFullPath()), + sf); } - this->WriteGroups(makefile->GetSourceGroups(), linkName2, xml); + this->WriteGroups(makefile->GetSourceGroups(), sourceGroupFiles, + linkName2, xml); } break; // ignore all others: default:
diff --git a/Source/cmExtraEclipseCDT4Generator.h b/Source/cmExtraEclipseCDT4Generator.h index aa7cc25..fa92fb4 100644 --- a/Source/cmExtraEclipseCDT4Generator.h +++ b/Source/cmExtraEclipseCDT4Generator.h
@@ -88,6 +88,7 @@ cmLocalGenerator& lg); void WriteGroups(SourceGroupVector const& sourceGroups, + cmSourceGroupFiles const& sourceGroupFiles, std::string& linkName, cmXMLWriter& xml); void CreateLinksToSubprojects(cmXMLWriter& xml, std::string const& baseDir); void CreateLinksForTargets(cmXMLWriter& xml);
diff --git a/Source/cmFastbuildNormalTargetGenerator.cxx b/Source/cmFastbuildNormalTargetGenerator.cxx index 6aa2ee4..63f7bbd 100644 --- a/Source/cmFastbuildNormalTargetGenerator.cxx +++ b/Source/cmFastbuildNormalTargetGenerator.cxx
@@ -1413,8 +1413,8 @@ useUnity = false; } - // List of sources isolated from the unity build if enabled. - std::set<std::string> isolatedFromUnity; + // List of sources excluded from the unity build if enabled. + std::set<std::string> excludedFromUnity; // Mapping from unity group (if any) to sources belonging to that group. std::map<std::string, std::vector<std::string>> sourcesWithGroups; @@ -1425,10 +1425,10 @@ std::string const pathToFile = srcFile.GetFullPath(); bool fileUsesUnity = useUnity; if (useUnity) { - // Check if the source should be added to "UnityInputIsolatedFiles". + // Check if the source should be added to "UnityInputExcludedFiles". if (srcFile.GetPropertyAsBool(SKIP_UNITY_BUILD_INCLUSION)) { fileUsesUnity = false; - isolatedFromUnity.emplace(pathToFile); + excludedFromUnity.emplace(pathToFile); } std::string const perFileUnityGroup = srcFile.GetSafeProperty(UNITY_GROUP); @@ -1567,27 +1567,27 @@ } if (useUnity) { target.UnityNodes = - GenerateUnity(objects, isolatedFromUnity, sourcesWithGroups); + GenerateUnity(objects, excludedFromUnity, sourcesWithGroups); } } FastbuildUnityNode cmFastbuildNormalTargetGenerator::GetOneUnity( - std::set<std::string> const& isolatedFiles, std::vector<std::string>& files, + std::set<std::string> const& excludedFiles, std::vector<std::string>& files, int unitySize) const { FastbuildUnityNode result; for (auto iter = files.begin(); iter != files.end();) { std::string pathToFile = std::move(*iter); iter = files.erase(iter); - // This source must be isolated - if (isolatedFiles.find(pathToFile) != isolatedFiles.end()) { + // This source must be excluded from the generated unity file. + if (excludedFiles.find(pathToFile) != excludedFiles.end()) { result.UnityInputFiles.emplace_back(pathToFile); - result.UnityInputIsolatedFiles.emplace_back(std::move(pathToFile)); + result.UnityInputExcludedFiles.emplace_back(std::move(pathToFile)); } else { result.UnityInputFiles.emplace_back(std::move(pathToFile)); } if (int(result.UnityInputFiles.size() - - result.UnityInputIsolatedFiles.size()) == unitySize) { + result.UnityInputExcludedFiles.size()) == unitySize) { break; } } @@ -1617,7 +1617,7 @@ std::vector<FastbuildUnityNode> cmFastbuildNormalTargetGenerator::GenerateUnity( std::vector<FastbuildObjectListNode>& objects, - std::set<std::string> const& isolatedSources, + std::set<std::string> const& excludedSources, std::map<std::string, std::vector<std::string>> const& sourcesWithGroups) { int const unitySize = GetUnityBatchSize(); @@ -1650,14 +1650,14 @@ // General unity batching of the remaining (non-grouped) sources. while (!obj.CompilerInputFiles.empty()) { FastbuildUnityNode node = - GetOneUnity(isolatedSources, obj.CompilerInputFiles, unitySize); + GetOneUnity(excludedSources, obj.CompilerInputFiles, unitySize); node.Name = cmStrCat(this->GetName(), "_Unity_", ++unityNumber); node.UnityOutputPath = obj.CompilerOutputPath; node.UnityOutputPattern = cmStrCat(node.Name, ext); - // Unity group of size 1 doesn't make sense - just isolate the source. + // Unity group of size 1 doesn't make sense - just exclude the source. if (groupedNode.UnityInputFiles.size() == 1) { - node.UnityInputIsolatedFiles.emplace_back( + node.UnityInputExcludedFiles.emplace_back( groupedNode.UnityInputFiles[0]); node.UnityInputFiles.emplace_back( std::move(groupedNode.UnityInputFiles[0]));
diff --git a/Source/cmFastbuildNormalTargetGenerator.h b/Source/cmFastbuildNormalTargetGenerator.h index 8a01f77..bc630b4 100644 --- a/Source/cmFastbuildNormalTargetGenerator.h +++ b/Source/cmFastbuildNormalTargetGenerator.h
@@ -76,14 +76,14 @@ std::string& args) const; void GenerateCudaDeviceLink(FastbuildTarget& target) const; void GenerateObjects(FastbuildTarget& target); - FastbuildUnityNode GetOneUnity(std::set<std::string> const& isolatedFiles, + FastbuildUnityNode GetOneUnity(std::set<std::string> const& excludedFiles, std::vector<std::string>& files, int unitySize) const; int GetUnityBatchSize() const; std::vector<FastbuildUnityNode> GenerateUnity( std::vector<FastbuildObjectListNode>& objects, - std::set<std::string> const& isolatedSources, + std::set<std::string> const& excludedSources, std::map<std::string, std::vector<std::string>> const& sourcesWithGroups); FastbuildUnityNode GenerateGroupedUnityNode( std::vector<std::string>& inputFiles,
diff --git a/Source/cmFileAPICodemodel.cxx b/Source/cmFileAPICodemodel.cxx index 3d398b2..8b214b6 100644 --- a/Source/cmFileAPICodemodel.cxx +++ b/Source/cmFileAPICodemodel.cxx
@@ -486,7 +486,7 @@ void ProcessLanguages(); void ProcessLanguage(std::string const& lang); - Json::ArrayIndex AddSourceGroup(cmSourceGroup* sg); + Json::ArrayIndex AddSourceGroup(cmSourceGroup const* sg); CompileData BuildCompileData(cmSourceFile* sf); CompileData MergeCompileData(CompileData const& fd); Json::ArrayIndex AddSourceCompileGroup(cmSourceFile* sf, @@ -1469,7 +1469,7 @@ } } -Json::ArrayIndex Target::AddSourceGroup(cmSourceGroup* sg) +Json::ArrayIndex Target::AddSourceGroup(cmSourceGroup const* sg) { auto i = this->SourceGroupsMap.find(sg); if (i == this->SourceGroupsMap.end()) { @@ -1802,7 +1802,8 @@ source["fileSetIndex"] = fsit->second; } - if (cmSourceGroup* sg = this->GT->LocalGenerator->FindSourceGroup(path)) { + if (cmSourceGroup const* sg = + this->GT->LocalGenerator->FindSourceGroup(path)) { Json::ArrayIndex const groupIndex = this->AddSourceGroup(sg); source["sourceGroupIndex"] = groupIndex; this->SourceGroups[groupIndex].SourceIndexes.append(si); @@ -1888,7 +1889,8 @@ source["fileSetIndex"] = fsit->second; } - if (cmSourceGroup* sg = this->GT->LocalGenerator->FindSourceGroup(path)) { + if (cmSourceGroup const* sg = + this->GT->LocalGenerator->FindSourceGroup(path)) { Json::ArrayIndex const groupIndex = this->AddSourceGroup(sg); source["sourceGroupIndex"] = groupIndex; this->SourceGroups[groupIndex].InterfaceSourceIndexes.append(si);
diff --git a/Source/cmGhsMultiTargetGenerator.cxx b/Source/cmGhsMultiTargetGenerator.cxx index 9c08298..5c1d1c4 100644 --- a/Source/cmGhsMultiTargetGenerator.cxx +++ b/Source/cmGhsMultiTargetGenerator.cxx
@@ -545,7 +545,7 @@ std::map<std::string, std::vector<cmSourceFile*>> groupFiles; std::set<std::string> groupNames; for (cmSourceFile* sf : sources) { - cmSourceGroup* sourceGroup = + cmSourceGroup const* sourceGroup = this->LocalGenerator->FindSourceGroup(sf->ResolveFullPath()); std::string gn = sourceGroup->GetFullName(); groupFiles[gn].push_back(sf);
diff --git a/Source/cmGlobalFastbuildGenerator.cxx b/Source/cmGlobalFastbuildGenerator.cxx index 9013c5e..e906e6f 100644 --- a/Source/cmGlobalFastbuildGenerator.cxx +++ b/Source/cmGlobalFastbuildGenerator.cxx
@@ -1201,9 +1201,9 @@ WriteVariable("UnityOutputPath", Quote(Unity.UnityOutputPath), 2); WriteVariable("UnityOutputPattern", Quote(Unity.UnityOutputPattern), 2); WriteArray("UnityInputFiles", Wrap(Unity.UnityInputFiles), 2); - if (!Unity.UnityInputIsolatedFiles.empty()) { - WriteArray("UnityInputIsolatedFiles", - Wrap(Unity.UnityInputIsolatedFiles), 2); + if (!Unity.UnityInputExcludedFiles.empty()) { + WriteArray("UnityInputExcludedFiles", + Wrap(Unity.UnityInputExcludedFiles), 2); } if (UsingRelativePaths) { WriteVariable("UseRelativePaths_Experimental", "true", 2);
diff --git a/Source/cmGlobalFastbuildGenerator.h b/Source/cmGlobalFastbuildGenerator.h index f2aa938..07e8772 100644 --- a/Source/cmGlobalFastbuildGenerator.h +++ b/Source/cmGlobalFastbuildGenerator.h
@@ -233,7 +233,7 @@ std::string UnityOutputPath; std::vector<std::string> UnityInputFiles; std::string UnityOutputPattern; - std::vector<std::string> UnityInputIsolatedFiles; + std::vector<std::string> UnityInputExcludedFiles; FastbuildUnityNode() : FastbuildTargetBase(FastbuildTargetType::UNITY) {
diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx index c273c87..bfbb24f 100644 --- a/Source/cmGlobalVisualStudioGenerator.cxx +++ b/Source/cmGlobalVisualStudioGenerator.cxx
@@ -1063,7 +1063,7 @@ item = cmSystemTools::CollapseFullPath(item, mf->GetCurrentSourceDirectory()); } - cmSourceGroup* sg = + cmSourceGroup const* sg = cmSourceGroup::FindSourceGroup(item, mf->GetSourceGroups()); std::string folderName = sg->GetFullName(); if (folderName.empty()) {
diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index 1fedd91..1e467e7 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx
@@ -4563,7 +4563,7 @@ auto addSourceToGroup = [this, >gt, &generator](std::string const& source) { - cmSourceGroup* sourceGroup = generator->FindSourceGroup(source); + cmSourceGroup const* sourceGroup = generator->FindSourceGroup(source); cmXCodeObject* pbxgroup = this->CreateOrGetPBXGroup(gtgt.get(), sourceGroup); std::string key = GetGroupMapKeyFromPath(gtgt.get(), source); @@ -4639,7 +4639,7 @@ } cmXCodeObject* cmGlobalXCodeGenerator::CreateOrGetPBXGroup( - cmGeneratorTarget* gtgt, cmSourceGroup* sg) + cmGeneratorTarget* gtgt, cmSourceGroup const* sg) { std::string s; std::string target;
diff --git a/Source/cmGlobalXCodeGenerator.h b/Source/cmGlobalXCodeGenerator.h index 82bb9d5..114caec 100644 --- a/Source/cmGlobalXCodeGenerator.h +++ b/Source/cmGlobalXCodeGenerator.h
@@ -161,7 +161,7 @@ cm::string_view attributeValue); cmXCodeObject* CreateOrGetPBXGroup(cmGeneratorTarget* gtgt, - cmSourceGroup* sg); + cmSourceGroup const* sg); cmXCodeObject* CreatePBXGroup(cmXCodeObject* parent, std::string const& name); bool CreateGroups(std::vector<cmLocalGenerator*>& generators);
diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 6de9c50..fa14c0a 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx
@@ -1388,6 +1388,8 @@ AllConfigSources sources; sources.Sources = target->GetAllConfigSources(); + cmSourceGroupFiles sourceGroupFiles; + // Add CMakeLists.txt file with rule to re-run CMake for user convenience. if (target->GetType() != cmStateEnums::GLOBAL_TARGET && target->GetName() != CMAKE_CHECK_BUILD_SYSTEM_TARGET) { @@ -1425,9 +1427,7 @@ } } // Add the file to the list of sources. - std::string const source = sf->GetFullPath(); - cmSourceGroup* sourceGroup = this->FindSourceGroup(source); - sourceGroup->AssignSource(sf); + sourceGroupFiles.Add(this->FindSourceGroup(sf->GetFullPath()), sf); } // open the project @@ -1440,7 +1440,8 @@ // Loop through every source group. SourceGroupVector const& sourceGroups = this->Makefile->GetSourceGroups(); for (auto const& sg : sourceGroups) { - this->WriteGroup(sg.get(), target, fout, libName, configs, sources); + this->WriteGroup(sg.get(), target, fout, libName, configs, sources, + sourceGroupFiles); } fout << "\t</Files>\n"; @@ -1688,11 +1689,12 @@ bool cmLocalVisualStudio7Generator::WriteGroup( cmSourceGroup const* sg, cmGeneratorTarget* target, std::ostream& fout, std::string const& libName, std::vector<std::string> const& configs, - AllConfigSources const& sources) + AllConfigSources const& sources, cmSourceGroupFiles const& sourceGroupFiles) { cmGlobalVisualStudio7Generator* gg = static_cast<cmGlobalVisualStudio7Generator*>(this->GlobalGenerator); - std::vector<cmSourceFile const*> const& sourceFiles = sg->GetSourceFiles(); + std::vector<cmSourceFile const*> const& sourceFiles = + sourceGroupFiles.GetSourceFiles(sg); SourceGroupVector const& children = sg->GetGroupChildren(); // Write the children to temporary output. @@ -1700,7 +1702,7 @@ std::ostringstream tmpOut; for (auto const& child : children) { if (this->WriteGroup(child.get(), target, tmpOut, libName, configs, - sources)) { + sources, sourceGroupFiles)) { hasChildrenWithSources = true; } }
diff --git a/Source/cmLocalVisualStudio7Generator.h b/Source/cmLocalVisualStudio7Generator.h index 38df53b..885d8ca 100644 --- a/Source/cmLocalVisualStudio7Generator.h +++ b/Source/cmLocalVisualStudio7Generator.h
@@ -23,6 +23,7 @@ class cmMakefile; class cmSourceFile; class cmSourceGroup; +class cmSourceGroupFiles; class cmVS7GeneratorOptions : public cmVisualStudioGeneratorOptions { @@ -147,7 +148,8 @@ bool WriteGroup(cmSourceGroup const* sg, cmGeneratorTarget* target, std::ostream& fout, std::string const& libName, std::vector<std::string> const& configs, - AllConfigSources const& sources); + AllConfigSources const& sources, + cmSourceGroupFiles const& sourceGroupFiles); friend class cmLocalVisualStudio7GeneratorFCInfo; friend class cmLocalVisualStudio7GeneratorInternals;
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index d755360..11b5446 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx
@@ -3870,11 +3870,11 @@ bool global) { // Create the target. - std::unique_ptr<cmTarget> target( - new cmTarget(name, type, - global ? cmTarget::Visibility::ImportedGlobally - : cmTarget::Visibility::Imported, - this, cmTarget::PerConfig::Yes)); + auto target = + cm::make_unique<cmTarget>(name, type, + global ? cmTarget::Visibility::ImportedGlobally + : cmTarget::Visibility::Imported, + this, cmTarget::PerConfig::Yes); // Add to the set of available imported targets. this->ImportedTargets[name] = target.get(); @@ -3890,9 +3890,9 @@ std::string const& name) { auto foreign_name = cmStrCat("@foreign_", origin, "::", name); - std::unique_ptr<cmTarget> target(new cmTarget( + auto target = cm::make_unique<cmTarget>( foreign_name, cmStateEnums::TargetType::INTERFACE_LIBRARY, - cmTarget::Visibility::Foreign, this, cmTarget::PerConfig::Yes)); + cmTarget::Visibility::Foreign, this, cmTarget::PerConfig::Yes); this->ImportedTargets[foreign_name] = target.get(); this->GetGlobalGenerator()->IndexTarget(target.get());
diff --git a/Source/cmRST.cxx b/Source/cmRST.cxx index e490370..0d3f3bc 100644 --- a/Source/cmRST.cxx +++ b/Source/cmRST.cxx
@@ -20,7 +20,7 @@ : OS(os) , DocRoot(std::move(docroot)) , CMakeDirective("^.. (cmake:)?(" - "command|envvar|genex|signature|variable" + "command|diagnostic|envvar|genex|signature|variable" ")::") , CMakeModuleDirective("^.. cmake-module::[ \t]+([^ \t\n]+)$") , ParsedLiteralDirective("^.. parsed-literal::[ \t]*(.*)$") @@ -34,7 +34,7 @@ , ModuleRST(R"(^#\[(=*)\[\.rst:$)") , CMakeRole("(:cmake)?:(" "cref|" - "command|cpack_gen|generator|genex|" + "command|cpack_gen|diagnostic|generator|genex|" "variable|envvar|module|policy|" "prop_cache|prop_dir|prop_gbl|prop_inst|prop_sf|" "prop_test|prop_tgt|"
diff --git a/Source/cmSourceGroup.cxx b/Source/cmSourceGroup.cxx index 7251810..3b5feea 100644 --- a/Source/cmSourceGroup.cxx +++ b/Source/cmSourceGroup.cxx
@@ -7,7 +7,6 @@ #include <cm/memory> #include "cmGeneratorExpression.h" -#include "cmSourceFile.h" #include "cmStringAlgorithms.h" class cmSourceGroupInternals @@ -85,21 +84,11 @@ return this->GroupFiles.find(name) != this->GroupFiles.cend(); } -void cmSourceGroup::AssignSource(cmSourceFile const* sf) -{ - this->SourceFiles.push_back(sf); -} - std::set<std::string> const& cmSourceGroup::GetGroupFiles() const { return this->GroupFiles; } -std::vector<cmSourceFile const*> const& cmSourceGroup::GetSourceFiles() const -{ - return this->SourceFiles; -} - void cmSourceGroup::AddChild(std::unique_ptr<cmSourceGroup> child) { this->Internal->GroupChildren.push_back(std::move(child)); @@ -196,3 +185,19 @@ // Shouldn't get here, but just in case, return the default group. return groups.data()->get(); } + +void cmSourceGroupFiles::Add(cmSourceGroup const* sg, cmSourceFile const* sf) +{ + this->SourceFiles[sg].push_back(sf); +} + +std::vector<cmSourceFile const*> const& cmSourceGroupFiles::GetSourceFiles( + cmSourceGroup const* sg) const +{ + auto i = this->SourceFiles.find(sg); + if (i != this->SourceFiles.end()) { + return i->second; + } + static std::vector<cmSourceFile const*> const empty; + return empty; +}
diff --git a/Source/cmSourceGroup.h b/Source/cmSourceGroup.h index 4ce79ed..ff7d23f 100644 --- a/Source/cmSourceGroup.h +++ b/Source/cmSourceGroup.h
@@ -4,6 +4,7 @@ #include "cmConfigure.h" // IWYU pragma: keep +#include <map> #include <memory> #include <set> #include <string> @@ -100,22 +101,10 @@ cmSourceGroup* MatchChildrenRegex(std::string const& name) const; /** - * Assign the given source file to this group. Used only by - * generators. - */ - void AssignSource(cmSourceFile const* sf); - - /** * Get the set of file names explicitly added to this source group. */ std::set<std::string> const& GetGroupFiles() const; - /** - * Get the list of the source files that have been assigned to this - * source group. - */ - std::vector<cmSourceFile const*> const& GetSourceFiles() const; - SourceGroupVector const& GetGroupChildren() const; /** @@ -142,11 +131,18 @@ */ std::set<std::string> GroupFiles; - /** - * Vector of all source files that have been assigned to - * this group. - */ - std::vector<cmSourceFile const*> SourceFiles; - std::unique_ptr<cmSourceGroupInternals> Internal; }; + +/** \class cmSourceGroup + * \brief Used by generators to organize a target's sources into groups. + */ +class cmSourceGroupFiles +{ + std::map<cmSourceGroup const*, std::vector<cmSourceFile const*>> SourceFiles; + +public: + void Add(cmSourceGroup const* sg, cmSourceFile const* sf); + std::vector<cmSourceFile const*> const& GetSourceFiles( + cmSourceGroup const* sg) const; +};
diff --git a/Source/cmStringAlgorithms.h b/Source/cmStringAlgorithms.h index 966091a..9e846d5 100644 --- a/Source/cmStringAlgorithms.h +++ b/Source/cmStringAlgorithms.h
@@ -226,9 +226,9 @@ { } cmAlphaNum(char ch) - : View_(this->Digits_, 1) { this->Digits_[0] = ch; + this->View_ = cm::string_view(this->Digits_, 1); } cmAlphaNum(int val); cmAlphaNum(unsigned int val);
diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index 8ec4cb0..6bb6935 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx
@@ -2084,6 +2084,9 @@ static Resolver<Policies::LogicalPath> const resolver(RealOS); #endif resolver.Resolve(std::move(p), p); +#ifdef __clang_analyzer__ /* cplusplus.Move */ + p.clear(); +#endif return p; }
diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 6622957..71da193 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx
@@ -2007,14 +2007,16 @@ std::set<cmSourceGroup const*> groupsUsed; for (cmGeneratorTarget::AllConfigSource const& si : sources) { std::string const& source = si.Source->GetFullPath(); - cmSourceGroup* sourceGroup = this->LocalGenerator->FindSourceGroup(source); + cmSourceGroup const* sourceGroup = + this->LocalGenerator->FindSourceGroup(source); groupsUsed.insert(sourceGroup); } if (cmSourceFile const* srcCMakeLists = this->LocalGenerator->CreateVCProjBuildRule()) { std::string const& source = srcCMakeLists->GetFullPath(); - cmSourceGroup* sourceGroup = this->LocalGenerator->FindSourceGroup(source); + cmSourceGroup const* sourceGroup = + this->LocalGenerator->FindSourceGroup(source); groupsUsed.insert(sourceGroup); } @@ -2173,7 +2175,8 @@ for (ToolSource const& s : sources) { cmSourceFile const* sf = s.SourceFile; std::string const& source = sf->GetFullPath(); - cmSourceGroup* sourceGroup = this->LocalGenerator->FindSourceGroup(source); + cmSourceGroup const* sourceGroup = + this->LocalGenerator->FindSourceGroup(source); std::string const& filter = sourceGroup->GetFullName(); std::string path = this->ConvertPath(source, s.RelativePath); ConvertToWindowsSlash(path); @@ -6075,7 +6078,7 @@ std::string const& fullFileName = source->GetFullPath(); std::string const& srcDir = this->Makefile->GetCurrentSourceDirectory(); std::string const& binDir = this->Makefile->GetCurrentBinaryDirectory(); - cmSourceGroup* sourceGroup = + cmSourceGroup const* sourceGroup = this->LocalGenerator->FindSourceGroup(fullFileName); if (sourceGroup && !sourceGroup->GetFullName().empty()) { sourceGroupedFile =
diff --git a/Source/cmake.cxx b/Source/cmake.cxx index a51374f..2918cd1 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx
@@ -86,6 +86,7 @@ # include <cm3p/curl/curl.h> # include <cm3p/json/writer.h> +# include "cmCMakePresetsArgs.h" # include "cmConfigureLog.h" # include "cmFileAPI.h" # include "cmGraphVizWriter.h" @@ -1014,9 +1015,9 @@ #if !defined(CMAKE_BOOTSTRAP) std::string profilingFormat; std::string profilingOutput; - std::string presetName; - ListPresets listPresets = ListPresets::None; + cmCMakePresetsConfigureArgs presetsArgs; + using ListPresets = cmCMakePresetsConfigureArgs::ListPresetsOption; #endif auto EmptyStringArgLambda = [](std::string const&, cmake* state) -> bool { @@ -1429,24 +1430,31 @@ arguments.emplace_back("--preset", "No preset specified for --preset", CommandArgument::Values::One, [&](std::string const& value, cmake*) -> bool { - presetName = value; + presetsArgs.PresetName = value; return true; }); arguments.emplace_back( + "--presets-file", "No file specified for --presets-file", + CommandArgument::Values::One, + [&presetsArgs](std::string const& value, cmake*) -> bool { + presetsArgs.PresetsFile = cmSystemTools::ToNormalizedPathOnDisk(value); + return true; + }); + arguments.emplace_back( "--list-presets", CommandArgument::Values::ZeroOrOne, [&](std::string const& value, cmake*) -> bool { if (value.empty() || value == "configure") { - listPresets = ListPresets::Configure; + presetsArgs.ListPresets = ListPresets::Configure; } else if (value == "build") { - listPresets = ListPresets::Build; + presetsArgs.ListPresets = ListPresets::Build; } else if (value == "test") { - listPresets = ListPresets::Test; + presetsArgs.ListPresets = ListPresets::Test; } else if (value == "package") { - listPresets = ListPresets::Package; + presetsArgs.ListPresets = ListPresets::Package; } else if (value == "workflow") { - listPresets = ListPresets::Workflow; + presetsArgs.ListPresets = ListPresets::Workflow; } else if (value == "all") { - listPresets = ListPresets::All; + presetsArgs.ListPresets = ListPresets::All; } else { cmSystemTools::Error( "Invalid value specified for --list-presets.\n" @@ -1573,7 +1581,7 @@ #ifdef CMAKE_BOOTSTRAP false; #else - !presetName.empty(); + !presetsArgs.PresetName.empty(); #endif if (this->State->GetRole() == cmState::Role::Project && !haveSourceDir && @@ -1593,8 +1601,8 @@ } #if !defined(CMAKE_BOOTSTRAP) - if (listPresets != ListPresets::None || !presetName.empty()) { - this->SetArgsFromPreset(presetName, listPresets, haveBArg); + if (presetsArgs.HasPresetsArg()) { + this->SetArgsFromPreset(presetsArgs, haveBArg); } #endif } @@ -2009,11 +2017,14 @@ } #ifndef CMAKE_BOOTSTRAP -bool cmake::SetArgsFromPreset(std::string const& presetName, - ListPresets listPresets, bool haveBinaryDirArg) +bool cmake::SetArgsFromPreset(cmCMakePresetsConfigureArgs const& args, + bool haveBinaryDirArg) { + using ListPresets = cmCMakePresetsConfigureArgs::ListPresetsOption; + cmCMakePresetsGraph presetsGraph; - auto result = presetsGraph.ReadProjectPresets(this->GetHomeDirectory()); + auto result = presetsGraph.ReadProjectPresets(this->GetHomeDirectory(), + args.PresetsFile); if (result != true) { std::string errorMsg = cmStrCat("Could not read presets from ", this->GetHomeDirectory(), ":\n", @@ -2022,19 +2033,28 @@ return false; } - if (listPresets != ListPresets::None) { - if (listPresets == ListPresets::Configure) { - this->PrintPresetList(presetsGraph); - } else if (listPresets == ListPresets::Build) { - presetsGraph.PrintBuildPresetList(); - } else if (listPresets == ListPresets::Test) { - presetsGraph.PrintTestPresetList(); - } else if (listPresets == ListPresets::Package) { - presetsGraph.PrintPackagePresetList(); - } else if (listPresets == ListPresets::Workflow) { - presetsGraph.PrintWorkflowPresetList(); - } else if (listPresets == ListPresets::All) { - presetsGraph.PrintAllPresets(); + if (args.ListPresets != ListPresets::None) { + switch (args.ListPresets) { + case ListPresets::Configure: + this->PrintPresetList(presetsGraph); + break; + case ListPresets::Build: + presetsGraph.PrintBuildPresetList(); + break; + case ListPresets::Test: + presetsGraph.PrintTestPresetList(); + break; + case ListPresets::Package: + presetsGraph.PrintPackagePresetList(); + break; + case ListPresets::Workflow: + presetsGraph.PrintWorkflowPresetList(); + break; + case ListPresets::All: + presetsGraph.PrintAllPresets(); + break; + default: + break; } this->State->SetRoleToHelpForListPresets(); @@ -2042,7 +2062,7 @@ } auto resolveResult = - presetsGraph.ResolvePreset(presetName, presetsGraph.ConfigurePresets); + presetsGraph.ResolvePreset(args.PresetName, presetsGraph.ConfigurePresets); using ConfigurePreset = cmCMakePresetsGraph::ConfigurePreset; using S = cmCMakePresetsGraph::PresetResolveStatus; auto resolveError = cmCMakePresetsGraph::FormatPresetError<ConfigurePreset>( @@ -3897,13 +3917,14 @@ int cmake::Build(cmBuildArgs buildArgs, std::vector<std::string> targets, std::vector<std::string> nativeOptions, - cmBuildOptions& buildOptions, std::string const& presetName, - bool listPresets, std::vector<std::string> const& args) + cmBuildOptions& buildOptions, + cmCMakePresetsArgs const& presetsArgs, + std::vector<std::string> const& args) { buildArgs.timeout = cmDuration::zero(); #if !defined(CMAKE_BOOTSTRAP) - if (!presetName.empty() || listPresets) { + if (presetsArgs.HasPresetsArg()) { // If the binary directory was specified, use it to find // the source directory so we can locate the presets file. if (!buildArgs.binaryDir.empty() && @@ -3916,7 +3937,8 @@ cmSystemTools::GetLogicalWorkingDirectory()); } cmCMakePresetsGraph settingsFile; - auto result = settingsFile.ReadProjectPresets(this->GetHomeDirectory()); + auto result = settingsFile.ReadProjectPresets(this->GetHomeDirectory(), + presetsArgs.PresetsFile); if (result != true) { cmSystemTools::Error( cmStrCat("Could not read presets from ", this->GetHomeDirectory(), @@ -3924,13 +3946,13 @@ return 1; } - if (listPresets) { + if (presetsArgs.ListPresets) { settingsFile.PrintBuildPresetList(); return 0; } - auto resolveResult = - settingsFile.ResolvePreset(presetName, settingsFile.BuildPresets); + auto resolveResult = settingsFile.ResolvePreset(presetsArgs.PresetName, + settingsFile.BuildPresets); auto resolveError = cmCMakePresetsGraph::FormatPresetError<cmCMakePresetsGraph::BuildPreset>( resolveResult.StatusCode, resolveResult.ErrorPresetName, @@ -4261,8 +4283,7 @@ } #endif -int cmake::Workflow(std::string const& presetName, - WorkflowListPresets listPresets, WorkflowFresh fresh) +int cmake::Workflow(cmCMakePresetsWorkflowArgs const& args) { int exitStatus = 0; #ifndef CMAKE_BOOTSTRAP @@ -4270,7 +4291,8 @@ this->SetHomeOutputDirectory(cmSystemTools::GetLogicalWorkingDirectory()); cmCMakePresetsGraph settingsFile; - auto result = settingsFile.ReadProjectPresets(this->GetHomeDirectory()); + auto result = settingsFile.ReadProjectPresets(this->GetHomeDirectory(), + args.PresetsFile); if (result != true) { cmSystemTools::Error(cmStrCat("Could not read presets from ", this->GetHomeDirectory(), ":\n", @@ -4278,24 +4300,24 @@ return 1; } - if (listPresets == WorkflowListPresets::Yes) { + if (args.ListPresets) { settingsFile.PrintWorkflowPresetList(); return 0; } - auto presetPair = settingsFile.WorkflowPresets.find(presetName); + auto presetPair = settingsFile.WorkflowPresets.find(args.PresetName); if (presetPair == settingsFile.WorkflowPresets.end()) { cmSystemTools::Error(cmStrCat("No such workflow preset in ", - this->GetHomeDirectory(), ": \"", presetName, - '"')); + this->GetHomeDirectory(), ": \"", + args.PresetName, '"')); settingsFile.PrintWorkflowPresetList(); return 1; } if (presetPair->second.Unexpanded.Hidden) { cmSystemTools::Error(cmStrCat("Cannot use hidden workflow preset in ", - this->GetHomeDirectory(), ": \"", presetName, - '"')); + this->GetHomeDirectory(), ": \"", + args.PresetName, '"')); settingsFile.PrintWorkflowPresetList(); return 1; } @@ -4303,15 +4325,16 @@ auto const& expandedPreset = presetPair->second.Expanded; if (!expandedPreset) { cmSystemTools::Error(cmStrCat("Could not evaluate workflow preset \"", - presetName, "\": Invalid macro expansion")); + args.PresetName, + "\": Invalid macro expansion")); settingsFile.PrintWorkflowPresetList(); return 1; } if (!expandedPreset->ConditionResult) { cmSystemTools::Error(cmStrCat("Cannot use disabled workflow preset in ", - this->GetHomeDirectory(), ": \"", presetName, - '"')); + this->GetHomeDirectory(), ": \"", + args.PresetName, '"')); settingsFile.PrintWorkflowPresetList(); return 1; } @@ -4347,13 +4370,14 @@ if (!configurePreset) { return 1; } - std::vector<std::string> args{ cmSystemTools::GetCMakeCommand(), - "--preset", step.PresetName }; - if (fresh == WorkflowFresh::Yes) { - args.emplace_back("--fresh"); + std::vector<std::string> configureCmdArgs{ + cmSystemTools::GetCMakeCommand(), "--preset", step.PresetName + }; + if (args.Fresh) { + configureCmdArgs.emplace_back("--fresh"); } steps.emplace_back(stepNumber, "configure"_s, step.PresetName, - buildWorkflowStep(args)); + buildWorkflowStep(configureCmdArgs)); } break; case cmCMakePresetsGraph::WorkflowPreset::WorkflowStep::Type::Build: { auto const* buildPreset = this->FindPresetForWorkflow(
diff --git a/Source/cmake.h b/Source/cmake.h index c2a0f05..900cbb4 100644 --- a/Source/cmake.h +++ b/Source/cmake.h
@@ -48,6 +48,9 @@ #endif class cmExternalMakefileProjectGeneratorFactory; +class cmCMakePresetsArgs; +class cmCMakePresetsConfigureArgs; +class cmCMakePresetsWorkflowArgs; class cmFileAPI; class cmInstrumentation; class cmFileTimeCache; @@ -254,19 +257,8 @@ bool CreateAndSetGlobalGenerator(std::string const& name); #ifndef CMAKE_BOOTSTRAP - enum class ListPresets - { - None, - Configure, - Build, - Test, - Package, - Workflow, - All, - }; - - bool SetArgsFromPreset(std::string const& presetName, - ListPresets listPresets, bool haveBinaryDirArg); + bool SetArgsFromPreset(cmCMakePresetsConfigureArgs const& args, + bool haveBinaryDirArg); void PrintPresetList(cmCMakePresetsGraph const& graph) const; #endif @@ -627,8 +619,9 @@ //! run the --build option int Build(cmBuildArgs buildArgs, std::vector<std::string> targets, std::vector<std::string> nativeOptions, - cmBuildOptions& buildOptions, std::string const& presetName, - bool listPresets, std::vector<std::string> const& args); + cmBuildOptions& buildOptions, + cmCMakePresetsArgs const& presetsArgs, + std::vector<std::string> const& args); enum class DryRun { @@ -640,18 +633,7 @@ bool Open(std::string const& dir, DryRun dryRun); //! run the --workflow option - enum class WorkflowListPresets - { - No, - Yes, - }; - enum class WorkflowFresh - { - No, - Yes, - }; - int Workflow(std::string const& presetName, WorkflowListPresets listPresets, - WorkflowFresh fresh); + int Workflow(cmCMakePresetsWorkflowArgs const& args); void UnwatchUnusedCli(std::string const& var); void WatchUnusedCli(std::string const& var);
diff --git a/Source/cmakemain.cxx b/Source/cmakemain.cxx index 7b325ee..d7f0c88 100644 --- a/Source/cmakemain.cxx +++ b/Source/cmakemain.cxx
@@ -44,6 +44,7 @@ #include "cmcmd.h" #ifndef CMAKE_BOOTSTRAP +# include "cmCMakePresetsArgs.h" # include "cmDocumentation.h" #endif @@ -75,6 +76,8 @@ cmDocumentationEntry const cmDocumentationOptions[] = { { "--preset <preset>,--preset=<preset>", "Specify a configure preset." }, + { "--presets-file <file>,--presets-file=<file>", + "Specify the path to a presets file." }, { "--list-presets[=<type>]", "List available presets." }, { "--workflow [<options>]", "Run a workflow preset." }, { "-E", "CMake command mode. Run \"cmake -E\" for a summary of commands." }, @@ -474,8 +477,7 @@ bool foundNonClean = false; PackageResolveMode resolveMode = PackageResolveMode::Default; buildArgs.verbose = cmSystemTools::HasEnv("VERBOSE"); - std::string presetName; - bool listPresets = false; + cmCMakePresetsArgs presetsArgs; auto jLambda = extract_job_number_lambda_builder(buildArgs.binaryDir, buildArgs.jobs, "-j"); @@ -516,6 +518,10 @@ buildArgs.verbose = true; return true; }; + auto presetFileLambda = [&](std::string const& value) -> bool { + presetsArgs.PresetsFile = cmSystemTools::ToNormalizedPathOnDisk(value); + return true; + }; using CommandArgument = cmCommandLineArgument<bool(std::string const& value)>; @@ -523,9 +529,11 @@ std::vector<CommandArgument> arguments = { CommandArgument{ "--preset", "No preset specified for --preset", CommandArgument::Values::One, - CommandArgument::setToValue(presetName) }, + CommandArgument::setToValue(presetsArgs.PresetName) }, + CommandArgument{ "--presets-file", "No file specified for --presets-file", + CommandArgument::Values::One, presetFileLambda }, CommandArgument{ "--list-presets", CommandArgument::Values::Zero, - CommandArgument::setToTrue(listPresets) }, + CommandArgument::setToTrue(presetsArgs.ListPresets) }, CommandArgument{ "-j", CommandArgument::Values::ZeroOrOne, CommandArgument::RequiresSeparator::No, jLambda }, CommandArgument{ "--parallel", CommandArgument::Values::ZeroOrOne, @@ -622,7 +630,7 @@ } } - if (buildArgs.binaryDir.empty() && presetName.empty() && !listPresets) { + if (buildArgs.binaryDir.empty() && !presetsArgs.HasPresetsArg()) { /* clang-format off */ std::cerr << "Usage: cmake --build <dir> " @@ -633,6 +641,8 @@ " <dir> = Project binary directory to be built.\n" " --preset <preset>, --preset=<preset>\n" " = Specify a build preset.\n" + " --presets-file <file>, --presets-file=<file>\n" + " = Specify the path to a presets file.\n" " --list-presets[=<type>]\n" " = List available build presets.\n" " --parallel [<jobs>], -j [<jobs>]\n" @@ -672,7 +682,7 @@ std::vector<std::string> cmd; cm::append(cmd, av, av + ac); return cm.Build(buildArgs, std::move(targets), std::move(nativeOptions), - buildOptions, presetName, listPresets, cmd); + buildOptions, presetsArgs, cmd); #endif } @@ -980,11 +990,7 @@ std::cerr << "This cmake does not support --workflow\n"; return -1; #else - using WorkflowListPresets = cmake::WorkflowListPresets; - using WorkflowFresh = cmake::WorkflowFresh; - std::string presetName; - auto listPresets = WorkflowListPresets::No; - auto fresh = WorkflowFresh::No; + cmCMakePresetsWorkflowArgs presetsArgs; using CommandArgument = cmCommandLineArgument<bool(std::string const& value)>; @@ -992,17 +998,18 @@ std::vector<CommandArgument> arguments = { CommandArgument{ "--preset", "No preset specified for --preset", CommandArgument::Values::One, - CommandArgument::setToValue(presetName) }, + CommandArgument::setToValue(presetsArgs.PresetName) }, + CommandArgument{ "--presets-file", "No file specified for --presets-file", + CommandArgument::Values::One, + [&presetsArgs](std::string const& value) -> bool { + presetsArgs.PresetsFile = + cmSystemTools::ToNormalizedPathOnDisk(value); + return true; + } }, CommandArgument{ "--list-presets", CommandArgument::Values::Zero, - [&listPresets](std::string const&) -> bool { - listPresets = WorkflowListPresets::Yes; - return true; - } }, + CommandArgument::setToTrue(presetsArgs.ListPresets) }, CommandArgument{ "--fresh", CommandArgument::Values::Zero, - [&fresh](std::string const&) -> bool { - fresh = WorkflowFresh::Yes; - return true; - } }, + CommandArgument::setToTrue(presetsArgs.Fresh) } }; std::vector<std::string> inputArgs; @@ -1029,23 +1036,23 @@ } if (!(matched && parsed)) { if (!matched) { - presetName.clear(); - listPresets = WorkflowListPresets::No; + presetsArgs.Clear(); std::cerr << "Unknown argument " << arg << std::endl; } break; } } - if (presetName.empty() && listPresets == WorkflowListPresets::No) { + if (!presetsArgs.HasPresetsArg()) { /* clang-format off */ std::cerr << "Usage: cmake --workflow <options>\n" "Options:\n" - " --preset <preset> = Workflow preset to execute.\n" - " --list-presets = List available workflow presets.\n" - " --fresh = Configure a fresh build tree, removing any " - "existing cache file.\n" + " --preset <preset> = Workflow preset to execute.\n" + " --presets-file <file> = Path to a presets file.\n" + " --list-presets = List available workflow presets.\n" + " --fresh = Configure a fresh build tree, removing any " + "existing cache file.\n" ; /* clang-format on */ return 1; @@ -1060,7 +1067,7 @@ cmakemainProgressCallback(msg, prog, &cm); }); - return cm.Workflow(presetName, listPresets, fresh); + return cm.Workflow(presetsArgs); #endif }
diff --git a/Templates/CTestScript.cmake.in b/Templates/CTestScript.cmake.in index 54bfda4..cd79a23 100644 --- a/Templates/CTestScript.cmake.in +++ b/Templates/CTestScript.cmake.in
@@ -48,6 +48,7 @@ set(CTEST_RESOURCE_SPEC_FILE "@CTEST_RESOURCE_SPEC_FILE@") set(CTEST_TEST_LOAD "@CTEST_TEST_LOAD@") set(CTEST_TEST_TIMEOUT "@DART_TESTING_TIMEOUT@") +set(CTEST_TEST_COVERAGE_TOOL "@COVERAGE_TOOL@" # CTest Coverage Step set(CTEST_COVERAGE_COMMAND "@COVERAGE_COMMAND@")
diff --git a/Tests/CMakeTests/ProcessorCountTest.cmake.in b/Tests/CMakeTests/ProcessorCountTest.cmake.in index f92dcc4..a2595c7 100644 --- a/Tests/CMakeTests/ProcessorCountTest.cmake.in +++ b/Tests/CMakeTests/ProcessorCountTest.cmake.in
@@ -1,5 +1,8 @@ include(ProcessorCount) +set(CMAKE_EXECUTE_PROCESS_COMMAND_ERROR_IS_FATAL ANY) +# ProcessorCount() must tolerate execute_process() failures + ProcessorCount(processor_count) message("### 1. This line should be the first line of text in the test output.")
diff --git a/Tests/RunCMake/CMakePresets/BuildEmptyEnvKey-result.txt b/Tests/RunCMake/CMakePresets/BuildEmptyEnvKey-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/CMakePresets/BuildEmptyEnvKey-result.txt
@@ -0,0 +1 @@ +1
diff --git a/Tests/RunCMake/CMakePresets/BuildEmptyEnvKey-stderr.txt b/Tests/RunCMake/CMakePresets/BuildEmptyEnvKey-stderr.txt new file mode 100644 index 0000000..e8d349d --- /dev/null +++ b/Tests/RunCMake/CMakePresets/BuildEmptyEnvKey-stderr.txt
@@ -0,0 +1,3 @@ +^CMake Error: Could not read presets from [^ +]*/Tests/RunCMake/CMakePresets/BuildEmptyEnvKey: +Invalid build preset: "EmptyEnvKey": Empty environment variable names are not allowed$
diff --git a/Tests/RunCMake/CMakePresets/BuildEmptyEnvKey.json.in b/Tests/RunCMake/CMakePresets/BuildEmptyEnvKey.json.in new file mode 100644 index 0000000..7e9932b --- /dev/null +++ b/Tests/RunCMake/CMakePresets/BuildEmptyEnvKey.json.in
@@ -0,0 +1,11 @@ +{ + "version": 2, + "buildPresets": [ + { + "name": "EmptyEnvKey", + "environment": { + "": "value" + } + } + ] +}
diff --git a/Tests/RunCMake/CMakePresets/BuildInvalidInheritance-result.txt b/Tests/RunCMake/CMakePresets/BuildInvalidInheritance-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/CMakePresets/BuildInvalidInheritance-result.txt
@@ -0,0 +1 @@ +1
diff --git a/Tests/RunCMake/CMakePresets/BuildInvalidInheritance-stderr.txt b/Tests/RunCMake/CMakePresets/BuildInvalidInheritance-stderr.txt new file mode 100644 index 0000000..e9ba8c2 --- /dev/null +++ b/Tests/RunCMake/CMakePresets/BuildInvalidInheritance-stderr.txt
@@ -0,0 +1,3 @@ +^CMake Error: Could not read presets from [^ +]*/Tests/RunCMake/CMakePresets/BuildInvalidInheritance: +Invalid build preset: "InvalidInheritance": Could not find inherited preset "NoExist"$
diff --git a/Tests/RunCMake/CMakePresets/BuildInvalidInheritance.json.in b/Tests/RunCMake/CMakePresets/BuildInvalidInheritance.json.in new file mode 100644 index 0000000..2dd5d81 --- /dev/null +++ b/Tests/RunCMake/CMakePresets/BuildInvalidInheritance.json.in
@@ -0,0 +1,11 @@ +{ + "version": 2, + "buildPresets": [ + { + "name": "InvalidInheritance", + "inherits": [ + "NoExist" + ] + } + ] +}
diff --git a/Tests/RunCMake/CMakePresets/CyclicInheritance0-stderr.txt b/Tests/RunCMake/CMakePresets/CyclicInheritance0-stderr.txt index 2d5b477..d7366f7 100644 --- a/Tests/RunCMake/CMakePresets/CyclicInheritance0-stderr.txt +++ b/Tests/RunCMake/CMakePresets/CyclicInheritance0-stderr.txt
@@ -1,3 +1,3 @@ ^CMake Error: Could not read presets from [^ ]*/Tests/RunCMake/CMakePresets/CyclicInheritance0: -Cyclic preset inheritance for preset "CyclicInheritance0"$ +Cyclic preset inheritance for configure preset "CyclicInheritance0"$
diff --git a/Tests/RunCMake/CMakePresets/CyclicInheritance1-stderr.txt b/Tests/RunCMake/CMakePresets/CyclicInheritance1-stderr.txt index 596fcf8..e2d9d11 100644 --- a/Tests/RunCMake/CMakePresets/CyclicInheritance1-stderr.txt +++ b/Tests/RunCMake/CMakePresets/CyclicInheritance1-stderr.txt
@@ -1,3 +1,3 @@ ^CMake Error: Could not read presets from [^ ]*/Tests/RunCMake/CMakePresets/CyclicInheritance1: -Cyclic preset inheritance for preset "CyclicInheritance0"$ +Cyclic preset inheritance for configure preset "CyclicInheritance0"$
diff --git a/Tests/RunCMake/CMakePresets/CyclicInheritance2-stderr.txt b/Tests/RunCMake/CMakePresets/CyclicInheritance2-stderr.txt index a6b83c8..99fe0bd 100644 --- a/Tests/RunCMake/CMakePresets/CyclicInheritance2-stderr.txt +++ b/Tests/RunCMake/CMakePresets/CyclicInheritance2-stderr.txt
@@ -1,3 +1,3 @@ ^CMake Error: Could not read presets from [^ ]*/Tests/RunCMake/CMakePresets/CyclicInheritance2: -Cyclic preset inheritance for preset "CyclicInheritance0"$ +Cyclic preset inheritance for configure preset "CyclicInheritance0"$
diff --git a/Tests/RunCMake/CMakePresets/EmptyCacheKey-stderr.txt b/Tests/RunCMake/CMakePresets/EmptyCacheKey-stderr.txt index cb9e545..d6f402f 100644 --- a/Tests/RunCMake/CMakePresets/EmptyCacheKey-stderr.txt +++ b/Tests/RunCMake/CMakePresets/EmptyCacheKey-stderr.txt
@@ -1,3 +1,3 @@ ^CMake Error: Could not read presets from [^ ]*/Tests/RunCMake/CMakePresets/EmptyCacheKey: -Invalid preset: "EmptyCacheKey"$ +Invalid configure preset: "EmptyCacheKey": Empty cache variable names are not allowed$
diff --git a/Tests/RunCMake/CMakePresets/EmptyEnvKey-stderr.txt b/Tests/RunCMake/CMakePresets/EmptyEnvKey-stderr.txt index bc0f866..a357267 100644 --- a/Tests/RunCMake/CMakePresets/EmptyEnvKey-stderr.txt +++ b/Tests/RunCMake/CMakePresets/EmptyEnvKey-stderr.txt
@@ -1,3 +1,3 @@ ^CMake Error: Could not read presets from [^ ]*/Tests/RunCMake/CMakePresets/EmptyEnvKey: -Invalid preset: "EmptyEnvKey"$ +Invalid configure preset: "EmptyEnvKey": Empty environment variable names are not allowed$
diff --git a/Tests/RunCMake/CMakePresets/EnvCycle-stderr.txt b/Tests/RunCMake/CMakePresets/EnvCycle-stderr.txt index 8e19c69..eb658ce 100644 --- a/Tests/RunCMake/CMakePresets/EnvCycle-stderr.txt +++ b/Tests/RunCMake/CMakePresets/EnvCycle-stderr.txt
@@ -1,4 +1,4 @@ ^CMake Error: Could not read presets from [^ ]*/Tests/RunCMake/CMakePresets/EnvCycle: -Invalid preset: "EnvCycle" +Invalid configure preset: "EnvCycle": Invalid macro expansion Invalid macro expansion in "EnvCycle"$
diff --git a/Tests/RunCMake/CMakePresets/ErrorNoWarningDeprecated-stderr.txt b/Tests/RunCMake/CMakePresets/ErrorNoWarningDeprecated-stderr.txt index 5c02d5b..dd47dc7 100644 --- a/Tests/RunCMake/CMakePresets/ErrorNoWarningDeprecated-stderr.txt +++ b/Tests/RunCMake/CMakePresets/ErrorNoWarningDeprecated-stderr.txt
@@ -1,3 +1,3 @@ ^CMake Error: Could not read presets from [^ ]*/Tests/RunCMake/CMakePresets/ErrorNoWarningDeprecated: -Invalid preset: "ErrorNoWarningDeprecated"$ +Invalid configure preset: "ErrorNoWarningDeprecated"$
diff --git a/Tests/RunCMake/CMakePresets/ErrorNoWarningDev-stderr.txt b/Tests/RunCMake/CMakePresets/ErrorNoWarningDev-stderr.txt index 4640b1e..ca087b1 100644 --- a/Tests/RunCMake/CMakePresets/ErrorNoWarningDev-stderr.txt +++ b/Tests/RunCMake/CMakePresets/ErrorNoWarningDev-stderr.txt
@@ -1,3 +1,3 @@ ^CMake Error: Could not read presets from [^ ]*/Tests/RunCMake/CMakePresets/ErrorNoWarningDev: -Invalid preset: "ErrorNoWarningDev"$ +Invalid configure preset: "ErrorNoWarningDev"$
diff --git a/Tests/RunCMake/CMakePresets/IncludeCycle-stderr.txt b/Tests/RunCMake/CMakePresets/IncludeCycle-stderr.txt index f7e3461..357050f 100644 --- a/Tests/RunCMake/CMakePresets/IncludeCycle-stderr.txt +++ b/Tests/RunCMake/CMakePresets/IncludeCycle-stderr.txt
@@ -1,4 +1,4 @@ ^CMake Error: Could not read presets from [^ ]*/Tests/RunCMake/CMakePresets/IncludeCycle: -Cyclic include among preset files: [^ +Cyclic include among presets files: [^ ]*/CMakeUserPresets\.json$
diff --git a/Tests/RunCMake/CMakePresets/IncludeCycle3Files-stderr.txt b/Tests/RunCMake/CMakePresets/IncludeCycle3Files-stderr.txt index 85ddab1..c106f29 100644 --- a/Tests/RunCMake/CMakePresets/IncludeCycle3Files-stderr.txt +++ b/Tests/RunCMake/CMakePresets/IncludeCycle3Files-stderr.txt
@@ -1,4 +1,4 @@ CMake Error: Could not read presets from [^ ]*/Tests/RunCMake/CMakePresets/IncludeCycle3Files: -Cyclic include among preset files: [^ +Cyclic include among presets files: [^ ]*/CMakePresets\.json
diff --git a/Tests/RunCMake/CMakePresets/InvalidInheritance-stderr.txt b/Tests/RunCMake/CMakePresets/InvalidInheritance-stderr.txt index 216f308..a8eb597 100644 --- a/Tests/RunCMake/CMakePresets/InvalidInheritance-stderr.txt +++ b/Tests/RunCMake/CMakePresets/InvalidInheritance-stderr.txt
@@ -1,3 +1,3 @@ ^CMake Error: Could not read presets from [^ ]*/Tests/RunCMake/CMakePresets/InvalidInheritance: -Invalid preset: "InvalidInheritance"$ +Invalid configure preset: "InvalidInheritance": Could not find inherited preset "NoExist"$
diff --git a/Tests/RunCMake/CMakePresets/InvalidRegex-stderr.txt b/Tests/RunCMake/CMakePresets/InvalidRegex-stderr.txt index 86cd861..b948676 100644 --- a/Tests/RunCMake/CMakePresets/InvalidRegex-stderr.txt +++ b/Tests/RunCMake/CMakePresets/InvalidRegex-stderr.txt
@@ -1,4 +1,4 @@ ^CMake Error: Could not read presets from [^ ]*/Tests/RunCMake/CMakePresets/InvalidRegex: -Invalid preset: "InvalidRegex" +Invalid configure preset: "InvalidRegex": Invalid condition Invalid macro expansion in "InvalidRegex"$
diff --git a/Tests/RunCMake/CMakePresets/NoPresetBinaryDir-stderr.txt b/Tests/RunCMake/CMakePresets/NoPresetBinaryDir-stderr.txt index bae9794..ccd3d4c 100644 --- a/Tests/RunCMake/CMakePresets/NoPresetBinaryDir-stderr.txt +++ b/Tests/RunCMake/CMakePresets/NoPresetBinaryDir-stderr.txt
@@ -1,4 +1,4 @@ ^CMake Error: Could not read presets from [^ ]*/Tests/RunCMake/CMakePresets/NoPresetBinaryDir: Preset "NoPresetBinaryDir" missing field "binaryDir" -Invalid preset: "NoPresetBinaryDir"$ +Invalid configure preset: "NoPresetBinaryDir"$
diff --git a/Tests/RunCMake/CMakePresets/NoPresetFileArgument-result.txt b/Tests/RunCMake/CMakePresets/NoPresetFileArgument-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/CMakePresets/NoPresetFileArgument-result.txt
@@ -0,0 +1 @@ +1
diff --git a/Tests/RunCMake/CMakePresets/NoPresetFileArgument-stderr.txt b/Tests/RunCMake/CMakePresets/NoPresetFileArgument-stderr.txt new file mode 100644 index 0000000..29d37ad --- /dev/null +++ b/Tests/RunCMake/CMakePresets/NoPresetFileArgument-stderr.txt
@@ -0,0 +1,2 @@ +^CMake Error: No file specified for --presets-file +CMake Error: Run 'cmake --help' for all supported options\.$
diff --git a/Tests/RunCMake/CMakePresets/NoPresetGenerator-stderr.txt b/Tests/RunCMake/CMakePresets/NoPresetGenerator-stderr.txt index c7e5b5e..51558cd 100644 --- a/Tests/RunCMake/CMakePresets/NoPresetGenerator-stderr.txt +++ b/Tests/RunCMake/CMakePresets/NoPresetGenerator-stderr.txt
@@ -1,4 +1,4 @@ ^CMake Error: Could not read presets from [^ ]*/Tests/RunCMake/CMakePresets/NoPresetGenerator: Preset "NoPresetGenerator" missing field "generator" -Invalid preset: "NoPresetGenerator"$ +Invalid configure preset: "NoPresetGenerator"$
diff --git a/Tests/RunCMake/CMakePresets/OtherCMakePresetsFile.cmake b/Tests/RunCMake/CMakePresets/OtherCMakePresetsFile.cmake new file mode 100644 index 0000000..d15bd8d --- /dev/null +++ b/Tests/RunCMake/CMakePresets/OtherCMakePresetsFile.cmake
@@ -0,0 +1,3 @@ +include(${CMAKE_CURRENT_LIST_DIR}/TestVariable.cmake) + +test_variable(PRESETS_FILE "UNINITIALIZED" "OtherCMakePresetsFile.json")
diff --git a/Tests/RunCMake/CMakePresets/OtherCMakePresetsFile.json.in b/Tests/RunCMake/CMakePresets/OtherCMakePresetsFile.json.in new file mode 100644 index 0000000..af68ee8 --- /dev/null +++ b/Tests/RunCMake/CMakePresets/OtherCMakePresetsFile.json.in
@@ -0,0 +1,54 @@ +{ + "version": 6, + "configurePresets": [ + { + "name": "OtherCMakePresetsFile", + "generator": "@RunCMake_GENERATOR@", + "binaryDir": "${sourceDir}/build", + "cacheVariables": { + "PRESETS_FILE": "OtherCMakePresetsFile.json" + } + } + ], + "buildPresets": [ + { + "name": "OtherCMakePresetsFile", + "configurePreset": "OtherCMakePresetsFile" + } + ], + "testPresets": [ + { + "name": "OtherCMakePresetsFile", + "configurePreset": "OtherCMakePresetsFile" + } + ], + "packagePresets": [ + { + "name": "OtherCMakePresetsFile", + "configurePreset": "OtherCMakePresetsFile" + } + ], + "workflowPresets": [ + { + "name": "OtherCMakePresetsFile", + "steps": [ + { + "type": "configure", + "name": "OtherCMakePresetsFile" + }, + { + "type": "build", + "name": "OtherCMakePresetsFile" + }, + { + "type": "test", + "name": "OtherCMakePresetsFile" + }, + { + "type": "package", + "name": "OtherCMakePresetsFile" + } + ] + } + ] +}
diff --git a/Tests/RunCMake/CMakePresets/OtherCMakePresetsFileCMakePresets.json.in b/Tests/RunCMake/CMakePresets/OtherCMakePresetsFileCMakePresets.json.in new file mode 100644 index 0000000..4b7648d --- /dev/null +++ b/Tests/RunCMake/CMakePresets/OtherCMakePresetsFileCMakePresets.json.in
@@ -0,0 +1,13 @@ +{ + "version": 1, + "configurePresets": [ + { + "name": "OtherCMakePresetsFile", + "generator": "@RunCMake_GENERATOR@", + "binaryDir": "${sourceDir}/build", + "cacheVariables": { + "PRESETS_FILE": "CMakePresets.json" + } + } + ] +}
diff --git a/Tests/RunCMake/CMakePresets/OtherCMakePresetsFileCMakeUserPresets.json.in b/Tests/RunCMake/CMakePresets/OtherCMakePresetsFileCMakeUserPresets.json.in new file mode 100644 index 0000000..185f46d --- /dev/null +++ b/Tests/RunCMake/CMakePresets/OtherCMakePresetsFileCMakeUserPresets.json.in
@@ -0,0 +1,13 @@ +{ + "version": 1, + "configurePresets": [ + { + "name": "OtherCMakePresetsFile", + "generator": "@RunCMake_GENERATOR@", + "binaryDir": "${sourceDir}/build", + "cacheVariables": { + "PRESETS_FILE": "CMakeUserPresets.json" + } + } + ] +}
diff --git a/Tests/RunCMake/CMakePresets/OtherCMakePresetsFileList-stdout.txt b/Tests/RunCMake/CMakePresets/OtherCMakePresetsFileList-stdout.txt new file mode 100644 index 0000000..7ec3a37 --- /dev/null +++ b/Tests/RunCMake/CMakePresets/OtherCMakePresetsFileList-stdout.txt
@@ -0,0 +1,19 @@ +^Available configure presets: + + "OtherCMakePresetsFile" + +Available build presets: + + "OtherCMakePresetsFile" + +Available test presets: + + "OtherCMakePresetsFile" + +Available package presets: + + "OtherCMakePresetsFile" + +Available workflow presets: + + "OtherCMakePresetsFile"$
diff --git a/Tests/RunCMake/CMakePresets/OtherCMakePresetsFileRelPath.cmake b/Tests/RunCMake/CMakePresets/OtherCMakePresetsFileRelPath.cmake new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Tests/RunCMake/CMakePresets/OtherCMakePresetsFileRelPath.cmake
diff --git a/Tests/RunCMake/CMakePresets/OtherCMakePresetsFileSubdir.cmake b/Tests/RunCMake/CMakePresets/OtherCMakePresetsFileSubdir.cmake new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Tests/RunCMake/CMakePresets/OtherCMakePresetsFileSubdir.cmake
diff --git a/Tests/RunCMake/CMakePresets/PackageEmptyEnvKey-result.txt b/Tests/RunCMake/CMakePresets/PackageEmptyEnvKey-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/CMakePresets/PackageEmptyEnvKey-result.txt
@@ -0,0 +1 @@ +1
diff --git a/Tests/RunCMake/CMakePresets/PackageEmptyEnvKey-stderr.txt b/Tests/RunCMake/CMakePresets/PackageEmptyEnvKey-stderr.txt new file mode 100644 index 0000000..6d18c7a --- /dev/null +++ b/Tests/RunCMake/CMakePresets/PackageEmptyEnvKey-stderr.txt
@@ -0,0 +1,3 @@ +^CMake Error: Could not read presets from [^ +]*/Tests/RunCMake/CMakePresets/PackageEmptyEnvKey: +Invalid package preset: "EmptyEnvKey": Empty environment variable names are not allowed$
diff --git a/Tests/RunCMake/CMakePresets/PackageEmptyEnvKey.json.in b/Tests/RunCMake/CMakePresets/PackageEmptyEnvKey.json.in new file mode 100644 index 0000000..f181e45 --- /dev/null +++ b/Tests/RunCMake/CMakePresets/PackageEmptyEnvKey.json.in
@@ -0,0 +1,11 @@ +{ + "version": 6, + "packagePresets": [ + { + "name": "EmptyEnvKey", + "environment": { + "": "value" + } + } + ] +}
diff --git a/Tests/RunCMake/CMakePresets/PackageInvalidInheritance-result.txt b/Tests/RunCMake/CMakePresets/PackageInvalidInheritance-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/CMakePresets/PackageInvalidInheritance-result.txt
@@ -0,0 +1 @@ +1
diff --git a/Tests/RunCMake/CMakePresets/PackageInvalidInheritance-stderr.txt b/Tests/RunCMake/CMakePresets/PackageInvalidInheritance-stderr.txt new file mode 100644 index 0000000..ad32da4 --- /dev/null +++ b/Tests/RunCMake/CMakePresets/PackageInvalidInheritance-stderr.txt
@@ -0,0 +1,3 @@ +^CMake Error: Could not read presets from [^ +]*/Tests/RunCMake/CMakePresets/PackageInvalidInheritance: +Invalid package preset: "InvalidInheritance": Could not find inherited preset "NoExist"$
diff --git a/Tests/RunCMake/CMakePresets/PackageInvalidInheritance.json.in b/Tests/RunCMake/CMakePresets/PackageInvalidInheritance.json.in new file mode 100644 index 0000000..7076ecc --- /dev/null +++ b/Tests/RunCMake/CMakePresets/PackageInvalidInheritance.json.in
@@ -0,0 +1,11 @@ +{ + "version": 6, + "packagePresets": [ + { + "name": "InvalidInheritance", + "inherits": [ + "NoExist" + ] + } + ] +}
diff --git a/Tests/RunCMake/CMakePresets/PackageNoConfigurePreset-result.txt b/Tests/RunCMake/CMakePresets/PackageNoConfigurePreset-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/CMakePresets/PackageNoConfigurePreset-result.txt
@@ -0,0 +1 @@ +1
diff --git a/Tests/RunCMake/CMakePresets/PackageNoConfigurePreset-stderr.txt b/Tests/RunCMake/CMakePresets/PackageNoConfigurePreset-stderr.txt new file mode 100644 index 0000000..b29e953 --- /dev/null +++ b/Tests/RunCMake/CMakePresets/PackageNoConfigurePreset-stderr.txt
@@ -0,0 +1,3 @@ +^CMake Error: Could not read presets from [^ +]*/Tests/RunCMake/CMakePresets/PackageNoConfigurePreset: +Invalid package preset: "noConfigurePreset": Package presets must either be hidden or have an associated configure preset$
diff --git a/Tests/RunCMake/CMakePresets/PackageNoConfigurePreset.json.in b/Tests/RunCMake/CMakePresets/PackageNoConfigurePreset.json.in new file mode 100644 index 0000000..03b09ed --- /dev/null +++ b/Tests/RunCMake/CMakePresets/PackageNoConfigurePreset.json.in
@@ -0,0 +1,8 @@ +{ + "version": 6, + "packagePresets": [ + { + "name": "noConfigurePreset" + } + ] +}
diff --git a/Tests/RunCMake/CMakePresets/PresetsFileArgNoExist-result.txt b/Tests/RunCMake/CMakePresets/PresetsFileArgNoExist-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/CMakePresets/PresetsFileArgNoExist-result.txt
@@ -0,0 +1 @@ +1
diff --git a/Tests/RunCMake/CMakePresets/PresetsFileArgNoExist-stderr.txt b/Tests/RunCMake/CMakePresets/PresetsFileArgNoExist-stderr.txt new file mode 100644 index 0000000..668f949 --- /dev/null +++ b/Tests/RunCMake/CMakePresets/PresetsFileArgNoExist-stderr.txt
@@ -0,0 +1,4 @@ +^CMake Error: Could not read presets from [^ +]*/Tests/RunCMake/CMakePresets/PresetsFileArgNoExist: +File not found: [^ +]*/FileDoesNotExist\.json$
diff --git a/Tests/RunCMake/CMakePresets/RunCMakeTest.cmake b/Tests/RunCMake/CMakePresets/RunCMakeTest.cmake index c816830..95acf52 100644 --- a/Tests/RunCMake/CMakePresets/RunCMakeTest.cmake +++ b/Tests/RunCMake/CMakePresets/RunCMakeTest.cmake
@@ -30,6 +30,33 @@ endif() configure_file("${RunCMake_SOURCE_DIR}/CMakeLists.txt.in" "${RunCMake_TEST_SOURCE_DIR}/CMakeLists.txt" @ONLY) + set(_presets_file) + if(CMakePresets_FILE_ARG) + cmake_path(GET RunCMake_TEST_SOURCE_DIR PARENT_PATH CMakePresets_FILE_ARG_DIRECTORY) + cmake_path(APPEND CMakePresets_FILE_ARG_DIRECTORY "_OtherCMakePresetsFiles") + if(NOT RunCMake_TEST_SOURCE_DIR_NO_CLEAN) + file(REMOVE_RECURSE "${CMakePresets_FILE_ARG_DIRECTORY}") + file(MAKE_DIRECTORY "${CMakePresets_FILE_ARG_DIRECTORY}") + endif() + if(CMakePresets_FILE_ARG_RELATIVE) + cmake_path(RELATIVE_PATH + CMakePresets_FILE_ARG_DIRECTORY + BASE_DIRECTORY "${RunCMake_TEST_SOURCE_DIR}" + OUTPUT_VARIABLE CMakePresets_FILE_ARG_RELATIVE_PATH + ) + set(_presets_file "--presets-file=${CMakePresets_FILE_ARG_RELATIVE_PATH}/${CMakePresets_FILE_ARG}") + else() + set(_presets_file "--presets-file=${CMakePresets_FILE_ARG_DIRECTORY}/${CMakePresets_FILE_ARG}") + endif() + foreach(_presets_file_arg IN ITEMS ${CMakePresets_FILE_ARG} ${CMakePresets_FILE_ARG_EXTRA_FILES}) + configure_file( + "${RunCMake_SOURCE_DIR}/${_presets_file_arg}.in" + "${CMakePresets_FILE_ARG_DIRECTORY}/${_presets_file_arg}" + @ONLY + ) + endforeach() + endif() + if(NOT CMakePresets_FILE) set(CMakePresets_FILE "${RunCMake_SOURCE_DIR}/${name}.json.in") endif() @@ -93,6 +120,7 @@ ${_make_program} ${_unused_cli} ${_preset} + ${_presets_file} ${_log_level} ${ARGN} ) @@ -153,6 +181,10 @@ run_cmake_presets(CyclicInheritance1) run_cmake_presets(CyclicInheritance2) run_cmake_presets(InvalidInheritance) +run_cmake_presets(BuildInvalidInheritance) +run_cmake_presets(PackageInvalidInheritance) +run_cmake_presets(TestInvalidInheritance) +run_cmake_presets(PackageNoConfigurePreset) run_cmake_presets(ErrorNoWarningDev) run_cmake_presets(ErrorNoWarningDeprecated) set(CMakePresets_SCHEMA_EXPECTED_RESULT 1) @@ -162,6 +194,9 @@ run_cmake_presets(UnknownToolsetStrategy) run_cmake_presets(EmptyCacheKey) run_cmake_presets(EmptyEnvKey) +run_cmake_presets(BuildEmptyEnvKey) +run_cmake_presets(PackageEmptyEnvKey) +run_cmake_presets(TestEmptyEnvKey) set(CMakePresets_SCHEMA_EXPECTED_RESULT 0) run_cmake_presets(UnclosedMacro) run_cmake_presets(NoSuchMacro) @@ -313,6 +348,7 @@ run_cmake_presets(NoPresetArgument --preset) run_cmake_presets(NoPresetArgumentEq --preset= -DA=B) run_cmake_presets(UseHiddenPreset) +run_cmake_presets(NoPresetFileArgument --preset GoodNoArgs --presets-file) # Test CMakeUserPresets.json unset(CMakePresets_FILE) @@ -326,6 +362,30 @@ run_cmake_presets(UserDuplicateCross) run_cmake_presets(UserInheritance) +# Test --presets-file=<file> +# <file> should be preferred over CMakePresets.json and CMakeUserPresets.json +set(CMakePresets_FILE "${RunCMake_SOURCE_DIR}/OtherCMakePresetsFileCMakePresets.json.in") +set(CMakeUserPresets_FILE "${RunCMake_SOURCE_DIR}/OtherCMakePresetsFileCMakeUserPresets.json.in") +# <file> must exist +run_cmake_presets(PresetsFileArgNoExist --presets-file=FileDoesNotExist.json) +set(CMakePresets_FILE_ARG OtherCMakePresetsFile.json) +run_cmake_presets(OtherCMakePresetsFile) +# --list-presets should only list the presets defined in <file> +run_cmake_presets(OtherCMakePresetsFileList --list-presets=all) +# <file> can be specified via relative path on the command line +set(CMakePresets_FILE_ARG_RELATIVE 1) +run_cmake_presets(OtherCMakePresetsFileRelPath --preset OtherCMakePresetsFile) +set(CMakePresets_FILE_ARG "subdir/OtherCMakePresetsFileSubdir.json") +set(CMakePresets_FILE_ARG_EXTRA_FILES "subdir/IncludeRelativeToSubdir.json") +# Files included by <file> should have paths evaluated relative to <file> +run_cmake_presets(OtherCMakePresetsFileSubdir) +run_cmake_presets(OtherCMakePresetsFileSubdir --preset=IncludeRelativeToSubdir) +unset(CMakePresets_FILE) +unset(CMakeUserPresets_FILE) +unset(CMakePresets_FILE_ARG) +unset(CMakePresets_FILE_ARG_RELATIVE) +unset(CMakePresets_FILE_ARG_EXTRA_FILES) + # Test listing presets set(CMakePresets_FILE "${RunCMake_SOURCE_DIR}/ListPresets.json.in") run_cmake_presets(ListPresets --list-presets)
diff --git a/Tests/RunCMake/CMakePresets/TestEmptyEnvKey-result.txt b/Tests/RunCMake/CMakePresets/TestEmptyEnvKey-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/CMakePresets/TestEmptyEnvKey-result.txt
@@ -0,0 +1 @@ +1
diff --git a/Tests/RunCMake/CMakePresets/TestEmptyEnvKey-stderr.txt b/Tests/RunCMake/CMakePresets/TestEmptyEnvKey-stderr.txt new file mode 100644 index 0000000..df00af9 --- /dev/null +++ b/Tests/RunCMake/CMakePresets/TestEmptyEnvKey-stderr.txt
@@ -0,0 +1,3 @@ +^CMake Error: Could not read presets from [^ +]*/Tests/RunCMake/CMakePresets/TestEmptyEnvKey: +Invalid test preset: "EmptyEnvKey": Empty environment variable names are not allowed$
diff --git a/Tests/RunCMake/CMakePresets/TestEmptyEnvKey.json.in b/Tests/RunCMake/CMakePresets/TestEmptyEnvKey.json.in new file mode 100644 index 0000000..50741d1 --- /dev/null +++ b/Tests/RunCMake/CMakePresets/TestEmptyEnvKey.json.in
@@ -0,0 +1,11 @@ +{ + "version": 2, + "testPresets": [ + { + "name": "EmptyEnvKey", + "environment": { + "": "value" + } + } + ] +}
diff --git a/Tests/RunCMake/CMakePresets/TestInvalidInheritance-result.txt b/Tests/RunCMake/CMakePresets/TestInvalidInheritance-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/CMakePresets/TestInvalidInheritance-result.txt
@@ -0,0 +1 @@ +1
diff --git a/Tests/RunCMake/CMakePresets/TestInvalidInheritance-stderr.txt b/Tests/RunCMake/CMakePresets/TestInvalidInheritance-stderr.txt new file mode 100644 index 0000000..a72e498 --- /dev/null +++ b/Tests/RunCMake/CMakePresets/TestInvalidInheritance-stderr.txt
@@ -0,0 +1,3 @@ +^CMake Error: Could not read presets from [^ +]*/Tests/RunCMake/CMakePresets/TestInvalidInheritance: +Invalid test preset: "InvalidInheritance": Could not find inherited preset "NoExist"$
diff --git a/Tests/RunCMake/CMakePresets/TestInvalidInheritance.json.in b/Tests/RunCMake/CMakePresets/TestInvalidInheritance.json.in new file mode 100644 index 0000000..e137f52 --- /dev/null +++ b/Tests/RunCMake/CMakePresets/TestInvalidInheritance.json.in
@@ -0,0 +1,11 @@ +{ + "version": 2, + "testPresets": [ + { + "name": "InvalidInheritance", + "inherits": [ + "NoExist" + ] + } + ] +}
diff --git a/Tests/RunCMake/CMakePresets/UserInheritance-stderr.txt b/Tests/RunCMake/CMakePresets/UserInheritance-stderr.txt index 2ce1316..65d1a5f 100644 --- a/Tests/RunCMake/CMakePresets/UserInheritance-stderr.txt +++ b/Tests/RunCMake/CMakePresets/UserInheritance-stderr.txt
@@ -1,3 +1,3 @@ ^CMake Error: Could not read presets from [^ ]*/Tests/RunCMake/CMakePresets/UserInheritance: -Inherited preset "UserInheritance" is unreachable from preset's file$ +Inherited configure preset "UserInheritance" is unreachable from preset's file$
diff --git a/Tests/RunCMake/CMakePresets/subdir/IncludeRelativeToSubdir.json.in b/Tests/RunCMake/CMakePresets/subdir/IncludeRelativeToSubdir.json.in new file mode 100644 index 0000000..56db1ad --- /dev/null +++ b/Tests/RunCMake/CMakePresets/subdir/IncludeRelativeToSubdir.json.in
@@ -0,0 +1,10 @@ +{ + "version": 4, + "configurePresets": [ + { + "name": "IncludeRelativeToSubdir", + "generator": "@RunCMake_GENERATOR@", + "binaryDir": "${sourceDir}/build" + } + ] +}
diff --git a/Tests/RunCMake/CMakePresets/subdir/OtherCMakePresetsFileSubdir.json.in b/Tests/RunCMake/CMakePresets/subdir/OtherCMakePresetsFileSubdir.json.in new file mode 100644 index 0000000..e8a5f7f --- /dev/null +++ b/Tests/RunCMake/CMakePresets/subdir/OtherCMakePresetsFileSubdir.json.in
@@ -0,0 +1,13 @@ +{ + "version": 4, + "include": [ + "IncludeRelativeToSubdir.json" + ], + "configurePresets": [ + { + "name": "OtherCMakePresetsFileSubdir", + "generator": "@RunCMake_GENERATOR@", + "binaryDir": "${sourceDir}/build" + } + ] +}
diff --git a/Tests/RunCMake/CMakePresetsBuild/NoConfigurePreset-build-noConfigurePreset-stderr.txt b/Tests/RunCMake/CMakePresetsBuild/NoConfigurePreset-build-noConfigurePreset-stderr.txt index 9ce6ea5..4749340 100644 --- a/Tests/RunCMake/CMakePresetsBuild/NoConfigurePreset-build-noConfigurePreset-stderr.txt +++ b/Tests/RunCMake/CMakePresetsBuild/NoConfigurePreset-build-noConfigurePreset-stderr.txt
@@ -1,3 +1,3 @@ CMake Error: Could not read presets from [^ ]*/Tests/RunCMake/CMakePresetsBuild/NoConfigurePreset: -Invalid preset: "noConfigurePreset"$ +Invalid build preset: "noConfigurePreset": Build presets must either be hidden or have an associated configure preset$
diff --git a/Tests/RunCMake/CMakePresetsBuild/OtherCMakePresetsFile.cmake b/Tests/RunCMake/CMakePresetsBuild/OtherCMakePresetsFile.cmake new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Tests/RunCMake/CMakePresetsBuild/OtherCMakePresetsFile.cmake
diff --git a/Tests/RunCMake/CMakePresetsBuild/OtherCMakePresetsFile.json.in b/Tests/RunCMake/CMakePresetsBuild/OtherCMakePresetsFile.json.in new file mode 100644 index 0000000..474c669 --- /dev/null +++ b/Tests/RunCMake/CMakePresetsBuild/OtherCMakePresetsFile.json.in
@@ -0,0 +1,16 @@ +{ + "version": 2, + "configurePresets": [ + { + "name": "default", + "generator": "@RunCMake_GENERATOR@", + "binaryDir": "${sourceDir}/build" + } + ], + "buildPresets": [ + { + "name": "default-from-other-file", + "configurePreset": "default" + } + ] +}
diff --git a/Tests/RunCMake/CMakePresetsBuild/OtherCMakePresetsFileListPresets-build-x-stdout.txt b/Tests/RunCMake/CMakePresetsBuild/OtherCMakePresetsFileListPresets-build-x-stdout.txt new file mode 100644 index 0000000..ee586df --- /dev/null +++ b/Tests/RunCMake/CMakePresetsBuild/OtherCMakePresetsFileListPresets-build-x-stdout.txt
@@ -0,0 +1,3 @@ +^Available build presets: + + "default-from-other-file"$
diff --git a/Tests/RunCMake/CMakePresetsBuild/PresetsFileNoArg-build-result.txt b/Tests/RunCMake/CMakePresetsBuild/PresetsFileNoArg-build-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/CMakePresetsBuild/PresetsFileNoArg-build-result.txt
@@ -0,0 +1 @@ +1
diff --git a/Tests/RunCMake/CMakePresetsBuild/PresetsFileNoArg-build-stderr.txt b/Tests/RunCMake/CMakePresetsBuild/PresetsFileNoArg-build-stderr.txt new file mode 100644 index 0000000..50d4e2b --- /dev/null +++ b/Tests/RunCMake/CMakePresetsBuild/PresetsFileNoArg-build-stderr.txt
@@ -0,0 +1 @@ +^CMake Error: No file specified for --presets-file
diff --git a/Tests/RunCMake/CMakePresetsBuild/RunCMakeTest.cmake b/Tests/RunCMake/CMakePresetsBuild/RunCMakeTest.cmake index 92378d3..50a4e8e 100644 --- a/Tests/RunCMake/CMakePresetsBuild/RunCMakeTest.cmake +++ b/Tests/RunCMake/CMakePresetsBuild/RunCMakeTest.cmake
@@ -26,6 +26,12 @@ configure_file("${CMakePresetsBuild_FILE}" "${RunCMake_TEST_SOURCE_DIR}/CMakePresets.json" @ONLY) endif() + set(_presets_file) + if(CMakePresets_FILE_ARG) + set(_presets_file "--presets-file=${RunCMake_TEST_SOURCE_DIR}/${CMakePresets_FILE_ARG}") + configure_file("${RunCMake_SOURCE_DIR}/${CMakePresets_FILE_ARG}.in" "${RunCMake_TEST_SOURCE_DIR}/${CMakePresets_FILE_ARG}" @ONLY) + endif() + if(NOT CMakeUserPresets_FILE) set(CMakeUserPresets_FILE "${RunCMake_SOURCE_DIR}/${name}User.json.in") endif() @@ -50,11 +56,11 @@ if(eq) run_cmake_command(${name}-build-${BUILD_PRESET} - ${CMAKE_COMMAND} "--build" ${CMakePresetsBuild_BUILD_DIR_OVERRIDE} "--preset=${BUILD_PRESET}" ${ARGN}) + ${CMAKE_COMMAND} "--build" ${CMakePresetsBuild_BUILD_DIR_OVERRIDE} "--preset=${BUILD_PRESET}" ${_presets_file} ${ARGN}) set(eq 0) else() run_cmake_command(${name}-build-${BUILD_PRESET} - ${CMAKE_COMMAND} "--build" ${CMakePresetsBuild_BUILD_DIR_OVERRIDE} "--preset" "${BUILD_PRESET}" ${ARGN}) + ${CMAKE_COMMAND} "--build" ${CMakePresetsBuild_BUILD_DIR_OVERRIDE} "--preset" "${BUILD_PRESET}" ${_presets_file} ${ARGN}) set(eq 1) endif() endforeach() @@ -74,9 +80,17 @@ run_cmake_build_presets(InvalidConfigurePreset "default" "badConfigurePreset" "") run_cmake_build_presets(Condition "default" "enabled;disabled" "") +set(CMakePresets_FILE_ARG "OtherCMakePresetsFile.json") +run_cmake_build_presets(OtherCMakePresetsFile "default" "default-from-other-file" "") +set(CMakePresetsBuild_BUILD_ONLY 1) +run_cmake_build_presets(OtherCMakePresetsFileListPresets "" "x" "--list-presets" "") +unset(CMakePresetsBuild_BUILD_ONLY) +unset(CMakePresets_FILE_ARG) + set(CMakePresetsBuild_BUILD_ONLY 1) run_cmake_command(PresetsNoArg-build ${CMAKE_COMMAND} "--build" "--preset") run_cmake_command(PresetsNoArgEq-build ${CMAKE_COMMAND} "--build" "--preset=") +run_cmake_Command(PresetsFileNoArg-build ${CMAKE_COMMAND} "--build" "--presets-file") run_cmake_build_presets(ListPresets "x" "x" "--list-presets" "") run_cmake_build_presets(NoConfigurePreset "x" "noConfigurePreset" "") run_cmake_build_presets(Invalid "x" "hidden;vendorMacro" "")
diff --git a/Tests/RunCMake/CMakePresetsPackage/OtherCMakePresetsFile.cmake b/Tests/RunCMake/CMakePresetsPackage/OtherCMakePresetsFile.cmake new file mode 100644 index 0000000..a9068c7 --- /dev/null +++ b/Tests/RunCMake/CMakePresetsPackage/OtherCMakePresetsFile.cmake
@@ -0,0 +1,4 @@ +set(CPACK_PACKAGE_NAME OtherCMakePresetsFile) +set(CPACK_GENERATOR "TGZ;TXZ") + +include(CPack)
diff --git a/Tests/RunCMake/CMakePresetsPackage/OtherCMakePresetsFile.json.in b/Tests/RunCMake/CMakePresetsPackage/OtherCMakePresetsFile.json.in new file mode 100644 index 0000000..a015307 --- /dev/null +++ b/Tests/RunCMake/CMakePresetsPackage/OtherCMakePresetsFile.json.in
@@ -0,0 +1,22 @@ +{ + "version": 6, + "configurePresets": [ + { + "name": "default", + "generator": "@RunCMake_GENERATOR@", + "binaryDir": "${sourceDir}/build" + } + ], + "buildPresets": [ + { + "name": "default", + "configurePreset": "default" + } + ], + "packagePresets": [ + { + "name": "default-from-other-file", + "configurePreset": "default" + } + ] +}
diff --git a/Tests/RunCMake/CMakePresetsPackage/OtherCMakePresetsFileListPresets-package-x-stdout.txt b/Tests/RunCMake/CMakePresetsPackage/OtherCMakePresetsFileListPresets-package-x-stdout.txt new file mode 100644 index 0000000..7e03528 --- /dev/null +++ b/Tests/RunCMake/CMakePresetsPackage/OtherCMakePresetsFileListPresets-package-x-stdout.txt
@@ -0,0 +1,3 @@ +^Available package presets: + + "default-from-other-file"$
diff --git a/Tests/RunCMake/CMakePresetsPackage/PresetsFileNoArg-package-result.txt b/Tests/RunCMake/CMakePresetsPackage/PresetsFileNoArg-package-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/CMakePresetsPackage/PresetsFileNoArg-package-result.txt
@@ -0,0 +1 @@ +1
diff --git a/Tests/RunCMake/CMakePresetsPackage/PresetsFileNoArg-package-stderr.txt b/Tests/RunCMake/CMakePresetsPackage/PresetsFileNoArg-package-stderr.txt new file mode 100644 index 0000000..c532031 --- /dev/null +++ b/Tests/RunCMake/CMakePresetsPackage/PresetsFileNoArg-package-stderr.txt
@@ -0,0 +1 @@ +^CMake Error: No file specified for --presets-file$
diff --git a/Tests/RunCMake/CMakePresetsPackage/RunCMakeTest.cmake b/Tests/RunCMake/CMakePresetsPackage/RunCMakeTest.cmake index 969fda2..b8c1eb3 100644 --- a/Tests/RunCMake/CMakePresetsPackage/RunCMakeTest.cmake +++ b/Tests/RunCMake/CMakePresetsPackage/RunCMakeTest.cmake
@@ -33,6 +33,12 @@ configure_file("${CMakeUserPresets_FILE}" "${RunCMake_TEST_SOURCE_DIR}/CMakeUserPresets.json" @ONLY) endif() + set(_presets_file) + if(CMakePresets_FILE_ARG) + set(_presets_file "--presets-file=${RunCMake_TEST_SOURCE_DIR}/${CMakePresets_FILE_ARG}") + configure_file("${RunCMake_SOURCE_DIR}/${CMakePresets_FILE_ARG}.in" "${RunCMake_TEST_SOURCE_DIR}/${CMakePresets_FILE_ARG}" @ONLY) + endif() + foreach(ASSET ${CMakePresetsPackage_ASSETS}) configure_file("${RunCMake_SOURCE_DIR}/${ASSET}" "${RunCMake_TEST_SOURCE_DIR}" COPYONLY) endforeach() @@ -63,11 +69,11 @@ if(eq) run_cmake_command(${name}-package-${PACKAGE_PRESET} - ${CMAKE_CPACK_COMMAND} "--preset=${PACKAGE_PRESET}" ${ARGN}) + ${CMAKE_CPACK_COMMAND} "--preset=${PACKAGE_PRESET}" ${_presets_file} ${ARGN}) set(eq 0) else() run_cmake_command(${name}-package-${PACKAGE_PRESET} - ${CMAKE_CPACK_COMMAND} "--preset" "${PACKAGE_PRESET}" ${ARGN}) + ${CMAKE_CPACK_COMMAND} "--preset" "${PACKAGE_PRESET}" ${_presets_file} ${ARGN}) set(eq 1) endif() endforeach() @@ -101,5 +107,11 @@ run_cmake_package_presets(Good "default" "build-default-debug" "no-environment;with-environment;generators;configurations;variables;config-file;debug;verbose;package-name;package-version;package-directory;vendor-name") run_cmake_package_presets(ListPresets "default" "" "x" "--list-presets") +set(CMakePresets_FILE_ARG "OtherCMakePresetsFile.json") +run_cmake_package_presets(OtherCMakePresetsFile "default" "default" "default-from-other-file" "") +run_cmake_package_presets(OtherCMakePresetsFileListPresets "" "" "x" "--list-presets") +unset(CMakePresets_FILE_ARG) + run_cmake_command(PresetsNoArg-package ${CMAKE_CPACK_COMMAND} "--preset") run_cmake_command(PresetsNoArgEq-package ${CMAKE_CPACK_COMMAND} "--preset=") +run_cmake_command(PresetsFileNoArg-package ${CMAKE_CPACK_COMMAND} "--presets-file")
diff --git a/Tests/RunCMake/CMakePresetsTest/NoConfigurePreset-test-noConfigurePreset-stderr.txt b/Tests/RunCMake/CMakePresetsTest/NoConfigurePreset-test-noConfigurePreset-stderr.txt index a70497f..d414ed8 100644 --- a/Tests/RunCMake/CMakePresetsTest/NoConfigurePreset-test-noConfigurePreset-stderr.txt +++ b/Tests/RunCMake/CMakePresetsTest/NoConfigurePreset-test-noConfigurePreset-stderr.txt
@@ -1,3 +1,3 @@ CMake Error: Could not read presets from [^ ]*/Tests/RunCMake/CMakePresetsTest/NoConfigurePreset: -Invalid preset: "noConfigurePreset"$ +Invalid test preset: "noConfigurePreset": Test presets must either be hidden or have an associated configure preset$
diff --git a/Tests/RunCMake/CMakePresetsTest/OtherCMakePresetsFile.cmake b/Tests/RunCMake/CMakePresetsTest/OtherCMakePresetsFile.cmake new file mode 100644 index 0000000..3b3b9f9 --- /dev/null +++ b/Tests/RunCMake/CMakePresetsTest/OtherCMakePresetsFile.cmake
@@ -0,0 +1,5 @@ +enable_testing() +add_test(testa ${CMAKE_COMMAND} -E echo testa) +add_test(testb ${CMAKE_COMMAND} -E echo testb) +add_test(testc ${CMAKE_COMMAND} -E echo testc) +add_test(testd ${CMAKE_COMMAND} -E echo testd)
diff --git a/Tests/RunCMake/CMakePresetsTest/OtherCMakePresetsFile.json.in b/Tests/RunCMake/CMakePresetsTest/OtherCMakePresetsFile.json.in new file mode 100644 index 0000000..7fb2df5 --- /dev/null +++ b/Tests/RunCMake/CMakePresetsTest/OtherCMakePresetsFile.json.in
@@ -0,0 +1,16 @@ +{ + "version": 2, + "configurePresets": [ + { + "name": "default", + "generator": "@RunCMake_GENERATOR@", + "binaryDir": "${sourceDir}/build" + } + ], + "testPresets": [ + { + "name": "default-from-other-file", + "configurePreset": "default" + } + ] +}
diff --git a/Tests/RunCMake/CMakePresetsTest/OtherCMakePresetsFileListPresets-text-x-stdout.txt b/Tests/RunCMake/CMakePresetsTest/OtherCMakePresetsFileListPresets-text-x-stdout.txt new file mode 100644 index 0000000..7623488 --- /dev/null +++ b/Tests/RunCMake/CMakePresetsTest/OtherCMakePresetsFileListPresets-text-x-stdout.txt
@@ -0,0 +1,3 @@ +^Available test presets: + + "default-from-other-file"$
diff --git a/Tests/RunCMake/CMakePresetsTest/PresetsFileNoArg-test-result.txt b/Tests/RunCMake/CMakePresetsTest/PresetsFileNoArg-test-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/CMakePresetsTest/PresetsFileNoArg-test-result.txt
@@ -0,0 +1 @@ +1
diff --git a/Tests/RunCMake/CMakePresetsTest/PresetsFileNoArg-test-stderr.txt b/Tests/RunCMake/CMakePresetsTest/PresetsFileNoArg-test-stderr.txt new file mode 100644 index 0000000..5235262 --- /dev/null +++ b/Tests/RunCMake/CMakePresetsTest/PresetsFileNoArg-test-stderr.txt
@@ -0,0 +1 @@ +^CMake Error: '--presets-file' requires an argument$
diff --git a/Tests/RunCMake/CMakePresetsTest/RunCMakeTest.cmake b/Tests/RunCMake/CMakePresetsTest/RunCMakeTest.cmake index 42dfe18..2b320f5 100644 --- a/Tests/RunCMake/CMakePresetsTest/RunCMakeTest.cmake +++ b/Tests/RunCMake/CMakePresetsTest/RunCMakeTest.cmake
@@ -37,6 +37,12 @@ configure_file("${CMakeUserPresets_FILE}" "${RunCMake_TEST_SOURCE_DIR}/CMakeUserPresets.json" @ONLY) endif() + set(_presets_file) + if(CMakePresets_FILE_ARG) + set(_presets_file "--presets-file=${RunCMake_TEST_SOURCE_DIR}/${CMakePresets_FILE_ARG}") + configure_file("${RunCMake_SOURCE_DIR}/${CMakePresets_FILE_ARG}.in" "${RunCMake_TEST_SOURCE_DIR}/${CMakePresets_FILE_ARG}" @ONLY) + endif() + foreach(ASSET ${CMakePresetsTest_ASSETS}) configure_file("${RunCMake_SOURCE_DIR}/${ASSET}" "${RunCMake_TEST_SOURCE_DIR}" COPYONLY) endforeach() @@ -65,11 +71,11 @@ if(eq) run_cmake_command(${name}-test-${TEST_PRESET} - ${CMAKE_CTEST_COMMAND} "--preset=${TEST_PRESET}" ${ARGN}) + ${CMAKE_CTEST_COMMAND} "--preset=${TEST_PRESET}" ${_presets_file} ${ARGN}) set(eq 0) else() run_cmake_command(${name}-test-${TEST_PRESET} - ${CMAKE_CTEST_COMMAND} "--preset" "${TEST_PRESET}" ${ARGN}) + ${CMAKE_CTEST_COMMAND} "--preset" "${TEST_PRESET}" ${_presets_file} ${ARGN}) set(eq 1) endif() endforeach() @@ -97,6 +103,7 @@ run_cmake_command(PresetsNoArg-test ${CMAKE_CTEST_COMMAND} "--preset") run_cmake_command(PresetsNoArgEq-test ${CMAKE_CTEST_COMMAND} "--preset=") +run_cmake_command(PresetsFileNoArg-test ${CMAKE_CTEST_COMMAND} "--presets-file") set(CMakePresetsTest_FILE "${RunCMake_SOURCE_DIR}/Condition.json.in") run_cmake_test_presets(ConditionListPresets "" "" "x" "--list-presets") @@ -123,6 +130,7 @@ run_cmake_test_presets(Passthrough "default" "" "basic;inherit;execOnly") run_cmake_test_presets(PassthroughCombined "default" "" "combined" "--" "--cli-arg") -set(CMakePresetsTest_NO_CONFIGURE 1) -set(CMakePresetsTest_NO_BUILD 0) +set(CMakePresets_FILE_ARG OtherCMakePresetsFile.json) +run_cmake_test_presets(OtherCMakePresetsFile "default" "" "default-from-other-file") +run_cmake_test_presets(OtherCMakePresetsFileListPresets "" "" "x" "--list-presets")
diff --git a/Tests/RunCMake/CMakePresetsWorkflow/InvalidOption-stderr.txt b/Tests/RunCMake/CMakePresetsWorkflow/InvalidOption-stderr.txt index 8e23c9b..71a61f5 100644 --- a/Tests/RunCMake/CMakePresetsWorkflow/InvalidOption-stderr.txt +++ b/Tests/RunCMake/CMakePresetsWorkflow/InvalidOption-stderr.txt
@@ -1,6 +1,7 @@ ^Unknown argument -DINVALID_OPTION Usage: cmake --workflow <options> Options: - --preset <preset> = Workflow preset to execute\. - --list-presets = List available workflow presets\. - --fresh = Configure a fresh build tree, removing any existing cache file\.$ + --preset <preset> = Workflow preset to execute\. + --presets-file <file> = Path to a presets file\. + --list-presets = List available workflow presets\. + --fresh = Configure a fresh build tree, removing any existing cache file\.$
diff --git a/Tests/RunCMake/CMakePresetsWorkflow/OtherCMakePresetsFile.cmake b/Tests/RunCMake/CMakePresetsWorkflow/OtherCMakePresetsFile.cmake new file mode 100644 index 0000000..31ce7ff --- /dev/null +++ b/Tests/RunCMake/CMakePresetsWorkflow/OtherCMakePresetsFile.cmake
@@ -0,0 +1,8 @@ +message(STATUS "Testing the configure step at ${CMAKE_BINARY_DIR}") + +add_custom_target(echo_test ALL COMMAND ${CMAKE_COMMAND} -E echo "Testing the build step at ${CMAKE_BINARY_DIR}") + +enable_testing() +add_test(NAME EchoTest COMMAND ${CMAKE_COMMAND} -E echo "Testing the test step at ${CMAKE_BINARY_DIR}") + +include(CPack)
diff --git a/Tests/RunCMake/CMakePresetsWorkflow/OtherCMakePresetsFile.json.in b/Tests/RunCMake/CMakePresetsWorkflow/OtherCMakePresetsFile.json.in new file mode 100644 index 0000000..4b3f7c3 --- /dev/null +++ b/Tests/RunCMake/CMakePresetsWorkflow/OtherCMakePresetsFile.json.in
@@ -0,0 +1,57 @@ +{ + "version": 6, + "configurePresets": [ + { + "name": "default", + "binaryDir": "${sourceDir}/build", + "generator": "@RunCMake_GENERATOR@" + } + ], + "buildPresets": [ + { + "name": "default", + "configurePreset": "default", + "configuration": "Debug" + } + ], + "testPresets": [ + { + "name": "default", + "configurePreset": "default", + "configuration": "Debug" + } + ], + "packagePresets": [ + { + "name": "default", + "configurePreset": "default", + "generators": [ + "External" + ], + "configurations": ["Debug"] + } + ], + "workflowPresets": [ + { + "name": "OtherCMakePresetsFile", + "steps": [ + { + "type": "configure", + "name": "default" + }, + { + "type": "build", + "name": "default" + }, + { + "type": "test", + "name": "default" + }, + { + "type": "package", + "name": "default" + } + ] + } + ] +}
diff --git a/Tests/RunCMake/CMakePresetsWorkflow/OtherCMakePresetsFileListPresets-stdout.txt b/Tests/RunCMake/CMakePresetsWorkflow/OtherCMakePresetsFileListPresets-stdout.txt new file mode 100644 index 0000000..194fbfd --- /dev/null +++ b/Tests/RunCMake/CMakePresetsWorkflow/OtherCMakePresetsFileListPresets-stdout.txt
@@ -0,0 +1,3 @@ +^Available workflow presets: + + "OtherCMakePresetsFile"$
diff --git a/Tests/RunCMake/CMakePresetsWorkflow/PresetsFileNoArg-workflow-result.txt b/Tests/RunCMake/CMakePresetsWorkflow/PresetsFileNoArg-workflow-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/CMakePresetsWorkflow/PresetsFileNoArg-workflow-result.txt
@@ -0,0 +1 @@ +1
diff --git a/Tests/RunCMake/CMakePresetsWorkflow/PresetsFileNoArg-workflow-stderr.txt b/Tests/RunCMake/CMakePresetsWorkflow/PresetsFileNoArg-workflow-stderr.txt new file mode 100644 index 0000000..50d4e2b --- /dev/null +++ b/Tests/RunCMake/CMakePresetsWorkflow/PresetsFileNoArg-workflow-stderr.txt
@@ -0,0 +1 @@ +^CMake Error: No file specified for --presets-file
diff --git a/Tests/RunCMake/CMakePresetsWorkflow/RunCMakeTest.cmake b/Tests/RunCMake/CMakePresetsWorkflow/RunCMakeTest.cmake index fac8dfc..e121b1c 100644 --- a/Tests/RunCMake/CMakePresetsWorkflow/RunCMakeTest.cmake +++ b/Tests/RunCMake/CMakePresetsWorkflow/RunCMakeTest.cmake
@@ -35,6 +35,12 @@ configure_file("${CMakeUserPresets_FILE}" "${RunCMake_TEST_SOURCE_DIR}/CMakeUserPresets.json" @ONLY) endif() + set(_presets_file) + if(CMakePresets_FILE_ARG) + set(_presets_file "--presets-file=${RunCMake_TEST_SOURCE_DIR}/${CMakePresets_FILE_ARG}") + configure_file("${RunCMake_SOURCE_DIR}/${CMakePresets_FILE_ARG}.in" "${RunCMake_TEST_SOURCE_DIR}/${CMakePresets_FILE_ARG}" @ONLY) + endif() + foreach(ASSET ${CMakePresets_ASSETS}) configure_file("${RunCMake_SOURCE_DIR}/${ASSET}.in" "${RunCMake_TEST_SOURCE_DIR}/${ASSET}" @ONLY) endforeach() @@ -54,7 +60,7 @@ set(eq 1 PARENT_SCOPE) set(preset_arg "--preset" "${name}") endif() - run_cmake_command("${name}" "${CMAKE_COMMAND}" "--workflow" ${preset_arg} ${ARGN}) + run_cmake_command("${name}" "${CMAKE_COMMAND}" "--workflow" ${preset_arg} ${_presets_file} ${ARGN}) endfunction() set(CMakePresets_SCHEMA_EXPECTED_RESULT 1) @@ -80,9 +86,15 @@ unset(CMakeUserPresets_FILE) unset(CMakePresets_ASSETS) +set(CMakePresets_FILE_ARG "OtherCMakePresetsFile.json") +run_cmake_workflow_presets(OtherCMakePresetsFile) +run_cmake_workflow_presets(OtherCMakePresetsFileListPreset --list-presets) +unset(CMakePresets_FILE_ARG) + run_cmake_workflow_presets(ListPresets --list-presets) run_cmake_command(PresetsNoArg-workflow ${CMAKE_COMMAND} "--workflow" "--preset") run_cmake_command(PresetsNoArgEq-workflow ${CMAKE_COMMAND} "--workflow" "--preset=") +run_cmake_command(PresetsFileNoArg-workflow ${CMAKE_COMMAND} "--workflow" "--presets-file") run_cmake_workflow_presets(InvalidOption -DINVALID_OPTION) set(RunCMake_TEST_NO_CLEAN TRUE)
diff --git a/Tests/RunCMake/FASTBuild/UnityIsolate-check.cmake b/Tests/RunCMake/FASTBuild/UnityIsolate-check.cmake index f42bb1b..94ead02 100644 --- a/Tests/RunCMake/FASTBuild/UnityIsolate-check.cmake +++ b/Tests/RunCMake/FASTBuild/UnityIsolate-check.cmake
@@ -10,7 +10,7 @@ '.*some_source_file_3.cpp', '.*some_source_file_4.cpp' } - .UnityInputIsolatedFiles = + .UnityInputExcludedFiles = { '.*some_source_file_1.cpp', '.*some_source_file_4.cpp'
diff --git a/Tests/RunCMake/ctest_test/RunCMakeTest.cmake b/Tests/RunCMake/ctest_test/RunCMakeTest.cmake index 730efa8..9f014d0 100644 --- a/Tests/RunCMake/ctest_test/RunCMakeTest.cmake +++ b/Tests/RunCMake/ctest_test/RunCMakeTest.cmake
@@ -260,6 +260,15 @@ endfunction() run_environment() +# Test setting of CTEST_TEST_COVERAGE_TOOL +function(run_CTestTestCoverageTool) + set(CASE_CTEST_TEST_ARGS "COVERAGE_TOOL" "LLVM-COV") + set(CASE_TEST_PREFIX_CODE [[ unset(ENV{LLVM_PROFILE_FILE})]]) + + run_ctest(TestCTestTestCoverageTool -VV) +endfunction() +run_CTestTestCoverageTool() + # test for OUTPUT_JUNIT run_ctest_test(OutputJUnit OUTPUT_JUNIT junit.xml REPEAT UNTIL_FAIL:2)
diff --git a/Tests/RunCMake/ctest_test/TestCTestTestCoverageTool-stdout.txt b/Tests/RunCMake/ctest_test/TestCTestTestCoverageTool-stdout.txt new file mode 100644 index 0000000..768bb03 --- /dev/null +++ b/Tests/RunCMake/ctest_test/TestCTestTestCoverageTool-stdout.txt
@@ -0,0 +1,3 @@ +1: Using environment variable LLVM_PROFILE_FILE=[^ +]*/Tests/RunCMake/ctest_test/[^ +]*_%p.profraw
diff --git a/Utilities/ClangTidyModule/OstringstreamUseCmstrcatCheck.cxx b/Utilities/ClangTidyModule/OstringstreamUseCmstrcatCheck.cxx index 8265e32..801c9f6 100644 --- a/Utilities/ClangTidyModule/OstringstreamUseCmstrcatCheck.cxx +++ b/Utilities/ClangTidyModule/OstringstreamUseCmstrcatCheck.cxx
@@ -18,13 +18,10 @@ void OstringstreamUseCmstrcatCheck::registerMatchers(MatchFinder* Finder) { - Finder->addMatcher( - typeLoc(unless(elaboratedTypeLoc()), - optionally(hasParent(elaboratedTypeLoc().bind("parentType"))), - loc(qualType( - hasDeclaration(namedDecl(hasName("::std::ostringstream")))))) - .bind("ostringstream"), - this); + Finder->addMatcher(typeLoc(loc(qualType(hasDeclaration( + namedDecl(hasName("::std::ostringstream")))))) + .bind("ostringstream"), + this); } void OstringstreamUseCmstrcatCheck::check(
diff --git a/Utilities/ClangTidyModule/UseCmsysFstreamCheck.cxx b/Utilities/ClangTidyModule/UseCmsysFstreamCheck.cxx index 5f28054..cf75bfc 100644 --- a/Utilities/ClangTidyModule/UseCmsysFstreamCheck.cxx +++ b/Utilities/ClangTidyModule/UseCmsysFstreamCheck.cxx
@@ -90,8 +90,7 @@ loc(usingType(throughUsingDecl(namedDecl(hasName(CmsysName))))); Finder->addMatcher( - typeLoc(IsStd, unless(IsCmsys), unless(elaboratedTypeLoc()), - optionally(hasParent(elaboratedTypeLoc().bind("parentType"))), + typeLoc(IsStd, unless(IsCmsys), optionally(hasParent(nestedNameSpecifierLoc().bind("parentName")))) .bind(Bind), this);
diff --git a/Utilities/Scripts/regenerate-presets.py b/Utilities/Scripts/regenerate-presets.py index 37f801a..665b712 100755 --- a/Utilities/Scripts/regenerate-presets.py +++ b/Utilities/Scripts/regenerate-presets.py
@@ -31,11 +31,12 @@ SCHEMA_JSON_FILENAME = 'schema.json' WORKSPACE = Path(__file__).parent.parent.parent.absolute() +SCRIPT_REL = Path(__file__).relative_to(WORKSPACE) PRESETS = WORKSPACE / PRESETS_REL DIAGNOSTICS = WORKSPACE / 'Source/cmDiagnostics.h' RST_BANNER = f"""\ -.. This file was generated by {Path(__file__).relative_to(WORKSPACE)} +.. This file was generated by {SCRIPT_REL.as_posix()} from {PRESETS_REL}/{SCHEMA_YAML_FILENAME}. Do not edit. """
diff --git a/Utilities/Sphinx/cmake.py b/Utilities/Sphinx/cmake.py index ca0b7a1..27049c7 100644 --- a/Utilities/Sphinx/cmake.py +++ b/Utilities/Sphinx/cmake.py
@@ -234,6 +234,7 @@ _cmake_index_objs = { 'command': _cmake_index_entry('command'), 'cpack_gen': _cmake_index_entry('cpack generator'), + 'diagnostic': _cmake_index_entry('diagnostic'), 'envvar': _cmake_index_entry('envvar'), 'generator': _cmake_index_entry('generator'), 'genex': _cmake_index_entry('genex'), @@ -523,6 +524,79 @@ return super().run() +class CMakeDiagnosticObject(CMakeObject): + object_type = 'diagnostic' + required_arguments = 0 + optional_arguments = 0 + + DEFAULT_CHOICES = {'ignore', 'warn', 'error'} + + def default_option(argument): + return directives.choice( + argument, CMakeDiagnosticObject.DEFAULT_CHOICES) + + option_spec = { + 'default': default_option, + 'parent': directives.unchanged, + } + + def __init__(self, *args, **kwargs): + self.targetname = None + super().__init__(*args, **kwargs) + + def _preset_name(self) -> str: + sep = False + out = '' + for c in self.targetname[4:]: + if c == '_': + sep = True + elif sep: + out += c + sep = False + else: + out += c.lower() + return out + + def _build_field(self, name: str, content: str | list[Node]) -> Node: + if type(content) is not list: + content = self.parse_text_to_nodes(content) + + name_node = nodes.field_name(text=name) + body_node = nodes.field_body('', *content) + return nodes.field('', name_node, body_node) + + def _build_cli(self) -> list[Node]: + cname = self.targetname[4:].lower().replace('_', '-') + ctext = f'-W[no-][error=]{cname}' + return self.parse_text_to_nodes(f':option:`{ctext} <cmake -W>`') + + def _build_preset_refs(self) -> list[Node]: + p = self._preset_name() + w = f':preset:`warnings.{p} <configurePresets.warnings.{p}>`' + e = f':preset:`errors.{p} <configurePresets.errors.{p}>`' + return self.parse_text_to_nodes(f'{w}, {e}') + + def run(self) -> list[Node]: + self.domain, self.objtype = self.name.split(':', 1) + doc = self.state.document + self.targetname = doc.next_node(nodes.title).astext() + + default = self.options['default'].capitalize() + parent = self.options.get('parent') + + headers = nodes.field_list() + headers += self._build_field('Command Line', self._build_cli()) + headers += self._build_field('Presets', self._build_preset_refs()) + headers += self._build_field('Default', default) + + if parent: + parentRef = self.parse_text_to_nodes(f':diagnostic:`{parent}`') + headers += self._build_field('Parent', parentRef) + + content = self.parse_content_to_nodes() + return [headers] + content + + class CMakeReferenceRole: # See sphinx.util.nodes.explicit_title_re; \x00 escapes '<'. _re = re.compile(r'^(.+?)(\s*)(?<!\x00)<(.*?)>$', re.DOTALL) @@ -680,6 +754,7 @@ object_types = { 'command': ObjType('command', 'command'), 'cpack_gen': ObjType('cpack_gen', 'cpack_gen'), + 'diagnostic': ObjType('diagnostic', 'diagnostic'), 'envvar': ObjType('envvar', 'envvar'), 'generator': ObjType('generator', 'generator'), 'genex': ObjType('genex', 'genex'), @@ -700,6 +775,7 @@ directives = { 'command': CMakeObject, 'envvar': CMakeObject, + 'diagnostic': CMakeDiagnosticObject, 'genex': CMakeGenexObject, 'signature': CMakeSignatureObject, 'variable': CMakeObject, @@ -710,6 +786,7 @@ 'cref': CMakeCRefRole(), 'command': CMakeXRefRole(fix_parens=True, lowercase=True), 'cpack_gen': CMakeXRefRole(), + 'diagnostic': CMakeXRefRole(), 'envvar': CMakeXRefRole(), 'generator': CMakeXRefRole(), 'genex': CMakeXRefRole(), @@ -729,11 +806,12 @@ 'preset': CMakeXRefRole(lowercase=True, warn_dangling=True), # Roles for program-specific command-line options without the program # name (which add the name to form the ref). - 'cmake-option': CMakeOptionXRefRole('cmake'), - 'cmake-build-option': CMakeOptionXRefRole('cmake--build'), - 'cmake-install-option': CMakeOptionXRefRole('cmake--install'), - 'cpack-option': CMakeOptionXRefRole('cpack'), - 'ctest-option': CMakeOptionXRefRole('ctest'), + 'cmake-option': CMakeOptionXRefRole('cmake'), + 'cmake-build-option': CMakeOptionXRefRole('cmake--build'), + 'cmake-install-option': CMakeOptionXRefRole('cmake--install'), + 'cmake-workflow-option': CMakeOptionXRefRole('cmake--workflow'), + 'cpack-option': CMakeOptionXRefRole('cpack'), + 'ctest-option': CMakeOptionXRefRole('ctest'), } initial_data = { 'objects': {}, # fullname -> ObjectEntry