Commit Graph

272 Commits

Author SHA1 Message Date
Ben Boeckel d608e85cfe ARMCC: Fix flag used for response files
ARMCC does not use the `@` sigil to indicate response files, but instead
the `--via=` flag. See the documentation here:

    http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0491h/CHDCIEGC.html

Fixes: #16425
2016-11-15 09:31:33 -05:00
Brad King 554b4f9010 Features: Record features for Intel C++ 17 on UNIX
Issue: #16384
2016-10-26 09:18:38 -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 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
Brad King 39ebfc79e6 Ninja: Add explicit preprocessing step for Fortran
All Fortran sources need to be preprocessed before any source may be
compiled so that module dependencies can be (later) extracted.  Factor
out an explicit preprocessing step preceding compilation.  Use Ninja
depfile dependencies on the preprocessing step and then compile the
already-preprocessed source with a separate build statement that depends
explicitly only on the preprocessor output.  Later we will insert
dynamic discovery of module dependencies between these steps.
2016-09-22 13:53:09 -04:00
Brad King 21346d3f12 Features: Record features for VS 15 Preview 4 2016-09-06 10:22:39 -04:00
Ben Boeckel 2bdba83e4b issues: update references to the CMake issue tracker
References to specific comments are left as-is since comments were not
migrated.
2016-08-15 09:34:06 -04:00
Neil Carlson e9c984267e NAG: Use -PIC for Fortran position-independent executable code
The Numerical Algorithms Group (NAG) Fortran compiler documents -PIC for
position-independent code and does not have a separate option for PIE.
We added `-PIC` for PIC in commit v2.8.11~174^2 (NAG: Use -PIC for
Fortran position-independent code, 2013-02-18).  Follow up for PIE.

Closes: #16236
2016-08-09 11:15:14 -04:00
Brad King 314a953982 Merge topic 'update-cle-version-info'
e52302d6 CrayLinuxEnvironment: Add alternative methods to get version info
2016-08-08 10:02:11 -04:00
Chuck Atkins e52302d6cb CrayLinuxEnvironment: Add alternative methods to get version info
Closes: #16229
2016-08-05 09:01:43 -04:00
Brad King aabf8772fd Merge topic 'gcc-fvisibility-version'
85e03142 GNU: Use -fvisibility on GCC 4.0 and 4.1 too
2016-08-03 09:20:54 -04:00
Brad King 16e449cc72 Merge topic 'intel-gnu11-support'
088f14eb Intel-C: standard flags are also supported in 12.0
27a3ca15 Intel-C: support gnu89 and gnu99 extension flags
cc223e1e Intel-C: declare support for gnu11
2016-08-03 09:20:25 -04:00
Ben Boeckel 088f14eb72 Intel-C: standard flags are also supported in 12.0 2016-08-02 13:10:56 -04:00
Ben Boeckel 27a3ca15e5 Intel-C: support gnu89 and gnu99 extension flags 2016-08-02 13:10:41 -04:00
Ben Boeckel cc223e1eed Intel-C: declare support for gnu11
Without extensions, functions like `strdup` are not available since they
are actually controlled by feature flags such as _SVID_SOURCE and
_BSD_SOURCE. When using `-std=c11` on Intel, none of these flags are
set, so the functions are not declared properly leading to compile
errors.

Reported-by: Adam J. Stewart <ajstewart426@gmail.com>
Closes: #16226
2016-08-02 11:42:45 -04:00
Brad King 85e0314201 GNU: Use -fvisibility on GCC 4.0 and 4.1 too
This flag is needed for the `<LANG>_VISIBILITY_PRESET` target property.
It has been supported since GCC 4.0, not 4.2 as we previously recorded.

Fixes #16222.
2016-08-02 09:24:54 -04:00
Daniel Pfeifer 5d0d980d99 Use string(APPEND) in Modules
Automate with:

find Modules -type f -print0 | xargs -0 perl -i -0pe \
's/set\(([a-zA-Z0-9_]+)(\s+)"\$\{\1\}([^"])/string(APPEND \1\2"\3/g'
2016-07-28 00:41:13 +02:00
Brad King a66004bee0 Honor CMAKE_<LANG>_FLAGS[_<CONFIG>]_INIT set in toolchain files
Document these variables.

Change our convention for setting these variables from:

    set(CMAKE_C_FLAGS_INIT "...")

to

    string(APPEND CMAKE_C_FLAGS_INIT " ...")

so that any value previously set by a toolchain file will be used.

Automate the conversion with:

    sed -i 's/set *(\(CMAKE_\(C\|CXX\|Fortran\|RC\|ASM\|${[^}]\+}\)_FLAGS\(_[^_]\+\)\?_INIT \+"\)/string(APPEND \1 /' \
      Modules/Compiler/*.cmake Modules/Platform/*.cmake

and follow up with some manual fixes (e.g. to cases that already
meant to append).  Also revert the automated changes to contexts
that are not protected from running multiple times.
2016-07-06 10:13:31 -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
Alexander Stein 89317915d9 Compiler/TI: Pass libraries as last part to linker
If e.g. libc.a is passed before any objects the linker raises the follwing
warning: cannot resolve archive libc.a to a compatible library, as no
input files have been encountered
In the end the library is skipped and missing symbols occur.

Signed-off-by: Alexander Stein <alexander.stein@systec-electronic.com>
2016-06-02 09:39:25 -04:00
Geoff Viola d7233a0472 GHS: Use shorter object file names on collision 2016-05-18 09:27:19 -04:00
Brad King d2a061596e Features: Record features for VS 2015 Update 2 2016-04-28 13:05:52 -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
Robert Maynard 36f32ede8d Features: Record standards and features for Intel C on UNIX
Record features for Intel C 12.1 and above.  Skip this for now on
Windows (where Intel C simulates MSVC).
2016-04-28 09:16:35 -04:00
Robert Maynard d028b94872 Features: Specify minimum version Intel C++ 12.1
Versions below 12.1 do not provide enough information to properly detect
if compiling with c++98 or c++0x enabled so remove them from the
supported list.
2016-04-28 09:16:31 -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 90f24f016e Merge topic 'asm-includes'
9408a7a8 ASM: Add missing <INCLUDES> placeholder for "compile" rules
2016-03-29 09:24:39 -04:00
Gregor Jasny 9408a7a802 ASM: Add missing <INCLUDES> placeholder for "compile" rules
This placeholder was added to the compilation rules for other languages
by commit v3.4.0-rc1~342^2 (Factor an <INCLUDES> placeholder out of
<FLAGS> in rule variables, 2015-07-13) but ASM was incorrectly left out.

Signed-off-by: Gregor Jasny <gjasny@googlemail.com>
2016-03-29 09:19:10 -04:00
Geoff Viola 36ad8dd440 GHS: Implement link flags and dirs for non-target groups (#16029) 2016-03-28 11:46:46 -04:00
Geoff Viola 230d50ed1a GHS: Factor out compiler information shared among languages
Move common information in `Modules/Compiler/GHS-*.cmake` over to a
common `Modules/Compiler/GHS.cmake` and include it.
2016-03-28 11:44:58 -04:00
Brad King 41c17c1d2e Merge topic 'ghs-try_compile'
bf3e76d2 GHS: Fix try_compile (#15975)
2016-03-22 11:15:41 -04:00
Paweł Stankowski 53c0dc2dd2 Add support for Bruce C Compiler (BCC)
Revise C compiler detection code to be K&R compatible.
2016-03-21 10:51:50 -04:00
Geoff Viola bf3e76d214 GHS: Fix try_compile (#15975) 2016-03-21 10:35:01 -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
Mariusz Pluciński 0a785eb4f4 Features: Clang has no cxx_decltype_incomplete_return_type in MSVC sim mode 2016-03-10 09:11:40 -05:00
Gregor Jasny 2cae5128fd Apple: Enable -isystem for GNU Compiler >= 4 (#15953)
Due to #4662 -isystem support was disabled for all GNU Compilers
on Apple platforms. But the change was probably a just work around
for a broken compiler on Tiger (see 10837#c27206). So we tighten
the condition to only kick in for GCC versions earlier than 4.
That should ensure sane behavior for Xcode 3.2 and later.
2016-02-07 20:20:02 +01:00
Juhani Simola 99a9c7e51a IAR: Add support for using this compiler with the Ninja generator
The dependency flags require recent versions of `iccarm` and `iccavr`.
The multi-rule dependency generated with `--dependencies=m` does not
work well with Ninja, so use `--dependencies=ns` instead.
2016-02-03 14:35:06 -05:00
Brad King 3baca6364b Record compile features for MinGW Clang on Windows (#15897)
Drop the 'UNIX' condition on Clang compiler features.  This enables
use of compile features with MinGW Clang, though additional work may
be needed for clang-cl.
2016-01-11 10:13:18 -05:00
Chuck Atkins 64e26850fc CrayPrgEnv: Cleanup binaries from implicit compile flag detection 2015-12-29 10:21:07 -07:00
Chuck Atkins 928d2085d8 CrayPrgEnv: Don't use absolute paths for imlicit libraries
When parsing implicit include dirs, link dirs, and link libs, all
arguments are resolved to absolute paths instead of relative paths.
This is correct for link and include directories but link libraries
should only include the library name, not it's path.
2015-12-18 09:27:55 -06:00
Brad King ad1be6ee76 Merge topic 'detect-cray-wrappers'
a7ef0225 Cray: Refactor the Cray platform files to use compiler wrapper checks
0763a836 Cray: Add macro tests to detect the Cray compiler wrappers
5eaac0c9 Compiler: Add infrastructure for detecting compiler wrappers
2015-12-09 08:36:53 -05:00
Chuck Atkins a7ef02253b Cray: Refactor the Cray platform files to use compiler wrapper checks
This is an extensive refactoring of the Cray compiler wrapper usage.
Using the new compiler wrapper checks, the CrayPrgEnv info files have
been moved from Platform/ to Compiler/.  The adjusted naming convention
allows the compiler-wrapper information files to be loaded for both the
CrayLinuxEnvironment platform when cross-compiling and the Linux
platform if building natively on the Cray compute nodes.  It also
creates a separation of common arguments for compiler id and language
information used to perform the appropriate introspection of implicit
arguments and libraries used by the compiler wrappers based on the
loaded module environment.
2015-12-09 08:35:19 -05:00
James Johnston 7a3277276e Embarcadero: Fix erroneous interpretation of __CODEGEARC_VERSION__.
As per the following link:

  http://docwiki.embarcadero.com/RADStudio/Seattle/en/Example_of_CODEGEARC_VERSION_Macro

The major/minor versions must be decoded as a hex string, while the patch
version must be decoded as a normal decimal string.

As an example, C++ Builder XE 8.1's bcc32.exe sets this macro to 0x070189C9.
The file version of bcc32.exe is 7.1.5570.35273.  Therefore, the correct
interpretation to COMPILER_VERSION would be 7.1.35273.
2015-12-03 21:37:08 +00:00
Brad King 1ccb417d61 Merge topic 'fix-forced-toolchain-dialect'
441dba80 Project: Guess default standard dialect if compiler was forced (#15852)
2015-11-20 08:53:05 -05:00
Brad King 441dba8032 Project: Guess default standard dialect if compiler was forced (#15852)
Prior to commit v3.4.0-rc1~71^2 (Project: Determine default language
dialect for the compiler, 2015-09-15) we always guessed the default
language standard dialect based on the compiler version.  This was not
reliable so that commit switched to computing the default language
standard dialect while detecting the compiler id.

When a toolchain file uses CMakeForceCompiler to set the compiler id
then the detection does not occur.  Therefore commit v3.4.0-rc1~54^2
(Project: Don't require computed default dialect if compiler was forced,
2015-09-22) made the lack of detection an error only if the compiler was
not forced.  However, this means that projects using CMakeForceCompiler
no longer even get the guess that we had before so <LANG>_COMPILER does
not work.

Due to the sophistication of CMake's compiler detection logic projects
should be ported away from using CMakeForceCompiler.  In the meantime,
restore a guess of the default language standard dialect when the
compiler is forced.
2015-11-19 10:22:35 -05: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
Brad King 340d0897fa Revert topic 'compiler-features-solaris'
Revert commit v3.4.0-rc1~10^2~2 (Features: Disable support for Oracle
SolarisStudio on non-Linux, 2015-09-29) and two follow-up commits.
The support of compile features and language standards on Orcale
SolarisStudio needs more investigation so for CMake 3.4 we should
just act as 3.3 did.
2015-10-08 13:18:39 -04:00
Brad King c824b23d15 Features: Fix C++98 flags on Oracle SolarisStudio 12.4 on Linux 2015-09-30 09:48:29 -04:00
Brad King 61bc0f7363 Features: Disable support for Oracle SolarisStudio on non-Linux
On SunOS the -std=c++11 flag must be used for linking as well as
compiling.  Until we implement support for this we cannot support
the CXX_STANDARD property except on Linux (where it was tested).
2015-09-29 11:25:07 -04:00
Brad King da7276cf94 Replace http://www.cmake.org URLs with https://cmake.org
The latter is now the preferred URL for visiting cmake.org with a
browser.  Convert using the shell code:

 git ls-files -z | xargs -0 sed -i 's|http://www\.cmake|https://cmake|g'
2015-09-25 15:47:39 -04:00