e6a544836b Rust: Update experimental UUID
881faf67e5 Rust: Switch to building .rs files to .rlib instead of native object files
942ddcdd36 Rust: Add support for position independent code
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11686
Each Rust source file given to a target is considered a separate crate
root. There's a concept of a "main crate root", which is the `.rs` file
that is given to the final linker phase in CMake. Other Rust source file
in a target are built as rlib separately.
The project can still build `.rs` files into object files by setting the
Rust_EMIT property on the desired source file.
The previous "no associated implementation" wording was left from our
ancient convention of listing sources without any extension. These days
the wording could be confused with "no files implementing what is
declared in it". Clarify that it means specifically no object file
should be generated from the file itself.
There's no control over the object base name implemented in the
FASTBuild generator. Rather than expecting some half-supported behavior,
just ignore it completely there.
Similarly, Xcode ends up making its own object paths internally
regardless of what CMake would like.
Projects which ship object files as artifacts may want to control the
object names as much as possible. Support setting explicit object names
as source file properties to support such use cases.
This commit allows to override a global or target-wide 'job pool'
property on a per-source basis.
It modifies the Ninja generator to first look into the source's
properties, and only use the target properties as a fallback.
The new `source` parameter to
`cmNinjaTargetGenerator::addPoolNinjaVariable` may be null, e.g. when
the function is called in context where there is no source (e.g. a
linking task).
Closes: #23994
- Added intro code block showing how to include this module.
- Used "commands" instead of "functions".
- Reworded command descriptions.
- Synced style or command arguments.
When the `MACOSX_PACKAGE_LOCATION` property is set on a directory, Xcode
copies the entire directory into the bundle. Implement this on Ninja
and Makefile generators too.
Fixes: #26808
Co-authored-by: Brad King <brad.king@kitware.com>
Covers almost all blocks containing actual code, except:
* Parsed-literal blocks can't be highlighted, including many command
summaries and substitution-heavy docs like find_... commands.
This is a Sphinx limitation.
* Code with errors, like CMP0049, DEPLOYMENT_ADDITIONAL_FILES,
DEPLOYMENT_REMOTE_DIRECTORY, @PACKAGE_INIT@ substitution in the
tutorial, bracket arguments/comments in cmake-language.7 and
cmake-developer.7.
* FindQt4 module, which needs reformatting.
This boolean setting allows parallel building to be disabled for
individual source files built via `add_custom_command`. Using this
option is equivalent to setting policy `CMP0147` to the `OLD` behavior.
Closes: #26413
This was originally attempted by policy CMP0118, but its
implementation did not cover all intended use cases. We fixed its
documentation in commit 1dabbbb5e0 (CMP0118: Revise documentation to
describe actual behavior, 2024-03-20).
Add new policy CMP0163 to cover the remaining use cases. In particular,
make the `GENERATED` property visible to `get_property` calls in other
directories. In order to capture the original intention of CMP0118,
define CMP0163's NEW behavior to also imply CMP0118's NEW behavior.
Fixes: #25437Fixes: #25058
The policy was originally intended to make the `GENERATED` source file
property globally visible, but the implementation didn't fully achieve
that goal. Revise the documentation to describe what it actually does.
Issue: #25437
The `file(GENERATE)` does not mark the output as `GENERATED` currently
or when the documentation that says so was added by commit 11615b297f
(GENERATED: Improve the documentation of the GENERATED file property,
2018-01-03, v3.11.0-rc1~145^2).
The `SKIP_LINTING` source property was added to disable code check for
desired source files. The `SKIP_LINTING`includes `cpplint`, `clang-tidy`, \
`cppcheck` and `include-what-you-use`. If `SKIP_LINTING` is set on a
source file, the tools mentioned above will not be run on that source file.
Also drop the release note for `CXX_SCAN_FOR_MODULES`, as the rest of
the C++ modules support has not yet been mentioned in release notes
(since it is still experimental).
eb77695e25 Help: clean up some minor typos
c36910476a Help: remove links from pages to themselves
391c53a851 Help/prop_tgt/LINK_OPTIONS: fix `:genex:` reference
de4909ea16 Help: fix some minor markup errors
c42c77b020 Help/CMAKE_GLOBAL_AUTORCC_TARGET_NAME: fix link reference
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !7940
The `CXX_SCAN_FOR_MODULES` property may be used to control scanning for
targets and for source files rather than assuming "C++20 always needs to
be scanned".