summaryrefslogtreecommitdiffstats
path: root/Source
Commit message (Collapse)AuthorAgeFilesLines
* 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-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
| |_|_|/ |/| | |
* | | | Merge topic 'fix_ios_try_compile'Brad King2019-05-061-1/+8
|\ \ \ \ | |_|/ / |/| | | | | | | | | | | | | | | | | | | 275b6b3194 iOS: Fix try_compile FILE_COPY not to fail Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3272
| * | | iOS: Fix try_compile FILE_COPY not to failAlexandru Croitor2019-05-061-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When building for iOS, the compiled target is placed into a bundle. If a single-configuration generator is used, like Makefiles or Ninja, the try_compile FILE_COPY behavior fails to find the bundle, because it only looks for the bundle inside a Debug subfolder (presumably to support a multi-configuration generator like Xcode). Consider looking for the bundle in the root try_compile folder, as well as in the location specified by CMAKE_TRY_COMPILE_CONFIGURATION. Closes: #19211
| * | | CMake 3.14.3v3.14.3Brad King2019-04-221-1/+1
| | | |
* | | | CMake Nightly Date StampKitware Robot2019-05-061-1/+1
| | | |
* | | | CMake Nightly Date StampKitware Robot2019-05-051-1/+1
| | | |
* | | | CMake Nightly Date StampKitware Robot2019-05-041-1/+1
| | | |
* | | | Merge topic 'std-pipes-always'Brad King2019-05-037-2/+73
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | c85524a94a Ensure stdin, stdout, and stderr pipes are always open Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: Kyle Edwards <kyle.edwards@kitware.com> Merge-request: !3282
| * | | | Ensure stdin, stdout, and stderr pipes are always openBrad King2019-05-027-2/+73
| | |_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On non-Windows platforms libuv assumes that file descriptors 0-2 are always used for standard pipes and never for anything else. Otherwise, libuv may re-use one of these descriptors and then fail an assertion when closing it. Similarly, On Windows platforms our ConsoleBuf implementation assumes that the standard handles are always open. If CMake is run with any standard pipes closed, open them with `/dev/null` or `NUL` to satisfy these assumptions. Fixes: #19219
* | | | Merge topic 'cpack-ifw-stylesheet'Brad King2019-05-032-0/+20
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | c474fb2777 CPack/IFW: Add StyleSheet field Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3270
| * | | | CPack/IFW: Add StyleSheet fieldZaytsev Yuriy2019-05-022-0/+20
| | | | |
* | | | | Merge topic 'jobs-positive-value'Brad King2019-05-031-3/+21
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6ad699358b cmake: --build -j <jobs> should not accept 0. Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3255
| * | | | | cmake: --build -j <jobs> should not accept 0.Fred Baksik2019-05-011-3/+21
| | | | | | | | | | | | | | | | | | | | | | | | Fixes #19059
* | | | | | Merge topic 'genex-TARGET_FILE_BASE_NAME-manage-postfix'Brad King2019-05-033-15/+27
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6e5ccabe9b Genex: Update $<TARGET_FILE_BASE_NAME:...>: take care of POSTFIX 1f4c9aa7d2 Refactor: introduce method cmGeneratorTarget::GetFilePostfix Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3267
| * | | | | | Genex: Update $<TARGET_FILE_BASE_NAME:...>: take care of POSTFIXMarc Chevrier2019-05-021-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This capability complement MR !3190 and !3207 and is also needed to solve issue #18771.
| * | | | | | Refactor: introduce method cmGeneratorTarget::GetFilePostfixMarc Chevrier2019-05-022-12/+21
| | | | | | |
* | | | | | | CMake Nightly Date StampKitware Robot2019-05-031-1/+1
| |_|_|/ / / |/| | | | |
* | | | | | Merge topic 'genex-code-cleanup'Brad King2019-05-021-416/+175
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3d856eba16 cmGeneratorExpressionNode: refactor TargetPropertyNode 9e1df5df54 cmGeneratorExpressionNode: use ctor arguments instead of macro 36f36d6a49 cmGeneratorExpressionNode: add VersionNode 3f57787dff cmGeneratorExpressionNode: remove structs CompilerId*, CompilerVersion* 20d7c5631e cmGeneratorExpressionNode: add CharacterNode abd62201bd cmGeneratorExpressionNode: simplify code in EqualNode f2c8ff8259 cmGeneratorExpressionNode: Simplify static string constant Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3234
| * | | | | | cmGeneratorExpressionNode: refactor TargetPropertyNodeLeonid Pospelov2019-04-221-48/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Re-order logic to improve readability and de-duplicate conditions. Factor out error message generation into a helper.
| * | | | | | cmGeneratorExpressionNode: use ctor arguments instead of macroLeonid Pospelov2019-04-221-30/+36
| | | | | | |
| * | | | | | cmGeneratorExpressionNode: add VersionNodeLeonid Pospelov2019-04-221-84/+10
| | | | | | |
| * | | | | | cmGeneratorExpressionNode: remove structs CompilerId*, CompilerVersion*Leonid Pospelov2019-04-221-166/+43
| | | | | | |
| * | | | | | cmGeneratorExpressionNode: add CharacterNodeLeonid Pospelov2019-04-221-36/+8
| | | | | | |
| * | | | | | cmGeneratorExpressionNode: simplify code in EqualNodeLeonid Pospelov2019-04-221-54/+29
| | | | | | |
| * | | | | | cmGeneratorExpressionNode: Simplify static string constantBrad King2019-04-221-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use our `""_s` user-defined literal to avoid initializing a static std::string.
* | | | | | | Merge topic 'code-cleanup-3'Brad King2019-05-021-29/+11
|\ \ \ \ \ \ \ | |_|/ / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 75643755a1 cmGlobalVisualStudioGenerator: remove redundant variables 615fb2633c cmGlobalVisualStudioGenerator: use cmJoin to join the filenames 30c98db61b cmGlobalVisualStudioGenerator: use auto instead of iterator types Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3257
| * | | | | | cmGlobalVisualStudioGenerator: remove redundant variablesLeonid Pospelov2019-04-241-12/+5
| | | | | | |
| * | | | | | cmGlobalVisualStudioGenerator: use cmJoin to join the filenamesLeonid Pospelov2019-04-221-11/+1
| | | | | | |
| * | | | | | cmGlobalVisualStudioGenerator: use auto instead of iterator typesLeonid Pospelov2019-04-221-6/+5
| | |/ / / / | |/| | | |
* | | | | | CMake Nightly Date StampKitware Robot2019-05-021-1/+1
| | | | | |
* | | | | | Merge topic 'out-of-dir-linking-private-deps'Brad King2019-05-011-2/+2
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3d3713121b target_link_libraries: Fix static library private deps in other dirs Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3276
| * | | | | | target_link_libraries: Fix static library private deps in other dirsBrad King2019-04-301-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In commit a1ad0a699b (target_link_libraries: Allow use with targets in other directories, 2018-09-07, v3.13.0-rc1~94^2) we accidentally broke the logic that adds `$<LINK_ONLY:...>` to private dependencies of static libraries in their `INTERFACE_LINK_LIBRARIES` in the case that the dependency is added from outside the directory creating the library. The check for a valid target name should apply to the original name specified by the caller and not the encoded cross-directory reference. Fixes: #19197
| * | | | | | CMake 3.13.4v3.13.4Brad King2019-02-011-1/+1
| | | | | | |
| * | | | | | Merge branch 'backport-autogen-qt-version-from-dirprops' into release-3.13Brad King2019-01-301-0/+12
| |\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | Merge-request: !2883
| | * | | | | | AutoGen: query Qt5 version from directory propertiesBen Boeckel2019-01-301-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows functions which enable AutoGen to make the version variables available at generate time. See: #18732
| * | | | | | | Merge branch 'backport-restore-install-late-framework' into release-3.13Brad King2019-01-291-2/+23
| |\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | Merge-request: !2878
| | * | | | | | | macOS: Restore compatibility for setting FRAMEWORK after install()Brad King2019-01-291-2/+23
| | |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `FRAMEWORK` target property affects the way the `install()` command treats the target and so should be set first. Our implementation assumed that this was always the case and led to an assertion failure. Prior to CMake 3.12 this was visible only when using an explicit `LIBRARY ... NAMELINK_ONLY` option, but commit 0212d7c762 (install: add NAMELINK_COMPONENT argument, 2018-04-18, v3.12.0-rc1~139^2~3) made it possible with a simple `LIBRARY DESTINATION`. Fully supporting out-of-order specification will require non-trivial refactoring to defer install generator creation to generate time. For now simply restore the old behavior of installing the framework to the library destination. Fixes: #18848
| * | | | | | | Merge branch 'add-missing-macos-framework' into release-3.13Brad King2019-01-291-1/+2
| |\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | Merge-request: !2873