summaryrefslogtreecommitdiffstats
path: root/Source
Commit message (Collapse)AuthorAgeFilesLines
* Merge topic 'autogen-per-config-sources'Brad King2017-09-276-243/+369
|\ | | | | | | | | | | | | | | | | 4603d6b0 Autogen: Docs: Add documentation internal links f86ba8ee Autogen: Reintroduce per-config sources support 5d3bca64 Autogen: Rename cmQtAutoGen::GeneratorType to cmQtAutogen::Generator Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1307
| * Autogen: Reintroduce per-config sources supportSebastian Holtermann2017-09-256-217/+343
| | | | | | | | Reintroduce per-config sources support in AUTOGEN but disable it by default.
| * Autogen: Rename cmQtAutoGen::GeneratorType to cmQtAutogen::GeneratorSebastian Holtermann2017-09-255-29/+29
| |
* | Merge topic 'ninja-rc-depfile-quoting'Brad King2017-09-271-1/+1
|\ \ | | | | | | | | | | | | | | | | | | df965cb9 Ninja: Fix quoting of RC language depfile in cmcldeps call Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1309
| * | Ninja: Fix quoting of RC language depfile in cmcldeps callBrad King2017-09-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since commit v3.0.0-rc1~448^2 (Ninja: use deps = gcc/msvc feature, 2013-10-18) the value of the `DEP_FILE` binding already includes the needed quoting to refer to the file. However, that commit forgot to update one of the `$DEP_FILE` references to not be quoted anymore. The offending code path currently only affects cmcldeps for RC. Remove the extra quoting now. Fixes: #17298
* | | Merge topic 'revert-perf-source-lookup'Brad King2017-09-272-58/+3
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | a7005c98 Tests: Add case for legacy source file property behavior 1604716d Revert "Performance: Improve efficiency of source file lookup in cmMakefile" Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1308
| * | | Revert "Performance: Improve efficiency of source file lookup in cmMakefile"Brad King2017-09-252-58/+3
| | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 3b95ab569345028a1a8fe521d5ecd81fa97f2653. It regressed some legacy source file property behavior. Revert pending further investigation.
* | | | CMake Nightly Date StampKitware Robot2017-09-271-1/+1
| | | |
* | | | CMake Nightly Date StampKitware Robot2017-09-261-1/+1
| |/ / |/| |
* | | Merge topic 'load_command-cleanup'Brad King2017-09-251-25/+10
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 0332ec72 cmCPluginAPI: remove explicit casts to void* cf399036 cmCPluginAPI: do not check pointer before calling free() 6e2b1853 cmCPluginAPI: use strdup() instead of open coding it Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1305
| * | | cmCPluginAPI: remove explicit casts to void*Rolf Eike Beer2017-09-231-5/+4
| | | |
| * | | cmCPluginAPI: do not check pointer before calling free()Rolf Eike Beer2017-09-231-3/+1
| | | |
| * | | cmCPluginAPI: use strdup() instead of open coding itRolf Eike Beer2017-09-231-17/+5
| | | |
* | | | Merge topic 'rc-missing-better-error'Brad King2017-09-252-32/+66
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 0a8e23ad Windows: Improve link-time error messages when rc or mt fail c2d6835c cmSystemTools: Teach RunSingleCommand another way to report exceptions Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1260
| * | | | Windows: Improve link-time error messages when rc or mt failJonathan Marler2017-09-221-32/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We run extra tools during linking on Windows to deal with manifests. Report more information when these tools fail. For example, if the Windows SDK is not installed with VS then `rc.exe` will be missing.
| * | | | cmSystemTools: Teach RunSingleCommand another way to report exceptionsJonathan Marler2017-09-201-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | If the caller captures stdout but not stderr then report exceptions through stdout instead of dropping them.
* | | | | Merge topic 'cpackifw-options'Brad King2017-09-252-0/+43
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 9a24ab6b CPackIFW: Add some options Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1298
| * | | | | CPackIFW: Add some optionsKonstantin Podsvirov2017-09-212-0/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `CPackIFW` module `cpack_ifw_configure_component` and `cpack_ifw_configure_component_group` commands gained a new `REPLACES` and `CHECKABLE` options.
* | | | | | Merge topic 'cxx17-no-bind1st'Brad King2017-09-252-4/+2
|\ \ \ \ \ \ | |_|_|_|_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 44d3a76d Avoid using std::bind1st that is removed in C++17 Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1304
| * | | | | Avoid using std::bind1st that is removed in C++17Brad King2017-09-232-4/+2
| | |_|_|/ | |/| | | | | | | | | | | | | Use a lambda instead now that we require C++11.
* | | | | CMake Nightly Date StampKitware Robot2017-09-251-1/+1
| | | | |
* | | | | CMake Nightly Date StampKitware Robot2017-09-241-1/+1
| |_|_|/ |/| | |
* | | | CMake Nightly Date StampKitware Robot2017-09-231-1/+1
| | | |
* | | | Merge topic 'graphviz-link-type'Craig Scott2017-09-221-5/+98
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | 5b46cc91 graphviz: distinguish target dependency types Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1229
| * | | graphviz: distinguish target dependency typesNico Müller2017-09-211-5/+98
| | | | | | | | | | | | | | | | | | | | | | | | - The output graph of graphviz differs now between target link types - Updated documentation - Fixes: #17192
* | | | Merge topic 'perf-source-lookup'Brad King2017-09-225-23/+66
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3b95ab56 Performance: Improve efficiency of source file lookup in cmMakefile e0188803 cmMakefile: Drop unused method fe1e811b cmSourceFileLocation: Drop unnecessary copy-assignment operator Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1154
| * | | | Performance: Improve efficiency of source file lookup in cmMakefileAaron Orenstein2017-09-203-3/+59
| | | | | | | | | | | | | | | | | | | | Add an unordered map to cmMakefile to speed up GetSource() lookups.
| * | | | cmMakefile: Drop unused methodAaron Orenstein2017-09-201-1/+0
| | | | |
| * | | | cmSourceFileLocation: Drop unnecessary copy-assignment operatorAaron Orenstein2017-09-203-19/+7
| | |_|/ | |/| | | | | | | | | | Update the one place that used it to avoid needing assignment.
* | | | Merge topic 'autogen-generators-refactor'Brad King2017-09-223-1125/+1367
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 51fd7b71 Autogen: Tests: Add a change-not test to the mocRerun test c8f92db7 Autogen: Tests: Disable an AUTOMOC_DEPENDS_FILTER test for Ninja 3c77515e Autogen: Tests: Refactor the QtAutogenRebuild rccDepends test 04a0daee Autogen: Tests: Move each rerun test script to a NAME.cmake file e5c6610a Autogen: Tests: Extend CMAKE_AUTOMOC_DEPEND_FILTERS rebuild test 93265652 Autogen: Tests: Add <SUBDIR>/ui_view.h AUTOUIC includes to sameName test 4eb7d817 Autogen: Tests: Add <SUBDIR>/item.moc includes to sameName test 3f223743 Autogen: Read relative paths from rcc output ... Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1244
| * | | | Autogen: Read relative paths from rcc outputSebastian Holtermann2017-09-211-9/+18
| | | | |
| * | | | Autogen: In VERBOSE mode print why files are (re)generatedSebastian Holtermann2017-09-202-44/+221
| | | | |
| * | | | Autogen: Refactor cmQtAutoGeneratorsSebastian Holtermann2017-09-202-1100/+1156
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The refactoring of cmQtAutoGenerators serializes the program flow and makes it less jumpy in terms of function calling. Instead of keeping and passing multiple std::vectors and std::maps in function arguments, single lists with job descriptions are used, one job list for MOC, UIC, RCC respectively. Several utility functions and methods were replaced with scoped lambdas and the remaining methods were sorted by their scope (MOC, UIC, RCC). Error and warning messages were refactored to be more verbose about the problem at hand. The source parsing algorithms were rewritten in large parts. In the process a lack of functionality of CMAKE_AUTOMOC_DEPEND_FILTERS was discovered and fixed. CMAKE_AUTOMOC_DEPEND_FILTERS did not extract dependency file names from headers that were not in the target sources but were registered to AUTOMOC by a `#include "moc_<NAME>.cpp"` statement. A test for this use case is provided in a follow up commit.
* | | | Merge topic 'variable_watch-modify-on-callback'Brad King2017-09-222-20/+18
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4c0edbd7 variable_watch: Made it safe to add/remove watches in access callbacks 28d2c6ef test: Added additional unit test to variable_watch Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1284
| * | | | variable_watch: Made it safe to add/remove watches in access callbacksJustin Berger2017-09-212-20/+18
| | |_|/ | |/| |
* | | | Merge topic 'string-empty'Brad King2017-09-2224-42/+43
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 37d9387b Replace empty-string comparisons with checking against `empty()`. Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1275
| * | | | Replace empty-string comparisons with checking against `empty()`.Pavel Solodovnikov2017-09-2124-42/+43
| | | | |
* | | | | CMake Nightly Date StampKitware Robot2017-09-221-1/+1
| |/ / / |/| | |
* | | | Merge topic 'update-kwsys'Brad King2017-09-211-0/+6
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ff0ddff7 Merge branch 'upstream-KWSys' into update-kwsys d49b95b8 KWSys 2017-09-21 (ff912e4d) Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1297
| * | | | Merge branch 'upstream-KWSys' into update-kwsysBrad King2017-09-211-0/+6
| |/ / / | | | | | | | | | | | | | | | | * upstream-KWSys: KWSys 2017-09-21 (ff912e4d)
* | | | Merge topic 'cpack-different-checksum-file-per-generator'Brad King2017-09-211-2/+1
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b06870e5 CPack: use a distinct checksum file for each generator Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1291
| * | | | CPack: use a distinct checksum file for each generatorDomen Vrankar2017-09-201-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Different CPack generators could produce checksum files with the same name which were overwritten by each other since only package name without extensions was used for checksum file name generation. This patch adds package extension to checksum files to prevent collisions. Fixes: #16840
* | | | | Merge topic 'cpack-check-install-script'Brad King2017-09-211-1/+2
|\ \ \ \ \ | |_|/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | 09166339 CPack: Add missing check for CPACK_INSTALL_SCRIPT variable Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1090
| * | | | CPack: Add missing check for CPACK_INSTALL_SCRIPT variableAlex Turbov2017-09-201-1/+2
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | Also add a test case that uses CPACK_INSTALL_SCRIPT. Co-Author: Domen Vrankar <domen.vrankar@gmail.com> Fixes: #15005
* | | | CMake Nightly Date StampKitware Robot2017-09-211-1/+1
| |/ / |/| |
* | | Merge topic 'CTest-cov-string'Brad King2017-09-202-11/+10
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | 062776e7 CTest: pass std::string to cmCTestCoverageHandler::ShouldIDoCoverage() Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1290
| * | | CTest: pass std::string to cmCTestCoverageHandler::ShouldIDoCoverage()Rolf Eike Beer2017-09-192-11/+10
| |/ / | | | | | | | | | Avoid needless conversion back and forth.
* | | Merge topic 'ninja-performance'Brad King2017-09-203-32/+59
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7374cb85 Ninja: Cache ConvertToNinjaPath results to avoid repeat work ed19e813 Ninja: Improve performance with deeply-dependent custom targets Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1217
| * | | Ninja: Cache ConvertToNinjaPath results to avoid repeat workMatthias Maennich2017-09-192-5/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Calls to this method may dominate generation time in some cases. Measurements for configuring cmake itself show a cache hit rate of ~57% (7753 total calls, 4453 cache hits). For a larger project (that also makes use of custom targets as prerequisite for all compile targets), the measured cache hit ratio is ~96% (2530827 total calls, 2433124 cache hits). For this project the observable cmake runtime could be reduced from 40s to 30s. Signed-off-by: Matthias Maennich <matthias@maennich.net>
| * | | Ninja: Improve performance with deeply-dependent custom targetsMatthias Maennich2017-09-193-27/+44
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The commit v3.7.0-rc1~339^2 (Ninja: Fix inter-target order-only dependencies of custom command, 2016-07-20) might cause performance degradations for larger projects. Especially when using custom commands as an input for each compilation rule (e.g. generated headers). For reference in the following I am referring to Source/cmGlobalNinjaGenerator.cxx: -> cmGlobalNinjaGenerator::AppendTargetDependsClosure -> cmGlobalNinjaGenerator::ComputeTargetDependsClosure It turned out that the mentioned commit is doing (indirectly) some redundant work that might impact performance when generating large projects. Imagine the dependency tree of custom targets: A \ C - D - E / B For each target the transitive closure is calculated recursively, but as the TargetDependsClosures are only cached on the top most level, everything downstream has to be recalculated. I.e. A->C->D->E B->C->D->E This ultimately leads to a lot of redundant calls to AppendTargetOutputs. The recursive nature of the algorithm itself is not significant to the problem, but reducing the work to actually to be done work, eliminates the performance problem. This patch changes the way, intermediate results are cached. Rather than caching the closure of targets, we cache the closure of outputs. Such that in the example above at B->C the cache already would kick in. Caching the outputs has one disadvantage that the patch takes care of. In case of such a structure A E \ / \ C - D G / \ / B F the calling order for A would be A->C->D->E->G (at which time G is seen to the recursion) then the recursion returns until it reaches A->C->D->F (at which the seen G would prevent to recurse down to G) But this would poison the cache for F with a wrong value (without G). Hence we use a local result set to ensure the cache is still consistently populated. For a large C++ project with around 25k targets this reduced the CMake configure / generate time from ~40s to ~29s. Signed-off-by: Matthias Maennich <matthias@maennich.net>