| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Ensure that all documented read-only target properties now produce
errors when trying to set.
|
|
|
|
|
|
|
| |
All the major compilers now have scheduled releases with support for
scanning, so remove the experimental gate.
Fixes: #18355
|
|
|
|
| |
Supporting modules on IMPORTED targets is worth an update.
|
|
|
|
| |
`try_compile` and `try_run` now support C++ modules.
|
|
|
|
|
| |
The transitive support for Clang is a change in support for the
ecosystem.
|
|
|
|
|
|
|
|
|
| |
When install(TARGETS) and install(EXPORT) were called with file sets
and an absolute CMAKE_INSTALL_INCLUDEDIR, "${_IMPORT_PREFIX}/" was
still being prepended to the base directory and files, resulting in
incorrect paths. Don't prepend this when absolute paths are used.
Fixes: #25010
|
|
|
|
|
| |
Syntactic support for C++ header units has been removed, so a new UUID
is warranted.
|
|
|
|
|
| |
There's no backing implementation for header units anyways, so just
remove it for now.
|
| |
|
|
|
|
|
|
|
|
|
| |
If a source file is not found, the error message reports a backtrace.
Previously the backtrace pointed at where the target was created.
In the case of `target_sources`, the missing source may have been
named elsewhere.
Fixes: #24538
|
| |
|
|
|
|
|
|
|
|
|
| |
`FILE_SET` is only supported within `target_sources()` and only directly
after a visibility keyword or another `FILE_SET`. Give a hint as to what
might be wrong if a file named `FILE_SET` cannot be found for any
reason.
Fixes: #24539
|
|
|
|
|
|
|
|
| |
For policy-specific tests, use the version before the policy was
introduced. Otherwise, use 3.5 where possible.
Also, remove `cmake_minimum_required()` and `project()` calls from
individual cases where they are handled by `CMakeLists.txt`.
|
|
|
|
|
|
|
|
|
|
| |
These patches now support the `-MF` output, so remove the `none` support
added just for the old patchset which did not use it.
Also update the flag name to `-fmodule-output=`.
Due to the new Clang module mapper flag, use a new experimental support
UUID as well.
|
|
|
|
| |
Visual Studio support warrants a new ID.
|
|
|
|
| |
The set of features available has been expanded, so update the UUID.
|
|\
| |
| |
| |
| |
| |
| | |
3fee5398bd install(EXPORT): Check for missing file sets at generate time
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !7420
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Missing file sets were originally checked at configure time in
install(TARGETS ... EXPORT), but were not checked at generate time. If
a file set was added after install(TARGETS ... EXPORT) was called,
an abortion error was thrown. Check again at generate time to gracefully
display an error message instead of crashing.
Fixes: #23680
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
C++ modules have two variants which are of importance to CMake:
- `CXX_MODULES`: interface modules (those using `export module M;`,
`export module M:part;`, or `module M:internal_part;`)
- `CXX_MODULE_HEADER_UNITS`: importable header units
Creating C++ modules or partitions are *not* supported in any other
source listing. This is because the source files must be installed (so
their scope matters), but not part of usage requirements (what it means
for a module source to be injected into a consumer is not clear at this
moment). Due to the way `FILE_SET` works with scopes, they are a perfect
fit as long as `INTERFACE` is not allowed (which it is not).
|
| |
| |
| |
| |
| | |
This allows for new fileset types to be added more easily by factoring
out the declarative information into a structure.
|
|/ |
|
|
|
|
|
|
|
| |
Previously a fileset with `$<$<CONFIG:Debug>:some_file>` would show up
as-is (with escaping) in the build directory export. Instead, evaluate
all fileset entries as generator expressions and list them as they are
similar to the installation information.
|
|
|
|
|
| |
Not all filesets need to be installed; just those that are visible on
the target's interface. Clarify the error message.
|
|
|
|
|
|
|
|
| |
If an INTERFACE library has HEADER_SETS, and its header sets contain
files generated by a custom command, the library needs to participate in
the buildsystem so that the files will be generated.
Fixes: #23422
|
|
|
|
|
|
| |
There is no reason to allow these properties to be manipulated by user
code. Instead, use the stored visibility on the fileset objects to
derive what these properties should contain.
|
|
|
|
|
|
|
|
| |
The feature needs a specialized implementation to place headers
in the right place inside frameworks. To avoid silently doing
the wrong thing, make this case an error for the 3.23 series.
Issue: #23386
|
|\
| |
| |
| |
| |
| |
| |
| | |
b357d334fc target_sources(): Enforce stricter requirements for FILE_SET name
Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !7037
|
| |
| |
| |
| | |
Fixes: #23286
|
|/
|
|
| |
Fixes: #23287
|
|
|
|
| |
Fixes: #23262
|
|
|
|
| |
Fixes: #22960
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The following was disallowed:
add_library(iface INTERFACE)
target_link_libraries(iface PUBLIC)
just due to the mention of the `PUBLIC` keyword. Instead, only error if
there are actually `PUBLIC` dependencies specified (and analogously for
other restrictions).
Update tests to expect this new behavior.
|
|
Not all of these commands accept non-compilable (i.e., IMPORTED)
targets, so those calls are currently just commented out. If they ever
do start to accept them, the tests should be enabled.
|