CMake merge requestshttps://gitlab.kitware.com/cmake/cmake/-/merge_requests2020-08-21T12:46:44-04:00https://gitlab.kitware.com/cmake/cmake/-/merge_requests/4363Ninja Multi-Config: Fix issue with framework dependencies and Autogen2020-08-21T12:46:44-04:00Kyle EdwardsNinja Multi-Config: Fix issue with framework dependencies and AutogenFixes: #20345
Backport: release:HEAD^2Fixes: #20345
Backport: release:HEAD^23.17.0Brad KingBrad Kinghttps://gitlab.kitware.com/cmake/cmake/-/merge_requests/5081Unity Builds: Do not set SKIP_AUTOGEN to source files2020-07-30T08:28:53-04:00Cristian AdamUnity Builds: Do not set SKIP_AUTOGEN to source filesFixes: #21028
Backport: releaseFixes: #21028
Backport: release3.18.1Brad KingBrad Kinghttps://gitlab.kitware.com/cmake/cmake/-/merge_requests/4775Autogen: Redo locking and state machine for fence handling and the worker pool.2020-05-22T08:13:57-04:00Joerg SonnenbergerAutogen: Redo locking and state machine for fence handling and the worker pool.(1) All CV use must hold the corresponding mutex, otherwise race
conditions happen. This is mandated by the C++ standard.
(2) Introduce a separate CV for the thread waiting for other jobs to
finish before running a fence. This avoid...(1) All CV use must hold the corresponding mutex, otherwise race
conditions happen. This is mandated by the C++ standard.
(2) Introduce a separate CV for the thread waiting for other jobs to
finish before running a fence. This avoids waking up all other workers
blindly. Correctly wake that thread up when the processing of outstanding
jobs is done.
(3) Split the waiting for a fence to become runnable from a fence is
pending. This avoids problems if more than one fence can end up on the
queue. The thread that took a fence off the queue is responsible for
clearing the fence processing flag.
Topic-rename: autogen-fix-workerpool-locking
3.18.0Sebastian HoltermannSebastian Holtermannhttps://gitlab.kitware.com/cmake/cmake/-/merge_requests/3224Autogen: Factor out concurrency framework in cmQtAutoGeneratorMocUic to cmWor...2020-05-21T16:20:37-04:00Sebastian HoltermannAutogen: Factor out concurrency framework in cmQtAutoGeneratorMocUic to cmWorkerPoolThis factors out the concurrency framework in `cmQtAutoGeneratorMocUic` to a
dedicated class `cmWorkerPool` which might be reused in other places.
`cmWorkerPool` supports fence jobs that require that
- all other jobs before in t...This factors out the concurrency framework in `cmQtAutoGeneratorMocUic` to a
dedicated class `cmWorkerPool` which might be reused in other places.
`cmWorkerPool` supports fence jobs that require that
- all other jobs before in the queue have been processed before the fence
job processing gets started,
- no jobs later in the queue will be processed before the fence job processing
has been completed.
Fence jobs are needed where the completion of all previous jobs in the queue
is a requirement for further processing. E.g. in `cmQtAutoGeneratorMocUic`
the generation of `mocs_compilation.cpp` requires that all previous
source file parse jobs have been completed.
A new `QtAutogen/ManySources` test stresses the concurrency framework.3.15.0Brad KingBrad Kinghttps://gitlab.kitware.com/cmake/cmake/-/merge_requests/3818Autogen: Add moc path prefix generation (AUTOMOC_PATH_PREFIX)2020-04-24T07:47:21-04:00Sebastian HoltermannAutogen: Add moc path prefix generation (AUTOMOC_PATH_PREFIX)This series of patches refactors `AUTOGEN` in the following areas.
- Use *collapsed full paths* internally, instead of *evaluated real paths*.
This improves compatibility with source or build directories that are
symbolic links.
- A...This series of patches refactors `AUTOGEN` in the following areas.
- Use *collapsed full paths* internally, instead of *evaluated real paths*.
This improves compatibility with source or build directories that are
symbolic links.
- Automatically generate the `-p` path prefix option for `moc` (when a
header is in the include directories). The behavior can be configured
by the new variable `CMAKE_AUTOMOC_PATH_PREFIX` and target property
`AUTOMOC_PATH_PREFIX`. It improves reproducability
(closes #18815) and ensures that `moc` output files will compile correctly
when the source and/or build directory is a symbolic link.
- Abbreviate paths in messages by prefixing them with either "SRC:" or "BIN:"
instead of the project source or binary directory. This reduces message
sizes and improves their readability.
- Extend concurrency in the `_autogen` target by evaluating files for
`AUTOMOC` and `AUTOUIC` in parallel.
This reduces the runtime of the `_autogen` target, when both `AUTOMOC`
and `AUTOUIC` are enabled and a project has many sources.
- Add `AUTOMOC` tests for source and build directories, that are symbolic
links.
- Code cleanups.3.16.0Brad KingBrad Kinghttps://gitlab.kitware.com/cmake/cmake/-/merge_requests/4313Fix the AUTOMOC deps file to contain a correct rule name2020-02-10T03:02:42-05:00alcroitoFix the AUTOMOC deps file to contain a correct rule nameThe rule name should include the current binary path relative to
the top level binary path.
Fixes: #20298The rule name should include the current binary path relative to
the top level binary path.
Fixes: #202983.17.0Brad KingBrad Kinghttps://gitlab.kitware.com/cmake/cmake/-/merge_requests/4237Autogen: Enable SKIP_UNITY_BUILD_INCLUSION on AUTORCC generated files2020-01-20T11:54:18-05:00Sebastian HoltermannAutogen: Enable SKIP_UNITY_BUILD_INCLUSION on AUTORCC generated files`rcc` generated files are not compatible with unity builds, because they
contain classes in anonymous namespaces and static data with identical names.
This patch sets the source file property `SKIP_UNITY_BUILD_INCLUSION` to `On`
on ...`rcc` generated files are not compatible with unity builds, because they
contain classes in anonymous namespaces and static data with identical names.
This patch sets the source file property `SKIP_UNITY_BUILD_INCLUSION` to `On`
on all `AUTORCC` generated files to exclude them from unity build files.
Fixes: #20191 "QT5: Exclude resource files from unity build"
Backport: release
3.16.3Brad KingBrad Kinghttps://gitlab.kitware.com/cmake/cmake/-/merge_requests/4170Autogen: Process .hh headers based on new policy CMP01002020-01-06T11:39:34-05:00Sebastian HoltermannAutogen: Process .hh headers based on new policy CMP0100Let `AUTOMOC` and `AUTOUIC` process headers with a `.hh` extension based on the new policy CMP0100 setting.
Let `AUTOMOC` and `AUTOUIC` process headers with a `.hh` extension based on the new policy CMP0100 setting.
3.17.0Kyle EdwardsKyle Edwardshttps://gitlab.kitware.com/cmake/cmake/-/merge_requests/4146Autogen: Revert processing of .hh files for compatibility2019-12-19T09:52:38-05:00Brad KingAutogen: Revert processing of .hh files for compatibilitySince !3511 we process `.hh` files with `AUTOMOC`. However, this change can break existing projects that do not expect the behavior. Revert it for now. It can be restored later via a policy.
Fixes: #20101
Backport: releaseSince !3511 we process `.hh` files with `AUTOMOC`. However, this change can break existing projects that do not expect the behavior. Revert it for now. It can be restored later via a policy.
Fixes: #20101
Backport: release3.16.2Brad KingBrad Kinghttps://gitlab.kitware.com/cmake/cmake/-/merge_requests/3511Refactor source file extension lists2019-12-18T05:36:15-05:00Sebastian HoltermannRefactor source file extension listsThis removes the `cmSystemTools::GetFileFormat` method and refactors its invocation points to use `cmake::Is*Extension` methods instead.
Also Cuda and Fortran extension lists and interfaces are added to the `cmake` class.This removes the `cmSystemTools::GetFileFormat` method and refactors its invocation points to use `cmake::Is*Extension` methods instead.
Also Cuda and Fortran extension lists and interfaces are added to the `cmake` class.3.16.0Brad KingBrad Kinghttps://gitlab.kitware.com/cmake/cmake/-/merge_requests/3962Autogen: Fix ambiguity in header file detection on Windows2019-11-01T06:19:45-04:00Sebastian HoltermannAutogen: Fix ambiguity in header file detection on WindowsOn Windows, `CollapseFullPath` called with a path that ends with a dot
might return a file with the same base name but any extension.
To make sure we get only the file with the requested header extension,
pass the complete file name to `...On Windows, `CollapseFullPath` called with a path that ends with a dot
might return a file with the same base name but any extension.
To make sure we get only the file with the requested header extension,
pass the complete file name to `CollapseFullPath`.
Fixes: #198923.16.0Brad KingBrad Kinghttps://gitlab.kitware.com/cmake/cmake/-/merge_requests/3867Autogen: Make cmQtAutoRcc and cmQtAutoMocUic free functions2019-09-30T11:00:50-04:00Sebastian HoltermannAutogen: Make cmQtAutoRcc and cmQtAutoMocUic free functionsThis moves the implementation details of
- the `AUTORCC` generator (`cmQtAutoRcc`) and
- the `AUTOMOC,AUTOUIC` generator (`cmQtAutoMocUic`)
from the `cmQtAuto*.h` headers into unnamed namespaces in the `cmQtAuto*.cpp` source files.
The...This moves the implementation details of
- the `AUTORCC` generator (`cmQtAutoRcc`) and
- the `AUTOMOC,AUTOUIC` generator (`cmQtAutoMocUic`)
from the `cmQtAuto*.h` headers into unnamed namespaces in the `cmQtAuto*.cpp` source files.
The only thing remaining in the `cmQtAuto*.h` headers are the free functions `cmQtAutoRcc` and `cmQtAutoMocUic`.
Also the Json info file reading interface is refactored.3.16.0Brad KingBrad Kinghttps://gitlab.kitware.com/cmake/cmake/-/merge_requests/3742Autogen: Modernize and clean up using cmStrCat and cm::string_view2019-08-29T10:17:07-04:00Sebastian HoltermannAutogen: Modernize and clean up using cmStrCat and cm::string_view3.16.0Brad KingBrad Kinghttps://gitlab.kitware.com/cmake/cmake/-/merge_requests/3745Autogen: Fix AUTOUIC segfault, when file includes colliding ui_*.h file2019-08-28T11:27:59-04:00Sebastian HoltermannAutogen: Fix AUTOUIC segfault, when file includes colliding ui_*.h fileThis fixes a case of use after move of a `std::shared_ptr` in `AUTOUIC`.
It triggered a segfault, when the error message for colliding `ui_*.h`
includes in different files was computed.This fixes a case of use after move of a `std::shared_ptr` in `AUTOUIC`.
It triggered a segfault, when the error message for colliding `ui_*.h`
includes in different files was computed.3.15.3Brad KingBrad Kinghttps://gitlab.kitware.com/cmake/cmake/-/merge_requests/3381Autogen: Deprecate CMAKE_AUTOMOC_RELAXED_MODE2019-07-25T07:20:37-04:00Sebastian HoltermannAutogen: Deprecate CMAKE_AUTOMOC_RELAXED_MODE`CMAKE_AUTOMOC_RELAXED_MODE` was added for backwards compatibility with KDE 4,
which had its last release in 2014. It does not offer additional features
but complicates the `AUTOMOC` code and dependency computation considerably.
Pr...`CMAKE_AUTOMOC_RELAXED_MODE` was added for backwards compatibility with KDE 4,
which had its last release in 2014. It does not offer additional features
but complicates the `AUTOMOC` code and dependency computation considerably.
Projects that use `CMAKE_AUTOMOC_RELAXED_MODE` functionality always got
extensive warnings during builds and tips on how to convert to regular mode,
which is trivial (see commit e474dcb231, CMake 2.8.7).
It's time to consider this feature deprecated and issue a warning at
configuration time as well.
This
- does **not** remove support for `CMAKE_AUTOMOC_RELAXED_MODE`, but
- adds a configuration time deprecation `AUTHOR_WARNING` for `CMAKE_AUTOMOC_RELAXED_MODE`.
The final support removal might happen in CMake 3.16 or later.3.15.0Brad KingBrad Kinghttps://gitlab.kitware.com/cmake/cmake/-/merge_requests/3327Autogen: Enable AUTOGEN output cleaning in Ninja generator2019-07-04T13:19:54-04:00Sebastian HoltermannAutogen: Enable AUTOGEN output cleaning in Ninja generatorThis adds additional `AUTOGEN` output files to
- [ADDITIONAL_CLEAN_FILES](https://cmake.org/cmake/help/git-master/prop_tgt/ADDITIONAL_CLEAN_FILES.html) instead of the deprecated
- [ADDITIONAL_MAKE_CLEAN_FILES](https://cmake.org/cmake/hel...This adds additional `AUTOGEN` output files to
- [ADDITIONAL_CLEAN_FILES](https://cmake.org/cmake/help/git-master/prop_tgt/ADDITIONAL_CLEAN_FILES.html) instead of the deprecated
- [ADDITIONAL_MAKE_CLEAN_FILES](https://cmake.org/cmake/help/git-master/prop_dir/ADDITIONAL_MAKE_CLEAN_FILES.html).
[ADDITIONAL_CLEAN_FILES](https://cmake.org/cmake/help/git-master/prop_tgt/ADDITIONAL_CLEAN_FILES.html) is supported by the Ninja generator, so this enables `AUTOGEN` output file cleaning on that generator as well.
The `AUTOGEN` documentation is update to include the change.3.15.0Brad KingBrad Kinghttps://gitlab.kitware.com/cmake/cmake/-/merge_requests/3500Small fixes for Qt 5.132019-07-02T08:50:22-04:00Sebastian HoltermannSmall fixes for Qt 5.13- Don't pass the invalid compression level 0 to rcc in the Autogen/SameName test
- Use `QPalette::WindowText` instead of the long deprecated `QPalette::Foreground` in `QtDialog`
Topic-rename: qt-5.13
- Don't pass the invalid compression level 0 to rcc in the Autogen/SameName test
- Use `QPalette::WindowText` instead of the long deprecated `QPalette::Foreground` in `QtDialog`
Topic-rename: qt-5.13
3.15.0Brad KingBrad Kinghttps://gitlab.kitware.com/cmake/cmake/-/merge_requests/3461Autogen: Update documentation2019-06-21T05:08:38-04:00Sebastian HoltermannAutogen: Update documentationUpdate the `AUTOMOC`, `AUTOUIC` and `AUTORCC` documentation.
Fixes: #19167
Update the `AUTOMOC`, `AUTOUIC` and `AUTORCC` documentation.
Fixes: #19167
3.15.0Brad KingBrad Kinghttps://gitlab.kitware.com/cmake/cmake/-/merge_requests/2883AutoGen: query Qt5 version from directory properties2019-06-14T09:43:03-04:00Ben BoeckelAutoGen: query Qt5 version from directory propertiesThis allows functions which enable AutoGen to make the version variables
available at generate time.
See: #18732
---
Will add tests if this looks OK.
Cc: @brad.king Will have a separate MR for `master` since its code has chang...This allows functions which enable AutoGen to make the version variables
available at generate time.
See: #18732
---
Will add tests if this looks OK.
Cc: @brad.king Will have a separate MR for `master` since its code has changed (and supports Qt6).3.13.4Sebastian HoltermannSebastian Holtermannhttps://gitlab.kitware.com/cmake/cmake/-/merge_requests/3431Autogen: Fix header detection for paths with symbolic links2019-06-08T04:28:59-04:00Sebastian HoltermannAutogen: Fix header detection for paths with symbolic linksWhen Autogen searches the header for a source files in a target,
the expanded real path is used and not the (possibly symbolic) original path
of the source file. If the source file path contains symbolic links, then the
correct `cmSourc...When Autogen searches the header for a source files in a target,
the expanded real path is used and not the (possibly symbolic) original path
of the source file. If the source file path contains symbolic links, then the
correct `cmSourceFile` instance of the header won't be found, but a new one
will be generated. This way all header source file properties get lost, which
is problematic especially for the `SKIP_AUTOMOC/UIC/GEN` properties.
This patch changes the header detection in Autogen to use the original source
file path instead of the expanded real source file path.
Fixes: #193463.15.0Brad KingBrad King