summaryrefslogtreecommitdiffstats
path: root/Tests
Commit message (Collapse)AuthorAgeFilesLines
* Make INTERFACE determined properties readable in generator expressions.Stephen Kelly2013-01-2022-1/+132
| | | | | The properties are evaluated as link-dependent interface properties when evaluating the generator expressions.
* Merge topic 'test-export-iface-genex'Brad King2013-01-156-18/+85
|\ | | | | | | | | | | | | | | | | | | | | | | | | 1d74ba2 Test evaluation target via export for generator expressions 522bdac Export the INTERFACE_PIC property. 4ee872c Make the BUILD_INTERFACE of export()ed targets work. 1d47cd9 Add a test for the interfaces in targets exported from the build tree. 6c828f9 Move the exported check for file existence. cfd4f0a Move the exported check for dependencies of targets d8fe1fc Only generate one check per missing target. f623d37 Don't write a comment in the export file without the code. b279f2b Strip consecutive semicolons when preprocessing genex strings.
| * Test evaluation target via export for generator expressionsStephen Kelly2013-01-151-1/+1
| |
| * Export the INTERFACE_PIC property.Stephen Kelly2013-01-153-0/+28
| |
| * Make the BUILD_INTERFACE of export()ed targets work.Stephen Kelly2013-01-156-5/+46
| | | | | | | | | | The existing BUILD_INTERFACE code is executed at generate time, which is too late for export().
| * Add a test for the interfaces in targets exported from the build tree.Stephen Kelly2013-01-152-16/+14
| |
* | Add the TARGET_DEFINED generator expressionStephen Kelly2013-01-132-0/+10
|/ | | | This tests whether the parameter is a usable target.
* Allow generator expressions in LINK_INTERFACE_LIBRARIES.Stephen Kelly2013-01-1011-1/+139
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Config and IMPORTED_ variants may also contain generator expressions. If 'the implementation is the interface', then the result of evaluating the expressions at generate time is used to populate the IMPORTED_LINK_INTERFACE_LIBRARIES property. 1) In the case of non-static libraries, this is fine because the user still has the option to populate the LINK_INTERFACE_LIBRARIES with generator expressions if that is what is wanted. 2) In the case of static libraries, this prevents a footgun, enforcing that the interface and the implementation are really the same. Otherwise, the LINK_LIBRARIES could contain a generator expression which is evaluated with a different context at build time, and when used as an imported target. That would mean that the result of evaluating the INTERFACE_LINK_LIBRARIES property for a static library would not necessarily be the 'link implementation'. For example: add_library(libone STATIC libone.cpp) add_library(libtwo STATIC libtwo.cpp) add_library(libthree STATIC libthree.cpp) target_link_libraries(libtwo $<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,STATIC_LIBRARY>:libone>) target_link_libraries(libthree libtwo) If the LINK_LIBRARIES content was simply copied to the IMPORTED_LINK_INTERFACE_LIBRARIES, then libthree links to libone, but executables linking to libthree will not link to libone. 3) As the 'implementation is the interface' concept is to be deprecated in the future anyway, this should be fine.
* Fix linking to imported libraries test.Stephen Kelly2013-01-102-3/+3
| | | | | | | Make a C executable instead of attempting to make a C++ static library (and not really succeeding). This was introduced in commit 894f52f3 (Handle INTERFACE properties transitively for includes and defines., 2012-09-23).
* Merge topic 'INTERFACE_POSITION_INDEPENDENT_CODE'Brad King2013-01-1013-0/+62
|\ | | | | | | | | | | | | 3581b96 Process the INTERFACE_PIC property from linked dependencies 042ecf0 Add API to calculate link-interface-dependent bool properties or error. bf5ece5 Keep track of properties used to determine linker libraries.
| * Process the INTERFACE_PIC property from linked dependenciesStephen Kelly2013-01-1013-0/+62
| | | | | | | | | | | | | | | | | | This allows a dependee to inform a target that it should have its POSITION_INDEPENDENT_CODE property set to ON, or OFF. The value of the POSITION_INDEPENDENT_CODE property, if set, must be consistent with any INTERFACE_POSITION_INDEPENDENT_CODE properties on dependees. Add a test covering the consistency checks on platforms where they run.
* | Merge topic 'target-includes-defines-commands'Brad King2013-01-107-0/+159
|\ \ | | | | | | | | | | | | | | | fc61a7a Add the target_compile_definitions command. 8a37ebe Add the target_include_directories command.
| * | Add the target_compile_definitions command.Stephen Kelly2013-01-104-0/+59
| | | | | | | | | | | | This is a convenience API to populate the corresponding properties.
| * | Add the target_include_directories command.Stephen Kelly2013-01-104-0/+100
| | | | | | | | | | | | This is a convenience API to populate the corresponding properties.
* | | Merge topic 'qt4-target-depends'Brad King2013-01-102-2/+17
|\ \ \ | | | | | | | | | | | | | | | | c8ee07d FindQt4: Add INTERFACE includes and defines to Qt4 targets
| * | | FindQt4: Add INTERFACE includes and defines to Qt4 targetsStephen Kelly2013-01-102-2/+17
| |/ /
* | | Merge topic 'tll-IMPORTED-targets'Brad King2013-01-101-0/+3
|\ \ \ | |_|/ |/| | | | | | | | 9cfe4f1 Allow target_link_libraries with IMPORTED targets.
| * | Allow target_link_libraries with IMPORTED targets.Stephen Kelly2013-01-081-0/+3
| |/ | | | | | | | | | | | | | | | | This makes it possible to use: target_link_libraries(foo LINK_INTERFACE_LIBRARIES bar) where foo is an IMPORTED target. Other tll() signatures are not allowed.
* | Merge topic 'LINK_LIBRARIES-property'Brad King2013-01-084-1/+31
|\ \ | | | | | | | | | | | | | | | 7653862 Add LINK_LIBRARIES property for direct target link dependencies 40cf3fb Make linking APIs aware of 'head' target
| * | Add LINK_LIBRARIES property for direct target link dependenciesStephen Kelly2013-01-084-1/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously we kept direct link dependencies in OriginalLinkLibraries. The property exposes the information in the CMake language through the get/set_property commands. We preserve the OriginalLinkLibraries value internally to support old APIs like that for CMP0003's OLD behavior, but the property is now authoritative. This follows up from commit d5cf644a (Split link information processing into two steps, 2012-11-01). This will be used later to populate the link interface properties when exporting targets, and will later allow use of generator expressions when linking to libraries with target_link_libraries. Also make targets depend on the (config-specific) union of dependencies. CMake now allows linking to dependencies or not depending on the config. However, generated build systems are not all capable of processing config-specific dependencies, so the targets depend on the union of dependencies for all configs.
* | | Merge topic 'include-dirs-convenience'Brad King2013-01-085-1/+36
|\ \ \ | | | | | | | | | | | | | | | | 9ce1b9e Add CMAKE_BUILD_INTERFACE_INCLUDES build-variable.
| * | | Add CMAKE_BUILD_INTERFACE_INCLUDES build-variable.Stephen Kelly2013-01-085-1/+36
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes set(CMAKE_BUILD_INTERFACE_INCLUDES ON) add the equivalent of set_property(TARGET tgt APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_CURRENT_BINARY_DIR}> ) to every target. If the headers are in CMAKE_CURRENT_SOURCE_DIR, and the generated headers are in CMAKE_CURRENT_BINARY_DIR, this is a convenient way to build a target bar, which depends on foo, just by using target_link_libraries() and adding the INTERFACE_INCLUDE_DIRECTORIES to the INCLUDE_DIRECTORIES of the target being linked. There will be more-convenient porcelain API to consume the property in the future.
* | | Merge topic 'deprecate-load_command'Brad King2013-01-085-14/+0
|\ \ \ | |/ / |/| | | | | | | | 09a0da7 Revert "load_command: Deprecate and document pending removal"
| * | Revert "load_command: Deprecate and document pending removal"Brad King2013-01-075-14/+0
| | | | | | | | | | | | | | | This reverts commit d2d43986e7f5013465473a71c393fc3897cecbac. We will add a policy to remove the command more gracefully.
* | | Merge topic 'osx-implicit-link-dirs'Brad King2013-01-072-3/+107
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | cc676c3 OS X: Detect implicit linker framework search paths 2dd67c7 OS X: Detect implicit link directories on modern toolchains ba58d0c OS X: Link with all framework search paths, not just the last
| * | | OS X: Detect implicit linker framework search pathsBrad King2012-12-112-3/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously we hard-coded a list of implicit framework directories but did not account for CMAKE_OSX_SYSROOT or for changes to the list across OS X versions. Instead we should automatically detect the framework directories for the active toolchain. The parent commit added the "-Wl,-v" option to ask "ld" to print its implicit directories. It displays a block such as: Framework search paths: /... Parse this block to extract the list of framework directories. Detection may fail on toolchains that do not list their framework directories, such as older OS X linkers. Always treat the paths <sdk>/Library/Frameworks <sdk>/System/Library/Frameworks <sdk>/Network/Library/Frameworks # Older OS X only /System/Library/Frameworks as implicit. Note that /System/Library/Frameworks should always be considered implicit so that frameworks CMake finds there will not override the SDK copies.
| * | | OS X: Detect implicit link directories on modern toolchainsBrad King2012-12-111-0/+97
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We detect the implicit link directories for the toolchain by adding a flag to get verbose output from the compiler front-end while linking the ABI detection binary. Newer OS X toolchains based on Clang do not add the implicit link directories with -L options to their internal invocation of "ld". Instead they use a linker that comes with the toolchain and is already configured with the proper directories. Add the "-Wl,-v" option to ask "ld" to print its implicit directories. It displays them in a block such as: Library search paths: /... Parse this block to extract the implicit link directories. While at it, remove the checks introduced by commit efaf335b (Skip implicit link information on Xcode, 2009-07-23) and commit 5195a664 (Skip implicit link info for multiple OS X archs, 2009-09-22). Discard the non-system link directories added by Xcode. Discard all detected implicit libraries in the multi-architecture case but keep the directories. The directories are still useful without the libraries just to suppress addition of explicit -L options for them.
* | | | Merge topic 'interface-includes-defines'Brad King2013-01-0713-30/+222
|\ \ \ \ | | |_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 894f52f Handle INTERFACE properties transitively for includes and defines. f5b1980 Populate the ExportedTargets member early in GenerateMainFile c67b812 Make cycles in target properties ignored, not an error. d0f950f Use mapped config properties to evaluate $<CONFIG> 26def17 Make all relevant targets available in the genex context. 0c657dc Add API to populate INTERFACE properties in exported targets. e04f737 Add API to extract target names from a genex string. b0c8f73 Add the TARGET_NAME generator expression. 77475fe Allow generator expressions to require literals. b2f1700 GenEx: Add expressions to specify build- or install-only values
| * | | Handle INTERFACE properties transitively for includes and defines.Stephen Kelly2013-01-055-1/+160
| | | | | | | | | | | | | | | | | | | | Contextually, the behavior is as if the properties content from another target is included in the string and then the result is evaluated.
| * | | Add the TARGET_NAME generator expression.Stephen Kelly2013-01-056-0/+17
| | | | | | | | | | | | | | | | It will be used as a preprocessing marker.
| * | | GenEx: Add expressions to specify build- or install-only valuesStephen Kelly2013-01-054-29/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is for specifying INCLUDE_DIRECTORIES relevant to the build-location or the install location for example: set_property(TARGET foo PROPERTY INTERFACE_INCLUDE_DIRECTORIES "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR};${CMAKE_CURRENT_SOURCE_DIR}>" "$<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>" ) A 'bar' target can then use: set_property(TARGET bar PROPERTY INCLUDE_DIRECTORIES "$<TARGET_PROPERTY:foo,INTERFACE_INCLUDE_DIRECTORIES>" ) and it will work whether foo is in the same project, or an imported target from an installation location, or an imported target from a build location generated by the export() command. Because the generator expressions are only evaluated at build-time, these new expressions are equivalent to the ZeroNode and OneNode. The GeneratorExpression test is split into parts. Some shells can't run the custom command as it is getting too long.
* | | | Merge topic 'test-genex-custom-command'Brad King2013-01-071-0/+6
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | 119bf4b Add test for custom command with a genex referring to a target.
| * | | | Add test for custom command with a genex referring to a target.Stephen Kelly2013-01-071-0/+6
| |/ / / | | | | | | | | | | | | | | | | This test failed before d8a59ea4 (Port cmGeneratorExpression to cmTarget from cmGeneratorTarget, 2012-10-27), and passes after.
* | | | Merge topic 'qt4-target-depends'Brad King2013-01-073-0/+45
|\ \ \ \ | |/ / / |/| | | | | | | | | | | 57a67bf Qt4: Add module dependencies to the IMPORTED targets
| * | | Qt4: Add module dependencies to the IMPORTED targetsStephen Kelly2013-01-073-0/+45
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This means for example, that consumers can use: target_link_libraries(foo ${QT_QTGUI_LIBRARIES}) instead of also needing to specify all 'public' dependencies: target_link_libraries(foo ${QT_QTGUI_LIBRARIES} ${QT_QTCORE_LIBRARIES} ) when using the IMPORTED targets. Also populate the IMPORTED_LINK_DEPENDENT_LIBRARIES property so CMake can help the linker find shared library dependencies.
* | | Merge topic 'fix-test-warnings'Brad King2013-01-031-1/+1
|\ \ \ | | | | | | | | | | | | | | | | b6346f2 Tests: Fix warning about unused variable
| * | | Tests: Fix warning about unused variableStephen Kelly2013-01-031-1/+1
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | Resolve this warning: ".../Tests/CMakeCommands/target_link_libraries/depB.cpp", line 8: warning: variable "a" was declared but never referenced DepA a; ^
* | | Merge topic 'include-dirs-debugging'Brad King2013-01-0313-13/+113
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | 0941d62 Add a way to print the origins of used include directories. 18a3195 Keep track of INCLUDE_DIRECTORIES as a vector of structs. 76ea420 Use cmsys::auto_ptr to manage cmCompiledGeneratorExpressions
| * | | Add a way to print the origins of used include directories.Stephen Kelly2013-01-034-0/+82
| | | |
| * | | Keep track of INCLUDE_DIRECTORIES as a vector of structs.Stephen Kelly2013-01-039-13/+31
| |/ / | | | | | | | | | | | | The struct can keep track of where the include came from, which gives us proper backtraces.
* | | Merge topic 'fix-12904-avoid-overflow'Brad King2013-01-033-0/+101
|\ \ \ | | | | | | | | | | | | | | | | | | | | e378ba5 Add CTestLimitDashJ test (#12904) 3247806 CTest: Prevent creation of unbounded number of tests in ctest (#12904)
| * | | Add CTestLimitDashJ test (#12904)David Cole2013-01-033-0/+101
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a test that verifies that when ctest -j 4 is called, at most, 4 tests are executed at any one time. The test works by running the same script as each of 100 tests. And then setting up test properties for DEPENDS, RUN_SERIAL, PROCESSORS and COST in order to get the tests to run in a semi-deterministic ordering, even in parallel. The script writes a file, sleeps for a bit, and then deletes the file. In the meantime, it counts files that currently exist, and emits output that triggers a test failure if the count of files is ever greater than 4. Prior to the commit that fixed bug #12904, this would result in a failed test because the output of some of the tests would indicate that more than 4 tests were running simultaneously. Now that this issue is resolved, this test will help guarantee that it stays resolved moving forward.
* | | Make targets depend on the link interface of their dependees.Stephen Kelly2013-01-034-1/+25
|/ /
* | Merge topic 'skip-variable-re-expansion'David Cole2012-12-118-0/+63
|\ \ | | | | | | | | | | | | 711b63f Add policy CMP0019 to skip include/link variable re-expansion
| * | Add policy CMP0019 to skip include/link variable re-expansionBrad King2012-12-078-0/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Historically CMake has always expanded ${} variable references in the values given to include_directories(), link_directories(), and link_libraries(). This has been unnecessary since general ${} evaluation syntax was added to the language a LONG time ago, but has remained for compatibility with VERY early CMake versions. For a long time the re-expansion was a lightweight operation because it was only processed once at the directory level and the fast-path of cmMakefile::ExpandVariablesInString was usually taken because values did not have any '$' in them. Then commit d899eb71 (Call ExpandVariablesInString for each target's INCLUDE_DIRECTORIES, 2012-02-22) made the operation a bit heavier because the expansion is now needed on a per-target basis. In the future we will support generator expressions in INCLUDE_DIRECTORIES with $<> syntax, so the fast-path in cmMakefile::ExpandVariablesInString will no longer be taken and re-expansion will be very expensive. Add policy CMP0019 to skip the re-expansion altogether in NEW behavior. In OLD behavior perform the expansion but improve the fast-path heuristic to match ${} but not $<>. If the policy is not set then warn if expansion actually does anything. We expect this to be encountered very rarely in practice.
* | | CMake: Stylistic changes and documentation tweaksDavid Cole2012-12-051-2/+0
| | | | | | | | | | | | ...for the contributed file and string TIMESTAMP sub-commands.
* | | CMake: Add TIMESTAMP subcommand to string and file commandsNils Gladitz2012-12-0517-0/+99
| | |
* | | Merge topic 'fix-11575-add-wix-support-to-cpack'David Cole2012-12-057-0/+182
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | a74bd47 CPack: Fix dashboard errors and warnings (#11575) ad0f735 CPack: Fix dashboard warnings (#11575) 0729ad4 CPack: Fix dashboard errors (#11575) 85baac1 CPack: Add a WiX Generator (#11575)
| * | | CPack: Add a WiX Generator (#11575)Nils Gladitz2012-12-037-0/+182
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | This new CPack generator produces an *.msi installer file. Requires having the WiX Toolset installed in order to work properly. Download the WiX Toolset installer "WiX36.exe" here: http://wix.codeplex.com/releases/view/93929
* | | Merge topic 'fix-cpack-tests'Brad King2012-11-303-15/+7
|\ \ \ | | | | | | | | | | | | | | | | 587b7b6 Tests: Use the right path to CPack value for running CPack tests