Commit Graph

34 Commits

Author SHA1 Message Date
Brad King
85b151ff5b Merge branch 'backport-intel-c++20' into intel-c++20 2020-06-26 08:24:46 -04:00
Brad King
99c8dbf497 Intel: Add flags for C++20
Patch-by: Matheus Izvekov
Fixes: #20880
2020-06-26 08:21:21 -04:00
Robert Maynard
457170a476 CXX: Compile when possible with explicit Cxx language flag set
Issue: #14516, #20716
2020-06-09 16:20:53 -04:00
Hanjiang Yu
f6f4eb0907 clang-tidy: Add driver mode argument
`clang-tidy` does not infer driver mode if it is not provided with a
JSON compilation database.  This is exactly the way cmake launches it.
Hence clang-tidy will only use the default driver mode.  Add an explicit
driver mode argument to avoid this.
2020-01-27 13:59:05 -05:00
Robert Maynard
62dbe53a8a CompileFeatures: Record when Intel gained full CXX14 support
Use the infrastructure added by commit 646fb1a646 (CompileFeatures:
memoize C++ compilers with full language level support, 2019-03-27) to
avoid using a `try_compile` to check for C++14 feature support when the
running compiler is known to have all features.
2019-05-13 13:12:47 -04:00
Robert Maynard
3dbec53255 CompileFeatures: Record when compilers gained full CXX14 support
Use the infrastructure added by commit 646fb1a646 (CompileFeatures:
memoize C++ compilers with full language level support, 2019-03-27) to
avoid using a `try_compile` to check for C++14 feature support when the
running compiler is known to have all features.
2019-05-02 10:23:25 -04:00
Robert Maynard
8d45a2ffe0 CompileFeatures: Record when compilers gained full CXX11 support
Use the infrastructure added by commit 646fb1a646 (CompileFeatures:
memoize C++ compilers with full language level support, 2019-03-27) to
avoid using a `try_compile` to check for C++11 feature support when the
running compiler is known to have all features.
2019-04-29 17:18:45 -04:00
Robert Maynard
239a8a0266 CompileFeatures: Record when CXX compilers have gained full support for 98
Use the infrastructure added by commit 646fb1a646 (CompileFeatures:
memoize C++ compilers with full language level support, 2019-03-27) to
avoid using a `try_compile` to check for C++98 feature support when the
running compiler is known to have all features.
2019-04-11 11:20:48 -04:00
Christian Pfeiffer
735e69f445 Intel: Fix incorrectly documented extension flags
Fixes: #18166
2018-07-12 09:35:50 -04:00
Christian Pfeiffer
c3d576f5d6 Intel: Add C++17 compiler options
Since Intel C++ 18.0, some C++17 features are supported if the flags
-std=c++17, respectively /Qstd=c++17 are given.

Fixes: #17687
2018-01-27 15:09:58 +01:00
Chuck Atkins
9b112a848a Compilers: Port to use default cmake_record_lang_compile_features macros 2017-05-30 09:34:36 -04:00
Daniel Pfeifer
fc51b92c80 Intel: avoid variables in language standard flags
In the bootstrap script, we want to be able to extract language standard
flags using sed.  Make sure the content of the flag varianbles can be
passed unmodified to the compiler.
2017-05-26 08:21:50 +02:00
Chuck Atkins
0198502ff4 Intel: Use common compiler macros for language standard default 2017-05-02 09:49:23 -04:00
Brad King
684e4d205d Features: Make feature recording conditions more consistent
Condition all calls to `_record_compiler_features_{c,cxx}` on
`_result EQUAL 0` so that adding new language standards later does
not need to update them.  Avoid some duplicate compiler version
checks by conditioning C11 and CXX14 feature recording on the
existence of `CMAKE_{C11,CXX14}_STANDARD_COMPILE_OPTION` (whose
setting already used the version check).
2016-12-02 11:22:43 -05:00
Brad King
be73273952 Features: Fix standards and features for Intel 15 on Windows
The Intel 15 compiler for Windows does not support the same set of
standards and features as the same version for other platforms.
2016-11-10 12:54:06 -05:00
Brad King
8b6cc2518a Features: Centralize per-compiler recording macros
Simplify and de-duplicate per-compiler feature recording macros and
convert to a centralized per-language macro.
2016-11-02 09:51:48 -04:00
Brad King
369d580937 Features: Record features for Intel Compiler on Windows
Since this compiler always defines `__cplusplus` to `1` we need to use
`_MSC_VER`, `__INTEL_CXX11_MODE__`, and the feature test macro named
`__cpp_aggregate_nsdmi` to detect C++11 and C++14 modes.

With no `-Qstd=` flag this compiler defaults to C++98 plus a subset of
C++11/C++14 features needed to be compatible with MSVC.  We pretend it
is plain C++98 and add a `-Qstd=` flag whenever needed for C++11 or
above features even if they would happen to be available in MSVC-mode.

Closes: #16384
2016-10-27 13:33:10 -04:00
Brad King
967dcf36d0 Intel: Remove incorrect C++98 standard compiler flag on Windows
The change in commit 05e05cd2 (Intel: Fix compiler C++98 standard flag
on Windows, 2016-10-26) was wrong.  The Intel C++ Compiler for Windows
does not support either `-Qstd=c++98` or `-Qstd=gnu++98`.  Simply remove
both flags for this compiler and use no options at all to achieve this
mode.

Issue: #16384
2016-10-27 13:28:34 -04:00
Brad King
05e05cd2aa Intel: Fix compiler C++98 standard flag on Windows
The Intel C++ Compiler for Windows does not support the `-Qstd=c++98`
flag but does support `-Qstd=gnu++98`.

Issue: #16384
2016-10-26 15:03:53 -04:00
Brad King
881585f975 Intel: Fix compiler extension flags on Windows
The extension flags enabled by commit v3.6.0-rc1~120^2~1 (Features:
Record standard flags for Intel C/C++ on Windows, 2016-04-18) of the
form `-Qstd=gnu++11` are not supported by the Intel C/C++ Compiler for
Windows.  Fall back to using the non-extension form of the flags.

Issue: #16384
2016-10-24 14:29:40 -04:00
Brad King
f9dbe22ca2 Intel: Do not use GNU-like flags on Windows
Refactor options out of `Modules/Compiler/Intel-{ASM,C,CXX,Fortran}.cmake`
into a common helper in `Modules/Compiler/Intel.cmake`.  Condition
them to be used only on non-Windows hosts where the Intel compiler
is GNU-like instead of MSVC-like.

Previously this worked only because the options were later overridden
by `Modules/Platform/Windows-Intel*.cmake`, but it is cleaner to not
set the options in the first place.
2016-07-05 13:58:42 -04:00
Brad King
9addce99c2 Features: Record standard flags for Intel C/C++ on Windows
Select the `-std=` or `-Qstd=` flag based on whether Intel is GNU-like
or MSVC-like, respectively.
2016-04-28 09:16:36 -04:00
Levi Morrison
be910f00b5 Features: Record standards and features for Intel C++ on UNIX
Skip this for now on Windows (where Intel C++ simulates MSVC).
2016-04-28 09:15:25 -04:00
Brad King
6d74e7870b Ninja: Add dependencies on system-provided header files (#14914)
When system-provided packages are upgraded we must re-compile sources
depending on their headers.  Use `-MD` instead of `-MMD` so that the
generated depfiles do not exclude system headers.

Suggested-by: Jussi Judin
2016-03-15 10:18:50 -04:00
Brad King
c736de7b28 Factor an <INCLUDES> placeholder out of <FLAGS> in rule variables
Teach the Makefile and Ninja generators to substitute for an <INCLUDES>
placeholder instead of putting -I in <FLAGS>.  Update our values for

  CMAKE_<LANG>_COMPILE_OBJECT,
  CMAKE_<LANG>_CREATE_ASSEMBLY_SOURCE, and
  CMAKE_<LANG>_CREATE_PREPROCESSED_SOURCE

to place <INCLUDES> just before <FLAGS>.
2015-07-13 10:49:46 -04:00
Nils Gladitz
b7f58511cf Visibility: the Intel compiler does not support -fvisibility on windows 2014-02-07 11:50:08 +01:00
Peter Kümmel
d439083287 Ninja: add depfile support for Intel's compiler 2013-11-04 13:29:19 +01:00
Stephen Kelly
0e9f4bc00c Introduce target property <LANG>_VISIBILITY_PRESET
This is initialized by CMAKE_<LANG>_VISIBILITY_PRESET. The target
property is used as the operand to the -fvisibility= compile option
with GNU compilers and clang.
2013-06-02 12:00:51 +02:00
Clinton Stimpson
0ddfc51f6a Add -DNDEBUG to RelWithDebInfo flags where where Release flags had it.
Previously, it was inconsistent in that some platforms/compilers
had this flag for the RelWithDebInfo configuration and some didn't.
This fixes issue #11366.
2012-08-15 20:00:45 -06:00
Kitware Robot
77543bde41 Convert CMake-language commands to lower case
Ancient CMake versions required upper-case commands.  Later command
names became case-insensitive.  Now the preferred style is lower-case.

Run the following shell code:

cmake --help-command-list |
grep -v "cmake version" |
while read c; do
    echo 's/\b'"$(echo $c | tr '[:lower:]' '[:upper:]')"'\(\s*\)(/'"$c"'\1(/g'
done >convert.sed &&
git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' '*CMakeLists.txt' |
egrep -z -v '^(Utilities/cm|Source/kwsys/)' |
xargs -0 sed -i -f convert.sed &&
rm convert.sed
2012-08-13 14:19:16 -04:00
Alexander Neundorf
196d9a54aa The preprocessing and assembly rules also need the <DEFINES>, otherwise different reults are created.
Alex
2009-09-19 04:33:10 -04:00
Brad King
2eca4dd2d1 Use Intel for Linux flags only on Linux
The commit "Split Intel compiler information files" moved some Linux
specific flags into the platform-independent Intel compiler info files.
This moves them back.
2009-09-01 13:55:13 -04:00
Brad King
2ce6a7d0fb Split Intel compiler information files
This moves platform-independent Intel compiler flags into separate
"Compiler/Intel-<lang>.cmake" modules.  Platform-specific flags are
left untouched.
2009-08-21 09:54:42 -04:00
Brad King
0ea43ee128 Set CMAKE_<LANG>_VERBOSE_FLAG variables for Intel
We set the variables to contain "-v", the verbose front-end output
option for Intel compilers.  This enables detection of implicit link
libraries and directories for these compilers.
2009-07-29 16:07:27 -04:00