flang is a Fortran compiler built on top of clang [1]. Because flang
shares a lot of commonalities with clang, the flang module piggybacks
off the clang module and overrides certain options.
Add flang to Fortran compiler auto find list.
Update flang preprocessor macros to differentiate from PGI.
Add Flang-FindBinUtils.
[1] https://github.com/flang-compiler/flang
Use `try_compile` instead of `try_run`. It is not clear why `try_run`
was ever needed, and it does not work during cross-compiling.
Update the check's source file to remove code associated with actually
running things. Also remove the ancient `__CLASSIC_C__` code path and
use a simple `int main(void)` as in `Modules/CheckIncludeFile.c.in`.
Fixes: #16920
Microsoft has dedicated toolset versions for XP compatible binaries
(v110 vs. v110_xp, v141 vs. v141_xp) and CMake doesn't find wxWidgets
compiled with _xp tools. This patch adds _xp to directories searched
for wxWin libraries.
The VS environment script we load changes the working directory to
`%USERPROFILE%/source` if it exists. Set `VSCMD_START_DIR` to tell
the script to retain the current working directory.
The Ninja generator preprocesses and compiles separately for Fortran.
When compiling, tell gfortran that the source is already preprocessed so
that it will honor the `# <line>` directives when producing diagnostics
messages.
Fixes: #17160
The `crlf` attribute is deprecated in Git. This also changes the given
files to be in the index using LF newlines, but they will be checked
out with CRLF newlines due to the attribute.
At the moment, the Visual C++ OpenMP libraries will be installed for all
compilers simulating MSVC. They should however only be provided if we're
dealing with actual MSVC.
With MSVC the Ninja generator extracts the `cl -showIncludes` prefix.
When MSVC is configured to have non-English output, e.g. via
`VSLANG=2052` in the environment, then `cl` prints the prefix encoded
for the current code page, which is not necessarily UTF-8 encoding.
Currently we fail to convert the prefix to our internal UTF-8 encoding,
but assume it is UTF-8 later.
While writing `rules.ninja`, the Ninja generator converts our internal
UTF-8 encoding to the current code page. The `msvc_deps_prefix =` line
needs to be encoded as the current code page so that `ninja` can match
in the output from `cl -showIncludes` during the build.
Prior to commit v3.9.0-rc1~47^2 (codecvt: Re-implement do_out and
do_unshift, 2017-05-25), the non-UTF-8 prefix extracted above was
written without noticing its incorrect internal encoding. The
`rules.ninja` file was successfully written, but possibly with a mangled
`msvc_deps_prefix`. Since that commit the output stream correctly
rejects the non-UTF-8 byte sequence and writing `rules.ninja` fails.
Fix this by correctly converting the `cl -showIncludes` output from the
current code page to our internal UTF-8 encoding.
Fixes: #17191
This reverts commit v3.9.0-rc1~287^2 (macOS: Enable Hi-DPI support in
applications by default, 2017-04-08). It breaks iOS applications that
do not use their own `MACOSX_BUNDLE_INFO_PLIST` because `NSApplication`
is only for macOS apps. Until more complete support for iOS is added
to CMake (e.g. with a different default plist file) we must allow
our default plist file to work for both macOS and iOS.
Fixes: #17179
Since on MacOSX not all modules are available as "framework" (e.g libQtUiTools.a),
the assumption made in "FindQt4.cmake" is not always valid and systematically
setting the imported libraries location to framework location is incorrect.
This commit increases the robustness of the logic by first checking
if the location exists.
Fixes#17195
Store the `VC###` component of the `Microsoft.VC###.CRT` directory name
in a variable set based on the toolchain version. Its naming convention
is changed by VS 15.3.
c1f4f13d FindCUDA: Use long brackets to handle spaces in CUDA_NVCC_COMPILE_DEFINITIONS
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1139
Debian renames all LLVM/Clang binaries with a version suffix to allow
multiple versions to be installed at the same time. While there is a
version-agnostic package that adds a symlink to provide the standard
binary names, if only the versioned packages are installed, binaries
must be found as `binary-x.y`. In any case, using the same version of
the `binutils` as the compiler seems better.