Previously, given two libraries, X and Y where X depends on Y, all
object compilations of X would require the Y library to have been linked
before being compiled. This is not necessary and can instead be loosened
such that object compilations of X only depend on the order-only
dependencies of Y to be completed. This is to ensure that generated
sources, headers, custom commands, etc. are completed before X starts to
compile its objects.
This should help build performance in projects with many libraries which
cause a deep library dependency chain. Previously, a library at the
bottom would not start compilation until after all other libraries
completed, but now only its link step needs to wait and its compilation
jobs can be run in parallel with other tasks.
Fixes: #15555
Each target's dyndep file generation depends on loading information
generated by the same step in its dependencies. Add an explicit
ordering dependency to ensure the needed information is available.
Without the explicit ordering dependency we were abusing the more
general target ordering rules through the preprocessor rules generating
the `.ddi` files used as input to dyndep file generation.
93219c40 Merge branch 'upstream-KWSys' into kwsys-import-cleanup
22729eae KWSys 2017-04-20 (8785f84f)
d88a511d kwsys: match upstream changes
a139b81a update-kwsys: apply changes made in CMake to the import
e832c32c kwsys: remove extra attribute
Acked-by: Kitware Robot <kwrobot@kitware.com>
Reviewed-by: Brad King <brad.king@kitware.com>
Merge-request: !728
The braces around project reference GUIDs for vcxproj projects were
apparently optional in the past, but Visual Studio 2017 is more strict,
displaying a warning, and not displaying project reference properties
unless the braces are present.
Fixes: #16820
When the Ubuntu package `libwxgtk3-dev` is not installed, FindwxWidgets
succeeds even the required libraries are not actually found. The reason
for that is that `wx-config` does not perform any kind of check and uses
hard-coded values. This affects e.g. KiCAD build process and makes it
fail with a confusing error message [1]. The solution is to check for
presence of every library file obtained from `wx-config`.
[1] https://bugs.launchpad.net/kicad/+bug/1630020
Qt is relying on whoever calls moc to include a file with the predefined
values that will be used by the compiler, otherwise moc takes wrong
paths and weird things happen.
Instead, generate an include file and feed it to all mocs to make sure
it's generating correct code.
Co-Author: Sebastian Holtermann <sebholt@xwmw.org>
Fixes: #16640
Since commit v3.8.0-rc1~136^2 (FindBoost: Search official location of
prebuilt binaries on Windows, 2016-12-21) we pass input paths through
`_Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS` in more
places than before. This broke tolerance of backslashes in paths
provided by the user due to the macro argument re-parsing. Turn
`_Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS` into a
function instead of macro to avoid re-parsing of macro arguments.
Fixes: #16816