Commit Graph

507 Commits

Author SHA1 Message Date
Fred Baksik 595932c4f0 GHS: Update the link line processing
-- add missing executable linker libs from:
   CMAKE_C_STANDARD_LIBRARIES
-- add missed transitive link libraries
-- add skipped library linker options
-- The linker expects -l../relative/path/to/lib.a to be relative to the top-level project
   Because there can be multiple top-level projects convert the path to an absolute path to target
2019-01-16 10:41:27 -05:00
Fred Baksik 2ed2d6b46f GHS: Place build system outputs per target output directives
-- Set output and object file locations
-- Suffixes are no longer being forced but will now follow the target properties
   By default GHS tools have no suffix for executable files so
   CMAKE_EXECUTABLE_SUFFIX was changed to meet this behavior
-- Remove #if 0 blocked out code; it has been replaced.
   Forcing the -relprog option has been removed from non-kernel executable targets.
   The default value of this option (if it is even available) is determined by the
   tool-chain for the specified target and platform (Some tool-chains default to
   -locatedprogram).  The use of -relprog can have unexpected results as it cannot
   always produce a fully relocated executable.
-- Clarify use of CMAKE_BUILD_TYPE to control build configuration
2019-01-16 10:41:24 -05:00
Ethan Slattery 270965e0c7 IAR: Update compiler modules to support AVR systems
Fixes: #18557
2019-01-15 13:59:01 -05:00
Rob Boehne 74720a298c XL: Move '-bE' flag earlier so it can be overridden
By default, we generate an export list for a shared library and pass
that file on the link line.  The problem was that it could not be
overridden by a target when a specific export file is being used.
Multiple `-bE` flags on the link are overridden by subsequent `-bE`
flags, so only the last one is used.

Fixes: #13282
2019-01-10 14:25:06 -05:00
Marc Chevrier f255280fd9 PIE link options: Update strategy to fix performance regression
Fixes: #18700
2018-12-19 19:41:27 +11:00
Cristian Adam 243b7c40d4 QNX: Compiler and feature detection fixes
Tested compiler detection with the QNX 7.0 list of compiler targets:
 * gcc_ntoaarch64le
 * gcc_ntoaarch64le_cxx
 * gcc_ntoarmv7le
 * gcc_ntoarmv7le_cxx
 * gcc_ntox86_cxx
 * gcc_ntoaarch64le_gpp
 * gcc_ntox86_64_gpp
 * gcc_ntoarmv7le_gpp
 * gcc_ntox86_64_cxx
 * gcc_ntox86
 * gcc_ntox86_gpp
 * gcc_ntox86_64

This commit fixes some of the problems described in:
https://cristianadam.eu/20181202/a-better-qnx-cmake-toolchain-file/
2018-12-03 23:18:43 +01:00
Marc Chevrier c4b4d8b3a6 POSITION_INDEPENDENT_CODE: Manage link flags for executables
Fixes: #14983, #16561
2018-11-11 17:34:09 +01:00
Marc Chevrier 724a0346f7 POSITION_INDEPENDENT_CODE: Fix erroneous '-fPIE' flag for Sun Studio
Fixes: #16311
2018-11-08 14:58:57 +01:00
Brad King 157e3e1bd6 Merge topic 'flang-preprocess-source'
8d782adbce Flang: Fix command-line used to preprocess sources

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2545
2018-10-30 11:00:41 -04:00
Brad King 59d57f023f Merge topic 'qccDepfile'
99728fe27c QNX: Update qcc depfile flags to be compliant with ccache

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2540
2018-10-30 10:59:12 -04:00
Brad King b8e2c42f36 Merge branch 'flang-preprocess-source' into release-3.13
Merge-request: !2545
2018-10-29 14:26:01 -04:00
Brad King 8d782adbce Flang: Fix command-line used to preprocess sources
Running flang with `-E` now ignores any `-o` option and always prints
preprocessed output to stdout.  Use shell redirection to place it in a
file instead.

Fixes: #18497
2018-10-29 14:23:58 -04:00
Brad King 37cf805d3e Merge branch 'qccDepfile' into release-3.13
Merge-request: !2540
2018-10-29 12:51:19 -04:00
Maikel van den Hurk 99728fe27c QNX: Update qcc depfile flags to be compliant with ccache
Pass the flags to the preprocessor phase via `-Wp,`.  This is
accepted both by qcc and ccache.
2018-10-29 12:50:55 -04:00
Brad King 39534c58c5 Autogen: Add clang --target= flag to compiler predefines command
Respect the compiler target value `CMAKE_<LANG>_COMPILER_TARGET` in
`CMAKE_<LANG>_COMPILER_PREDEFINES_COMMAND`.

Issue: #18425
2018-10-05 10:23:52 -04:00
Daniel Schürmann a26ebb894b IAR: Abort if compiler version or target architecture is not detected
If these are not detected then we cannot support the IAR compiler.
Fail early with an explicit message instead of silently proceeding
and getting strange errors.

Issue: #18333
2018-09-10 09:03:47 -04:00
Brad King eeb5bb7fe1 Merge topic 'cmake_lang_compiler_predefines'
83f2d48388 Respect CMAKE_<LANG>_COMPILER_ARG1 in CMAKE_<LANG>_COMPILER_PREDEFINES_COMMAND

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2316
2018-08-30 09:21:31 -04:00
Sebastian Holtermann 83f2d48388 Respect CMAKE_<LANG>_COMPILER_ARG1 in CMAKE_<LANG>_COMPILER_PREDEFINES_COMMAND
AUTOMOC used to fail to generate ``moc_predefs.h`` when ``ccache`` was used
as a compiler starter by e.g. configuring a project with the environment
variable CXX="ccache g++".
The reason was that ``CMAKE_<LANG>_COMPILER_ARG1`` wasn't respected in the
definition of ``CMAKE_<LANG>_COMPILER_PREDEFINES_COMMAND`` for various
compilers.  This is fixed by this patch.

Fixes #17275.
2018-08-28 20:07:53 +02:00
Kelly (KT) Thompson 5a655681c3 Cray: Record C++14 compiler mode options
Fixes: #18270
2018-08-24 15:15:53 -04:00
Brad King d64e41ac48 Merge topic 'nag-fortran-rsp'
10d6c3a635 NAG: Pass response files through front-end to the linker

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2250
2018-08-06 08:24:43 -04:00
Brad King 10d6c3a635 NAG: Pass response files through front-end to the linker
The `nagfor` compiler front-end does not support the `@rspfile` syntax.
Use `-Wl,@rspfile` instead to pass it through to the linker.

Fixes: #18232
2018-08-01 13:28:45 -04:00
Brad King c2856e0b2b XL: Use -qpic for position independent executables
The XL compiler does not have a dedicated "pie" option so use at least
`-qpic`.  This missing setting was exposed by the `ExportImport` and
`PositionIndependentTargets` tests with XL on an ELF platform.
2018-08-01 11:59:50 -04:00
Brad King 0d72c50d29 Merge topic 'intel-std-fix'
735e69f445 Intel: Fix incorrectly documented extension flags

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2206
2018-07-13 08:54:47 -04:00
Christian Pfeiffer 735e69f445 Intel: Fix incorrectly documented extension flags
Fixes: #18166
2018-07-12 09:35:50 -04:00
Brad King f7f2b8078e Merge topic 'qnx_fix'
e014df762b QNX: Fix autogen compiler predefines detection

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2205
2018-07-12 09:15:58 -04:00
Cristian Adam e014df762b QNX: Fix autogen compiler predefines detection
In commit v3.12.0-rc1~20^2 (Move GNU COMPILER_PREDEFINES_COMMAND from
Platform to Compiler, 2018-06-01), `Compiler/GNU.cmake` introduced the
`-dM` flag, which requires `-Wp` prefix for the QNX compiler wrapper.
2018-07-11 09:54:49 -04:00
Marc Chevrier 66ea1a3795 LINK_OPTIONS: Add support of "LINKER:" prefix 2018-06-06 17:22:41 +02:00
Brad King f719a13c28 Features: Add special case to disable relaxed constexpr for Intel 18
Intel compilers define `__cpp_constexpr` to `200704` even in C++14 mode.
This indicates that the `cxx_relaxed_constexpr` feature is not
available.  However, Intel 17 and above document support for it.  In
commit v3.8.0~9^2 (Features: Update features for Intel C++ 17.0.2 on
UNIX, 2017-03-31) we added a special check for this case.  Intel 17 and
19 work.  However, Intel 18 does not seem to work and fails our test
case.  Add a special case to disable the feature for Intel 18.
2018-06-04 13:52:11 -04:00
Brad King 07bddeae14 Merge topic 'fix-ti-c-standard'
9e27881bb1 TI: Add support for C language standards

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2131
2018-06-04 11:34:35 -04:00
Arnaud Gelas 9e27881bb1 TI: Add support for C language standards
Set C90 and C99 compile options for TI compiler.

Fixes: #18061
2018-06-04 10:48:02 -04:00
Sebastian Holtermann caa138c1a5 Move GNU COMPILER_PREDEFINES_COMMAND from Platform to Compiler
Moves `CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND` from linux specific
[Modules/Platform/Linux-GNU.cmake](Modules/Platform/Linux-GNU.cmake) to
[Modules/Compiler/GNU.cmake](Modules/Compiler/GNU.cmake).
This enables compiler predefines generation (in AUTOMOC) on all
platforms that run gcc (and clang).
2018-06-01 09:21:06 +02:00
Henry Schreiner 1fb2812d5b CUDA: Add compiler detection for CUDA < 7.5
If the CUDA version macros are not defined, run `nvcc --version` and
extract the version from its output.

Fixes: #17920
2018-04-23 11:26:56 -04:00
Ephi Sinowitz d67962c55a SunPro,XL: Add depfile flags to support Ninja generator
Add CMAKE_DEPFILE_FLAGS_${lang} to SunPro and XL. These flags are used
by the Ninja generator.
2018-04-17 15:35:49 -04:00
Brad King 77705a2c28 Merge topic 'clang-cl-std'
3f82c5904d Clang: Add standard flags support when simulating MSVC
8381bc12ad Clang: Avoid extra C++ feature detection when simulating MSVC
6cddf7ba32 Clang: Refactor standard flags logic when simulating MSVC

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1906
2018-04-13 10:22:26 -04:00
Brad King d59cd3b131 Merge topic 'features-msvc-2017'
5f4272cc06 Features: Record for VS 2017 through 15.6

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1903
2018-04-12 11:31:42 -04:00
Ruben Van Boxem 3f82c5904d Clang: Add standard flags support when simulating MSVC
When Clang 3.9 simulates MSVC 19.0 or higher it knows the `-std:` flags
that such versions of MSVC defines.

Fixes: #17866
2018-04-11 14:50:22 -04:00
Brad King 8381bc12ad Clang: Avoid extra C++ feature detection when simulating MSVC
Apply the optimization from commit v3.10.0-rc1~131^2 (MSVC: Avoid
unnecessary C++ feature detection steps, 2017-09-11) to the case of
Clang simulating a version of MSVC that does not define standards.

Issue: #17274
2018-04-11 14:47:28 -04:00
Brad King 6cddf7ba32 Clang: Refactor standard flags logic when simulating MSVC
Consolidate the compile options and standard defaults branches.
Add comments.
2018-04-11 14:45:16 -04:00
Daniel Filipe 5f4272cc06 Features: Record for VS 2017 through 15.6
VS 15.3 has more features than we recorded in commit v3.7.0-rc1~156^2~2
(Features: Record features for VS 15 Preview 4, 2016-09-05).

While at it, update comments and simplify some cases.
2018-04-11 11:27:07 -04:00
Brad King 12e6796b62 Android: Do not pass non-existent Clang -std flags
Android NDK r16b comes with

  Android clang version 5.0.300080  (based on LLVM 5.0.300080)

Although it claims version 5, it does not support the `-std=c++17`
or `-std=c++2a` flags that upstream Clang does.

Android NDK r17-beta1 comes with

  Android (4639204 based on r316199) clang version 6.0.1

that does have the flags.
2018-04-02 15:15:20 -04:00
Brad King 1b6ec4b9e3 Merge topic 'features-c++20'
8570dc7f64 Help: Update compiler versions in cmake-compile-features.7.rst
874d3d2948 Help: Add release note for C++ 20 support
7f295b1bd3 Features: Activate C++ 20 support for Clang 5.0+
71cb8ce3a1 Features: Activate C++ 20 support for GNU 8.0+
8f146c4508 Features: Activate C++ 20 support for MSVC 19.12.25835+
7fe580a362 Features: Add infrastructure for C++ 20 language standard
1b328e09a3 Features: Use -std=c++17 for C++ 17 on Clang 5.0+
0bc3e5788a Features: Use -std=c++17 for C++ 17 on GNU 8.0+

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1892
2018-04-02 10:01:23 -04:00
Brad King a53cf69022 Features: Record C features for MSVC
The MSVC C compiler has no notion of C language standards or flags.
Tell CMake to assume that all language standards are available.
Record available C language features depending on the version of
the compiler.

Fixes: #17858
2018-03-29 10:40:13 -04:00
Brad King 7f295b1bd3 Features: Activate C++ 20 support for Clang 5.0+ 2018-03-27 07:42:07 -04:00
Brad King 71cb8ce3a1 Features: Activate C++ 20 support for GNU 8.0+ 2018-03-27 07:42:07 -04:00
Brad King 8f146c4508 Features: Activate C++ 20 support for MSVC 19.12.25835+ 2018-03-27 07:42:07 -04:00
Brad King 7fe580a362 Features: Add infrastructure for C++ 20 language standard
Issue: #17849
2018-03-27 07:40:54 -04:00
Brad King 1b328e09a3 Features: Use -std=c++17 for C++ 17 on Clang 5.0+
Clang 5.0 added support for the `-std=c++17` flag.
2018-03-26 14:23:41 -04:00
Brad King 0bc3e5788a Features: Use -std=c++17 for C++ 17 on GNU 8.0+
GNU 8 now documents official support for the `-std=c++17` flag.
2018-03-26 14:23:41 -04:00
Brad King 4267960fc9 Features: Record for SunPro 5.15
Oracle Developer Studio 12.6 adds support for more C++ 11 features.
2018-03-20 11:48:22 -04:00
Brad King fc96d99c3e Features: Record initializer list support for Intel 14 and above
Features recorded by commit v3.6.0-rc1~120^2~5 (Features: Record
standards and features for Intel C++ on UNIX, 2016-04-28) for the Intel
compiler left out initializer list support because our test case in
`Tests/CompileFeatures/cxx_generalized_initializers.cpp` caused an
internal compiler error.  It turns out this is because the Intel
compiler asserts the `initializer_list` constructor signatures to verify
that they match its own `<initializer_list>` header.  It was our dummy
implementation used to test the language feature without any headers
that caused the ICE.  Revise it to use a constructor signature accepted
by the Intel compiler.

Fixes: #17829
2018-03-16 07:47:42 -04:00