Commit Graph

1041 Commits

Author SHA1 Message Date
Ben Boeckel
166061629a QCC-CXX: use -x c++ on 8+
The `-lang-c++` flag has been deprecated.
2025-08-01 20:51:22 -04:00
Brad King
0883fac39a Merge topic 'clang-libstdcpp-3.31' into release-3.31
802f261d62 experimental/CXXModules: recycle the UUID
c88f3ea1e4 Clang/CXXImportStd: support `-stdlib=libstdc++`
ba5c9703b1 Experimental: recycle the `import std` UUID
9cad48c6cb gcc: support `import std`
acbada3df6 Tests/RunCMake: handle C++26 support where needed

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !10778
2025-05-14 15:31:47 -04:00
Ben Boeckel
c88f3ea1e4 Clang/CXXImportStd: support -stdlib=libstdc++
Fedora 42 ships `clang` with `libstdc++` as the default. Detect and
support `import std;` in this configuration.
2025-05-14 20:15:26 +02:00
Ben Boeckel
9cad48c6cb gcc: support import std
(cherry picked from commit a980dab9b1 (gcc: support `import std`,
2024-11-21))
2025-05-14 20:14:44 +02:00
Brad King
ccef69bde4 AUTOMOC: Avoid compiler warnings while computing predefines
LLVM/Clang 20, when invoked as `clang++ -E -c ...`, now warns:

    warning: argument unused during compilation: '-c'

Drop the unnecessary `-c` flag.  Also add a `-w` flag to suppress
warnings so their text is not parsed as predefines.
2025-04-24 07:07:00 -04:00
Brad King
d54916d03a MSVC: Revert use of temporary -std:c++23preview flag for C++23
Revert commit b3f1c60aff (MSVC: Use -std:c++23preview flag for C++23
when available, 2025-03-12), except for the VS flag table update.
MSVC documentation states that the flag will be removed in the future
when `-std:c++23` is added.  Therefore it is only suitable for manual
specification by end-users.

Issue: #26692
2025-03-14 09:55:18 -04:00
Brad King
b3f1c60aff MSVC: Use -std:c++23preview flag for C++23 when available
This was added by VS 17.13.

Fixes: #26692
2025-03-12 14:50:32 -04:00
Brad King
1b4a802413 MSVC: Split C++23 flag selection into dedicated block 2025-03-12 14:50:31 -04:00
Brad King
ae7f54e6a7 Clang/CUDA: Fix language-wide flags when linking .so with compiler driver
In commit cfa888a6e2 (Clang/CUDA: Add language-wide flags when linking
with compiler driver, 2024-10-07, v3.31.0-rc1~12^2) we added the wrong
placeholder to `CMAKE_CUDA_CREATE_SHARED_LIBRARY` to represent the
language-wide flags.  The `<FLAGS>` placeholder is for executables.
The `<LANGUAGE_COMPILE_FLAGS>` placeholder is for shared libraries.
The distinction is for historical reasons.

Fixes: #26563
2025-01-14 13:20:43 -05:00
Saurabh Kumar
daf6cc89ee LFortran: Remove hard-coded --generate-object-code flag
This was added in commit 98d0f918ba (LFortran: Add support for this
compiler, 2024-01-25, v3.31.0-rc1~303^2~2) because it is needed for
cases covered by CMake's Fortran tests.  However, it does not work
with Fortran modules and breaks lfortran's own `examples/project1`.
Move the flag to the test cases that need it, just as the original
commit did with `--implicit-interface`.

Fixes: #26597
Co-authored-by: Brad King <brad.king@kitware.com>
2025-01-09 14:49:39 -05:00
Brad King
30139913e9 VS: Restore support for mixing C++23 and C in one target with clang-cl
Since commit 474eafe28c (clang-cl: Add support for C++23, 2024-09-13,
v3.31.0-rc1~97^2) we use a Clang-specific flag to enable C++23 since
`clang-cl` has no `-std:c++23` flag, and `-std:c++latest` may enable an
even newer version of C++.  However, in `.vcxproj` files there is no way
to express a target-wide `-clang:-std=c++23` flag for only C++ sources
when the target also has C sources.  Add a special case to map back to
`-std:c++latest` for targets with C++23 and C together.

Fixes: #26508
2024-12-09 14:57:35 -05:00
Marc Chevrier
aeaec06267 Intel/Classic: deactivate linker dependency file support
The Intel Classic compilers' IPO plugins do not support the
`-Wl,--dependency-file,...` linker flag.

Fixes: #26483
2024-11-28 09:54:22 -05:00
Brad King
34067963cc LFortran: Improve detection of implicit link information for lfortran 0.40+
These versions of LFortran support passing `-v -Wl,-v` to the underlying
compiler so we can extract the full implicit link information.

Issue: #26145
2024-10-24 11:15:12 -04:00
Brad King
cfa888a6e2 Clang/CUDA: Add language-wide flags when linking with compiler driver
We do this for other compiler/language combinations, but these flags
were left out by commit 5df21adf46 (CUDA: Add support for Clang
compiler, 2020-03-07, v3.18.0-rc1~145^2~1).
2024-10-07 11:57:24 -04:00
scivision
247497eacf NVHPC: Record C++23 support
NVHPC 24.9 documents support for `-std=c++23` [1].

[1] https://docs.nvidia.com/hpc-sdk/archive/24.9/hpc-sdk-release-notes/index.html
2024-10-02 10:34:35 -04:00
Brad King
474eafe28c clang-cl: Add support for C++23
Although there is no `cl -std:c++23` flag, the underlying Clang compiler
does have a C++23 mode we can activate by passing `-std=c++23` through a
`clang-cl` wrapper flag.

Fixes: #26061
2024-09-13 12:28:49 -04:00
Brad King
86bc2b000d Tasking: Fix C and C++ compiler extension mode flags
In commit 94df5b6ef1 (Tasking: Add support for several compiler
toolsets, 2022-07-20, v3.25.0-rc1~133^2) the extension mode flags were
added with an extra space-only argument.  Remove it.  Also fix the C++98
mode flag that looks like a C mode flag.

Fixes: #26244
2024-08-28 09:48:48 -04:00
Felipe Torrezan
564d527c04 IAR: Improve error message for missing license
When using the IAR Compiler without a license, CMake issues a
fatal error message about a missing linker and librarian.
This message is misleading.

In the previous detection, CMakeFindBinUtils.cmake would rely
on information collected from try_compile() which depends on a
working license.

In the new detection scheme, the IAR BinUtils are automatically
detected regardless of an existing license, based solely on the
compiler's path.

The failure point will be when trying to compile a C or a CXX
source file, where there will be no CMAKE_${lang}_COMPILER_VERSION
available.

This change improves the resulting message for when trying to use
the compiler without a license.
2024-08-14 09:03:13 +02:00
Patrick H
373b29bd3f Rename {_ => }CMAKE_INCLUDE_SYSTEM_FLAG_${lang}_WARNING
Although not documented publicly, projects may need to override
this variable.  Remove the private `_` prefix from its name.

Issue: #25103
2024-07-29 11:50:02 -04:00
Brad King
4c35a71ae9 Merge topic 'lfortran'
aff38fed4f ci: Add nightly jobs for LFortran on Fedora
a0def56402 ci: Add lfortran to Fedora base image
98d0f918ba LFortran: Add support for this compiler
c6f81bdacf Tests/RunCMake: Pass Fortran compiler id into more tests
fa1b748389 Tests/RunCMake/DependencyGraph: Specify Fortran function return type

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: scivision <michael@scivision.dev>
Acked-by: Matthew Thompson <fortran@gmail.com>
Merge-request: !9188
2024-07-24 10:02:54 -04:00
Christoph Junghans
98d0f918ba LFortran: Add support for this compiler
Fixes: #25419
2024-07-22 16:50:33 -04:00
Marc Chevrier
c1c4cf9545 Linker configuration: introduce a new architecture
A new set of files are dedicated to linker configuration.
This set of files enable a fine-tuned configuration based of the linker
type as identified during compiler detection.

Fixes: #25360
2024-07-20 19:05:54 +02:00
Brad King
e9d72f611c Merge topic 'IntelLLVM-layout-2024'
ceb58f0ccf IntelLLVM: Update toolchain layout for 2024+ versions

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9653
2024-07-16 10:30:52 -04:00
Pavel Liavonau
ceb58f0ccf IntelLLVM: Update toolchain layout for 2024+ versions
HPC Intel changed layout of llvm related binary files from
`bin/../bin-llvm` to `bin/compiler`.
2024-07-15 17:07:55 -04:00
Carlo Marcelo Arenas Belón
8a33068afe visibility: add support for Oracle Developer Studio 12.6
While an `-fvisibility` flag was added in the previous version, it
throws warnings indicating it would be ignored unless given to the
linker and fails to work properly.

Tested on Solaris 11.3 SPARC and Solaris 11.4 x86/SPARC.
2024-06-12 03:05:28 -07:00
Brad King
09f2031825 Merge topic 'clang-ansi-color'
1004cc2b52 Clang: Drop non-existent -fno-ansi-escape-codes flag

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9592
2024-06-11 10:56:50 -04:00
Brad King
4036eafd95 Merge topic 'clang-ansi-color' into release-3.30
1004cc2b52 Clang: Drop non-existent -fno-ansi-escape-codes flag

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9592
2024-06-11 10:56:48 -04:00
Brad King
1004cc2b52 Clang: Drop non-existent -fno-ansi-escape-codes flag
In commit 74b5fae52d (Clang: Use -fno-ansi-escape-codes for color
diagnostics on Windows, 2023-10-19, v3.28.0-rc3~3^2) we added the
positive option `-fansi-escape-codes` and the negative form of
the option, `-fno-ansi-escape-codes`.  According to the LLVM/Clang
documentation:

* https://releases.llvm.org/18.1.4/tools/clang/docs/UsersManual.html#cmdoption-fansi-escape-codes

only the positive form of the option exists.

Fixes: #26036
2024-06-10 09:23:41 -04:00
Brad King
88f30da5a0 Merge topic 'qcc-ipo'
95cac24867 QCC: Enable IPO support, inheriting from GNU Compiler

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9545
2024-05-24 10:30:52 -04:00
Pablo Romero
95cac24867 QCC: Enable IPO support, inheriting from GNU Compiler
Fixes: #26007
2024-05-23 11:44:39 -04:00
Rupert Clarke
23c91b55d6 ADSP: Treat .s files as asm sources 2024-05-21 10:16:11 -04:00
Rupert Clarke
43b5e88fe6 ADSP: Preserve ASM output ext and flags as we do for C and CXX
Revise commit 0e828b92f1 (ADSP: Add support for assembler, 2023-10-12,
v3.29.0-rc1~568^2).
2024-05-21 10:15:48 -04:00
Ben Boeckel
a46395df06 importstd: clarify when the experimental UUID must be available
Fixes: #25980
2024-05-15 07:15:05 -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
scivision
80d4bd5370 IntelLLVM: Record C++26 support 2024-05-13 11:02:04 -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
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
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
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
huangqinjin
abb33568e6 cxxmodules: Support import std for msvc-wine 2024-04-21 20:40:52 +08:00
Ben Boeckel
678717f3e4 cxxmodules: provide a detection variable for import std 2024-04-18 09:53:21 -04:00
Raul Tambre
1ba4a06338 GNU: Add flags for C++26 modes
Flags added in GCC commit `5388a43f6a3` (c++: Add support for
-std={c,gnu}++2{c,6}, 2023-06-22).
2024-04-16 15:34:57 -04:00
Brad King
8f7049112d Merge topic 'nag-fortran-ninja'
4af20bb794 NAG-Fortran: Do not repeat preprocessing with Ninja on Apple platforms
91bb8dd872 NAG-Fortran: Fix MODULE library creation on Apple platforms
e056006116 NAG-Fortran: Tell the Ninja generator how to preprocess Fortran sources
765a611956 NAG-Fortran: Added initial default compilation flags

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9407
2024-04-16 08:53:56 -04:00
Simon Maertens
e056006116 NAG-Fortran: Tell the Ninja generator how to preprocess Fortran sources
Fixes: #21398
2024-04-15 13:33:30 -04:00
Simon Maertens
765a611956 NAG-Fortran: Added initial default compilation flags
The configuration of the NAG Fortran compiler was previously missing the
standard flags for debug, release and the other build types.
2024-04-15 13:32:06 -04:00
Ben Boeckel
429902ebad Clang: support creating a target for imported modules 2024-04-12 11:46:40 -04:00
Ben Boeckel
4617f272b4 MSVC: support import std 2024-04-12 11:46:40 -04:00
Ben Boeckel
15bbd1d9b8 Experimental: add an experimental feature gate for import std 2024-04-12 11:46:39 -04:00