Commit Graph

12071 Commits

Author SHA1 Message Date
Brad King
7a16688f02 Merge branch 'FindThreads-revert-libc-pthread-flag' into release-3.22
Merge-request: !7025
2022-02-28 13:09:19 -05:00
Brad King
c6da90bd39 FindThreads: Revert "Honor THREADS_PREFER_PTHREAD_FLAG when ... in libc"
Revert commit 5efb6fb516 (FindThreads: Honor THREADS_PREFER_PTHREAD_FLAG
when pthread is found in libc, 2021-11-03, v3.21.5~4^2).  The check for
the `-pthread` flag can pass on compilers like XL, that interprets it as
`-p -t hread` and returns zero.  Prior to that commit, we did not use
the check in the `CMAKE_HAVE_LIBC_PTHREAD` code path.  Now we do, it
succeeds, and we incorrectly add the `-pthread` flag for XL.

This change was backported to the 3.21 and 3.22 release series long
after they initially came out.  Since there may be more cases where we
now add `-pthread` incorrectly, it is simplest to revert the change in
all release series pending further investigation.

Fixes: #23270
2022-02-28 12:53:15 -05:00
Silvio Traversaro
44f7238d5d FindGLUT: Use link directories for libs from pkg-config
Since commit f90d15458a (FindGLUT: Use pkg-config to find flags if
available, 2021-06-11, v3.22.0-rc1~469^2), the `GLUT_LIBRARIES` may come
from `pkg-config`, in which case they may be `-l` flags instead of
absolute paths.  Propagate `GLUT_LIBRARY_DIRS` to GLUT::GLUT too.

Fixes: #23229
2022-02-15 10:35:11 -05:00
Tom M
b8d885ed0d FindMatlab: Fix version detection for MCR >= 9.10
Recent MCR versions have the following `VersionInfo.xml`:

    <version>9.11.0.1837725</version>

Fix parsing of multiple digits in the version components
so that we do not mistake this for version `9.1`.
2022-02-14 10:23:33 -05:00
Brad King
1a30d3ade5 Merge branch 'backport-IntelLLVM-depfile-flags' into release-3.22
Merge-request: !6964
2022-02-09 10:09:51 -05:00
William R. Dieter
a8b6bf9a38 IntelLLVM: Add dependencies on system header files on Windows
In commit a90d2a9eed (IntelLLVM: Add support for Intel LLVM-based
compilers, 2020-11-02, v3.20.0-rc1~89^2~20) the IntelLLVM depfile
generation flags were taken from `Platform/Windows-Intel-C`.  Those
flags were added by commit a624a3e1b3 (Ninja: Use deps=gcc for Intel
Compiler on Windows, 2019-01-30, v3.14.0-rc1~30^2), which forgot to
account for commit 6d74e7870b (Ninja: Add dependencies on
system-provided header files, 2016-03-15, v3.6.0-rc1~265^2).

The `-QMD` option generates Makefile dependencies.  The `-QMMD` option
generates Makefile dependencies, but excludes system header files.
Part of the BuildDepends test includes a header, cmake_pch.hxx, that
includes a second header, zot_pch.hxx.  The test builds a pch file for
cmake_pch.hxx, touches zot_pch.hxx, then verifes that cmake_pch.hxx.pch
is regenerated based on the dependencies.

The cmake_pch.hxx contains `#pragma system_header` before it includes
zot_pch.hxx.  `#pragma system_header` indicates that the portion of the
file following the pragma is to be treated as a system header.

When `-QMMD` is used to generate dependencies, the `#include` of
zot_pch.hxx is ignored because it `-QMMD` says to ignore system headers.

Using `-QMD` instead uses all headers when generating dependencies
and causes this test to pass.  The Clang configuration in
Platform/Windows-Clang.cmake also uses the `-MD` option for generating
pre-compiled headers, instead of `-MMD`.

Signed-off-by: William R. Dieter <william.r.dieter@intel.com>
2022-02-09 10:07:51 -05:00
Brad King
94f1bbdd54 Intel: Add dependencies on system header files on Windows
In commit a624a3e1b3 (Ninja: Use deps=gcc for Intel Compiler on Windows,
2019-01-30, v3.14.0-rc1~30^2) we forgot to account for commit 6d74e7870b
(Ninja: Add dependencies on system-provided header files, 2016-03-15,
v3.6.0-rc1~265^2).
2022-02-09 10:07:51 -05:00
مهدي شينون (Mehdi Chinoune)
b67ff61c3a FindGSL: Improve version extraction regex
Backport commit 58f2708b90 (FindGSL: Improve version extraction regex,
2021-12-17) to the CMake 3.22 branch.

Fixes: #23017
2022-02-08 10:21:15 -05:00
Brad King
4ef6e27cb9 CompilerId: Fix default extensions check for Clang targeting MSVC ABI
In commit fc3a1cbdd8 (CompilerID: Compiler extensions default detection,
2021-05-29, v3.22.0-rc1~52^2~2), extensions were assumed to be `OFF`
for Clang targeting the MSVC ABI.  However, the `clang` and `clang++`
tools both seem to have extensions enabled by default even when
targeting the MSVC ABI.

This can be observed with the `RunCMake.CompileFeatures` test.
It fails with the GNU-like `clang/clang++` front-end, but removing
the above special case makes it pass.  The test passes either way
with the MSVC-like `clang-cl` front-end.
2022-02-03 12:06:00 -05:00
Raul Tambre
cc4da8d13a IAR/CXX: Fix compatibility with CMP0057 OLD
Commit a9073db7 (IAR: update language specification detection, 2021-09-23)
added usage of the if() IN_LIST operation and forgot to account for it not
being available in CMP0057 OLD mode.
Push and temporarily enable the policy. Also avoid the unnecessary temporary
variable for the list.

Fixes #23147.
2022-01-29 22:55:24 +02:00
Brad King
6a037fd9f4 Merge topic 'FindThreads-libc-pthread-flag' into release-3.22
5efb6fb516 FindThreads: Honor THREADS_PREFER_PTHREAD_FLAG when pthread is found in libc

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6906
2022-01-27 11:04:06 -05:00
Mattias Ellert
5efb6fb516 FindThreads: Honor THREADS_PREFER_PTHREAD_FLAG when pthread is found in libc
The `-pthread` flag tells the compiler/linker to link to additional
libraries needed for thread support (e.g. libatomic on riscv64). The
flag therefore should be used if requested using
`THREADS_PREFER_PTHREAD_FLAG` also when the pthread functions are
found in libc.
2022-01-26 08:50:16 -05:00
Brad King
036d0cbbde FindMPI: Place static first in mpi test source
Move the `static` added by commit 8cce0ad32f (FindMPI: Fix missing
static warning in the mpi test source, 2021-06-30, v3.22.0-rc1~502^2) to
the beginning of the line.

Fixes: #23141
2022-01-25 09:53:24 -05:00
Raul Tambre
e13dd52535 XL: Detect default extensions mode for legacy compiler
The legacy non-Clang variant seems to support a GNU-like extensions mode, which
is the default. Enable detection for it.
2022-01-23 23:10:28 +02:00
Björn Esser
6a0ce19ce1 FortranCInterface: Fix compatibility with GCC gfortran 12 LTO
Since version 12.0 the GCC Fortran compiler has implemented "WG5/N1942",
which causes, if link-time opmization is enabled, obfuscation of hard-coded
string values in the compiler objects and its resulting ELF-binaries.

This causes the CMake-internal detection of the mangling scheme for the
naming of subroutines to fail.  Thus we must ensure to have any link-time
optimization features to be disabled on the executable file we perform the
detection on.

The static libraries, however, must be build with LTO and non-LTO objects,
as that will ensure the verify step will operate on IPO objects, if building
those is requested by the system compiler flags.

Fixes: #23123

Signed-off-by: Björn Esser <besser82@fedoraproject.org>
2022-01-19 20:47:38 +01:00
Brad King
3a8b6653dc MSVC: Use -external:I flag without space to support Clang tools
Since commit f29e1874ad (Compiler/MSVC: use the `-external:I` flag for
system includes, 2020-05-19, v3.22.0-rc1~593^2) we use the new flag
followed by the include directory as a separate argument.  Some versions
of `clang-cl` and `clang-tidy` do not support the flag unless the
include directory is attached to it, so use that form instead.

Fixes: #22979
2022-01-11 16:36:36 -05:00
Jukka Jalkanen
c2777ed008 ASM: Fix identification of armasm 6.17+
Spelling of "ARM Compiler" changed to "Arm Compiler".
2022-01-06 11:55:38 -05:00
Brad King
a2752fd914 Merge topic 'FindBoost-1.78' into release-3.22
d45667d459 FindBoost: Do not warn about now-supported version 1.78

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6819
2021-12-21 09:28:01 -05:00
Brad King
d45667d459 FindBoost: Do not warn about now-supported version 1.78
In commit d176ff71c0 (FindBoost: Add support for Boost 1.78, 2021-12-15)
we forgot to update the future-version check.

Issue: #23016
2021-12-20 09:03:54 -05:00
Brad King
ae6b25d920 FindGLUT: Provide legacy GLUT_INCLUDE_DIR result in pkg-config code path
Since commit f90d15458a (FindGLUT: Use pkg-config to find flags if
available, 2021-06-11, v3.22.0-rc1~469^2) we return early if pkg-config
provides the information.  During review of that commit, code to
populate the legacy `GLUT_INCLUDE_DIR` result variable was removed from
that code path.  Add code to provide it.

Also fix the test case to use `GLUT_INCLUDE_DIR`, the result variable
documented officially by the module.

Fixes: #23018
2021-12-17 15:17:29 -05:00
Brad King
92ecf5c989 Merge topic 'FindBoost-python-3.10' into release-3.22
d4bb6c0c7f FindBoost: Add support for Python 3.10

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6809
2021-12-17 08:54:52 -05:00
Brad King
5cd7a6ac1e Merge topic 'vs-intel-oneapi-toolset' into release-3.22
612c0d49f4 VS: Fix detecting icx.exe with Intel Compiler toolsets newer than 2021

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6806
2021-12-17 08:52:02 -05:00
Oleg Sidorkin
d4bb6c0c7f FindBoost: Add support for Python 3.10
Regexps in FindBoost assumed that python's minor version had only one
digit.  That became not true for 3.10.

Fixes: #23025
2021-12-16 15:15:12 -05:00
William R. Dieter
612c0d49f4 VS: Fix detecting icx.exe with Intel Compiler toolsets newer than 2021
The logic added by commit 7808cbd644 (CMakeDetermineCompilerId: support
Intel DPC++ compiler toolset for VS gen, 2020-12-06, v3.20.0-rc1~330^2)
matches a specific toolset known to be the `icx.exe` compiler, and
assumes all other Intel C++ compilers (that are not DPC++) must be
`icl.exe`.

Since `icx.exe` is officially replacing `icl.exe`, use a regex that
matches the now-fixed set of toolsets known to use `icl.exe`.  Any other
Intel C++ compiler will be assumed to be `icx.exe`.

Signed-off-by: William R. Dieter <william.r.dieter@intel.com>
2021-12-15 15:56:20 -05:00
Brad King
d176ff71c0 FindBoost: Add support for Boost 1.78
Update the list of known versions.

Run the command

    cmake -DBOOST_DIR=/path/to/boost_1_78_0 \
      -P Utilities/Scripts/BoostScanDeps.cmake

to extract dependencies from the 1.78.0 source tree.

The dependencies differ from those of 1.77:

* The `log` component no longer depends on `date_time`.

Fixes: #23016
2021-12-15 10:22:53 -05:00
Ryan Prichard
38b00f8801 Android: Fix linking android_support for pre-21 system STL
This typo was introduced in commit 4dca078829 (Android: Link c++abi and
android_support when necessary, 2020-10-29, v3.20.0-rc1~541^2).

Fixes: #23004
2021-12-13 10:43:14 -05:00
Tomáš Hrnčiar
43844c5d82 FindPython: Add support for Python 3.11 2021-12-07 12:41:01 -05:00
Raphael Gozzo
d4ba945c48 CMakeParseLibraryArchitecture: Fix parsing /lib/<arch> implicit object path
The current regular expression is able to match `/usr/lib/<arch>`,
`/usr/usr/lib/<arch>`, `/usr/usr/usr/lib/<arch>`, ... but not
`/lib/<arch>`.

This behavior ends up causing the detected architecture to
be x86_64-pc-linux-gnu when the Clang compiler is installed on
a "non-system" location (like /opt/llvm-13) which, in turn, makes
almost every 'find_library()' fail because the correct
architecture is x86_64-linux-gnu.

This is due to a typo in commit 764606e256 (CMakeDetermineCompilerABI:
Extract lib arch from implicit object file paths, 2021-04-05,
v3.20.1~10^2), which used `+` instead of `?`.
2021-12-06 16:47:29 -05:00
Brad King
90a49647e9 FindPkgConfig: Restore finding pkg-config before pkgconf
Since commit 94a84dc0af (FindPkgConfig: add pkgconf to the search list.,
2021-07-02, v3.22.0-rc1~468^2), `pkgconf` is preferred over `pkg-config`
if they appear in the same directory.  In some environments,
`pkg-config` may be a wrapper that adds semantics beyond either
`pkgconf` or the normal `pkg-config`.  Prefer `pkg-config` over
`pkgconf` in order to preserve the prior behavior in such environments.

Fixes: #22976
2021-12-02 12:38:22 -05:00
Marc Chevrier
a35bf772de FindPython: clarify static libraries hint usage
Fixes: #22956
2021-12-01 10:06:45 -05:00
Brad King
cab4551889 Merge topic 'GNUInstallDirs-conda-fix' into release-3.22
7896991af0 GNUInstallDirs: Prefer system lib64 over conda lib when ambiguous

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6773
2021-12-01 09:34:32 -05:00
Robert Maynard
7896991af0 GNUInstallDirs: Prefer system lib64 over conda lib when ambiguous
Update logic added by commit ecaca8c129 (GNUInstallDirs now aware of
conda lib directory requirements, 2021-09-08, v3.22.0-rc1~142^2).
When it is ambiguous if we are doing a conda install or a system
install prefer using the system library directory.

Fixes: #22962
2021-11-30 10:51:33 -05:00
Brad King
5109a22d61 Merge topic 'doc-CMAKE_INSTALL_MODE' into release-3.22
3caeee0c86 Help: Clarify CMAKE_INSTALL_MODE documentation
699d4a98e2 Help: Use definition list for allowed values of CMAKE_INSTALL_MODE

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6743
2021-11-30 08:46:11 -05:00
Felix Lelchuk
3caeee0c86 Help: Clarify CMAKE_INSTALL_MODE documentation
Fixes: #22869
Co-Authored-By: Craig Scott <craig.scott@crascit.com>
2021-11-24 08:30:38 +11:00
Brad King
0fc8b2f61c CompilerId: Restore support for classic C by avoiding C++ style comments
C++ style comments were added by commit fc3a1cbdd8 (CompilerID: Compiler
extensions default detection, 2021-05-29, v3.22.0-rc1~52^2~2), but they
may not be supported by the default mode of some C compilers.  Use
C-style comments instead.  For consistency, do this for all languages.

Fixes: #22942
2021-11-23 10:00:31 -05:00
Brad King
454344f35d Merge branch 'UseSWIG-create-workingdir' into release-3.22
Merge-request: !6750
2021-11-22 11:11:56 -05:00
Marc Chevrier
7224eb5185 UseSWIG: ensure directory for depfile exists
When `Visual Studio` and `Xcode` generators are used, directory for depfile
is not implicitely created by CMake when OUTFILE_DIR option is used.

Fixes: #22932
2021-11-19 17:50:52 +01:00
Brad King
ed9b971694 Merge topic 'gtest_discover_tests-PRE_TEST-dep' into release-3.22
1bf6d5979d gtest_discover_tests: Re-run PRE_TEST discovery on any arg change
715af43124 Tests: Fix and update wrongly named GoogleTest stdout file

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6728
2021-11-17 08:44:28 -05:00
Craig Scott
1bf6d5979d gtest_discover_tests: Re-run PRE_TEST discovery on any arg change
Fixes: #22912
2021-11-16 09:45:26 -05:00
Craig Scott
1ef54f3163 Help: Clarify meaning of filter expression in gtest_discover_tests() 2021-11-14 16:49:23 +11:00
Brad King
c1fe4f68e4 Merge topic 'IntelLLVM-Fortran-frontend-variant' into release-3.22
b1edd6e7c7 Fortran: Save frontend variant persistently for IntelLLVM

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6718
2021-11-12 08:58:57 -05:00
Brad King
521c49eebc Merge branch 'IntelLLVM-Fortran-frontend-variant' into release-3.21
Merge-request: !6718
2021-11-11 11:24:01 -05:00
William R. Dieter
b1edd6e7c7 Fortran: Save frontend variant persistently for IntelLLVM
Since commit a90d2a9eed (IntelLLVM: Add support for Intel LLVM-based
compilers, 2020-11-02, v3.20.0-rc1~89^2~20), our IntelLLVM compiler
support populates `CMAKE_Fortran_COMPILER_FRONTEND_VARIANT`.  However,
the frontend variant was not stored in `CMakeCompilerFortran.cmake`.

Signed-off-by: William R. Dieter <william.r.dieter@intel.com>
2021-11-11 11:22:07 -05:00
Craig Scott
220f78e253 TI: Recognize invalid compiler option warning during try_compile()
Fixes: #22866
2021-11-11 10:53:31 -05:00
Brad King
e2ceaec991 Merge topic 'IntelLLVM-no-xilink' into release-3.22
48f29b5805 IntelLLVM: Use MSVC linker with MSVC frontend variant

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6719
2021-11-11 10:45:19 -05:00
William R. Dieter
48f29b5805 IntelLLVM: Use MSVC linker with MSVC frontend variant
The Intel compiler (pre-LLVM) expected xilink.exe and had special logic to
set xilink.exe.  The newer LLVM-based compiler does not want xilink.exe.
link.exe works better for host code, and is the default, so change
the matching condition such that the old compiler matches (and gets
xilink.exe) and the new compiler gets the default link.exe it expects.

A better solution will be to use the compiler as the linker.  A future
change will switch to compiler as linker by default, but that fix needs
more validation.

Signed-off-by: William R. Dieter <william.r.dieter@intel.com>
2021-11-10 13:41:06 -05:00
Brad King
2b9b64269f Merge topic 'vs-framework-version' into release-3.22
d51246c662 VS: Default TargetFrameworkVersion to v4.7.2 for VS 2022
f97f8537f3 VS: Model a default target framework
e40cedddc0 cmVisualStudio10TargetGenerator: Refactor target framework selection
78782cc7dc cmGlobalVisualStudio8Generator: Refactor SetGeneratorPlatform

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6699
2021-11-08 12:38:47 -05:00
Craig Scott
76c0281421 Help: Clarify how PKG_CONFIG env var initializes cache vars
Fixes: #22870
2021-11-07 16:09:42 +11:00
Brad King
f97f8537f3 VS: Model a default target framework
Add fields to the VS generator to select a target framework.
Migrate the existing default for VS 12 .NET CF for Windows CE.

Report the values in `CMAKE_VS_*` variables and use them for
the CSharp compiler id project too.

Issue: #22849
2021-11-06 06:08:54 -04:00
Thomas Dickerson
58c8d649e1 CheckLinkerFlag: Set policies needed by the implementation
The module was added in CMake 3.18 by commit af96c0f4fa
(CheckLinkerFlag: Add module to check validity of linker flags,
2020-05-16, v3.18.0-rc1~103^2), but it is still possible for projects to
use it without setting policies to the 3.18 version level.
2021-11-04 14:01:09 -04:00