Commit Graph

42007 Commits

Author SHA1 Message Date
Brad King 20861d758b Merge branch 'backport-cmake-warn-no-src-build-dir' 2019-01-22 14:46:56 -05:00
Craig Scott 68b51fb19a cmake: Convert no source/build dir error to warning
Temporarily restore previous behavior that allowed specifying
no source or build directory to work, even though it was
neither documented nor supported. This commit is expected
to eventually be reverted to restore the fatal error for such
cases.

Relates: #18817
2019-01-22 14:46:03 -05:00
Craig Scott 6b85eea365 Help: Add 3.13.4 release note for no source/build dir error/warning 2019-01-22 14:07:20 -05:00
Brad King fa5bf870df Merge topic 'implicit-includes'
5990ecb741 Compute implicit include directories from compiler output
d751d2d2ed CMakeDetermineCompilerABI: set locale to C for try_compile()
c765ae495a CMakeDetermineCompilerABI: pass verbose flag during compilation
8c5221fb1f try_compile: Preserve special characters in COMPILE_DEFINITIONS
15ad830062 Refactor exclusion of -I/usr/include to avoid per-language values

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2716
2019-01-22 11:37:49 -05:00
Brad King a1f65014a3 Merge topic 'help-mark-default-generator'
dfd5ae7da7 Help: Mark default CMake generator with asterisk
6023fe7ff2 ccmake: Append rather than replace Generators section of docs
7408cd3929 cmake: Return generator docs directly

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2682
2019-01-22 11:37:01 -05:00
Brad King bcc9ea2b3d Merge topic 'crosscompiling_emulator-fix'
ab3b549ee0 CROSSCOMPILING_EMULATOR: Fix test generation for empty value

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2834
2019-01-22 09:41:23 -05:00
Brad King ad2ed96a85 Merge topic 'findgit-imported-target'
97700e9f5b FindGit: Add imported target

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2790
2019-01-22 09:40:39 -05:00
Brad King 4b017d579d Merge topic 'Wcomma'
5ff7fb592e Fixed all but one clang -Wcomma warning

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2828
2019-01-22 09:38:30 -05:00
Brad King cb7fbf1dbb Merge topic 'stdout-string'
3132ea801c cmSystemTools: Stdout(),Stderr() accept std::string argument

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2829
2019-01-22 09:32:58 -05:00
Brad King acaf9801d0 Merge topic 'depends-string'
2c50a72576 cmDepends: all members accept std::string arguments

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2827
2019-01-22 09:32:06 -05:00
Brad King 17e12a9fa9 Merge topic 'cmake-gui-generator-platform'
67bced8a26 cmake-gui: Improve label for default platform
48ec0bc140 cmake-gui: Add field for generator platform selection
8bba458ea5 Add global generator factory method to get default platform name
818df52c48 Add global generator factory method to get list of known platforms
8144b00e32 Split global generator factory list with and without platforms
b70c0aed5c VS: Factor out helper function to compute host platform name

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2832
2019-01-22 09:28:18 -05:00
Craig Scott 2395b1b244 cmake: Convert no source/build dir error to warning
Temporarily restore previous behavior that allowed specifying
no source or build directory to work, even though it was
neither documented nor supported. This commit is expected
to eventually be reverted to restore the fatal error for such
cases.

Relates: #18817
2019-01-22 21:33:54 +11:00
Kitware Robot 05e4fa4773 CMake Nightly Date Stamp 2019-01-22 00:01:06 -05:00
Chuck Cranor 5990ecb741 Compute implicit include directories from compiler output
- CMakeParseImplicitIncludeInfo.cmake: new parser that extracts the
   compiler's include path from verbose output.  If the parser cannot
   parse the output, we fall back to the old behavior.  On osx we skip
   over framework directories (handled elsewhere).

 - CMakeDetermineCompilerABI.cmake:
     - use verbose flag in try_compile for ${src}
     - use new cmake_parse_implicit_include_info() to attempt extract
       implicit include directory path and if successful set
        CMAKE_${LANG}_IMPLICIT_INCLUDE_DIRECTORIES

 - CMakeCCompiler.cmake.in and CMakeCXXCompiler.cmake.in - preserve
   CMAKE_${LANG}_IMPLICIT_INCLUDE_DIRECTORIES value between runs in
   the same way CMAKE_${LANG}_IMPLICIT_LINK_DIRECTORIES is preserved

 - Tests/RunCMake/ParseImplicitIncludeInfo: tests for parse
   based on the older Tests/CMakeTests/ImplicitLinkInfoTest.cmake.in.
   The test runs a set of verbose compiler outputs collected from
   various machines through the parser and checks the results.  New
   compiler files can be added by dropping input/output files in the
   ParseImplicitIncludeInfo/data subdirectory and then adding the new set
   of files to the ${targets} list in ParseImplicitIncludeInfo.cmake.
   There is a helper CMakeLists.txt in ParseImplicitIncludeInfo/data
   that can help with the generation of test input files.
   NOTE: the standard cmake pre-commit hook rejects verbose compiler
   output with trailing spaces... you have to manually edit them out.
   This shouldn't impact the test.

Note that both the parser and the test code can use CMAKE_${LANG}_COMPILER_*
variables such as ${CMAKE_CXX_COMPILER_ID} to decide how to parse
verbose compiler output.  For the test code, this requires us to
save the variables values in the test input files.

Fixes: #16291
2019-01-21 11:14:08 -05:00
Chuck Cranor d751d2d2ed CMakeDetermineCompilerABI: set locale to C for try_compile()
Have CMakeDetermineCompilerABI set the locale to C before calling
try_compile().  This is for the implicit include path parser to
keep all the verbose compiler messages in English so we can parse
it.   See #18784 for discussion.
2019-01-21 11:14:08 -05:00
Brad King c765ae495a CMakeDetermineCompilerABI: pass verbose flag during compilation
Default to the same flag that is used for verbose link information, but
provide another internal platform information variable to use a
compilation-specific variant.  Populate it for CUDA where we use a
different compiler for compilation and linking and therefore need
different flags.

Co-Author: Chuck Cranor <chuck@ece.cmu.edu>
2019-01-21 11:14:08 -05:00
Brad King 8c5221fb1f try_compile: Preserve special characters in COMPILE_DEFINITIONS
When generating the `CMakeLists.txt` file, we pass the values given
to our `COMPILE_DEFINITIONS` option in an `add_definitions` call.
Pass them as bracket arguments to preserve special characters
like `#`.
2019-01-21 11:14:08 -05:00
Brad King 15ad830062 Refactor exclusion of -I/usr/include to avoid per-language values
Add a `CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES` to contain the
hard-coded list of paths to be excluded from `-I` arguments so that the
values remain excluded even if the per-language
`CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES` variants change.

This is needed to preserve our historical exclusion of `-I/usr/include`
even when it is not a real implicit include directory.  A policy may be
needed to remove it later.
2019-01-21 11:14:07 -05:00
Kyle Edwards 97700e9f5b FindGit: Add imported target 2019-01-21 10:01:56 -05:00
Kyle Edwards ab3b549ee0 CROSSCOMPILING_EMULATOR: Fix test generation for empty value
If CROSSCOMPILING_EMULATOR was set to an empty string, and a test
was generated with the executable as the command, CMake would segfault
upon trying to generate the test file. Fix this.

Fixes: #18819
2019-01-21 09:57:25 -05:00
Brad King 02f7e997e9 Merge topic 'ExternalProject-non-cmake-source-subdir'
c09ec79981 ExternalProject: support SOURCE_SUBDIR for BUILD_IN_SOURCE

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2823
2019-01-21 07:58:10 -05:00
Brad King c7428e1729 Merge topic 'read-list-file'
25caf7bafe cmMakefile::ReadListFile() accepts std::string argument

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2821
2019-01-21 07:57:33 -05:00
Brad King 177b5fb61b Merge topic 'fortran-compiler-id'
a080914274 Fortran: Add compiler ID/Version generator expressions

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2804
2019-01-21 07:56:59 -05:00
Brad King 55a2dc3055 Merge topic 'update-libuv'
5b3af28e45 libuv: Update CMake-internal buildsystem
1136275ae1 libuv: Include uv/ headers from each other without any path
1e1209729b Merge branch 'upstream-libuv' into update-libuv
4fcb0d0213 libuv 2019-01-15 (f84c5e69)

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2822
2019-01-21 07:54:45 -05:00
Brad King eadaf0c8c3 Merge topic 'cmake-role-fix'
264bdac185 CMAKE_ROLE: Fix value for ctest --build-and-test

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2820
2019-01-21 07:54:06 -05:00
Brad King 1fba410ecf Merge topic 'autogen_mocs_compilation_first'
1ed4d48dcf Autogen: Prepend instead of append `mocs_compilation.cpp` to the sources list
a42b700cc2 cmTarget,cmGeneratorTarget: Add optional `before` parameter to AddSource

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Peter Wu <peter@lekensteyn.nl>
Merge-request: !2815
2019-01-21 07:53:23 -05:00
Brad King 9ea2f0eb94 Merge topic 'swift-module-name'
0ffe8f8844 Ninja: support `SWIFT_MODULE_NAME` property

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2813
2019-01-21 07:52:40 -05:00
Brad King 4dba5d6ce2 Merge topic 'use-emplace'
ef61997b1b clang-tidy: Use emplace
2e5307a2a4 CTestSVN: Accept std::string in SVNInfo constructor

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2811
2019-01-21 07:51:54 -05:00
Brad King 7e5f9b192e Merge topic 'ctest-json-polish'
cae9d2a61a CTest: Teach --show-only= to reject unknown values
7370b02c36 CTest: Teach --show-only=json-v1 to filter out not-available tests
62fec84ad7 Tests: Fix RunCMake.CTestCommandLine case when no python is found
75a7a23746 Tests: Rename RunCMake.CTestCommandLine show-only test cases
fecbc87608 Tests: Fix RunCMake.CTestCommandLine to actually check json-v1

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2812
2019-01-21 07:51:08 -05:00
Brad King 15fe5c4c9d Merge topic 'FindCURL-typo'
0526ae4415 FindCURL: fix component failure when no pkg-config

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2826
2019-01-21 07:50:23 -05:00
Hiroshi Miura 0526ae4415 FindCURL: fix component failure when no pkg-config
find_package(CURL COMPONENTS foo) fails when there is
no pkg-config module because of variable name typo.

Signed-off-by: Hiroshi Miura <miurahr@linux.com>
Fixes: #18802
2019-01-21 07:49:00 -05:00
Brad King d704cc3407 Merge topic 'command_file_link'
0f08ed8936 cmSystemTools: Silence CreateLink and CreateSymlink errors
593d986470 Tests: Avoid cross-device links in CREATE_LINK test
9a3d85cfc5 Tests: Skip symlink tests on Windows
e68ea269d7 Tests: CREATE_LINK subcommand negative test case
45aa9c65a1 Tests: file CREATE_LINK subcommand test cases
8bb7562f1a Help: Add documentation for file(CREATE_LINK) subcommand
81650e488c cmFileCommand: Add CREATE_LINK subcommand

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2759
2019-01-21 07:48:26 -05:00
Brad King d1aa2e1109 Merge topic 'find-package-resolve-symlinks'
b773e58099 find_package: add test coverage for CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS
a5e948a36f find_package: optionally resolve symlinks when discovering packages

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2798
2019-01-21 07:47:29 -05:00
Brad King fefae527c8 Merge topic 'submit-url'
2915a75615 CTest: Add documentation and release notes for SubmitURL
d6475daa79 Modules/CTest: Set SubmitURL
938f06fda6 ctest_submit: Add parameter SUBMIT_URL
65e725c957 CTest: Add option SubmitURL
65f1fc9d63 CTest: Add function GetSubmitURL
2bedd5fb7c ctest_submit: Remove submit method from log output

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2719
2019-01-21 07:46:20 -05:00
Julien Jomier 67bced8a26 cmake-gui: Improve label for default platform
Specify the default platform to be used when the platform field is empty
2019-01-21 13:18:26 +01:00
Kitware Robot 7ac3844ab5 CMake Nightly Date Stamp 2019-01-21 00:01:06 -05:00
Vitaly Stakhovsky 3132ea801c cmSystemTools: Stdout(),Stderr() accept std::string argument 2019-01-20 00:03:35 -05:00
Kitware Robot 41e02ea3b8 CMake Nightly Date Stamp 2019-01-20 00:01:04 -05:00
Kitware Robot c902e775ec CMake Nightly Date Stamp 2019-01-19 00:01:07 -05:00
Vitaly Stakhovsky 2c50a72576 cmDepends: all members accept std::string arguments
Most `const char*` arguments converted to `const std::string&`
in `cmDepends` and derived classes.
In addition performed minor code cleanup.
2019-01-18 20:30:13 -05:00
Artur Ryt dfd5ae7da7 Help: Mark default CMake generator with asterisk
Required extracting default generator evaluation
to explicit function, as Visual Studio generators
get validated during their construction.

Fixes: #18544
2019-01-18 12:57:34 -05:00
Craig Scott 6023fe7ff2 ccmake: Append rather than replace Generators section of docs
Using SetSection() discards the heading line populated by
addCMakeStandardDocSections(), whereas AppendSection()
preserves it. This also makes the code used for ccmake
consistent with that used for cmake and cmake-gui.
2019-01-18 12:57:34 -05:00
Artur Ryt 7408cd3929 cmake: Return generator docs directly
The GetGeneratorDocumentation() function was not accurately
named and required the vector to populate to be passed as a
function argument. This commit makes the slightly renamed
function return by value, making it a true getter as implied
by its name. Some minor refactoring of the implementation
also makes the steps of populating the vector clearer.
2019-01-18 12:57:32 -05:00
Julien Jomier 48ec0bc140 cmake-gui: Add field for generator platform selection
Extend the "first configure" dialog with a field for the user to select
a value for `CMAKE_GENERATOR_PLATFORM`.

Fixes: #17343
2019-01-18 12:41:35 -05:00
Brad King 8bba458ea5 Add global generator factory method to get default platform name 2019-01-18 12:30:19 -05:00
Brad King 818df52c48 Add global generator factory method to get list of known platforms
Add a `cmGlobalGeneratorFactory::GetKnownPlatforms` method to return
a list of known possible values for `CMAKE_GENERATOR_PLATFORM`.
Implement the method for each generator by referencing the list of
possible values documented in `Help/generator/*.rst` for it.

Co-Author: Julien Jomier <julien.jomier@kitware.com>
2019-01-18 12:29:53 -05:00
Brad King 8144b00e32 Split global generator factory list with and without platforms
Replace `cmGlobalGeneratorFactory::GetGenerators` with a pair of methods
to split the list of generator names into those that have platforms in
the name and those that do not.
2019-01-18 12:29:53 -05:00
Brad King b70c0aed5c VS: Factor out helper function to compute host platform name 2019-01-18 12:29:53 -05:00
Kyle Edwards 264bdac185 CMAKE_ROLE: Fix value for ctest --build-and-test
--build-and-test builds a CMake project, so CMAKE_ROLE should be
PROJECT. Fix this and add a test case.
2019-01-18 10:15:25 -05:00
Andrew Paprocki a080914274 Fortran: Add compiler ID/Version generator expressions
Adds `Fortran_COMPILER_ID` and `Fortran_COMPILER_VERSION` generator
expression support to match equivalent `C_COMPILER_ID`,
`CXX_COMPILER_ID`, `C_COMPILER_VERSION`, and `CXX_COMPILER_VERSION`
support.

This is very helpful in the case where the C/C++ compiler suite is a
different type of compiler from the platform Fortran compiler and
projects use generator expressions to assign compiler flags and
definitions.  (e.g. `GNU` C/C++ and `SunPro` Fortran on Linux)
2019-01-18 08:56:13 -05:00