summaryrefslogtreecommitdiffstats
path: root/Source/Checks
Commit message (Collapse)AuthorAgeFilesLines
* Merge topic 'filesystem-class-check-inheritance'Brad King2024-08-191-1/+1
|\ | | | | | | | | | | | | | | 2216843fd5 cm_cxx_filesystem: Improve detection of std::filesystem support on GCC Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: scivision <michael@scivision.dev> Merge-request: !9735
| * cm_cxx_filesystem: Improve detection of std::filesystem support on GCCMichael Pratt2024-08-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The check added by commit 40af103402 (cmCMakePath: do not use std::filesystem::path with RH gcc-toolset-10, 2023-12-02, v3.28.0~5^2) fails unnecessarily in some cases due to not inheriting `std::string_view` publicly. Inheritance into a class is private by default, and this std class has public members that would be access restricted when used to create public objects in the current scope. On some versions of GCC, depending on standards options, this causes either template instantiation errors, or "inaccessible base" or "not declared" errors. Fix by setting the inheritance to public. This does not affect the intention of the previous fix because the check still fails when using gcc-toolset-10's standard library with clang. Issue: #25458, #25453
* | cm_cxx_features: Ignore ninja warningsMichael Pratt2024-08-141-0/+2
|/ | | | | Future changes to ninja may make harmless warnings more likely. Filter them out from compiler feature checks.
* Configure CMake itself with policies through CMake 3.29Brad King2024-06-051-1/+1
|
* Merge topic 'cxx-checks-icpx-overriding'Brad King2024-06-041-1/+3
|\ | | | | | | | | | | | | 557a5f3083 cm_cxx_features: Filter out icpx -Woverriding-t-option warnings Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !9577
| * cm_cxx_features: Filter out icpx -Woverriding-t-option warningsBrad King2024-06-031-1/+3
| | | | | | | | Issue: #20664
* | cm_cxx_features: Ignore distcc warningsMartin Mokry2024-06-021-0/+2
|/ | | | | | | Filter out warnings of distcc which does not provide information about compiler feature availability. Fixes: #22573
* cm_cxx_features: Ignore Clang unused-argument warningsjinzhe li2024-04-151-1/+1
| | | | | | | | | Filter out `-Wunused-command-line-argument` warnings from Clang (that can be caused by user-specified flags) so that they do not break our checks for C++ feature availability. This extends commit 71b65abca2 (C++ feature checks: Filter out warnings caused by user flags, 2017-09-19, v3.10.0-rc1~90^2).
* Configure CMake itself with policies through CMake 3.28Brad King2024-02-061-1/+1
|
* Source: Enhance check for C++17 filesystem supportMichael Hirsch2023-12-051-2/+9
| | | | | | | | | | | | * Add `lexically_normal` test for all platforms. * On Windows, MinGW does not currently handle `lexically_normal()` correctly on UNC path, but MSVC and IntelLLVM do--add a comment on this to avoid future confusion. * Add test with `\\?\` notation and `weakly_canonical` that also triggers the MinGW bug, but is fine with MSVC and oneAPI, for a more robust and comprehensive test.
* Merge topic 'RH-gcc-toolset-10-bug-check'Brad King2023-12-051-0/+28
|\ | | | | | | | | | | | | | | 40af103402 cmCMakePath: do not use std::filesystem::path with RH gcc-toolset-10 Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: buildbot <buildbot@kitware.com> Merge-request: !9026
| * cmCMakePath: do not use std::filesystem::path with RH gcc-toolset-10Marc Chevrier2023-12-041-0/+28
| | | | | | | | Fixes: #25458, #25453
* | Source: Fix clang -Wstrict-prototypes warningsSean McBride2023-10-261-1/+1
| |
* | Configure CMake itself with policies through CMake 3.27Brad King2023-10-031-1/+1
|/
* Merge topic 'cxx-atomic'Brad King2023-08-251-1/+1
|\ | | | | | | | | | | | | fa3c4b6dbf Source: Link libatomic when needed on any Linux architecture Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !8756
| * Source: Link libatomic when needed on any Linux architectureBrad King2023-08-241-1/+1
| | | | | | | | | | | | | | | | Extend commit 78bbd58545 (Source: Link libatomic when needed on Linux 32-bit ARM, 2023-07-27, v3.27.2~10^2) to check for libatomic on more architectures. Fixes: #25204
* | Merge topic 'cxx-atomic'Brad King2023-07-284-0/+19
|\ \ | |/ | | | | | | | | | | | | 78bbd58545 Source: Link libatomic when needed on Linux 32-bit ARM Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: buildbot <buildbot@kitware.com> Merge-request: !8663
| * Source: Link libatomic when needed on Linux 32-bit ARMBrad King2023-07-274-0/+19
| | | | | | | | Fixes: #25114
* | Configure CMake itself with policies through CMake 3.26Brad King2023-06-071-1/+1
|/
* cm_cxx_features: Ignore MSVC command-line warnings (Dxxxx)Roffild2023-03-021-0/+2
| | | | | | | The Dxxxx warning range is for command-line warnings [1]. These are incidental and should not affect the result of the feature check. [1] https://learn.microsoft.com/en-us/cpp/error-messages/tool-errors/command-line-errors-d8000-through-d9999
* ccmake: Update minimum required version of CMake for curses checkBrad King2023-03-011-4/+1
| | | | | This should have been part of commit d6b811fb82 (Require CMake 3.13+ to configure CMake itself, 2022-02-22, v3.24.0-rc1~605^2~1).
* Merge topic 'filesystem-path-c++03-abi'Brad King2022-10-212-3/+12
|\ | | | | | | | | | | | | | | ee9805ccd1 cm/filesystem: Fix crash with pre-C++11 std::string GNU ABI in C++17 Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: buildbot <buildbot@kitware.com> Merge-request: !7813
| * cm/filesystem: Fix crash with pre-C++11 std::string GNU ABI in C++17Brad King2022-10-202-3/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `remove_filename` and `replace_extension` methods compute an offset between the whole path in a `std::string` and a part of a path in a `std::string_view`. This is done by subtracting their `.data()` pointers. However, C++17 adds a non-const `.data()` through which modification of the string is allowed. This means the copy-on-write implementation used by the pre-C++11 std::string GNU ABI must reallocate if the string has been copied. Our subtraction then computes an offset between two different allocations, which is undefined behavior. The workaround in commit b3ca4f9ad1 (cm/filesystem: Work around crash when compiled for CYGWIN/MSYS runtime, 2021-04-22, v3.21.0-rc1~271^2~2) avoided the problem by calling the non-const `.data()` to reallocate before constructing the `string_view`. Instead, explicitly call the const `.data()` method on the string, which does not reallocate. Fixes: #22090, #23328
* | cm_cxx_features: filter out warnings from Xcode 14Gregor Jasny2022-06-211-1/+1
| | | | | | | | | | | | ``` xcodebuild[13070:54426] [MT] DVTSDK: Warning: SDK path collision for path ```
* | cm_cxx_filesystem.cxx: revert erroneous changeMarc Chevrier2022-03-151-2/+0
| | | | | | | | Revert erroneous change introduced by commit 0a81ea1.
* | Genex-LINK_GROUP: Add possibility to group libraries at link stepMarc Chevrier2022-02-281-0/+2
|/ | | | Fixes: #23121
* LCC: Add dedicated support for MCST LCC compilermakise-homura2021-10-153-3/+3
| | | | | | | | | | | | | | | | | | | | | Divert LCC compiler as a new one, instead of treating it as GNU. Since old times, Elbrus C/C++/Fortran Compiler (LCC) by MCST has been passing checks for GNU compilers, so it has been identified as GNU. Now, with intent of seriously upstreaming its support, it has been added as a separate LCC compiler, and its version displays not a supported GCC version, but LCC version itself (e.g. LCC 1.25.19 instead of GNU 7.3.0). This commit adds its support for detection, and also converts basically every check like 'is this compiler GNU?' to 'is this compiler GNU or LCC?'. The only places where this check is untouched, is where it regards other platforms where LCC is unavailable (primarily non-Linux), and where it REALLY differs from GNU compiler. Note: this transition may break software that are already ported to Elbrus, but hardly relies that LCC will be detected as GNU; still such software is not known.
* MSYS: Add support for running under MSYS runtime environmentOrgad Shaneh2021-04-261-1/+3
| | | | Detect MSYS as CYGWIN, with the required adaptations.
* Restore support for cross-compiling CMake itselfMarc Chevrier2021-01-181-1/+7
| | | | | | | In commit eb583b0a66 (cmake_path command: path management, 2020-07-23, v3.19.0-rc1~216^2~1) we added a `try_run`. In cross-compilation mode, C++ features tests must avoid running tests if there is no emulator defined.
* cm_cxx_features: Filter out MSBXXXX warningsAnonymous Maarten2020-10-081-0/+2
| | | | | | | When building CMake in `%TMP%` on Windows, MSBuild issues warnings. Filter those out to avoid breaking C++ feature checks. Fixes: #21270
* cmake_path command: path managementMarc Chevrier2020-09-062-8/+40
| | | | Fixes: #19568, #20922
* STL Support: Add cm::filesystem::path in <cm/filesystem>Marc Chevrier2020-07-092-0/+15
|
* Merge topic 'cm_cxx_features-icpc-10121'Brad King2020-05-011-0/+2
|\ | | | | | | | | | | | | 231637eae2 cm_cxx_features: Filter out 'icpc: command line warning #10121' Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4698
| * cm_cxx_features: Filter out 'icpc: command line warning #10121'Jennifer Kathleen Green2020-04-301-0/+2
| | | | | | | | | | | | | | | | | | | | This warning appears for: overriding '-xCORE-AVX2' with '-march=haswell'` in some Cray environments. Fixes: #20664
* | Merge topic 'cm_cxx_features-libhugetlbfs'Brad King2020-04-301-0/+2
|\ \ | |/ | | | | | | | | | | 4ab0d37b41 cm_cxx_features: Filter out libhugetlbfs warnings Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4681
| * cm_cxx_features: Filter out libhugetlbfs warningsJennifer Green2020-04-291-0/+2
| | | | | | | | | | | | | | | | | | | | Without this, CMake fails to build on Cray systems with a craype-hugepages modulefile loaded on the front-end due to libhugetlbfs warnings breaking the CXX Feature tests. Filter out the warnings so the bootstrap can proceed to successfully install CMake on Cray Linux systems. Fixes: #20645
* | cm_cxx_features: Remove CUDA installation warning filteringRaul Tambre2020-04-011-2/+0
|/ | | | | | This has been fixed in upstream LLVM. No released version contains this issue. https://github.com/llvm/llvm-project/commit/d32170dbd5b0d54436537b6b75beaf44324e0c28 https://github.com/llvm/llvm-project/commit/eb2ba2ea953b5ea73cdbb598f77470bde1c6a011
* cm_cxx_features: Filter out CUDA installation warningsRaul Tambre2020-03-091-0/+2
| | | | | | | Clang always outputs these if it doesn't recognize the installed CUDA version. They don't affect compiling C++. Fixes #20434.
* Merge topic 'cmext-memory'Brad King2019-12-043-2/+12
|\ | | | | | | | | | | | | fc3b4caa2e Memory management: cast functions for managed pointers Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4064
| * Memory management: cast functions for managed pointersMarc Chevrier2019-11-273-2/+12
| |
* | C++ feature checks: Ignore linker warningsMarcus Calhoun-Lopez2019-11-251-0/+2
|/
* Refactor: Use added message types in various modulesAlex Turbov2019-11-026-15/+47
| | | | Co-Authored-By: Craig Scott <craig.scott@crascit.com>
* Extend C++17 feature checks to require std::optionalBrad King2019-08-231-1/+4
|
* Merge topic 'cxx-checks-warning-match'Brad King2019-03-081-1/+1
|\ | | | | | | | | | | | | 4ca5a815f2 C++ feature checks: Match warnings more strictly Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3075
| * C++ feature checks: Match warnings more strictlyBrad King2019-03-071-1/+1
| | | | | | | | | | | | | | | | Require the word "warning" to appear at the start of a line, after whitespace, or after a `:`. This is the same that CTest launchers use to match warnings. It avoids matching "warning" inside file paths. Fixes: #19019
| * Extend C++17/C++14 feature checks to cover more standard library APIsMathieu Garaud2019-02-272-2/+18
| | | | | | | | | | | | | | Make sure `std::cbegin`, `std::cend`, and `std::size` work in C++17 or C++14 mode before choosing the corresponding standard level for compiling CMake itself. This helps in cases that the compiler is using a standard library too old to support the full standard level chosen.
* | Extend C++17/C++14 feature checks to cover more standard library APIsMathieu Garaud2019-02-272-2/+18
| | | | | | | | | | | | | | Make sure `std::cbegin`, `std::cend`, and `std::size` work in C++17 or C++14 mode before choosing the corresponding standard level for compiling CMake itself. This helps in cases that the compiler is using a standard library too old to support the full standard level chosen.
* | Avoid compiling CMake itself as C++17 with Clang's MSVC ABIZsolt Parragi2019-02-111-0/+13
|/ | | | | | GUID functions in ATL cause compilation errors with this compiler. Add the offending case to our check for C++17 support so that it is not used by default when it does not work.
* C++ feature checks: Filter out libstdc++ sprintf warningsBrad King2018-11-201-0/+2
| | | | | | | | | | | On OpenBSD linking to `libstdc++` with GCC 6.4 always warns: warning: sprintf() is often misused, please use snprintf() These do not affect the availability of C++ features we're checking, so filter them out. Fixes: #18602
* Extend C++17/C++14 feature checks to require unique_ptrBrad King2018-08-014-4/+9
| | | | | | | | When testing compiler modes higher than C++11 for constructs we need, include a check for using `unique_ptr` in that mode. The PGI 18.4 compiler in some environments supports `unique_ptr` in C++11 mode but is broken for C++14 and C++17. Check that `unique_ptr` works in these modes before using one.