Commit Graph

14152 Commits

Author SHA1 Message Date
Craig Scott
2d653179dc Merge topic 'fetchcontent-direct'
7bf15e49a8 ExternalProject: Fix misleading git update output
b2496bf14c FetchContent: Populate directly without a sub-build
173daad58d ExternalProject: Move more internal commands out of main file
462e583267 ExternalProject: Switch download, update and patch to use _EP_ vars
0ccc8e340d ExternalProject: Provide ExternalProject_Add keywords through a macro
91e1015722 ExternalProject: Don't treat YES as a keyword
a1743ce1ef ExternalProject: Fix minor formatting error

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: scivision <michael@scivision.dev>
Merge-request: !9513
2024-05-18 05:05:03 -04:00
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
Craig Scott
7bf15e49a8 ExternalProject: Fix misleading git update output
When re-running the build with the git download method,
and where GIT_TAG is set to a tag name that we already have
locally from the first run, the second run will skip the update
step if it is already at the requested tag. The message in this
case was previously printing the commit hash instead of the
tag name, which was wrong. This wasn't noticed before
because that output wasn't usually shown, but we now do
show that message after making message output log levels
more consistent between the steps.
2024-05-17 14:23:39 +10:00
Craig Scott
b2496bf14c FetchContent: Populate directly without a sub-build
Fixes: #21703
2024-05-17 14:23:39 +10: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
Craig Scott
173daad58d ExternalProject: Move more internal commands out of main file
The commands moved to shared_internal_commands.cmake
will soon be used directly by FetchContent, which cannot
always include the full ExternalProject.cmake file (e.g. it may
be used in CMake script mode).

Issue: #21703
2024-05-13 20:24:47 +10:00
Craig Scott
462e583267 ExternalProject: Switch download, update and patch to use _EP_ vars
This refactoring prepares for the download, update, and
patch steps being called directly from FetchContent instead
of always being in a sub-build. When there is no sub-build,
there will be no targets to read properties from. This commit
moves the information to _EP_... variables, which will always
be readable.

Issue: #21703
2024-05-13 20:24:47 +10:00
Craig Scott
0ccc8e340d ExternalProject: Provide ExternalProject_Add keywords through a macro
This allows things outside of ExternalProject to have access
to the list of supported keywords. This will be used by
FetchContent in an upcoming change.

Issue: #21703
2024-05-12 14:45:44 +10:00
Craig Scott
91e1015722 ExternalProject: Don't treat YES as a keyword
This ultimately won't change behavior, since YES should never be listed
in the "keywords" argument. The original code looks like a bug though,
since YES satisfies the criteria for being interpreted as a keyword, and
there is logic to short-circuit on TRUE and FALSE. Add YES to that
condition to avoid any potential confusion.
2024-05-12 14:45:43 +10:00
Craig Scott
a1743ce1ef ExternalProject: Fix minor formatting error 2024-05-12 14:45:43 +10: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