Commit Graph

14144 Commits

Author SHA1 Message Date
Brad King
bec54c9b38 Merge topic 'lang-platform-flags'
0b24c94676 Modules: Fix per-language fallback to platform-specific shared module C flags
ae1d5ef47f Modules: Initialize per-language platform-specific flag variables consistently

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !9526
2024-05-17 11:13:09 -04:00
Brad King
27947ed75a Merge topic 'ewilde/swift-static-try-compile'
c6e52ef7f2 Swift: Support static-library try-compile type

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9520
2024-05-17 11:11:59 -04:00
Brad King
0b24c94676 Modules: Fix per-language fallback to platform-specific shared module C flags
On platforms that semantically distinguish loadable modules (plugins)
from shared libraries, such as macOS and CYGWIN, fix the per-language
fall back to create them the same way as with the C toolchain even when
the C language has not been enabled.
2024-05-16 11:47:01 -04:00
Brad King
ae1d5ef47f Modules: Initialize per-language platform-specific flag variables consistently
The `Platform/<OS>.cmake` modules record platform-specific flag
variables for the C toolchain.  The `CMake<LANG>Information` modules
initialize the per-language platform-specific flag variables to defaults
copied from C.  However, they have diverged over time, and not all
platform-specific flag variables are initialized correctly for all
languages.  Factor out the CXX language's instance of this logic into a
helper macro, and reuse it for all languages for which we previously
had the platform-specific flag variables at least partially filled out.

Previously the Fortran language's copy of this logic used
`if(NOT DEFINED <var>)` instead of just `if(NOT <var>)` to allow
`Platform/<OS>-<COMPILER_ID>-<LANG>` modules to specify empty values for
some platform-specific flag variables without being overridden.
Use this approach in the helper macro so it applies to all languages.

Fixes: #25990
2024-05-16 11:46:58 -04:00
Brad King
3f28a819ce Merge topic 'LINK_LIBRARY-Feature-properties'
6e5e7968c3 GenEx $<LINK_LIBRARY>: Add the support of properties attached to features

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9510
2024-05-16 11:27:18 -04:00
Evan Wilde
c6e52ef7f2 Swift: Support static-library try-compile type
Top-level code only works as part of executables, which breaks when
`CMAKE_TRY_COMPILE_TARGET_TYPE` is set to `STATIC_LIBRARY`. This patch
fixes the test to something agnostic between executables and libraries
while still verifying that we can import types from the standard
library.

Fixes: #25984
2024-05-15 15:10:15 -07:00
Ben Boeckel
a46395df06 importstd: clarify when the experimental UUID must be available
Fixes: #25980
2024-05-15 07:15:05 -04:00
Marc Chevrier
6e5e7968c3 GenEx $<LINK_LIBRARY>: Add the support of properties attached to features
Fixes: #24504, #25954
2024-05-15 10:02:36 +02:00
Brad King
5d658ebcc6 Merge topic 'FindPython-WIN32-DEBUG'
c164404b2e FindPython: On Windows, Enhance python debug version support

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Acked-by: Osyotr <zhenchik35026@gmail.com>
Merge-request: !9482
2024-05-14 10:52:49 -04:00
Brad King
26bbee30cc Merge topic 'ExternalProject-xcode-effective-platform'
0a3caf0878 ExternalProject: Restore support for Xcode with an effective platform

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9517
2024-05-14 10:26:47 -04:00
Brad King
646c921ce6 Merge topic 'intel-std'
80d4bd5370 IntelLLVM: Record C++26 support

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9511
2024-05-14 10:24:22 -04:00
Brad King
0a3caf0878 ExternalProject: Restore support for Xcode with an effective platform
Revert commit cabad8a37f (ExternalProject: Always use $<CONFIG> for
source files, 2023-02-02, v3.27.0-rc1~550^2~3) and restore
Xcode-specific behavior intentionally preserved by commit c111d440ce
(ExternalProject: Express per-config step stamp file paths using CONFIG
genex, 2022-06-08, v3.24.0-rc1~15^2).  Unfortunately we still do not
have a test case, so leave a comment to avoid reverting this.

Issue: #23645
Issue: #23652
2024-05-13 14:41:00 -04:00
scivision
80d4bd5370 IntelLLVM: Record C++26 support 2024-05-13 11:02:04 -04:00
Brad King
3bb51964bd Merge topic 'cxxmodules-nolibcxx-import-std-reason'
c0385a6b9c Modules/Compiler/Clang: add a reason for non-`libc++` compilations

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9504
2024-05-13 09:36:15 -04:00
Brad King
bed14d734d Merge topic 'CheckIPOSupported-C-prototypes'
d5075fd10f CheckIPOSupported: Fix -Wstrict-prototypes warnings in check for C

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !9502
2024-05-10 10:06:50 -04:00
Ben Boeckel
c0385a6b9c Modules/Compiler/Clang: add a reason for non-libc++ compilations
See: #25965
2024-05-09 15:45:05 -04:00
Marc Chevrier
c164404b2e FindPython: On Windows, Enhance python debug version support
Add the following variables:
* Python_EXECUTABLE_DEBUG
* Python_INTERPRETER
* Python_DEBUG_POSTFIX

and target Python::InterpreterDebug.

python_add_library() command Manage DEBUG_POSTFIX target property based
on the value of Python_DEBUG_POSTFIX variable.

Fixes: #25874
2024-05-09 19:08:47 +02:00
Brad King
d5075fd10f CheckIPOSupported: Fix -Wstrict-prototypes warnings in check for C
Fixes: #25967
2024-05-09 08:22:26 -04:00
Brad King
03c31b0395 Drop Visual Studio 9 2008 generator
This generator has been deprecated since CMake 3.27.  Remove it.
2024-05-08 10:37:34 -04:00
Brad King
617884e78a Merge topic 'cxx-inspect-without-scanning'
6df925b595 cxxmodules: Do not scan sources while testing the compiler

Acked-by: Kitware Robot <kwrobot@kitware.com>
Reviewed-by: Ben Boeckel <ben.boeckel@kitware.com>
Merge-request: !9494
2024-05-07 08:34:05 -04:00
Brad King
6df925b595 cxxmodules: Do not scan sources while testing the compiler
The C++ sources we use to test the compiler do not use modules.
Avoid requiring a compiler that can scan just to enable the language,
even when CMP0155 is NEW.  The project may explicitly turn off
`CMAKE_CXX_SCAN_FOR_MODULES` before adding any targets.

Fixes: #25956
2024-05-06 13:59:27 -04:00
Brad King
557908ecfa Merge topic 'FindBoost-remove'
e0355c4ea9 FindBoost: Add policy to remove this module

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Acked-by: Christoph Grüninger <foss@grueninger.de>
Merge-request: !9488
2024-05-06 09:25:49 -04:00
Brad King
de8df1da17 Merge topic 'cpack-support-all-component-names'
d7e2fede03 CPack: Add tests for component containing problematic characters
a1af593291 CPack: Support arbitrary component name when packaging
9e67ad47a9 cmLocalGenerator: Support arbitrary component name when installing

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !9436
2024-05-06 09:22:45 -04:00
Brad King
e0355c4ea9 FindBoost: Add policy to remove this module
Upstream Boost 1.70 and above provide a proper `BoostConfig.cmake`
package configuration file.  Packages for all major distros now
provide it in at least one LTS release.  Add a policy to pretend
that the `FindBoost` module does not exist so that projects calling
`find_package(Boost)` use the upstream package directly.

Closes: #19402
2024-05-03 10:30:23 -04:00
Brad King
1027c0e213 Merge topic 'cxxmodules-no-import-std-reason'
e89e819398 Tests/CXXModules: add tests for C++26 `import std` support
6dad18f060 cxxmodules: give a reason for unavailability of `import std`

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !9486
2024-05-03 09:26:39 -04:00
Ben Boeckel
6dad18f060 cxxmodules: give a reason for unavailability of import std
If the `CMAKE_CXX<STANDARD>_COMPILER_IMPORT_STD_NOT_FOUND_MESSAGE`
variable is set, include its value in the error message.
2024-05-02 14:46:51 -04:00
Brad King
65196e2e3a Merge topic 'FindICU-cleanup'
9221448327 FindICU: remove noise, cleanup components handling

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9481
2024-05-02 09:37:00 -04:00
Brad King
fc188e35d1 Merge topic 'fphsa-before-project'
68a8c89430 FPHSA: Add hint for failure when called before project()

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !9480
2024-05-02 09:35:51 -04:00
Brad King
1d8848c4ce Merge topic 'FindOpenMP-runtime-msvc'
b07c637e42 FindOpenMP: Add option to control OpenMP runtime with MSVC

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9475
2024-05-02 09:34:29 -04:00
Deniz Bahadir
a1af593291 CPack: Support arbitrary component name when packaging
CPack no longer blindly tries to create temporary packaging
(sub)directories that contain the verbatim name of a component, which
might contain characters that are not supported on the platform /
filesystem.
Instead, if the component's name contains a (possibly) problematic
character its MD5 hash will be used for that temporary packaging
(sub)directory.

Likewise, if the component's name resembles a reserved device name (e.g.
"COM1" on Windows) then the temporary packaging (sub)directory will get
this name prefixed with an underscore.
Similar, if it ends in a dot (on Windows) then the temporary packaging
(sub)directory will get this name suffixed with an underscore.

Fixes: #23612
2024-05-01 19:20:32 +02:00
Brad King
68a8c89430 FPHSA: Add hint for failure when called before project()
Help project authors recognize an ordering mistake.

Inspired-by: Jeremy Rifkin @jeremy-rifkin
Closes: #25941
2024-05-01 11:25:28 -04:00
Osyotr
9221448327 FindICU: remove noise, cleanup components handling
Fixes: #25892
2024-05-01 10:27:25 -04:00
Brad King
e6d04030d1 Merge topic 'simplify-and-clean-up-some-cpack-functions'
208b3f63ac CPackDeb.cmake: Fix debug message
48fc711064 cmLocalGenerator: Fix comments in generated cmake_install.cmake file
af1d166387 cmCPackGenerator: Fix debug message in function `PrepareGroupingKind`
a522abe5c0 cmCPackGenerator: Fix comment in function `InstallCMakeProject`
87cfe9dd91 cmCPackGenerator: Slightly simplify function `InstallProject`
1350ed96ff cmCPackGenerator: Clean up and simplify function `DoPackage`
d26eed4c75 cmCPackGenerator: Clean up and simplify function `PrepareNames`
12123b5b6b cmCPackGenerator: Refactor copying of package files into own function
...

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !9457
2024-05-01 09:26:33 -04:00
Brad King
cab2a6634d Merge topic 'lang-standard-latest'
7c38e6bb52 Add CMAKE_<LANG>_STANDARD_LATEST variables
fddb165c6c AppleClang: Fix Objective C 23 support detection
1dff17108d Modules: Fix ARMClang and TIClang language standard compile options

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !9314
2024-05-01 09:20:47 -04:00
Brad King
80d285c080 Merge topic 'FindHDF5-version-4-components'
928943f91b FindHDF5: Fix detection of versions with more than three components

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9476
2024-05-01 09:16:20 -04:00
Axel Huebl
b07c637e42 FindOpenMP: Add option to control OpenMP runtime with MSVC
The MSVC compiler's `-openmp` flag accepts `:{experimental,llvm}`
values.  Add an option to specify one.

Closes: #25570
2024-05-01 08:25:14 -04:00
Deniz Bahadir
208b3f63ac CPackDeb.cmake: Fix debug message 2024-04-30 18:36:26 +02:00
مهدي شينون (Mehdi Chinoune)
928943f91b FindHDF5: Fix detection of versions with more than three components
Fix detecting the version of HDF5 1.14.4.2.

Fixes: #25945
2024-04-30 11:22:41 -04:00
Tyler
7c38e6bb52 Add CMAKE_<LANG>_STANDARD_LATEST variables
Add a variable to indicate the latest standard known to be supported for
each language:

* `CMAKE_C_STANDARD_LATEST`
* `CMAKE_CXX_STANDARD_LATEST`
* `CMAKE_CUDA_STANDARD_LATEST`
* `CMAKE_HIP_STANDARD_LATEST`
* `CMAKE_OBJC_STANDARD_LATEST`
* `CMAKE_OBJCXX_STANDARD_LATEST`

These variables, more generally referred to as
`CMAKE_<LANG>_STANDARD_LATEST`, are assigned an integer value which
represents the minimum between the latest version of the associated
language standard supported by the current compiler and the latest
version supported by CMake.

Add documentation for these variables in a new page called
`CMAKE_<LANG>_STANDARD_LATEST` was added under the "Variables for
Languages" section of the `cmake-variables(7)` page.

Update each compiler-specific CMake script under
`${CMAKE_ROOT}\Modules\Compiler` to manually define the relevant
`CMAKE_<LANG>_STANDARD_LATEST` variable as necessary. This will
require updating and maintaining as newer compiler versions become
recognized by CMake.

Closes: #25717
2024-04-30 11:05:03 -04:00
Tyler Nichols
fddb165c6c AppleClang: Fix Objective C 23 support detection
Set the requirement for Objective C 23 support for AppleClang to
`11.0.3` in `${CMAKE_ROOT}\Modules\Compiler\AppleClang-OBJC.cmake`.
This is consistent with the requirement for C 23 support as
indicated in `${CMAKE_ROOT}\Modules\Compiler\AppleClang-C.cmake`.
2024-04-30 11:05:03 -04:00
Tyler Nichols
1dff17108d Modules: Fix ARMClang and TIClang language standard compile options
Unset irrelevant compile option variables in the following scripts:
  * `${CMAKE_ROOT}\Modules\Compiler\ARMClang-C.cmake`
  * `${CMAKE_ROOT}\Modules\Compiler\TIClang-C.cmake`
  * `${CMAKE_ROOT}\Modules\Compiler\TIClang-CXX.cmake`

These scripts all include either
`${CMAKE_ROOT}\Modules\Compiler\Clang-C.cmake` or
`${CMAKE_ROOT}\Modules\Compiler\Clang-CXX.cmake`, and those scripts
will set various compile option variables based on what the
standard version of Clang supports. However, these do not
necessarily apply to ARMClang and TIClang. This commit thus
explicitly unsets all of the compile option variables which are not
manually defined for these compilers.
2024-04-30 11:05:03 -04:00
xavisolesoft
6f77077feb ExternalProject: Retry download for error code 35
This error code indicates a TLS handshake failure, which we've
observed intermittently when downloading artifacts from GitHub.
2024-04-25 13:08:24 -04:00
René Bertin
f65a6d2cb1 GNU: Do not use "fat-lto-objects" flags for IPO on Apple platforms
Fat LTO objects contain both traditional object code and the LTO bitcode
IR, but the GNU compiler does not support them on Apple platforms.
A compile error is raised when `-f[no-]fat-lto-objects` flags are used,
so avoid them.

This also implies that static Fortran libraries cannot be built with IPO.

Fixes: #25931
2024-04-24 16:57:36 -04:00
Brad King
5ec306fb13 FindCUDAToolkit: Replace a documentation link with its permanent redirect 2024-04-23 08:02:54 -04:00
Brad King
805af4f3ad Merge topic 'msvc-wine-import-std'
abb33568e6 cxxmodules: Support `import std` for msvc-wine

Acked-by: Kitware Robot <kwrobot@kitware.com>
Reviewed-by: Ben Boeckel <ben.boeckel@kitware.com>
Merge-request: !9450
2024-04-23 07:57:30 -04:00
Brad King
9eb4ae4f64 Merge topic 'check-pthreads-static'
b4f17e5b44 FindThreads: Fix pthreads detection with -Wmissing-prototypes

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !9449
2024-04-23 07:56:45 -04:00
Brad King
3d8d13f4bc Merge topic 'pkg_get_variable-list'
9ddef32ba0 FindPkgConfig: Fix parsing of quoted lists with pkgconf <1.5.1

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9447
2024-04-23 07:55:17 -04:00
David Benjamin
b4f17e5b44 FindThreads: Fix pthreads detection with -Wmissing-prototypes
If the project builds with `-Wmissing-prototypes` to catch unnecessarily
exported symbols, `CheckForPthreads.c` will fail to build.  Fix this by
marking `start_routine` as static.

Fixes: #25886
2024-04-22 09:51:41 -04:00
Brad King
8b3d48ab94 Merge topic 'save-restore-PACKAGE_PREFIX_DIR'
41f4e1c457 CMakePackageConfigHelpers: Document PACKAGE_PREFIX_DIR for public use
c5231ba29e find_package: Save/restore PACKAGE_PREFIX_DIR
8ac7958e3a generate_apple_*_selection_file: Save/restore PACKAGE_PREFIX_DIR
bf88879f1f generate_apple_architecture_selection_file: Avoid early returns
a4ac2c92f4 Help: Add missing section heading for apple architecture selection
b7fcc44be9 Help: Fix CMakePackageConfigHelpers typos, grammar and formatting
f1cacaa830 Tests/RunCMake/CMakePackage: Define variable closer to where it is used

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9430
2024-04-22 08:42:13 -04:00
Brad King
8f44e1a07b Merge topic 'save-restore-PACKAGE_PREFIX_DIR' into release-3.29
8ac7958e3a generate_apple_*_selection_file: Save/restore PACKAGE_PREFIX_DIR
bf88879f1f generate_apple_architecture_selection_file: Avoid early returns
a4ac2c92f4 Help: Add missing section heading for apple architecture selection
b7fcc44be9 Help: Fix CMakePackageConfigHelpers typos, grammar and formatting
f1cacaa830 Tests/RunCMake/CMakePackage: Define variable closer to where it is used

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9430
2024-04-22 08:42:12 -04:00