summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Revert "Add a way to exclude INTERFACE properties from exported targets."Stephen Kelly2013-02-136-101/+3
| | | | | | | | This reverts commit 2c3654c3de718fe822f8960063373774fc019494. The removal of some tests added in commit 77cecb77 (Add includes and compile definitions with target_link_libraries., 2012-11-05) are also squashed into this commit.
* Revert "find_package: Reword <package>_NO_INTERFACES documentation"Stephen Kelly2013-02-131-17/+18
| | | | This reverts commit 179f49560286e2e322b9b0cf5d0a277b7634540f.
* Revert "Add the $<LINKED:...> generator expression."Stephen Kelly2013-02-1312-203/+8
| | | | | | | | | This reverts commit 0b92602b816e2584db3781b120a1e5200da72ada. Conflicts: Source/cmGeneratorExpressionEvaluator.cxx Tests/CMakeCommands/target_compile_definitions/CMakeLists.txt Tests/CMakeCommands/target_include_directories/CMakeLists.txt
* Don't populate INTERFACE includes and defines properties in tll.Stephen Kelly2013-02-133-51/+12
| | | | | | | | | This is a partial revert of commit 77cecb77 (Add includes and compile definitions with target_link_libraries., 2012-11-05). As the interface includes and defines are now determined by the link closure, there is no need to populate the corresponding properties explicitly.
* Revert "Don't allow utility or global targets in the LINKED expression."Stephen Kelly2013-02-136-26/+0
| | | | This reverts commit 9712362b4580fb92394ecf8ff57be186571f4319.
* Use the link information as a source of compile definitions and includes.Stephen Kelly2013-02-134-57/+218
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | After evaluating the INTERFACE_INCLUDE_DIRECTORIES, of a target in a generator expression, also read the INTERFACE_INCLUDE_DIRECTORIES of its link interface dependencies. That means that code such as this will result in the 'user' target using /bar/include and /foo/include: add_library(foo ...) target_include_directories(foo INTERFACE /foo/include) add_library(bar ...) target_include_directories(bar INTERFACE /bar/include) target_link_libraries(bar LINK_PUBLIC foo) add_executable(user ...) target_include_directories(user PRIVATE $<TARGET_PROPERTY:bar,INTERFACE_INCLUDE_DIRECTORIES>) Also process the interface include directories from direct link dependencies for in-build targets. The situation is similar for the INTERFACE_COMPILE_DEFINITIONS. The include directories related code is currently more complex because we also need to store a backtrace at configure-time for the purpose of debugging includes. The compile definitions related code will use the same pattern in the future. This is not a change in behavior, as existing code has the same effect, but that existing code will be removed in follow-up commits.
* Don't use LINKED where not needed.Stephen Kelly2013-02-123-3/+3
|
* Rename the IncludeDirectoriesEntry to be more generic.Stephen Kelly2013-02-128-49/+23
|
* Fix determination of when we're evaluating compile definitions.Stephen Kelly2013-02-121-1/+2
| | | | Also handle the config-specific property.
* Merge topic 'minor-fixes'Brad King2013-02-1150-175/+434
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ba48e63 Generate config-specific interface link libraries propeties. deb51a7 Remove unused forward declarations. 9712362 Don't allow utility or global targets in the LINKED expression. faa927e Make sure INTERFACE properties work with OBJECT libraries. 510fdcb Whitelist target types in target_{include_directories,compile_definitions} 4de7178 Ensure that the build interface includes have been added. df74bc3 Only append build interface include dirs to particular targets. d4e5c67 Don't keep track of content determined by target property values. 1fb545a Move a special case for PIC from the genex to the cmTarget code. 57175d5 Only use early evaluation termination for transitive properties. 4cf161a Fix determination of evaluating link libraries. 3a298c0 Fix generation of COMPILE_DEFINITIONS in DependInfo.cmake. 655e98b Ensure type specific compatible interface properties do not intersect. 46e2896 The COMPATIBLE_INTERFACE does not affect the target it is set on. 5f926a5 Test printing origin of include dirs from tll(). 7c0ec75 De-duplicate validation of genex target names. ...
| * Generate config-specific interface link libraries propeties.Stephen Kelly2013-02-091-6/+18
| | | | | | | | | | All other properties we generate are config-specific, so it makes sense to do so here too.
| * Remove unused forward declarations.Stephen Kelly2013-02-091-3/+0
| |
| * Don't allow utility or global targets in the LINKED expression.Stephen Kelly2013-02-086-0/+26
| | | | | | | | | | | | The LINKED expression is exclusively for handling INTERFACE content and it does not make sense for utility targets to have INTERFACE content.
| * Make sure INTERFACE properties work with OBJECT libraries.Stephen Kelly2013-02-085-6/+31
| |
| * Whitelist target types in target_{include_directories,compile_definitions}Stephen Kelly2013-02-086-1/+22
| | | | | | | | | | Setting include directories or compile definitions on a target created with add_custom_target does not make sense.
| * Ensure that the build interface includes have been added.Stephen Kelly2013-02-0811-2/+140
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is needed in the case that Automoc is used, as that calls GetIncludeDirectories, which may cache the resulting include dirs too early in the generate step. Also, because the automoc step is so early, we can't cache the include directories at that point. At that point the build interface of all dependencies are not populated yet, so we'd be caching the includes before appending the build interface. Only start caching when we're definitely generating the buildsystem. At that point, the includes should be stable. We still need to invoke AppendBuildInterfaceIncludes in the GlobalGenerator because the build interface includes affect mostly the dependencies of targets (such as the automoc targets), rather than the targets themselves, so the build interface needs to be appended for all targets before generation is done.
| * Only append build interface include dirs to particular targets.Stephen Kelly2013-02-072-3/+11
| | | | | | | | We shouldn't set the property on all custom targets.
| * Don't keep track of content determined by target property values.Stephen Kelly2013-02-075-47/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This tracking was added during the development of commit 042ecf04 (Add API to calculate link-interface-dependent bool properties or error., 2013-01-06), but was never used. It was not necessary to use the content because what is really useful in that logic is to determine if a property has been implied to be null by appearing in a LINK_LIBRARIES genex. I think the motivating usecase for developing the feature of keeping track of the targets relevant to a property was that I thought it would make it possible to allow requiring granular compatibility of interface properties only for targets which depended on the interface property. Eg: add_library(foo ...) add_library(bar ...) add_executable(user ...) # Read the INTERFACE_POSITION_INDEPENDENT_CODE from bar, but not # from foo: target_link_libraries(user foo $<$<TARGET_PROPERTY:POSTITION_INDEPENDENT_CODE>:bar>) This obviously doesn't make sense. We require that INTERFACE properties are consistent across all linked targets instead.
| * Move a special case for PIC from the genex to the cmTarget code.Stephen Kelly2013-02-072-7/+2
| |
| * Only use early evaluation termination for transitive properties.Stephen Kelly2013-02-072-3/+15
| | | | | | | | | | | | We need to make sure expressions which evaluate TARGET_PROPERTY:TYPE multiple times for example get the correct result each time, and not an empty string instead.
| * Fix determination of evaluating link libraries.Stephen Kelly2013-02-071-2/+2
| | | | | | | | | | Added in commit 6fbe3ce4 (Exclude the LINK_LIBRARIES related properties from INTERFACE evaluation., 2013-01-23)
| * Fix generation of COMPILE_DEFINITIONS in DependInfo.cmake.Stephen Kelly2013-02-071-22/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As INTERFACE_COMPILE_DEFINITIONS are now possible, we can have situations like this: add_library(foo ...) add_library(bar ...) target_link_libraries(foo bar) target_compile_definitions(bar INTERFACE SOME_DEF) The INTERFACE_COMPILE_DEFINITIONS of bar determine how foo should be compiled, and if they change, foo should be rebuilt. Additionally, as of commit d1446ca7 (Append the COMPILE_DEFINITIONS from the Makefile to all targets., 2012-09-17), we don't need to read definitions from the makefile if we read them from the target, so also de-duplicate the cached info. The DependInfo for INTERFACE_INCLUDE_DIRECTORIES is already handled correctly.
| * Ensure type specific compatible interface properties do not intersect.Stephen Kelly2013-02-075-5/+45
| | | | | | | | | | Before, the boolean version would always win, and the string one would be ignored.
| * The COMPATIBLE_INTERFACE does not affect the target it is set on.Stephen Kelly2013-02-072-12/+27
| | | | | | | | Test and document this.
| * Test printing origin of include dirs from tll().Stephen Kelly2013-02-072-3/+16
| |
| * De-duplicate validation of genex target names.Stephen Kelly2013-02-074-16/+22
| |
| * Deduplicate the isGeneratorExpression method.Stephen Kelly2013-02-076-36/+19
| | | | | | | | This API seems like the most appropriate.
| * Process generator expressions for 'system' include directories.Stephen Kelly2013-02-074-7/+24
| | | | | | | | | | | | | | | | | | | | Since commit 08cb4fa4 (Process generator expressions in the INCLUDE_DIRECTORIES property., 2012-09-18), it is possible to use generator expressions with the include_directories command. As that command can also have a SYSTEM argument, ensure that the result of using that argument with generator expressions gives a sane result.
* | CMake Nightly Date StampKitware Robot2013-02-111-1/+1
| |
* | CMake Nightly Date StampKitware Robot2013-02-101-1/+1
| |
* | CMake Nightly Date StampKitware Robot2013-02-091-1/+1
| |
* | Merge topic 'style-fixes'Brad King2013-02-081-2/+2
|\ \ | |/ | | | | | | 2ce7231 Style: Use this-> when invoking member functions.
| * Style: Use this-> when invoking member functions.Stephen Kelly2013-02-061-2/+2
| |
* | Merge topic 'generator-toolset'Brad King2013-02-0875-165/+420
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 56ca8d4 Tests: Add generator toolset support f36c665 Tests: Consolidate ctest --build-and-test generator options c0debb1 Merge branch 'master' into generator-toolset daae0d2 ExternalProject: Propagate the generator toolset e3841cf CTest: Add options to set generator toolset f980a80 Xcode: Implement generator toolset selection (#9831, #13802) 650c647 VS: Implement generator toolset selection (#10722, #13774) 4fd5342 CMake: Add -T option to choose a generator toolset 118c32f Merge branch 'xcode-duplicate-flags-13354' into generator-toolset cf8645e Tests: Run ctest custom commands with VERBATIM 5b2fba5 ExternalProject: Simplify CMake command line generation
| * | Tests: Add generator toolset supportBrad King2013-02-0745-13/+76
| | | | | | | | | | | | | | | Propagate CMAKE_GENERATOR_TOOLSET through the test hierarchy so that all tests can build with the selected generator toolset, if any.
| * | Tests: Consolidate ctest --build-and-test generator optionsBrad King2013-02-071-146/+78
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All ctest --build-and-test invocations require the options --build-generator ${CMAKE_GENERATOR} --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM} to be passed and have consistent values, except for a few special cases. Collect the generator options in a variable instead of repeating the options everywhere explicitly.
| * | Merge branch 'master' into generator-toolsetBrad King2013-02-07289-606/+3678
| |\ \ | | | | | | | | | | | | We need the latest Tests/CMakeLists.txt so we can refactor all tests.
| * | | ExternalProject: Propagate the generator toolsetBrad King2013-02-071-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the CMAKE_GENERATOR option is given to ExternalProject_Add, look also for option CMAKE_GENERATOR_TOOLSET to select the value of the cmake "-T" command-line flag. When no CMAKE_GENERATOR option is given explicitly then use the current project's CMAKE_GENERATOR_TOOLSET (since we already use its CMAKE_GENERATOR).
| * | | CTest: Add options to set generator toolsetBrad King2013-02-074-4/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The ctest_configure command already reads the CTEST_CMAKE_GENERATOR variable to get the value for the cmake -G option. Read new variable CTEST_CMAKE_GENERATOR_TOOLSET for -T. The "ctest --build-and-test" mode already has "--build-generator" to specify the -G option to CMake. Add a "--build-generator-toolset" option to specify the -T value.
| * | | Xcode: Implement generator toolset selection (#9831, #13802)Brad King2013-02-078-1/+48
| | | | | | | | | | | | | | | | | | | | Implement generator toolset selection (cmake -T) for Xcode > 2.0 by adding the GCC_VERSION build setting to project files.
| * | | VS: Implement generator toolset selection (#10722, #13774)Brad King2013-02-077-3/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement generator toolset selection (cmake -T) for VS >= 10 by setting the PlatformToolset. Extend the RunCMake.GeneratorToolset test case to verify CMAKE_GENERATOR_TOOLSET when the generator supports -T. Since commit 485a940e (VS: Simplify MSVC version reporting, 2012-08-23) all MSVC version information is detected during the compiler id step from the actual compiler invoked by generated build systems rather than hard-coded in VS generators. Therefore we can set the PlatformToolset in VS >= 10 project files and support toolsets from other VS versions.
| * | | CMake: Add -T option to choose a generator toolsetBrad King2013-02-0719-0/+141
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reject the option by default. It will be implemented on a per-generator basis. Pass the setting into try_compile project generation. Add cache entry CMAKE_GENERATOR_TOOLSET and associated variable documentation to hold the value persistently. Add a RunCMake.GeneratorToolset test to cover basic "-T" option cases. Verify that CMAKE_GENERATOR_TOOLSET is empty without -T, that -T is rejected when the generator doesn't support it, and that two -T options are always rejected.
| * | | Merge branch 'xcode-duplicate-flags-13354' into generator-toolsetBrad King2013-01-31211-3056/+5658
| |\ \ \
| * | | | Tests: Run ctest custom commands with VERBATIMBrad King2013-01-312-3/+6
| | | | |
| * | | | ExternalProject: Simplify CMake command line generationBrad King2013-01-311-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | Append the source directory to the command line option in a separate step instead of duplicating it with each possible generator.
* | | | | Merge topic 'CMAKE_CL_64-CXX'Brad King2013-02-081-1/+1
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | fe664b5 MSVC: Fix CMAKE_CL_64 in CXX-only projects (#13896)
| * | | | | MSVC: Fix CMAKE_CL_64 in CXX-only projects (#13896)Brad King2013-02-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When CXX is enabled without C then MSVC_CXX_ARCHITECTURE_ID is set instead but not MSVC_C_ARCHITECTURE_ID. Test both.
* | | | | | Merge topic 'exit-without-working-directory'Brad King2013-02-083-11/+7
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | a943b5c Fail early if no current working directory exists
| * | | | | | Fail early if no current working directory existsBrad King2013-02-073-11/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove the old "nocwd" behavior that attempts to provide the "--help" output when no working directory is available. The long help output scrolls the real error message out of typical terminal sizes. Also execute as little code as possible when no working directory exists.
* | | | | | | Merge topic 'update-kwsys'Brad King2013-02-081-18/+10
|\ \ \ \ \ \ \ | |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7df291f Merge branch 'upstream-kwsys' into update-kwsys 9d66f74 KWSys 2013-02-05 (5c34ed2e)