summaryrefslogtreecommitdiffstats
path: root/Source
Commit message (Collapse)AuthorAgeFilesLines
* Merge topic 'ninja-pool-custom-command'Brad King2019-05-1511-28/+78
|\ | | | | | | | | | | | | 9f76961de8 Support job pools in custom commands and targets Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3308
| * Support job pools in custom commands and targetsRosen Matev2019-05-1411-28/+78
| | | | | | | | | | | | | | | | | | | | Provide a way for custom commands and targets to set the pool variable of the ninja build statement. Setting `JOB_POOL` is not compatible with `USES_TERMINAL`, which implies the `console` pool. The option is silently ignored with other generators. Closes: #18483
* | Merge topic 'cmuvprocesschain-iterator-fix'Brad King2019-05-151-1/+4
|\ \ | | | | | | | | | | | | | | | | | | dfa24355ea cmUVProcessChain: Add assert() for static analysis tools Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3322
| * | cmUVProcessChain: Add assert() for static analysis toolsKyle Edwards2019-05-141-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some static analysis tools throw a false positive for an out-of-bounds item that is being dereferenced. This out-of-bounds error will never actually happen because of how cmUVProcessChain::InternalData::AddCommand() is being called. Nevertheless, this change adds an assert() to help static analysis tools be absolutely certain that the referenced item is within the vector's bounds. This change also changes the item access to use an index rather than an iterator.
* | | CMake Nightly Date StampKitware Robot2019-05-151-1/+1
|/ /
* | Merge topic 'find-boost-cmp0093'Brad King2019-05-141-1/+3
|\ \ | | | | | | | | | | | | | | | | | | 5108759ed2 FindBoost: Introduce CMP0093 to report Boost_VERSION in x.y.z format Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3317
| * | FindBoost: Introduce CMP0093 to report Boost_VERSION in x.y.z formatDennis Klein2019-05-131-1/+3
| | | | | | | | | | | | This aligns module mode behaviour with config mode.
* | | Merge topic 'cmSytemTools_ExpandedList'Brad King2019-05-144-29/+58
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | cdff7f4e2a cmSystemTools: Add ExpandedListArgument and ExpandedLists methods Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: Ben Boeckel <ben.boeckel@kitware.com> Merge-request: !3313
| * | | cmSystemTools: Add ExpandedListArgument and ExpandedLists methodsSebastian Holtermann2019-05-134-29/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Changes ------- In `cmSystemTools` this - renames the method `ExpandList` to `ExpandLists` and makes it iterator based and adds the methods - `std::vector<std::string> ExpandedLists(InputIt first, InputIt last)` - `std::vector<std::string> ExpandedListArgument(const std::string& arg, bool emptyArgs)` Both return the `std::vector<std::string>` instead of taking a return vector reference like `cmSystemTools::ExpandLists` and `cmSystemTools::ExpandListArgument`. Motivation ---------- Since C++17 return value optimization is mandatory, so returning a `std:vector<std::string>` from a function should be (at least) as fast as passing a return vector reference to the function. The new methods can replace `cmSystemTools::ExpandLists` and `cmSystemTools::ExpandListArgument` in many cases, which leads to shorter and simpler syntax. E.g. the commonly used pattern ``` if (const char* value = X->GetProperty("A_KEY_STRING")) { std::vector<std::string> valuesList; cmSystemTools::ExpandListArgument(value, valuesList); for (std::string const& i : valuesList) { doSomething(i); } } ``` becomes ``` if (const char* value = X->GetProperty("A_KEY_STRING")) { for (std::string const& i : cmSystemTools::ExpandedListArgument(value)) { doSomething(i); } } ```
* | | | Merge topic 'error-generate-step'Brad King2019-05-141-0/+5
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8cc04b1918 cmake: Display error if generate step fails Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: Ben Boeckel <ben.boeckel@kitware.com> Merge-request: !3304
| * | | | cmake: Display error if generate step failsKyle Edwards2019-05-131-0/+5
| |/ / /
* | | | Merge topic 'ninja_cleanups'Brad King2019-05-145-241/+223
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 054954d855 Ninja: Use clean target instead of clean tool in `cmake --target clean` calls 30a550d6ad Ninja: In cmNinjaTargetGenerator use std::unique_ptr to manage new instances 0024356f8e Ninja: In cmNinjaTargetGenerator optimize string composition 8691b3cf91 Ninja: Inline range loop range arguments 47da9859e8 Ninja: In cmGlobalNinjaGenerator use std::unique_ptr to manage output streams 9902702134 Ninja: Add and use cmGlobalNinjaGenerator::CMakeCmd method 12aa6fe07b Ninja: Fix message in cmGlobalNinjaGenerator::WriteBuild method 02293841e7 Ninja: Simplify cmGlobalNinjaGenerator::AddRule and HasRule methods ... Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3312
| * | | | Ninja: Use clean target instead of clean tool in `cmake --target clean` callsSebastian Holtermann2019-05-132-7/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A convenience `clean` target for the Ninja generator exists since commit 3bd41f2eb5. It's safe to call `ninja clean` instead of `ninja -t clean`. This removes the exception mapping of the `clean` target in `cmake --build ... --target clean` calls to the Ninja `-t clean` tool.
| * | | | Ninja: In cmNinjaTargetGenerator use std::unique_ptr to manage new instancesSebastian Holtermann2019-05-133-7/+9
| | | | |
| * | | | Ninja: In cmNinjaTargetGenerator optimize string compositionSebastian Holtermann2019-05-131-62/+78
| | | | |
| * | | | Ninja: Inline range loop range argumentsSebastian Holtermann2019-05-123-28/+14
| | | | |
| * | | | Ninja: In cmGlobalNinjaGenerator use std::unique_ptr to manage output streamsSebastian Holtermann2019-05-112-28/+31
| | | | |
| * | | | Ninja: Add and use cmGlobalNinjaGenerator::CMakeCmd methodSebastian Holtermann2019-05-102-46/+48
| | | | |
| * | | | Ninja: Fix message in cmGlobalNinjaGenerator::WriteBuild methodSebastian Holtermann2019-05-101-5/+3
| | | | |
| * | | | Ninja: Simplify cmGlobalNinjaGenerator::AddRule and HasRule methodsSebastian Holtermann2019-05-102-13/+8
| | | | | | | | | | | | | | | | | | | | | | | | | - Use `std::unordered_set` for the emitted rule register - Use `std::unordered_map` for command length register
| * | | | Ninja: Simplify cmGlobalNinjaGenerator::WriteRule methodSebastian Holtermann2019-05-101-45/+31
| |/ / /
* | | | Merge topic 'cminstallgenerator-compute-error'Brad King2019-05-1416-17/+28
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b133d14fb1 Refactor: Allow cmInstallGenerator::Compute() to return an error Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3305
| * | | | Refactor: Allow cmInstallGenerator::Compute() to return an errorKyle Edwards2019-05-1316-17/+28
| |/ / / | | | | | | | | | | | | | | | | | | | | This is preparation for an upcoming merge request, which will add a new cmInstallGenerator that returns false if there are errors in the Compute() step.
* | | | CMake Nightly Date StampKitware Robot2019-05-141-1/+1
| |/ / |/| |
* | | Merge topic 'autorcc_timestamp'Brad King2019-05-133-59/+69
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 15004e4319 AutoRcc: Simplify error logging with utility lambda bd6c3f8609 AutoRcc: Rebuild if the rcc executable is newer than its output 54903af84b AutoRcc: Don't read the info file time again 081104fb00 AutoRcc: Write re-generation reason and rcc command as one string eff6e622d6 Autogen: A missing info file is a critical error Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3311
| * | | AutoRcc: Simplify error logging with utility lambdaSebastian Holtermann2019-05-111-20/+18
| | | |
| * | | AutoRcc: Rebuild if the rcc executable is newer than its outputSebastian Holtermann2019-05-112-0/+20
| | | | | | | | | | | | | | | | | | | | In AUTORCC add a test if the rcc executable is newer that the rcc output. If the rcc executable is newer, rebuild the output.
| * | | AutoRcc: Don't read the info file time againSebastian Holtermann2019-05-111-12/+1
| | | | | | | | | | | | | | | | | | | | In `AUTORCC` use the info file time that's available already instead of reading it again.
| * | | AutoRcc: Write re-generation reason and rcc command as one stringSebastian Holtermann2019-05-112-29/+31
| | | | | | | | | | | | | | | | | | | | | | | | In AUTORCC with verbose output write the rcc re-generation reason and the rcc command as on single string to avoid message chopping in concurrent builds.
| * | | Autogen: A missing info file is a critical errorSebastian Holtermann2019-05-111-1/+2
| |/ /
* | | Merge topic 'cmuvprocesschain'Brad King2019-05-135-8/+502
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 26025d6e10 cmUVProcessChain: Add cmUVProcessChain 6b04d1cdc2 cmUVStreambuf: Initialize all members on construction Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3275
| * | | cmUVProcessChain: Add cmUVProcessChainKyle Edwards2019-05-075-5/+499
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This class is ultimately intended as a replacement for cmsys::Process. It spawns a series of processes using libuv, piping the output of each command into the next. Note: input support has not yet been implemented because write support has not yet been implemented on cmUVStreambuf.
| * | | cmUVStreambuf: Initialize all members on constructionBrad King2019-05-071-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | Avoid leaving any members uninitialized after construction even if they are later initialized before use by methods. This helps convince static analysis tools that the members are not used uninitialized.
* | | | Merge topic 'windows-signing'Brad King2019-05-131-0/+51
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 9a34031081 Utilities/Release: Enable signing of Windows release binaries 29f4f70b41 Add undocumented option to sign CMake's own binaries on Windows 1069a3f02b Configure CMake itself with policies through CMake 3.14 Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3296
| * | | | Add undocumented option to sign CMake's own binaries on WindowsBrad King2019-05-081-0/+51
| | | | |
* | | | | CMake Nightly Date StampKitware Robot2019-05-131-1/+1
| | | | |
* | | | | CMake Nightly Date StampKitware Robot2019-05-121-1/+1
| | | | |
* | | | | CMake Nightly Date StampKitware Robot2019-05-111-1/+1
| |_|/ / |/| | |
* | | | CMake Nightly Date StampKitware Robot2019-05-101-1/+1
| |_|/ |/| |
* | | CMake Nightly Date StampKitware Robot2019-05-091-1/+1
|/ /
* | Merge topic 'autogen_cache'Brad King2019-05-089-1598/+2067
|\ \ | | | | | | | | | | | | | | | | | | 7d50e1c611 Autogen: Refactor AUTOMOC and AUTOUIC and add source file parse data caching Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3290
| * | Autogen: Refactor AUTOMOC and AUTOUIC and add source file parse data cachingSebastian Holtermann2019-05-079-1598/+2067
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New features ------------ CMake's `AUTOMOC` and `AUTOUIC` now cache information extracted when parsing source files in `CMakeFiles/<ORIGIN>_autogen.dir/ParseCache.txt`. This leads to faster `<ORIGIN>_autogen` target rebuilds, because source files will be parsed again only if they're newer than the `ParseCache.txt` file. The parse cache will be recomputed if it is older than the CMake executable. `AUTOMOC` and `AUTOUIC` now check if `moc` or `uic` output files are older than the `moc` or `uic` executable. If an output file is older than the compiler, it will be regenerated. Therefore if a new `moc` or `uic` version is installed, all output files will be regenerated. `AUTOMOC` and `AUTOUIC` error and warning messages are more detailed. Internal changes ---------------- `moc` and `uic` output file names are not computed in the `_autogen` target anymore but in `cmQtAutoGenInitializer`. This makes the available at the configuration stage for improved dependency computations (to be done). In `AutogenInfo.cmake`, equally sized lists for "source file names", "source file flags" and "compiler output file names" are passed to the `_autogen` target. This replaces the separate file lists for `AUTOMOC` and `AUTOUIC`. Files times are read from the file system only once by using `cmFileTime` instances instead of `cmQtAutoGenerator::FileSystem::FileIsOlderThan` calls. All calls to not thread safe file system functions are moved to non concurrent fence jobs (see `cmWorkerPool::JobT::IsFence()`). This renders the `cmQtAutoGenerator::FileSystem` wrapper class obsolete and it is removed. Instead of composing a single large settings string that is fed to the `cmCryptoHash`, now all setting sub strings are fed one by one to the `cmCryptoHash` and the finalized result is stored. The `std::mutex` in `cmQtAutoGenerator::Logger` is tagged `mutable` and most `cmQtAutoGenerator::Logger` methods become `const`. Outlook ------- This patch provides the framework required to - extract dependencies from `.ui` files in `AUTOUIC`. These will help to address issue #15420 "AUTOUIC: Track uic external inputs". - generate adaptive `make` and `ninja` files in the `_autogen` target. These will help to address issue #16776 "AUTOUIC: Ninja needs two passes to correctly build Qt project". - generate (possibly empty) `moc` and `uic` files for all headers instead of a `mocs_compilation.cpp` file. This will help to address issue #17277 "AUTOMOC: Provide a option to allow AUTOMOC to compile individual " "moc_x.cxx instead of including all in mocs_compilation.cxx"
* | | Merge topic 'ctest-update-version-override'Craig Scott2019-05-085-0/+25
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2a34d0ac36 ctest: Add new variable CTEST_UPDATE_VERSION_OVERRIDE 7ddac95121 Help: cross-ref and wording of docs related to ctest_update() a0d04d8810 testing: Update terminology in ctest_update tests Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: Zack Galbreath <zack.galbreath@kitware.com> Merge-request: !3277
| * | | ctest: Add new variable CTEST_UPDATE_VERSION_OVERRIDEZack Galbreath2019-05-075-0/+25
| | | | | | | | | | | | | | | | | | | | Set this in a CTest script to explicitly define what the current revision will be reported as in Update.xml.
* | | | CMake Nightly Date StampKitware Robot2019-05-081-1/+1
| |_|/ |/| |
* | | Merge topic 'enforce-explicit-use-of-project'Brad King2019-05-071-0/+10
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | 1527defbfe cmMakefile: Enforce explicit use of project() command Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3245
| * | | cmMakefile: Enforce explicit use of project() commandBartosz Kosiorek2019-05-061-0/+10
| | | | | | | | | | | | | | | | Fixes: 17714
* | | | Merge topic 'touch-after-ranlib'Brad King2019-05-071-0/+14
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f83e4359f2 Apple: Preserve high resolution mtime for static libraries Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3283
| * | | | Apple: Preserve high resolution mtime for static librariesGregor Jasny2019-05-051-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On macOS ranlib truncates the fractional part of the static achive file modification time. If the archive and at least one contained object file were created within the same second this will make look the archive older than the object file. On subsequent ninja runs this leads to re-achiving and updating dependent targets. As a work-around we touch the archive after ranlib. Closes: #19222
* | | | | CMake Nightly Date StampKitware Robot2019-05-071-1/+1
| |_|_|/ |/| | |