Commit Graph

81 Commits

Author SHA1 Message Date
Hirofumi Nakamura
514135f563 Renesas: Add support for Renesas compilers
- CC-RX for RX architecture
- CC-RL for RL78 architecture
- CC-RH for RH850 architecture

Closes: #26880
2025-05-28 09:22:38 -04:00
Brad King
14212494bb ASM: Guard exclusion of MSVC C/CXX compiler with a policy
Since commit 6baf65ec46 (ASM: Do not consider MSVC C/CXX compiler for
generic ASM, 2025-04-08) we no longer mistake `cl` for an assembler.
However, some projects unconditionally enable ``ASM``, which worked
on Windows only due to that bug.  Restore compatibility with such
projects by guarding the change behind a new policy ``CMP0194``.

Fixes: #26907
Issue: #26617
2025-05-03 13:18:19 -04:00
Brad King
d26efc3600 ASM: Restore CMAKE_{C,CXX}_COMPILER as ASM-first candidates
Prior to commit abfe98ce6c (ASM: Consider C/CXX compilers only if
enabled, 2025-04-08) one could pass `-DCMAKE_C_COMPILER=...` to
configure a project that enables `ASM` before/without `C` or `CXX`.
This was previously allowed accidentally as a side effect of the way we
implemented support for using the selected `C` or `CXX` compiler for
`ASM`.  Restore it for compatibility, but also preserve the effect of
commit 6baf65ec46 (ASM: Do not consider MSVC C/CXX compiler for generic
ASM, 2025-04-08) by excluding `cl`.
2025-04-12 10:05:13 -04:00
Brad King
d4b3443ed2 ASM: Identify Microsoft assemblers more specifically
Other tools may print "Microsoft" when invoked with `-?`, such as `cl`.
Look for output specific to the Microsoft Macro Assembler and its ARM
variant.
2025-04-08 15:23:08 -04:00
Brad King
6baf65ec46 ASM: Do not consider MSVC C/CXX compiler for generic ASM
`cl` does not know how to compile ASM `.s` or `.asm` sources.

Issue: #26617
2025-04-08 15:22:54 -04:00
Brad King
b52882e1e3 ASM: Drop outdated C compilers from assembler candidates 2025-04-08 15:22:44 -04:00
Brad King
abfe98ce6c ASM: Consider C/CXX compilers only if enabled 2025-04-08 15:22:32 -04:00
Brad King
d28fcdc8d8 ASM: Simplify compiler candidate list variable name
`ASM_DIALECT` is always empty for plain `ASM`.
2025-04-08 15:22:07 -04:00
Brad King
019f0f8b32 ARCHITECTURE_ID: Save persistently even if empty 2025-03-24 12:31:51 -04:00
Brad King
eddf66eaef CMakeDetermineASMCompiler: De-duplicate list of compiler info variables 2025-03-24 12:31:51 -04:00
Kitware Robot
1772622772 LICENSE: Replace references to Copyright.txt with LICENSE.rst
```
git grep -lz 'Copyright.txt or https://cmake.org/licensing ' |
  while IFS= read -r -d $'\0' f ; do
    sed -i '/Copyright.txt or https:\/\/cmake.org\/licensing / {
              s/Copyright.txt/LICENSE.rst/
            }' "$f" ; done
```
2025-03-03 10:43:35 -05:00
Sanjiv Gupta
8ce6689d8b Diab: Add WindRiver Systems's Diab C/C++ toolchain
Teach CMake to recognize Diab versions 5.9.x.x and above.

Closes: #26666
2025-02-13 10:15:00 -05:00
Alaa Mahran
942f0d119b Tasking: Add identification for the tasking assembler
Issue: #26425
2025-01-17 14:42:56 -05:00
Alan Phipps
9ba0a54554 TIClang: Add support for TI Clang-based compilers, including tiarmclang
Add TIClang compiler ID and support in compiler modules.  Update
documentation.  Add rudimentary RunCMake test for TIClang to test
basic functionality.

Fixes: #24619
2024-02-09 15:54:40 -05:00
David Lindauer
531b4fe643 OrangeC: Add support for OrangeC compiler
Add compiler information modules.  Update the test suite.

Fixes: #25032
Co-authored-by: Brad King <brad.king@kitware.com>
2023-09-25 12:27:29 -04:00
Gregor Jasny
8c789bee83 AppleClang: Fix ASM compiler identification
Recent AppleClang compilers identify themselves as
`Apple clang version 14.0.3 (clang-1403.0.22.14.1)`.
2023-06-05 17:31:35 -04:00
Felipe Torrezan
f9ff6ab2d1 IAR: Fix ASM compiler architecture detection
Narrow the regex to match the actual supported architectures,
avoiding mismatched detection.

Fixes: #24145
2022-11-11 09:08:03 -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
Thomas Bernard
c9c79dde41 Clang: Add MSVC frontend detection for the ASM compiler
Fixes: #22495
2021-09-09 14:26:44 -04:00
William R. Dieter
a90d2a9eed IntelLLVM: Add support for Intel LLVM-based compilers
Using a single ID 'IntelLLVM' for the suite of Intel compilers based on
the LLVM backend.  The 'IntelLLVM' ID are used for C, C++, and Fortran.
Data Parallel C++ will be handled in a separate commit.

The C and C++ definitions are based on the Clang definitions.  The Intel
LLVM-based C and C++ compilers are based on the Clang front end, so
existing Clang options are more likely to be a good match than options
for the older Intel compilers.

Fortran is based on the older Fortran front end with the LLVM backend.
It has a similar interface to the older versions, though many options
are shared with the C and C++ compilers.

Fixes: #21561
Signed-off-by: William R. Dieter <william.r.dieter@intel.com>
2021-01-28 09:05:35 -05:00
Fred Baksik
6f1af899db Toolchain: Capture all arguments from CMAKE_<LANG>_COMPILER
Capture CMAKE_<LANG>_COMPILER_ARG1 from CMAKE_<LANG>_COMPILER in the
same fashion that it is from $ENV{<LANG>}.

Since get_filename_component() returns a single string of all the
arguments from $ENV{<LANG>}, a single string of arguments will be
constructed from the items contained in CMAKE_<LANG>_COMPILER.

Fixes #20089
2020-07-23 14:52:48 -04:00
Robert Maynard
8cc384f629 Compilers: Add paths from -print-sysroot to system prefix path 2020-04-14 13:48:28 -04:00
Brad King
0d0aa98c84 ASM: Record vendor-specific output matched to identify assembler
For example, with GNU `as`, we match `GNU assembler`, but with GNU `gcc`
as the assembler, we do not match anything.  Distinguishing these cases
may be useful for constructing assembler command lines.
2020-03-12 10:07:30 -04:00
Stefan Andersson
c242187875 IAR: Add support for the RISC-V compiler 2019-07-08 13:11:45 -04:00
Brad King
4c0fb923b7 IAR: Do not print compiler architecture id for non-IAR compilers
The compiler identification message was modified in commit ea83d0f8fb
(IAR: Generalize and add support for IAR RX compiler, 2019-04-05) to
include the architecture id since IAR compilers are arch-specific.
Revise the logic to avoid modifying the message for other compilers.
2019-05-21 10:58:18 -04:00
Johan Stridkvist
7b0abaac31 ARMClang: Add support for Clang-based ARM compiler
Fixes: #18215
2019-05-14 14:59:55 -04:00
Stefan Andersson
ea83d0f8fb IAR: Generalize and add support for IAR RX compiler
Moved common ASM setup to the common macros and changed version check.
2019-04-12 09:10:02 +02:00
Brad King
30fc5ecf23 Merge topic 'qcc-asm-detection'
be87ce43f0 Add ASM Compiler detection for QCC

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Bartosz <gang65@poczta.onet.pl>
Merge-request: !3016
2019-02-26 10:42:31 -05:00
Maikel van den Hurk
be87ce43f0 Add ASM Compiler detection for QCC 2019-02-25 08:28:47 +01:00
Brad King
b186329d3d Use -? instead of /? to test compiler for MSVC-like command-line support
MS-style command-line tools accept either `/` or `-` for command-line
options.  Prefer `-` over `/` so that non-MS tools do not treat it as a
path.

Fixes: #18941
2019-02-19 07:29:27 -05:00
Brad King
c84fb4812d ASM: Detect compiler id for Clang used as Assembler
Add missing vendor table entries for Clang and AppleClang to identify
them.  Previously this worked only if Clang was also enabled as a C or
CXX compiler first because we used to copy the C compiler id.  However,
that was removed by commit v3.13.0-rc1~44^2 (ASM: Search for full path
even when using C or C++ compiler, 2018-09-26).

Fixes: #18575
2018-11-09 11:34:34 -05:00
Raul Laasner
7ab5843c26 ASM: Search for full path even when using C or C++ compiler
When `CMAKE_{C,CXX}_COMPILER` is set but `CMAKE_ASM*_COMPILER` is
not, we copy the C or C++ compiler to use as the ASM compiler.
In this case we still need to search for the ASM compiler in case
the C or C++ compiler is not known as an absolute path.

Also do not copy the compiler id setting and let the normal detection
take place.  The C compiler id may not exist if the language has not
been enabled.

Fixes: #18406
2018-09-26 14:01:39 -04:00
Anton Danielsson
f83330ed6c ASM: ADSP assembler identification
Add support to identify the ADSP (Analog Devices) assembler
in CMakeDetermineASMCompiler.

Fixes: #17695
2018-01-30 10:06:01 +01:00
Brad King
acb4cb9500 CMakeFindBinUtils: Improve switch between MSVC- and GNU-like tools
The switch was not considering some languages, such as `ASM`.
Instead of memorizing the list of languages in the condition,
use a language specified by the includer.

Fixes: #17510
2017-11-28 07:57:58 -05:00
Ben Boeckel
336c4fc6fa CMakeDetermineASMCompiler: fix a CMP0054 warning
This was introduced in commit d8e6cd9e (IAR: Improve support for IAR ARM
Compiler, 2017-06-15) from !991.

Fixes #17062.
2017-07-13 14:01:38 -04:00
Norbert Lange
d8e6cd9ed8 IAR: Improve support for IAR ARM Compiler
Make the implementation for this compiler more complete.

IAR has multiple C++ modes, historically they were reduced c++ versions
for embedded that gradually improved to the full standard (which can be
reduced again by e.g. disabling rtti and exceptions).  The new
implementation picks the best available, but the c++ mode can also be
overridden by defining `CMAKE_IAR_CXX_FLAG`.

Add C/C++ standard flags so that all modes up to and including the last
supported standard are defined.

Fixes: #16826
2017-06-29 13:25:58 -04:00
Norbert Lange
0b1a2876c8 Add a CMAKE_<LANG>_COMPILER_ARCHITECTURE_ID variable
Compilers such as MSVC and IAR may have variants that target different
architectures.  We have been using a `MSVC_<LANG>_ARCHITECTURE_ID`
variable to hold this information for MSVC.  Add an alternative with a
more general name (later we can port MSVC to it too).

This additional information may be needed to generate proper invocations
of the compiler based on its architecture variant.
2017-06-29 13:25:57 -04:00
Norbert Lange
fea7d69dde Store CMAKE_ASM_COMPILER_VERSION persistently
We already do this for other languages like C and CXX.
2017-06-29 13:25:57 -04:00
Norbert Lange
d2a8b5cea6 CMakeDetermineASMCompiler: Fix small copy-paste mistake
GNU is not a vendor of IAR.
2017-06-29 13:25:57 -04:00
Ruslan Baratov
7393418844 Rename CMAKE_GCC_{AR,RANLIB} to CMAKE_LANG_COMPILER_{AR,RANLIB}
The variables recently added by commit b9d36826 (Add 'CMAKE_GCC_AR' and
'CMAKE_GCC_RANLIB' variables, 2017-03-08) are more appropriately managed
with language-specific names rather than toolchain-specific names.
2017-04-03 14:10:50 -04:00
Brad King
ee3295e917 Merge topic 'vs-nasm'
5ba2c9e5 VS: Add support for ASM_NASM language
2017-02-10 13:36:18 -05:00
Evgeny Fimochkin
5ba2c9e5e0 VS: Add support for ASM_NASM language
Fixes: #16469
2017-02-07 13:20:52 -05:00
Michael Maltese
72ed051b12 CMakeDetermineCompilerId: check with and without user-specified flags
Clang may raise an error when passed a `-march=` option that doesn't
correspond to the current target triple.  CMake cannot pass the target
triple when determining the compiler id because it doesn't know how yet,
but it does pass along user-specified flags.  This breaks when those
user-specified flags include `-march=`.  Fix this use case by also
trying to find the compiler id without the user-specified flags.

Fixes: #16587
2017-02-06 13:12:06 -05:00
Michał Górny
dd153de4f0 CMakeDetermineASMCompiler: arg-split ASM* env var like CC
Split the arguments off of the `ASM${ASM_DIALECT}` environment variable
as is done for `CC` and other compiler variables. This fixes using CMake
when `ASM*` is used to pass additional target flags, e.g. when one uses
`ASM=${CC}`.
2016-12-02 10:00:34 -05:00
Brad King
86578eccf2 Simplify CMake per-source license notices
Per-source copyright/license notice headers that spell out copyright holder
names and years are hard to maintain and often out-of-date or plain wrong.
Precise contributor information is already maintained automatically by the
version control tool.  Ultimately it is the receiver of a file who is
responsible for determining its licensing status, and per-source notices are
merely a convenience.  Therefore it is simpler and more accurate for
each source to have a generic notice of the license name and references to
more detailed information on copyright holders and full license terms.

Our `Copyright.txt` file now contains a list of Contributors whose names
appeared source-level copyright notices.  It also references version control
history for more precise information.  Therefore we no longer need to spell
out the list of Contributors in each source file notice.

Replace CMake per-source copyright/license notice headers with a short
description of the license and links to `Copyright.txt` and online information
available from "https://cmake.org/licensing".  The online URL also handles
cases of modules being copied out of our source into other projects, so we
can drop our notices about replacing links with full license text.

Run the `Utilities/Scripts/filter-notices.bash` script to perform the majority
of the replacements mechanically.  Manually fix up shebang lines and trailing
newlines in a few files.  Manually update the notices in a few files that the
script does not handle.
2016-09-27 15:14:44 -04:00
Joakim Andersson
035a658f4f Add support for the ARM Compiler (arm.com)
Create an `ARMCC` compiler id corresponding to compilers identified and
versioned by the `__ARMCC_VERSION` predefined macro.  See documentation
for the compilers at

 http://infocenter.arm.com/help/topic/com.arm.doc.set.swdev/index.html
2015-11-02 13:45:24 -05:00
Rolf Eike Beer
7eacbaed4d Replace MATCHES ".+" tests with NOT STREQUAL "" 2014-04-14 18:17:23 +02:00
Brad King
6852fb8034 CMakeDetermine*Compiler: Factor out search for compiler in PATH
Factor out a _cmake_find_compiler_path helper macro to avoid duplication
of the search for a full path to the compiler.
2014-03-10 17:12:00 -04:00
Stephen Kelly
d2dea79b36 CMakeDetermine*Compiler: Fix typo 'lile' => 'like' 2014-01-22 08:43:58 -05:00
Daniele E. Domenichelli
15610bb5b1 Drop use of configure_file IMMEDIATE option
Since commit 7d47c693 (Drop compatibility with CMake < 2.4, 2013-10-08)
we no longer need to use the configure_file IMMEDIATE option to support
compatibility modes less than 2.0.
2013-11-13 10:12:17 -05:00