Commit Graph

24180 Commits

Author SHA1 Message Date
Brad King
a92ee4e30d Merge branch 'backport-ninja-issue-17942' into release-3.11
Merge-request: !2010
2018-04-26 08:41:18 -04:00
Brad King
0826c20128 Ninja: Do not add empty custom command for file(GENERATE) outputs
Internally we mark `file(GENERATE)` outputs as `GENERATED` in order
to tell custom command dependency tracing logic not to expect the
files to exist on disk yet.  This is because we do not generate the
files until after that tracing is done.

The Ninja generator also interprets the `GENERATED` property to mean
that it is expected that some build rule will generate the file if
another build rule depends on it.  If the generator does not know of a
custom command that generates the file then it adds an empty one so that
the `ninja` build tool does not complain about a dependency on a file
that does not exist and has no rule to generate it.  However, this step
is not necessary for `file(GENERATE)` outputs because there is no build
rule to generate them and they will exist before `ninja` runs.

Add an additional `__CMAKE_GENERATED_BY_CMAKE` property internally to
tell the Ninja generator that a `GENERATED` file will exist before the
build starts and is not expected to have a build rule producing it.

Fixes: #17942
2018-04-26 08:39:44 -04:00
Marc Chevrier
60cb75e4a1 Fix CMAKE_DISABLE_SOURCE_CHANGES recognition of top of build tree
The change in commit v3.11.0-rc1~480^2 (UseJava: add_jar OUTPUT_DIR
option used only for jar generation, 2017-10-12) added code of the form
`file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR})`.  This exposed an existing
bug in `CMAKE_DISABLE_SOURCE_CHANGES` in which it does not recognize
that the top of the build tree itself is in the build tree.  Fix that
now.

Fixes: #17933
2018-04-24 10:42:00 -04:00
Brad King
fbe6cd1596 CMake 3.11.1 2018-04-17 08:33:46 -04:00
Brad King
d00306636b Merge branch 'backport-fix-explicit-CMakeLists.txt' into release-3.11
Merge-request: !1959
2018-04-13 09:49:51 -04:00
Brad King
8480c2afc0 Restore support for explicitly referenced CMakeLists.txt sources
Since commit v3.11.0-rc1~467^2 (VS,Xcode: Add CMakeLists.txt sources
without mutating targets, 2017-10-18) we do not add `CMakeLists.txt` to
target sources but instead generate references to them directly.  This
broke projects that explicitly specify their `CMakeLists.txt` file as a
source file because the explicit entry is no longer consolidated with
the generated one.

Teach the relevant generators to avoid duplicating `CMakeLists.txt`
source references and add test cases.

Fixes: #17828
2018-04-13 09:41:06 -04:00
Brad King
3c0fed488f Merge branch 'cpack-trace-nullptr' into release-3.11
Merge-request: !1950
2018-04-10 15:01:43 -04:00
Brad King
6f2701abf6 CPack: Fix crash on invalid generator name
In commit v3.11.0-rc1~68^2 (CPack: accept --trace and --trace-expand,
2017-12-09) a nullptr dereference was added that occurs when
`cpack -G NotAGenerator` is invoked.  Add the needed condition.

Fixes: #17900
2018-04-10 15:00:37 -04:00
Brad King
ef077c8ba4 Merge branch 'fix-crash-trace-exp-uninit-vars' into release-3.11
Merge-request: !1944
2018-04-09 12:01:10 -04:00
R2RT
aad360eb3d Fix crash with --trace-expand --warn-uninitialized together
Some code paths in `ExpandVariablesInString{New,Old}` were not checking
the `filename` parameter for a null pointer, but this can happen when
using the above flags together.  Add the checks and a test case.

Fixes: #17896
2018-04-09 11:59:07 -04:00
Sebastian Holtermann
b11e2c80b1 Autogen: Print moc/uic/rcc output to stdout
The output of moc/uic/rcc used to be discarded unless
the program failed. This lets moc/uic/rcc print their
output to stdout even on success.

Closes #17860
2018-04-03 17:20:30 +02:00
Sebastian Holtermann
1d2c9d8c6d Autogen: Use std::istreambuf_iterator for file so string reading
This adds a dedicated mutex for file reading and writing to
cmQtAutoGenerator::FileSystem. The purpose of the change is
to avoid that long files reads block cmsys based path computations,
which are protected by an other mutex.
2018-04-03 17:20:30 +02:00
Sebastian Holtermann
ccc38fa509 Autogen: Protected calls to cmFilePathChecksum
Closes #17861
Closes #17862
2018-04-03 17:20:30 +02:00
Sebastian Holtermann
719b24c872 Autogen: Protected calls to cmQtAutoGen::SubDirPrefix 2018-04-03 17:20:30 +02:00
Sebastian Holtermann
9a73615815 Autogen: Protected calls to cmSystemTools::GetFilenameWithoutLastExtension 2018-04-03 17:20:30 +02:00
Sebastian Holtermann
65203ce407 Autogen: Protected calls to cmSystemTools::Split/JoinPath 2018-04-03 17:20:30 +02:00
Sebastian Holtermann
14a86c9ea7 Autogen: Protected calls to cmSystemTools::CollapseCombinedPath 2018-04-03 17:20:29 +02:00
Brad King
61fd4c7420 CMake 3.11.0 2018-03-28 07:26:56 -04:00
Brad King
36881ee416 Merge branch 'ctest_update-memory-problems' into release-3.11
Merge-request: !1893
2018-03-27 08:51:01 -04:00
Brad King
27f033550a ctest_update: Fix crash when handling svn externals
Refactoring in commit v3.9.0-rc1~156^2 (c++: prefer vectors over lists,
2017-05-04) switched `cmCTestSVN::Repositories` from `std::list` to
`std::vector`.  This can cause re-allocation when svn externals are
processed and break the `RootInfo` pointer that is supposed to point at
the first repository element.  Switch back to `std::list` so that the
address remains stable.

Fixes: #17854
2018-03-27 08:46:20 -04:00
Brad King
75e8af3354 cmSystemTools: Fix ParseArguments out-of-bounds read
When checking for a Windows-style leading path, do not read past the
null terminator.

Issue: #17854
2018-03-27 08:46:20 -04:00
Brad King
70c50aa23c Revert "Remove CTestTestfile.cmake when BUILD_TESTING is OFF"
Revert commit v3.8.0-rc1~305^2 (Remove CTestTestfile.cmake when BUILD_TESTING
is OFF, 2016-11-14) again.  We reverted it once in commit v3.8.0-rc3~22^2
(Revert "Remove CTestTestfile.cmake when BUILD_TESTING is OFF", 2017-03-06) but
it was accidentally restored by commit v3.11.0-rc1~387^2 (server: add
"ctestInfo" request to get test info, 2017-10-25), perhaps due to conflict
resolution during rebase.

We cannot remove `CTestTestfile.cmake` when testing is off because it breaks
projects that never enable testing but create their own `CTestTestfile.cmake`
manually instead.  Revert the change again and add a test case.
2018-03-26 07:44:22 -04:00
Brad King
6b9172d759 CMake 3.11.0-rc4 2018-03-19 09:25:26 -04:00
Brad King
a039029e7c Merge branch 'genex-COMPILE_LANGUAGE-system-include' into release-3.11
Merge-request: !1844
2018-03-13 13:40:25 -04:00
Brad King
a54b56a10b Merge branch 'ccmake-stack-smashing' into release-3.11
Merge-request: !1836
2018-03-13 13:40:17 -04:00
Tianhao Chai
7899e53691 ccmake: fix status line buffer overflow on very wide terminals
A mistyped length calculation will memset across stack frame when
the user's terminal width is larger than 270.
2018-03-13 13:38:12 -04:00
Brad King
1b5e52fd65 Genex: Fix COMPILE_LANGUAGE propagation through try_compile
When evaluating include directories during export to a `try_compile`
test project, thread the compile language through to the generator
expression evaluator so it can support `$<COMPILE_LANGUAGE:...>`.

Issue: #17811
2018-03-12 13:30:14 -04:00
Brad King
2deb9b7f34 Genex: Fix COMPILE_LANGUAGE in SYSTEM include directories
When evaluating `INTERFACE_SYSTEM_INCLUDE_DIRECTORIES`, or evaluating
`INTERFACE_INCLUDE_DIRECTORIES` on an imported target, thread the
compile language through to the generator expression evaluator so
that it can support `$<COMPILE_LANGUAGE:...>`.

Fixes: #17811
2018-03-12 11:45:01 -04:00
Brad King
c5541cf0da CMake 3.11.0-rc3 2018-03-09 08:33:11 -05:00
Brad King
9288abf567 Merge branch 'update-kwsys' into release-3.11
Merge-request: !1830
2018-03-07 07:39:16 -05:00
Brad King
2c5b4359f8 Merge branch 'upstream-KWSys' into update-kwsys
* upstream-KWSys:
  KWSys 2018-03-07 (2ad561e7)
2018-03-07 06:48:34 -05:00
Sebastian Holtermann
50b7be6d1f Autogen: Check if a file is empty before reading it
Calling `std::string::front()` on an empty string results
in an undefined behavior by the C++ standard.
In gcc8 it causes an assertion to fail.

This adds a check to `AUTOGEN` if a file to read is empty
and in case avoids the use of an empty `std::string` buffer.

Closes #17793
2018-03-06 08:35:08 -05:00
Brad King
ac925ec09e CMake 3.11.0-rc2 2018-02-27 09:34:35 -05:00
Brad King
72a85d9f0b Merge branch '14297-partial-xcode-zero-check' into release-3.11
Merge-request: !1790
2018-02-23 08:17:51 -05:00
Gregor Jasny
481420ee89 Xcode: Generate ZERO_CHECK generator target only once
In case CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY has been enabled
generate only the root-level ZERO_CHECK target so targets in
subdirectories pick up the root generator target of ZERO_CHECK.

For the case that CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY is not
enabled more investigation and a proper and final fix is still needed.

Issue: 14297
2018-02-22 21:15:48 +01:00
Brad King
36fc89b7d9 Merge branch 'std-thread-link' into release-3.11
Merge-request: !1789
2018-02-22 13:15:58 -05:00
Brad King
94eee5e683 CMakeLib: Link to system thread libraries to support std::thread
Some environments require linking to thread libraries for `std::thread`.
Express this direct dependency of CMakeLib explicitly.  Previously this
was done indirectly through our bundled libuv, but that does not work
when using a system libuv.

Fixes: #17757
2018-02-22 12:59:20 -05:00
Brad King
02edf08be2 Merge branch 'export-android-mk' into release-3.11
Merge-request: !1766
2018-02-15 08:42:07 -05:00
Brad King
b6d68766b1 Android.mk: Fix export of static libraries with PRIVATE dependencies
The `LINK_ONLY` generator expression is used to represent private
dependencies of static libraries in their `INTERFACE_LINK_LIBRARIES`
property value.  Fix evaluation of generator expressions during export
to support the `LINK_ONLY` genex.  Extend the RunCMake.AndroidMK test
with a case for this.
2018-02-14 11:24:05 -05:00
Brad King
56e1688517 Android.mk: Evaluate generator expressions up front
When exporting `INTERFACE_LINK_LIBRARIES`, we must evaluate generator
expressions first, before expanding the `;` list, in case they contain
or generate semicolons.
2018-02-14 11:19:47 -05:00
Brad King
43cd9467cd Merge branch 'autogen-write-on-change-only' into release-3.11
Merge-request: !1753
2018-02-13 11:05:11 -05:00
Brad King
2a730e24c6 Merge branch '17711-reset-xcode-target-var' into release-3.11
Merge-request: !1757
2018-02-13 11:03:15 -05:00
Gregor Jasny
4349393d1d cmGlobalXCodeGenerator: Properly initialize TARGETS variable
Fixes: #17711
2018-02-13 11:02:24 -05:00
Sebastian Holtermann
c85ef9c339 Autogen: Overwrite info files when changed only
Check if the content of the AUTOMOC/UIC/RCC info file
will change before overwriting it. This avoids unnecessary
AUTORCC rebuilds when AUTORCC unrelated CMake settings change.
2018-02-06 11:20:08 -05:00
Brad King
51b287c40c CMake 3.11.0-rc1 version update 2018-02-05 11:16:50 -05:00
Brad King
213ecf05d6 Merge topic 'autogen-improve-multi-config'
a8ee7406 Autogen: Improved multi-config include scheme

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1735
2018-02-05 08:43:05 -05:00
Brad King
4d9ccd0abd Merge topic 'vs-static-ConvertToWindowsSlash'
6d148d6d cmVisualStudio10TargetGenerator: Limit scope of ConvertToWindowsSlash()

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1741
2018-02-05 08:41:52 -05:00
Kitware Robot
30ee1dc7b0 CMake Nightly Date Stamp 2018-02-05 00:01:09 -05:00
Kitware Robot
b4a06e2cf7 CMake Nightly Date Stamp 2018-02-04 00:01:09 -05:00
Kitware Robot
09d7ed20df CMake Nightly Date Stamp 2018-02-03 00:01:12 -05:00