Commit Graph

21336 Commits

Author SHA1 Message Date
Brad King 3a883a9f7d Merge topic 'ninja-fortran'
33058150 Help: Document Ninja generator conditional Fortran support
59aae292 Ninja: Add dyndep rules for Fortran module dependencies
39ebfc79 Ninja: Add explicit preprocessing step for Fortran
9a77680e Ninja: Conditionally allow Fortran based on ninja 'dyndep' support
0f331d78 Ninja: Add internal tool to produce a ninja dyndep file for Fortran
d3e0b64b Ninja: Add internal tool to scan Fortran code for module dependencies
8eca59a1 Ninja: Add comment with Fortran dependency design documentation
a57d1bb7 Ninja: Add API to check for dyndep support
0488ae63 Ninja: Refactor ninja feature detection
f0a23aa3 Ninja: Refactor Fortran rejection logic
2016-09-23 08:40:16 -04:00
Brad King e9cae187c3 Merge topic 'fix-xcode-attribute-LOCATIONs'
764775c4 Fix XCODE_ATTRIBUTE_..._LOCATION target property lookup
2016-09-23 08:40:07 -04:00
Brad King aec5bf8edb Merge topic 'cmake-server-signals'
e22d30e2 server-mode: Allow for sending signals
cc576c2c server-mode: Pass server into cmServerProtocol
277ffa28 server-mode: Move constants for server mode into its own file
2016-09-23 08:40:03 -04:00
Brad King 785f875426 Merge topic 'qtdialog-lib-paths'
48624b3c cmake-gui: Do not remove library paths for Qt5 plugins.
2016-09-23 08:39:56 -04:00
Kitware Robot d0a27ae998 CMake Nightly Date Stamp 2016-09-23 00:01:05 -04:00
Clinton Stimpson 48624b3cb8 cmake-gui: Do not remove library paths for Qt5 plugins.
Not removing library paths is necessary for QFileDialog to function correctly
on Linux when using Qt5.
2016-09-22 13:19:04 -06:00
Brad King 59aae29214 Ninja: Add dyndep rules for Fortran module dependencies
Teach the Ninja generator to add dyndep rules and bindings as described
in the design comment in `Source/cmGlobalNinjaGenerator.cxx`.
2016-09-22 13:53:10 -04:00
Brad King 39ebfc79e6 Ninja: Add explicit preprocessing step for Fortran
All Fortran sources need to be preprocessed before any source may be
compiled so that module dependencies can be (later) extracted.  Factor
out an explicit preprocessing step preceding compilation.  Use Ninja
depfile dependencies on the preprocessing step and then compile the
already-preprocessed source with a separate build statement that depends
explicitly only on the preprocessor output.  Later we will insert
dynamic discovery of module dependencies between these steps.
2016-09-22 13:53:09 -04:00
Brad King 9a77680eed Ninja: Conditionally allow Fortran based on ninja 'dyndep' support
Detect from the version of Ninja whether it supports the dynamically
discovered dependencies (dyndep) feature needed to support Fortran.
2016-09-22 13:53:09 -04:00
Brad King 0f331d7893 Ninja: Add internal tool to produce a ninja dyndep file for Fortran
Create an internal `cmake -E cmake_ninja_dyndep` tool to read the "ddi"
files generated by `cmake -E cmake_ninja_depends` from all sources in a
target and generate a ninja dyndep file that tells Ninja about Fortran
module dependencies within the target and on target dependencies.
2016-09-22 13:52:57 -04:00
Brad King d3e0b64b14 Ninja: Add internal tool to scan Fortran code for module dependencies
Create an internal `cmake -E cmake_ninja_depends` tool to scan an
already-preprocessed Fortran translation unit for modules that it
provides or requires.  Save the information in a "ddi" file with a
CMake-private format for intermediate dynamic dependency information.
This file may the be loaded by another tool to be added later.
2016-09-22 13:52:30 -04:00
Brad King 8eca59a175 Ninja: Add comment with Fortran dependency design documentation 2016-09-22 13:52:03 -04:00
Brad King a57d1bb712 Ninja: Add API to check for dyndep support
Kitware maintains a branch of Ninja with support for dynamically
discovered dependencies (dyndep) that has not yet been accepted
upstream.  Add an internal API to check whether the Ninja version in use
for the build supports this feature.
2016-09-22 13:52:03 -04:00
Brad King 0488ae63ea Ninja: Refactor ninja feature detection
Check for features as soon as we know the ninja version.  Save the
results so we do not have to re-compare versions every time.
2016-09-22 13:52:02 -04:00
Brad King f0a23aa3db Ninja: Refactor Fortran rejection logic
Delay rejection of Fortran until after we've determined the version of
the `ninja` tool to be used.  This will later allow us to enable Fortran
support based on the version of ninja.

While at it, make the rejection an immediate fatal error.  Also provide
a stack trace so readers know what code tried to enable Fortran.
2016-09-22 13:51:58 -04:00
Brad King 764775c4dd Fix XCODE_ATTRIBUTE_..._LOCATION target property lookup
Refactoring in commit v3.5.0-rc1~272^2~16 (cmGeneratorTarget: Add API for
property keys, 2015-10-25) changed the Xcode generator implementation of
`XCODE_ATTRIBUTE_...` properties to use the target `GetProperty` method on each
`XCODE_ATTRIBUTE_...` property listed by `GetPropertyKeys` instead of looping
over the property entries directly.  This made the lookup of property names of
the form `XCODE_ATTRIBUTE_..._LOCATION` accidentally trigger the computed
property logic for the undocumented/legacy `<CONFIG>_LOCATION` property.  Of
course the computed property value is not the same as the value stored in the
`XCODE_ATTRIBUTE_..._LOCATION` property.  Fix the computed property logic to
avoid triggering on `XCODE_ATTRIBUTE_...` attributes.

Closes: #16319
2016-09-22 11:29:52 -04:00
Tobias Hunger e22d30e25a server-mode: Allow for sending signals
Enable the server to send signals.
2016-09-22 16:30:03 +02:00
Tobias Hunger cc576c2c7f server-mode: Pass server into cmServerProtocol
The information will be needed to send signals.
2016-09-22 16:30:02 +02:00
Tobias Hunger 277ffa2881 server-mode: Move constants for server mode into its own file
This removes some duplication and makes it easier to reuse the
vocabulary.
2016-09-22 16:30:02 +02:00
Brad King f4475eb92b Merge topic 'test-fixtures'
73f47c9e CTest: Add support for test fixtures
2016-09-22 08:09:55 -04:00
Brad King 3e14e594b4 Merge topic 'cmake-server-pipes'
1d601c6c server-mode: Introduce cmServerConnection
2016-09-22 08:09:52 -04:00
Tobias Hunger 1d601c6cb9 server-mode: Introduce cmServerConnection
Use it to split pipe and stdin/out handling out of cmServer itself.

The server will shut down when it looses its connection to the client.
This has the nice property that a crashing client will cause the server
to terminate as the OS will close the connection on behave of the client.
2016-09-22 08:06:38 -04:00
Kitware Robot 555ef1e235 CMake Nightly Date Stamp 2016-09-22 00:01:04 -04:00
Brad King 2c2ffd3874 Merge topic 'ctest-capture-error'
adf1e32f Help: Add notes for topic 'ctest-capture-error'
d328dc68 CTest: Add CAPTURE_CMAKE_ERROR val to `ctest_*` commands
9ac2e189 ctest_coverage: If gcov is not found just warn, not error
2016-09-21 08:47:51 -04:00
Brad King eca2af6e66 Merge topic 'cmake-server-more-info'
4fb2b41a server-mode: Add debug support
537efe05 server-mode: Report Messages from cmake to clients
ca779948 server-mode: Automate progress reporting
70b8ba9a cmake-server: Use consistent constant naming style
2016-09-21 08:47:48 -04:00
Brad King 1657fa0795 Merge topic 'fortran-submodules'
df4aeb31 Help: Add notes for topic 'fortran-submodules'
b5ac8b8a Fortran: Add support for submodule syntax in dependency scanning
bdcc1f51 cmFortranParser: Skip module procedures/functions/subroutines
2016-09-21 08:47:45 -04:00
Brad King 63fbcd6799 Merge topic 'ninja-implicit-outputs'
501f9c93 cmGlobalNinjaGenerator: Add API to check for implicit outputs support
144a24dc cmGlobalNinjaGenerator: Teach WriteBuild about implicit outputs
2016-09-21 08:47:42 -04:00
Brad King 0ebd7554bc Merge topic 'refactor-fortran-module-dir-lookup'
7b5f8567 Fortran: Use module dir flag if needed for default module directory
1777570f cmGeneratorTarget: Refactor Fortran module directory lookup
2016-09-21 08:47:39 -04:00
Brad King ca4eec29f9 Merge topic 'update-kwsys'
3876e297 Merge branch 'upstream-KWSys' into update-kwsys
9783ed1e KWSys 2016-09-20 (3f69ac40)
2016-09-21 08:47:36 -04:00
Kitware Robot 37c1863764 CMake Nightly Date Stamp 2016-09-21 00:01:11 -04:00
Tobias Hunger 4fb2b41a58 server-mode: Add debug support
Enable the server to support development with some helper tools:

You can now request debug information with statistics on how
long execution of a command took, how long it took to serialize
the JSON files, and how big the serialized JSON string is.

Also allow to dump results into a file.
2016-09-20 20:52:44 +02:00
Tobias Hunger 537efe0561 server-mode: Report Messages from cmake to clients
Pass messages sent from cmake via Error(...) or Message(...) on
to clients.
2016-09-20 20:52:38 +02:00
Tobias Hunger ca7799482c server-mode: Automate progress reporting
Wire up cmake::SetProgressUpdate to do progress reporting via the
cmake server.
2016-09-20 20:48:10 +02:00
Tobias Hunger 70b8ba9a0f cmake-server: Use consistent constant naming style 2016-09-20 20:48:06 +02:00
Craig Scott 73f47c9e46 CTest: Add support for test fixtures
Add new test properties:

* FIXTURES_SETUP
* FIXTURES_CLEANUP
* FIXTURES_REQUIRED

to specify the roles and dependencies of tests providing/using
test fixtures.
2016-09-20 14:37:38 -04:00
Bill Hoffman d328dc6853 CTest: Add CAPTURE_CMAKE_ERROR val to `ctest_*` commands
If a `ctest_*` command has CAPTURE_CMAKE_ERROR then any errors generated
by cmake during that command will cause the value to be assigned `-1`.
This will prevent a `ctest -S` script from returning non-zero unless the
script explicitly calls `message(FATAL_ERROR)`.
2016-09-20 13:14:20 -04:00
Bill Hoffman 9ac2e18960 ctest_coverage: If gcov is not found just warn, not error 2016-09-20 13:06:57 -04:00
Brad King b5ac8b8aa7 Fortran: Add support for submodule syntax in dependency scanning
Fortran 2008 [1] adds support for a new syntax related to modules:

    submodule ( ParentModule ) SubModule
    submodule ( ParentModule : SubModule ) NestedSubModule

Both of these mean that the current source file requires the module
`ParentModule` to be available if it is not provided in the current
file.  Teach our Fortran dependency scanner to parse this syntax to
extract this relationship.  For now simply tolerate the nested submodule
case and extract only the dependency it expresses on the main module.
Further work will be needed to extract dependencies among nested
submodules.

[1] http://fortranwiki.org/fortran/show/Fortran+2008

Closes: #16234
2016-09-20 09:18:47 -04:00
Brad King bdcc1f517e cmFortranParser: Skip module procedures/functions/subroutines
Fortran allows the syntax

  MODULE PROCEDURE ...
  MODULE FUNCTION ...
  MODULE SUBROUTINE ...

to declare procedures/functions/subroutines that are members of modules.
Do not treat such syntax as the definition of a module with one of these
names.

Issue: #16234
2016-09-20 09:08:28 -04:00
Brad King 3876e2976e Merge branch 'upstream-KWSys' into update-kwsys
* upstream-KWSys:
  KWSys 2016-09-20 (3f69ac40)
2016-09-20 09:04:14 -04:00
Brad King 501f9c9367 cmGlobalNinjaGenerator: Add API to check for implicit outputs support
Ninja 1.7 introduced support for implicit outputs on build statements.
Add an internal API to check whether the Ninja version in use for the
build supports this feature.
2016-09-20 08:51:57 -04:00
Brad King 144a24dcdc cmGlobalNinjaGenerator: Teach WriteBuild about implicit outputs
Ninja 1.7 introduced support for implicit outputs on build statements.
Teach WriteBuild to generate the corresponding syntax.  Leave it up to
callers to decide whether implicit outputs are supported by the Ninja
version in use.  For now simply update all call sites to pass an empty
list of implicit outputs.
2016-09-20 08:51:57 -04:00
Brad King 7b5f85677c Fortran: Use module dir flag if needed for default module directory
Our buildsystem model says that the default Fortran module output
directory is the build tree directory corresponding to the source tree
`CMakeLists.txt` file adding the current target.  Extend
`cmGeneratorTarget::GetFortranModuleDirectory` to allow generators to
pass in the compiler working directory.  If the working directory does
not match the default Fortran module output directory then we need an
explicit module directory flag (e.g. `-J`) to tell the compiler to
put/use modules in the latter.

This does not affect the Makefile generator but will be useful for
future introduction of Fortran support to the Ninja generator.
2016-09-20 08:48:41 -04:00
Brad King 1777570fe5 cmGeneratorTarget: Refactor Fortran module directory lookup
Make `target_module_dir` and owned value so we can modify it.
2016-09-20 08:48:41 -04:00
Brad King 6b8812c27e Merge topic 'directory-list-targets-and-subdirs'
d0be1e15 Add directory properties to get source and binary directories
cbca6582 Add directory property to list buildsystem targets
7a4b8d0d Add a directory property to list subdirectories
089868a2 cmState: Record buildsystem target names in each directory
2016-09-20 08:41:01 -04:00
Brad King 9dc5bd9611 Merge topic 'cpack.hash_computing'
1c63aa4d CPack: Add option to generate a checksum file next to each package file
4682b42b Tests: Add subtest support to RunCMake/CPack infrastructure
2016-09-20 08:40:52 -04:00
Brad King 8d83c9d100 Merge topic 'ifw-package-resources'
b807cd9b CPackIFW: Add 'cpack_ifw_add_package_resources' command
2016-09-20 08:40:49 -04:00
Brad King 83ec894ffd Merge topic 'cmake-server-experimental-protocols'
7df8a8f2 server-mode: Add --experimental flag
2016-09-20 08:40:39 -04:00
Brad King 160a7ad640 Merge topic 'cleanup-Convert'
6429d6d9 cmOutputConverter: Remove now-obsolete Convert method
ad790617 Convert: Inline uses of START_OUTPUT
4cf707b0 Convert: Remove HOME_OUTPUT enum value
3d12ffbf Ninja: Update comment variable reference
4d69ac76 Convert: Move access to BinaryDirectory out of loops
e7c89567 Convert: Inline uses of HOME_OUTPUT
dc510919 Common: Use a string instead of enum for WorkingDirectory
76833149 Convert: Simplify switch
dc95020e Convert: Remove obsolete MAKERULE enum value
1825f876 Convert: Move access to BinaryDirectory out of loops
25c39ac2 Convert: Inline HOME_OUTPUT MAKERULE conversion
516e79ba Convert: Inline MAKERULE conversions
e13e519e Convert: Move access to BinaryDirectory out of loops
34c6e995 Convert: Avoid HOME_OUTPUT enum when converting to relative paths
839c65bc Convert: Move access to CurrentBinaryDirectory out of loops
21b5fdf9 Convert: Avoid START_OUTPUT enum when converting to relative paths
...
2016-09-20 08:40:36 -04:00
Tobias Hunger 7df8a8f276 server-mode: Add --experimental flag
Allow for experimental cmProtocolVersions, which will only ever get
listed if the server was started with the (undocumented)
"--experimental" flag.

Mark current protocol version 1.0 as experimental.
2016-09-20 08:32:26 -04:00
Kitware Robot 9034a7acc5 CMake Nightly Date Stamp 2016-09-20 00:01:06 -04:00
Stephen Kelly 6429d6d9dd cmOutputConverter: Remove now-obsolete Convert method 2016-09-19 21:36:15 +02:00
Stephen Kelly ad79061720 Convert: Inline uses of START_OUTPUT 2016-09-19 21:36:14 +02:00
Stephen Kelly 4cf707b083 Convert: Remove HOME_OUTPUT enum value 2016-09-19 21:36:14 +02:00
Stephen Kelly 3d12ffbf5b Ninja: Update comment variable reference 2016-09-19 21:36:14 +02:00
Stephen Kelly 4d69ac7697 Convert: Move access to BinaryDirectory out of loops 2016-09-19 21:36:14 +02:00
Stephen Kelly e7c8956746 Convert: Inline uses of HOME_OUTPUT 2016-09-19 21:36:14 +02:00
Stephen Kelly dc51091944 Common: Use a string instead of enum for WorkingDirectory 2016-09-19 21:36:14 +02:00
Stephen Kelly 76833149ec Convert: Simplify switch
Make it more clear what is happening here.
2016-09-19 21:36:14 +02:00
Stephen Kelly dc95020efa Convert: Remove obsolete MAKERULE enum value 2016-09-19 21:36:13 +02:00
Stephen Kelly 1825f876a7 Convert: Move access to BinaryDirectory out of loops 2016-09-19 21:36:13 +02:00
Stephen Kelly 25c39ac28b Convert: Inline HOME_OUTPUT MAKERULE conversion 2016-09-19 21:36:13 +02:00
Stephen Kelly 516e79ba27 Convert: Inline MAKERULE conversions
This is a trivial use of a static method.
2016-09-19 21:36:13 +02:00
Stephen Kelly e13e519e1c Convert: Move access to BinaryDirectory out of loops 2016-09-19 21:36:13 +02:00
Stephen Kelly 34c6e995f9 Convert: Avoid HOME_OUTPUT enum when converting to relative paths 2016-09-19 21:36:13 +02:00
Stephen Kelly 839c65bca0 Convert: Move access to CurrentBinaryDirectory out of loops 2016-09-19 21:36:12 +02:00
Stephen Kelly 21b5fdf9a3 Convert: Avoid START_OUTPUT enum when converting to relative paths 2016-09-19 21:36:12 +02:00
Stephen Kelly f1d845ae74 Convert: Remove obsolete HOME and START enum values 2016-09-19 21:36:12 +02:00
Stephen Kelly 0a98c74c1b Convert: Remove last uses of HOME enum value 2016-09-19 21:36:12 +02:00
Stephen Kelly 495e26ae57 Convert: Remove last use of START enum value
The enums just introduce unfamiliar names and don't provide value.

The order of arguments is reversed, as that is the result of the

 cmOutputConverter::ConvertToRelativePath

overload which accepts the RelativeRoot enum.
2016-09-19 21:36:12 +02:00
Stephen Kelly 4f68b2070f Xcode: Remove unused member
It is unused since commit v3.4.0-rc1~492^2~3 (Remove
CMAKE_USE_RELATIVE_PATHS variable., 2015-06-01).
2016-09-19 21:24:00 +02:00
Brad King d0be1e15c3 Add directory properties to get source and binary directories
Add SOURCE_DIR and BINARY_DIR directory properties that return the
absolute paths to the corresponding directories.  These correspond
to the target properties of the same names that we already have.
2016-09-19 14:00:50 -04:00
Brad King cbca65826c Add directory property to list buildsystem targets
Add a BUILDSYSTEM_TARGETS property to allow project code to traverse
the list of its own targets in a given directory.
2016-09-19 14:00:32 -04:00
Brad King 7a4b8d0dc2 Add a directory property to list subdirectories
Add a SUBDIRECTORIES directory property to allow project code to
traverse the directory structure of itself as CMake sees it.
2016-09-19 13:59:43 -04:00
Konstantin Podsvirov b807cd9b54 CPackIFW: Add 'cpack_ifw_add_package_resources' command 2016-09-19 13:17:59 -04:00
Brad King 089868a244 cmState: Record buildsystem target names in each directory
Maintain in the directory state the list of target names added to be
built.  These are normal, non-imported targets (but do include INTERFACE
libraries).
2016-09-19 10:55:18 -04:00
Petr Orlov 1c63aa4d43 CPack: Add option to generate a checksum file next to each package file
Add variable CPACK_PACKAGE_CHECKSUM to activate it.
2016-09-19 10:22:50 -04:00
Tobias Hunger d341d077c5 cmake-server: Implement ServerProtocol 1.0
Enable the initial handshake of the client to complete the connection
to the server.

The handshake sets the protocol version that client and server will
use to talk to each other. The only way to change this is to quit the
server and start over.

CMake specific information is also set during the initial handshake.
Since cmake so far never had to change basic information about any project
while running, it was decided to keep this information static and
require a restart of the cmake server to change any of these.
2016-09-19 08:57:57 -04:00
Tobias Hunger b13d3e0d0b cmake-server: Bare-bones server implementation
Adds a bare-bones cmake-server implementation and makes it possible
to start that with "cmake -E server".

Communication happens via stdin/stdout for now.

Protocol is based on Json objects surrounded by magic strings
("[== CMake Server ==[" and "]== CMake Server ==]"), which simplifies
Json parsing significantly.

This patch also defines an interface used to implement different
versions of the protocol spoken by the server, but does not include
any protocol implementaiton.
2016-09-19 08:57:57 -04:00
Tobias Hunger cd049f012e cmake-server: Report server mode availablitily in Capabilities
Report the availability of the server-mode in the output of
cmake -E capabilities.
2016-09-19 08:57:28 -04:00
Brad King 419ad05101 Merge topic 'cleanup-Convert'
6afd35b9 cmState: remove unused code
8d47a20f cmOutputConverter: use new ConvertToRelativePath signature internally
149af87b cmOutputConverter: split ConvertToRelativePath
2016-09-19 08:55:27 -04:00
Brad King ec5114f997 Merge topic 'predictable-add_custom_command-output'
92d76b50 Make the add_custom_command output more predictable
2016-09-19 08:55:24 -04:00
Brad King 995d6be128 Merge topic 'clang-tidy-fixes'
3fab1fef cmNinjaNormalTargetGenerator: make sure comments match parameter names
7b94a7ad cmCommandArgumentsHelper: simplify boolean expression
782fcbb9 Use CM_NULLPTR
809ca6c8 Use braces around statements
516f8edb Avoid else after return
d9f5d3c5 Remove redundant get() call on smart pointer
3fda1094 Mark overridden functions with CM_OVERRIDE
2016-09-19 08:55:18 -04:00
Brad King 34b49df564 Merge topic 'ifw-user-interfaces'
c2f0f41f CPackIFW: Add USER_INTERFACES option
2016-09-19 08:55:12 -04:00
Brad King 0a4d15a9e2 Merge topic 'check-for-unique_ptr'
aa50cdac Check for availability of unique_ptr and make_unique when building CMake
2016-09-19 08:55:09 -04:00
Brad King b4ea74c5ca Merge topic 'find-package-mode-fixes'
a098ca0d cmake: Fix --find-package mode link line output
d9c600c5 cmGlobalGenerator: Fix use of uninitialized value in --find-package mode
2016-09-19 08:55:03 -04:00
Stephen Kelly 92d76b50aa Make the add_custom_command output more predictable
I otherwise get:

   Expected stderr to match:

    expect-err> CMake Error at AppendNotOutput.cmake:1 \(add_custom_command\):
    expect-err>   add_custom_command given APPEND option with output.*
    expect-err>   which is not already a custom command output.
    expect-err> Call Stack \(most recent call first\):
    expect-err>   CMakeLists.txt:3 \(include\)

   Actual stderr:

    actual-err> CMake Error at AppendNotOutput.cmake:1 (add_custom_command):
    actual-err>   add_custom_command given APPEND option with output
    actual-err>   "/home/stephen/dev/src/cmake/with
    actual-err> space/Tests/RunCMake/add_custom_command/AppendNotOutput-build/out" which is
    actual-err>   not already a custom command output.
    actual-err> Call Stack (most recent call first):
    actual-err>   CMakeLists.txt:3 (include)

Using a specific line for paths is a style already used elsewhere for
the same reason, such as CMP0041 output.
2016-09-19 08:49:46 -04:00
Kitware Robot c7b312cf13 CMake Nightly Date Stamp 2016-09-19 00:01:03 -04:00
Kitware Robot ca504042d1 CMake Nightly Date Stamp 2016-09-18 00:01:05 -04:00
Daniel Pfeifer 6afd35b98a cmState: remove unused code
Remove the code that was used by cmOutputConverter exclusively.
2016-09-17 19:49:21 +02:00
Daniel Pfeifer 8d47a20f13 cmOutputConverter: use new ConvertToRelativePath signature internally 2016-09-17 10:29:49 +02:00
Daniel Pfeifer 149af87b86 cmOutputConverter: split ConvertToRelativePath
Split the ConvertToRelativePath funtion into ConvertToRelativePath and
ForceToRelativePath.  Both functions take the local path as a string
rather than a vector of path segments.  Reimplement the old interface on
top of the two new functions for interface compatibility.
2016-09-17 10:29:48 +02:00
Kitware Robot 4171b86ca3 CMake Nightly Date Stamp 2016-09-17 00:01:05 -04:00
Daniel Pfeifer 3fab1fef23 cmNinjaNormalTargetGenerator: make sure comments match parameter names 2016-09-16 23:31:37 +02:00
Daniel Pfeifer 7b94a7adb3 cmCommandArgumentsHelper: simplify boolean expression 2016-09-16 23:16:54 +02:00
Daniel Pfeifer 782fcbb92e Use CM_NULLPTR 2016-09-16 23:01:40 +02:00
Daniel Pfeifer 809ca6c81f Use braces around statements 2016-09-16 22:52:02 +02:00
Daniel Pfeifer 516f8edb2e Avoid else after return 2016-09-16 22:45:24 +02:00
Daniel Pfeifer d9f5d3c50f Remove redundant get() call on smart pointer 2016-09-16 22:16:27 +02:00
Daniel Pfeifer 3fda109451 Mark overridden functions with CM_OVERRIDE 2016-09-16 22:14:19 +02:00
Brad King aa50cdac43 Check for availability of unique_ptr and make_unique when building CMake
Some code paths may find these useful if available.
2016-09-16 13:22:10 -04:00
Pierluigi Taddei c2f0f41f63 CPackIFW: Add USER_INTERFACES option
Add to CPackIFW the capability of accepting a list of
USER_INTERFACES that are copied to the meta folder and
added to the component description.
2016-09-16 10:29:00 -04:00
Brad King 00fd64d126 Merge topic 'refactor-target-construction'
9353d991 cmTarget: Remove unused support for partial construction
fa3897b2 cmGlobalGenerator: Refactor global target construction
916d8445 cmGlobalGenerator: Split CreateDefaultGlobalTargets implementation
2016-09-16 10:21:43 -04:00
Brad King 60ebd0acf8 Merge topic 'size-empty'
73f648f1 use empty method to check for emptyness
2016-09-16 10:21:39 -04:00
Brad King cf0e005202 Merge topic 'detect-relink-incompat'
72dfca30 ninja: error out on relink requirements
2016-09-16 10:21:31 -04:00
Brad King 4356bd7fe3 Merge topic 'file-curl-httpheader'
8f6cb366 file(DOWNLOAD|UPLOAD): Add HTTPHEADER suboption
2016-09-16 10:21:23 -04:00
Brad King 38a378e10d Merge topic 'find_package-dir-sort'
31be918b find_package: Optionally sort globbed directories in a meaningful order
2016-09-16 10:21:17 -04:00
Brad King a098ca0d7a cmake: Fix --find-package mode link line output
Refactoring in commit v2.8.10~58^2~2 (Ninja: move -LIBPATH behind -link
option, 2012-09-26) added arguments to cmLocalGenerator::GetTargetFlags
and updated the call sites.  However, in the cmake::FindPackage and
cmLocalGenerator::AddBuildTargetRule call sites it added the new
arguments in the wrong order.  The latter was never used and has been
removed.  The former remains buggy and prints out compiler flags instead
of the link framework/library search paths.  Fix its argument order.
2016-09-16 10:03:15 -04:00
Brad King d9c600c504 cmGlobalGenerator: Fix use of uninitialized value in --find-package mode 2016-09-16 09:25:41 -04:00
Kitware Robot 3bb18e708d CMake Nightly Date Stamp 2016-09-16 00:01:07 -04:00
Daniel Pfeifer 73f648f167 use empty method to check for emptyness 2016-09-15 23:59:29 +02:00
Brad King 9353d991a4 cmTarget: Remove unused support for partial construction
We no longer need to support partial construction for cmTarget instances
of type GLOBAL_TARGET.  Require all constructor arguments up front.
2016-09-15 16:02:27 -04:00
Brad King fa3897b24e cmGlobalGenerator: Refactor global target construction
Avoid using partially-constructed cmTarget instances.  Collect the
information about how to construct each target in a separate structure
and then actually create each cmTarget with full construction.
2016-09-15 15:56:49 -04:00
Brad King 916d84450d cmGlobalGenerator: Split CreateDefaultGlobalTargets implementation
Divide this long method into multiple helpers each dedicated to one of
the targets.  This also avoids having to clear/re-use local structures.
2016-09-15 15:37:25 -04:00
Ruslan Baratov 8f6cb36695 file(DOWNLOAD|UPLOAD): Add HTTPHEADER suboption 2016-09-15 21:41:39 +03:00
Ben Boeckel 72dfca30b9 ninja: error out on relink requirements
Ninja does not support PRE_INSTALL_SCRIPT properties and does not
perform the relink required by installation without help from some other
mechanism, so error out if it would be required.

Issue: #13934, #16304
2016-09-15 13:44:58 -04:00
Pierluigi Taddei 31be918b0b find_package: Optionally sort globbed directories in a meaningful order
Add `CMAKE_FIND_PACKAGE_SORT_{ORDER,DIRECTION}` variables to specify
sort order and direction.

When multiple package with the same name have been found in the same
location sorting option can be used to force a specific version to be
loaded (e.g. libA_1.12.0 instead of libA_1.1.0).  Currently sorting by
NAME and by NATURAL order have been implemented.

Natural ordering makes use of the `strverscmp(3)` ordering.
2016-09-15 13:35:25 -04:00
Brad King 010140311a Merge topic 'update-kwsys'
de149317 Tests: Use upper-case drive letters in RunCMake.get_filename_component
04d94fbe Merge branch 'upstream-KWSys' into update-kwsys
d28e4467 KWSys 2016-09-14 (c4049689)
e4fc770f Merge branch 'upstream-KWSys' into update-kwsys
b80d6136 KWSys 2016-09-14 (e736efa1)
2016-09-15 08:46:48 -04:00
Brad King b7dcadac44 Merge topic 'add-strverscmp'
88494325 Tests: Add test for our strverscmp implementation
07f69bd5 cmSystemTools: Add strverscmp
2016-09-15 08:46:45 -04:00
Brad King e0e047fe4b Merge topic 'refactor-target-construction'
7a2e114d cmTarget: Inline SetType method at only remaining call site
00e78c19 cmTarget: Construct with basic information up front
9d11bd50 Avoid requiring default cmTarget constructor for map indexing
d97513d8 cmTarget: Add method to get a copy adapted for a directory
2016-09-15 08:46:40 -04:00
Brad King 62a79dccc5 Merge topic 'cmake-static-FindCacheFile'
cc770e76 cmake: Make FindCacheFile a static method
2016-09-15 08:46:37 -04:00
Brad King 0063b6b43c Merge topic 'fix-ccmake-sun-gcc'
d4d0c942 ccmake: Fix recent compilation regression with GCC on Solaris
2016-09-15 08:46:34 -04:00
Kitware Robot 100817dc5d CMake Nightly Date Stamp 2016-09-15 00:01:07 -04:00
Brad King 7a2e114dd8 cmTarget: Inline SetType method at only remaining call site 2016-09-14 14:50:40 -04:00
Brad King 00e78c1990 cmTarget: Construct with basic information up front
Avoid having partially constructed cmTarget instances around,
except for the special case of GLOBAL_TARGET construction.
2016-09-14 14:50:39 -04:00
Brad King 9d11bd5066 Avoid requiring default cmTarget constructor for map indexing
The `std::map<>` index operator requires a default constructor on the
value type.  Avoid requiring a default constructor on `cmTarget` just
for this purpose.
2016-09-14 14:50:39 -04:00
Brad King d97513d842 cmTarget: Add method to get a copy adapted for a directory
The "global" targets are built once for the top directory and then
copied into all directories.  Add a helper method to make the copy.
2016-09-14 14:50:39 -04:00
Brad King cc770e7670 cmake: Make FindCacheFile a static method
It does not need access to member data.
2016-09-14 11:49:24 -04:00
Brad King d4d0c94226 ccmake: Fix recent compilation regression with GCC on Solaris
The change in commit 32f756c8 (CursesDialog: include what you use,
2016-09-01) revealed that an ancient workaround for compiling with GCC
on Solaris has not had an effect in a long time and is now incorrect.
Drop it.
2016-09-14 10:51:27 -04:00
Brad King 04d94fbe92 Merge branch 'upstream-KWSys' into update-kwsys
* upstream-KWSys:
  KWSys 2016-09-14 (c4049689)

Issue: #16295
2016-09-14 09:49:37 -04:00
Brad King e4fc770fa3 Merge branch 'upstream-KWSys' into update-kwsys
* upstream-KWSys:
  KWSys 2016-09-14 (e736efa1)
2016-09-14 09:41:55 -04:00
Brad King ea69e03afa Merge topic 'minor-cleanup'
6a9ed3d4 cmGeneratorTarget: factor out a space
2016-09-14 09:02:29 -04:00
Brad King e9dbb272e0 Merge topic 'cmake-E-help-order'
e952f1bd cmcmd: Fix sort order in help output
2016-09-14 08:56:25 -04:00
Brad King 171ea5d3cf Merge topic 'file-curl-userpw'
abeb42f1 Help: Add notes for topic 'file-curl-userpw'
e5ba1041 file(DOWNLOAD|UPLOAD): Add 'USERPWD' suboption
2016-09-14 08:56:22 -04:00
Brad King b93623550d Merge topic 'add_androidmk_generator'
42ce9f1e Add support for creating prebuilt Android.mk files
d5257063 Export: Virtualize file generation step helpers
f81b9475 Export: Factor out file generation steps into helpers
2016-09-14 08:56:19 -04:00
Brad King 35e3836589 Merge topic 'ctest-subdir-spaces'
1f8613e9 Fix CTest test file generation for spaces in subdirectory names
385e6a27 cmLocalGenerator: Refactor test subdirectory generation loop
2016-09-14 08:56:16 -04:00
Brad King 321c179962 Merge topic 'cmake-gui-open-project'
1ca2d5d1 cmake-gui: Add button to open the generated project
2016-09-14 08:56:12 -04:00
Kitware Robot 989ca432e4 CMake Nightly Date Stamp 2016-09-14 00:01:04 -04:00
Nico Heßler 1ca2d5d1db cmake-gui: Add button to open the generated project
Look for VS or Xcode project files at the top of the build tree.
If present, enable an "Open Project" button to open them through
the OS desktop services.
2016-09-13 16:11:29 -04:00
Stefano Soffia 1f8613e9ba Fix CTest test file generation for spaces in subdirectory names
Encode the subdirectory names properly for CMake syntax.

Closes: #16299
2016-09-13 13:58:46 -04:00
Stefano Soffia 385e6a274d cmLocalGenerator: Refactor test subdirectory generation loop 2016-09-13 13:57:59 -04:00
Ruslan Baratov e5ba1041be file(DOWNLOAD|UPLOAD): Add 'USERPWD' suboption 2016-09-13 20:24:12 +03:00
Bill Hoffman 42ce9f1e71 Add support for creating prebuilt Android.mk files
Add options to the `install()` and `export()` commands to export the
targets we build into Android.mk files that reference them as prebuilt
libraries with associated usage requirements (compile definitions,
include directories, link libraries).  This will allow CMake-built
projects to be imported into projects using the Android NDK build
system.

Closes: #15562
2016-09-13 12:47:43 -04:00
Brad King 07f69bd5cc cmSystemTools: Add strverscmp
Add support for natural string order by comparing non-numerical
character directly and numerical number by firstly collecting contiguous
digits.  The order is defined by the `strverscmp(3)` manual [1].

[1] http://man7.org/linux/man-pages/man3/strverscmp.3.html

Inspired-by: Pierluigi Taddei <pierluigi.taddei@gmail.com>
2016-09-13 11:52:28 -04:00
Brad King 112f758223 Merge topic 'cmake-server-prepare'
3e58b9af cmake: Factor out method to find the CMakeCache.txt file
c73967cb cmake: Introduce ReportCapabilitiesJson
366e3828 Update .gitignore
2016-09-13 11:40:50 -04:00
Brad King 994e98bf41 Merge topic 'timestamp-names'
410add40 Help: Add notes for topic 'timestamp-names'
751f7b52 string(TIMESTAMP ...): add '%a' and '%b' format specifiers
2016-09-13 11:40:47 -04:00
Brad King f51f4ee9a3 Merge topic 'fix-ctest-segfault'
b35311ca CTestSVN: Fix segfault when CTEST_UPDATE_VERSION_ONLY is enabled
2016-09-13 11:40:44 -04:00
Brad King 5b85a3e26c Merge topic 'link-generated-rpaths-first'
9370b697 Re-order link line to place RPATH entries before libraries
2016-09-13 11:40:38 -04:00
Brad King 8a56e311ec Merge topic 'file-download-unexpected-arg'
4dd997da file(DOWNLOAD|UPLOAD): Warn on unexpected arguments
2016-09-13 11:40:35 -04:00
Ben Boeckel 6a9ed3d4ae cmGeneratorTarget: factor out a space 2016-09-13 11:22:42 -04:00