Commit Graph

39125 Commits

Author SHA1 Message Date
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
KWSys Upstream 64d4308d83 KWSys 2018-03-07 (2ad561e7)
Code extracted from:

    https://gitlab.kitware.com/utils/kwsys.git

at commit 2ad561e78b0d99f083f1213e403d5a8a90e0e134 (master).

Upstream Shortlog
-----------------

Brad King (4):
      6e190d9a Fix include directory usage requirement for build tree
      6d4e9fde SystemInformation: Android has no getifaddrs prior to API 24
      0a0974d0 SystemTools: Restore unconditional caching in GetActualCaseForPath
      a241fd13 SystemTools: Remove caching from public GetActualCaseForPath
2018-03-07 06:48:32 -05:00
Kitware Robot 086f84aa20 CMake Nightly Date Stamp 2018-03-07 00:01:11 -05:00
Rolf Eike Beer 83c0cb3f03 FindCURL: provide imported target CURL::CURL 2018-03-06 22:53:35 +01:00
Brad King 2124a1364a cmTarget: Remove unnecessary RecordDependencies member
Inline the condition in the one remaining place it is checked.
2018-03-06 14:38:23 -05:00
Brad King 1c5bfab532 cmTarget: Simplify ClearDependencyInformation implementation
Remove the `<target>_LIB_DEPENDS` cache entry unconditionally.
It will be populated again later if needed.  There is no need
to ask the user to remove the cache entry if the target type
changes.

Issue: #16364
2018-03-06 14:38:16 -05:00
Brad King 910a9d608e cmTarget: Simplify ClearDependencyInformation signature
We don't need to pass an argument with the target's own name.
2018-03-06 13:54:45 -05:00
Rolf Eike Beer ff5823f512 cmOutputConverter: mark helper functions static
This allows the linker to entirely drop any symbols of the functions.
2018-03-06 18:13:33 +01:00
Brad King 8070abf784 Merge branch 'autogen-empty-source-file-fix' into release-3.11
Merge-request: !1825
2018-03-06 08:45:29 -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 566f8fa2f3 Merge branch 'xl-new-compiler-macros' into release-3.11
Merge-request: !1820
2018-03-06 08:23:08 -05:00
Brad King eb1a9be4b6 XL: Recognize compilers identified by __ibmxl__
IBM XL C/C++ for Linux versions 13.1.6 and above no longer define
`__IBMC__` or `__IBMCPP__` by default (see `-qxlcompatmacros`).
Instead `__ibmxl__` now identifies the compiler along with some
related new version macros.

Fixes: #17784
2018-03-06 07:43:04 -05:00
Kitware Robot 674c5b3066 CMake Nightly Date Stamp 2018-03-06 00:01:23 -05:00
Brad King 6be53c6695 CTest: Add options to control test process affinity to CPUs
In commit v2.8.0~170 (ENH: Added ctest test options PROCESSORS and
RUN_SERIAL, 2009-09-07) CTest learned to track the number of processors
allocated to running tests in order to balance it against the desired
level of parallelism.  Extend this idea by introducing a new
`PROCESSOR_AFFINITY` test property to ask that CTest run a test
with the CPU affinity mask set.  This will allow a set of tests
that are running concurrently to use disjoint CPU resources.
2018-03-05 09:21:32 -05:00
Brad King c5428d8db2 libuv: disable process affinity during CMake bootstrap
Avoid depending on platform-specific pthread features during bootstrap.
2018-03-05 09:21:31 -05:00
Brad King 24de561a1a libuv: unix,win: add uv_spawn option to set child CPU affinity mask
Implement it on Linux, FreeBSD, and Windows for now, and fail with
UV_ENOTSUP on other platforms.

Backported from upstream libuv PR 1527, scheduled for inclusion
in libuv 2.0.
2018-03-05 09:21:31 -05:00
Brad King 43d6e5a71f libuv: misc: add function to get CPU affinity mask size
Implement it on Linux, FreeBSD, and Windows for now, and return
UV_ENOTSUP on other platforms.

Backported from upstream libuv PR 1527, scheduled for inclusion
in libuv 2.0.
2018-03-05 09:21:31 -05:00
Brad King 49e777aeb1 Merge topic 'general_cleanup_enhance'
0a21d820d3 Remove c_str() from calls to converttorelativeformake in XCode Generator
f93cc4158e Refactor cmCacheManager::LoadCache to use ostringstream
915b71010c Enhance RunCMake test coverage for file(GLOB)
fcaa134c6c Refactor HandleGlobCommand
cf5d0b49e8 Adjust class description in cmFileTimeComparison.h

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1810
2018-03-05 09:02:14 -05:00
Brad King dc38970f83 Merge topic 'object-library-linking'
7776ce98c3 Tests: Add cases for usage requirements of linked object libs
bafe655b11 Help: Document linking behavior of OBJECT libraries
57538224d0 objlib: Link object-files from `OBJECT` libraries.
9a7f039ee7 objlib: Allow `OBJECT` libraries to link to `OBJECT` libraries.
dfb6e84082 objlib: Allow other libraries to link to `OBJECT` libraries.
51249e69ea objlib: Allow `OBJECT` libraries to link to other libraries.
e22c45d4c9 Tests: Teach RunCMake to ignore AIX ld warnings about GNU atexit

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Pavel Solodovnikov <hellyeahdominate@gmail.com>
Acked-by: John Drouhard <john@jmdtech.org>
Merge-request: !1524
2018-03-05 09:01:42 -05:00
Brad King b39a9dd897 Merge topic 'def-generate-windows-only'
1ac042aa67 Do not generate rules for .def generation where not supported

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1809
2018-03-05 09:00:30 -05:00
Kitware Robot 2fbd77124e CMake Nightly Date Stamp 2018-03-05 00:01:06 -05:00
Craig Scott e654622aee Tests: Add --build-and-test test case
Checks that giving an invalid build directory to
ctest --build-and-test will fail.
2018-03-04 22:27:59 +11:00
Craig Scott a865f0beb2 Tests: Confirm test working dir set successfully
Specifically, this tests that setting WORKING_DIRECTORY
to an invalid directory results in the test failing.
2018-03-04 22:27:59 +11:00
Kitware Robot 0e362b23e1 CMake Nightly Date Stamp 2018-03-04 00:01:07 -05:00
Kitware Robot dbfdb90430 CMake Nightly Date Stamp 2018-03-03 00:01:12 -05:00
Kitware Robot dc13ed1f84 CMake Nightly Date Stamp 2018-03-02 00:01:06 -05:00
Brad King 7776ce98c3 Tests: Add cases for usage requirements of linked object libs
Add tests to cover transitive usage requirements on installation and
export of targets that link to object libraries.

Issue: #14778
2018-03-01 09:28:00 -05:00
Brad King bafe655b11 Help: Document linking behavior of OBJECT libraries
Inspired-by: Deniz Bahadir <dbahadir@benocs.com>
Issue: #14778
2018-03-01 09:27:50 -05:00
Deniz Bahadir 57538224d0 objlib: Link object-files from OBJECT libraries.
Note: This finally links the object-files of the `OBJECT` library from
the right-hand side of `target_link_libraries` to the target on the
left-hand side. However, this will only happen with directly linked
`OBJECT` libraries, not with `OBJECT` libraries "linked" through
property `INTERFACE_LINK_LIBRARIES` of a target on the right-hand side!

Fixes: #14778
2018-03-01 09:24:25 -05:00
Deniz Bahadir 9a7f039ee7 objlib: Allow OBJECT libraries to link to OBJECT libraries.
Note: This still does not link the object-files of the `OBJECT` library
from the right-hand side of `target_link_libraries` to the target on the
left-hand side. (In this particular case of another `OBJECT` library on
the left-hand side this would not make any sense anyway. The target on
the left-hand side has no link-step.)

Issue: #14778
2018-03-01 09:24:25 -05:00
Deniz Bahadir dfb6e84082 objlib: Allow other libraries to link to OBJECT libraries.
Note: This only allows `OBJECT` libraries to be on the right-hand side
of `target_link_libraries` but still does not link its object-files to
the target on the left-hand side.

Issue: #14778
2018-03-01 09:24:24 -05:00
Deniz Bahadir 51249e69ea objlib: Allow OBJECT libraries to link to other libraries.
The proper way to use libraries is now through `target_link_libraries`
for things such as usage requirements, compile definitions, include
directories, etc. To facilitate this, allow `OBJECT` libraries to "link"
to other libraries.

Co-Author: Ben Boeckel <ben.boeckel@kitware.com>
Issue: #14778
2018-03-01 09:24:24 -05:00
Brad King e22c45d4c9 Tests: Teach RunCMake to ignore AIX ld warnings about GNU atexit 2018-03-01 07:56:38 -05:00
Brad King 61f92e69c0 Merge topic 'object-library-export-as-interface'
ea0ce73a19 install,export: Maybe transform OBJECT libraries to INTERFACE libraries

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1811
2018-03-01 07:54:20 -05:00
Kitware Robot e02f4f0660 CMake Nightly Date Stamp 2018-03-01 00:01:06 -05:00
Craig Scott 730eeceb75 Merge topic 'doc_test_prop_WORKING_DIRECTORY'
92a4c236f6 Help: Fix wrong default for WORKING_DIRECTORY test property

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Brad King <brad.king@kitware.com>
Merge-request: !1806
2018-02-28 16:46:15 -05:00
Brad King ea0ce73a19 install,export: Maybe transform OBJECT libraries to INTERFACE libraries
Teach the `install` and `export` commands to support installing and
exporting `OBJECT` libraries without their object files.  Transform
them to `INTERFACE` libraries in such cases.

For `install(TARGETS)`, activate this when no destination for the object
files is specified.  For `export`, activate this only under Xcode with
multiple architectures when we have no well-defined object file
locations to give to clients.
2018-02-28 10:58:10 -05:00
Shane Parris 0a21d820d3 Remove c_str() from calls to converttorelativeformake in XCode Generator 2018-02-28 09:51:42 -05:00
Shane Parris f93cc4158e Refactor cmCacheManager::LoadCache to use ostringstream 2018-02-28 09:34:47 -05:00
Shane Parris 915b71010c Enhance RunCMake test coverage for file(GLOB) 2018-02-28 09:34:47 -05:00
Shane Parris fcaa134c6c Refactor HandleGlobCommand 2018-02-28 09:34:47 -05:00
Shane Parris cf5d0b49e8 Adjust class description in cmFileTimeComparison.h 2018-02-28 09:34:47 -05:00
Brad King 1ac042aa67 Do not generate rules for .def generation where not supported
Our `cmake -E __create_def` helper used for `WINDOWS_EXPORT_ALL_SYMBOLS`
and merging of multiple `.def` files is available only with CMake hosted
on Windows.  However, we may generate use of it on other platforms since
commit v3.9.0-rc1~405^2 (Support WINDOWS_EXPORT_ALL_SYMBOLS with `.def`
files, 2017-03-13) when multiple `.def` files are listed.  This results
in a build error because the tool doesn't exist.

Fix our logic to avoid using the tool on non-Windows platforms.  Instead
silently ignore all but the first `.def` source as we did before.

Issue: #17773
2018-02-28 08:52:19 -05:00
Brad King 82de05088f Merge topic 'co-compile-with-launcher'
eaf9f69d41 Fix combined use of compiler launcher with lint tools

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1791
2018-02-28 08:17:33 -05:00
Brad King 74dac86c76 Merge topic 'findjava-jar-in-dev-component'
596a7f262a FindJava: Add Java_JAR_EXECUTABLE to a component: Development

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1807
2018-02-28 08:16:52 -05:00
Brad King 514e845f4e Merge topic 'ideoptions-string'
8182ebca32 cmIDEOptions: use std::string

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1804
2018-02-28 08:16:14 -05:00
Kitware Robot cc87b1f0d7 CMake Nightly Date Stamp 2018-02-28 00:01:10 -05:00
Ilya A. Kriveshko eaf9f69d41 Fix combined use of compiler launcher with lint tools
When using ccache with clang-tidy, ccache needs to wrap compiler
invocation, rather than cmake invocation.  But it needs to do it without
affecting the command line that iwyu-like tools are receiving.

With this fix, if __run_co_compile is used, compile launcher is passed
using the new --launcher option, but if __run_co_compile is not needed,
compiler launcher is prepended to the command line as before.

To better illustrate the change: with this fix if running clang-tidy
with CXX_COMPILER_LAUNCHER set to "/usr/bin/time;-p;ccache" (time -p
added strictly for illustration purposes), the command line changes
from:

    /usr/bin/time -p ccache cmake -E __run_co_compile \
        --tidy=clang-tidy ... -- g++ ...

to:

    cmake -E __run_co_compile \
        --launcher="/usr/bin/time;-p;ccache" \
        --tidy=clang-tidy ... -- g++ ...

This allows the compiler to be run via the launcher, but leaves tidy
(& friends) invocations unaffected.

Fixes: #16493
2018-02-27 13:07:04 -05:00
Giel van Schijndel 596a7f262a FindJava: Add Java_JAR_EXECUTABLE to a component: Development
All discovered executables were placed in a component, except for 'jar'.
This forced the use of find_package(Java) without any component
specification.  This commit adds 'jar' to the 'Development' component,
because that's what it's used for.
2018-02-27 17:32:09 +01:00
Brad King 4da456c7fe Merge branch 'release-3.11' 2018-02-27 10:40:05 -05:00