| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Swift is used as the linker for non-swift files because it needs to pull
files like swiftrt.o in when swift symbols are present to ensure that
the swift runtime is linked.
The swift driver uses clang as the underlying linker, which pulls in
crtbegin.o and friends when appropriate, so using Swift as a linker for
C/C++ libraries is fine.
The output-file-map was getting passed to all Swift invocations,
regardless of whether or not we generated one. This patch changes it so
that we only include the output-file-map in the Swift compiler
invocation if we have actually generated the file.
|
| |
|
|
|
|
|
|
| |
The target properties `CUDA_SEPARABLE_COMPILATION` and `CUDA_PTX_COMPILATION`
now aren't mutually exclusive and can now be used together on the same
target.
|
|
|
|
| |
Fixes: #18316
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Optionally enable this infrastructure through an undocumented
`CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP` variable. Currently this is
experimental and intended for use by compiler writers to implement their
scanning tools. Warn as such when the feature is activated. Later when
compilers provide the needed scanning tools we can enable this variable
from our corresponding compiler information modules. It is never meant
to be set by project code.
When enabled, generate a build graph similar to what we use for Fortran
module dependencies. There are some differences needed because we can
scan dependencies without explicit preprocessing, and can directly
compile the original source afterward.
Co-Author: Ben Boeckel <ben.boeckel@kitware.com>
|
|
|
|
|
|
|
|
| |
These changes are in preparation of compiler generated dependencies support
for Makefiles generators
* compiler output and dependency target can be different for Makefiles generators
* resolve inconsistency naming for dependency file place-holder
|
|
|
|
|
|
|
|
|
|
|
|
| |
For NVCC the compiler takes care of device linking when passed the "-dlink"
flag.
Clang doesn't support such magic and requires the buildsystem to do the work
that NVCC does behind the scenes.
The implementation is based on Bazel's device linking documentation:
https://github.com/tensorflow/tensorflow/blob/7cabcdf073abad8c46e9dda62bb8fa4682d2061e/third_party/nccl/build_defs.bzl.tpl#L259
Closes: #20726
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Repeated invocations of `cmake ... -DCMAKE_C_COMPILER=gcc` should not
trigger a "You have changed variables" message even though the cache
value of CMAKE_C_COMPILER changes from '/path/to/gcc' to 'gcc'.
Make repeated invocations of `cmake ... -DCMAKE_C_COMPILER=gcc;-pipe`
not trigger the warning by comparing the compiler name portion of the list to
the compiler being used.
|
|\
| |
| |
| |
| |
| |
| |
| |
| | |
e565053bce Ninja: Remove unnecessary newlines in compile commands
5d4bab500e Avoid consecutive whitespace in rules
d8622fbd0f Modules: Collapse consecutive whitespace in strings
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4512
|
| | |
|
|/
|
|
|
| |
Remove calls where it is known the input is already a collapsed
full path.
|
|
|
|
|
|
|
|
|
|
| |
Since commit 0f150b69d3 (AIX: Explicitly compute shared object exports
for both XL and GNU, 2019-07-11, v3.16.0-rc1~418^2~2) we always export
all symbols from shared libraries by default. Add a new target property
called `AIX_EXPORT_ALL_SYMBOLS` that can be explicitly set to OFF to
suppress this behavior and export no symbols by default.
Fixes: #20290
|
| |
|
|
|
|
|
|
| |
Set the MinTypeNameLength option to an impossibly high value in order
to limit the diagnostics to iterators. Leave new expressions and cast
expressions for later.
|
|
|
|
| |
Add the placeholders needed to support compiling Swift code.
|
|
|
|
|
|
| |
This cleans up the new options that were added to support Swift. This
was not released, and the proper support approach that we settled upon
does not require as much specialised support.
|
|
|
|
|
|
| |
This adds the placeholders that are needed to merge the swift partial
modules. It permits generating the rules necessary to actually merge
the partial modules emitted for a partial compilation.
|
|
|
|
|
|
|
|
|
|
|
| |
When building a swift object, we emit a partial swiftmodule and swiftdoc
that must be merged at the end. However, in order to do that, we need
to enumerate the swiftmodules and swiftdocs. As a result, the path must
be known to CMake. Rather than hardcoding the rules into CMake, create
a source property that we can query. This will allow us to create a
final placeholder to emit the merge rule.
Issue: #18800
|
|
|
|
|
|
|
| |
This allows us to set the proper link name for the Swift library
(soname). Because this needs to be passed to the object being compiled,
we need to create a new placeholder so that it can be sent along to the
frontend. Default to the target name unless it is explicitly provided.
|
| |
|
|
|
|
|
|
|
|
| |
Add a new `SWIFT_MODULE_NAME` property that defaults to the target name.
This is needed as otherwise, the first source file determines the module
name.
Issue: #18800
|
|
|
|
|
|
|
|
|
| |
The swift compilation model requires all sources for the module to be
listed for the compiler to type check across them. Provide a
placeholder to allow enumerating the remainder of the swift sources in a
target for the language compile rule.
Issue: #18800
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Add `CMAKE_SYSROOT_COMPILE` and `CMAKE_SYSROOT_LINK` variables to as
operation-specific alternatives to `CMAKE_SYSROOT`. This will be useful
for Android NDKs that compile and link with different sysroot values
(e.g. `r14` with unified headers).
Co-Author: Florent Castelli <florent.castelli@gmail.com>
|
| |
|
|
|
|
|
|
|
| |
Refactoring in commit b29425f7 (cmLocalGenerator: Populate a container
of mappings for replacements, 2016-10-09) broke substitution of this
placeholder by storing the wrong key in the new replacement map.
Use the proper key, `CMAKE_<LANG>_COMPILER_ARG1`.
|
|
Implement cmLocalGenerator::ExpandRuleVariables in terms of the new
class for source compatibility and to reduce diff noise in this commit.
|