summaryrefslogtreecommitdiffstats
path: root/Tests/GeneratorExpression
Commit message (Collapse)AuthorAgeFilesLines
* Add $<SEMICOLON> generator expression.Jean-Christophe Fillion-Robin2013-03-122-0/+4
| | | | | This expression is useful to put a ';' in a command line argument without dividing the argument during CMake list expansion.
* Fix the tests for evaluating includes and defines.Stephen Kelly2013-02-231-4/+4
| | | | | | | | | | | | We should also check whether the INTERFACE_ variant of a property is being read, and in the case of the compile definitions, we should test the _<CONFIG> suffixed variants. That is already available through the use of the methods. This way, we use the ALREADY_SEEN optimization when evaluating the includes of a target in 'external' generator expressions, ie, those used in a add_custom_command invokation, as opposed to evaluating the INCLUDE_DIRECTORIES of a target itself via GetIncludeDirectories.
* Expand includes and defines transitively in 'external' genexes.Stephen Kelly2013-02-233-1/+40
| | | | | | | | | | | | | | | This means that we can use expressions of the form $<TARGET_PROPERTY:foo,INTERFACE_INCLUDE_DIRECTORIES> to get a list of the interface include directories of foo, including those coming from dependencies. We can't have a test of a target which has a single include directory in its INCLUDE_DIRECTORIES because the shell on the MSYS platforms transforms a single include directory to include a prefix, which is not what the test expects. We test a target with two directories instead as a means to test a target with no link dependencies.
* Make it an error for INSTALL_PREFIX to be evaluated.Stephen Kelly2013-01-312-2/+0
| | | | | | An empty string is not likely going to produce expected results in any evaluation context. It is replaced by preprocessing currently.
* Add the INSTALL_PREFIX genex.Stephen Kelly2013-01-272-0/+2
|
* Add the TARGET_NAME generator expression.Stephen Kelly2013-01-052-0/+4
| | | | 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 'fix-genex-CONFIG'Brad King2012-11-062-0/+9
|\ | | | | | | | | 9be64f3 GenEx: Use case insensitive comparison for $<CONFIG:...>
| * GenEx: Use case insensitive comparison for $<CONFIG:...>Stephen Kelly2012-11-052-0/+9
| | | | | | | | | | This fixes a regression introduced by commit f1eacf0e (cmGeneratorExpression: Re-write for multi-stage evaluation).
* | GenEx: Test early determination of AND and ORStephen Kelly2012-10-202-0/+6
|/ | | | | | | | | | | | | | | | It should be possible for example to do this: "$<AND:${FOO},$<BOOL:${TGT}>,$<BOOL:$<TARGET_PROPERTY:${TGT},PROP>" such that it works simliarly to the C code: if (foo && tgt && tgt->prop()) { } The example of generator expression code is a little bit contrived as it could be written other ways with the same functionality. Nevertheless, as these cases already work and are intentional, test for them.
* GenEx: Replace some failing tests with Borland and NMake makefiles.Stephen Kelly2012-10-172-6/+4
| | | | | The '<<' is a special sequence on those platforms, so it can't appear in the test.
* GenEx: Fix termination bugs in generator expression parser.Stephen Kelly2012-10-172-0/+44
| | | | | | | Content which is incomplete as a generator expression could cause segfaults by advancing an iterator beyond end() and dereferencing it. Such incomplete generator expressions should be treated as plain text instead.
* GenEx: Parse colon after arguments separator colon specially.Stephen Kelly2012-10-172-0/+10
| | | | | | The rationale is similar to that in commit b3d8f5da (GenEx: Parse comma after colon tokens specially, 2012-10-04), in that colon tokens should not be parsed as identifier-argument delimiters after the first colon.
* GenEx: Add tests for "0" and "1" expressions with literal commas.Stephen Kelly2012-10-092-0/+4
|
* GenEx: Add test for $<BOOL:> with empty parameter.Stephen Kelly2012-10-092-0/+2
|
* GenEx: Parse comma after colon tokens speciallyStephen Kelly2012-10-092-0/+4
| | | | | | | | | | | | | | | Otherwise the comma is treated as plain text by ParseContent. $<STREQUAL:,> should be valid and true. $<STREQUAL:,something> should be valid and false. $<STREQUAL:,,> should be non-valid as it is 3 parameters. $<STREQUAL:something,,> should be non-valid as it is 3 parameters. Additionally, this allows reporting the correct error for other expressions. For example $<TARGET_PROPERTY:,> should be invalid because it has an empty target and empty property. It shouldn't attempt to read the property ',' on the 'implicit this' target.
* Extend the generator expression language with more logic.Stephen Kelly2012-09-282-0/+34
| | | | | | | Generator expressions for comparing strings, evaluating strings as booleans, and for creating literal right-angle-brackets and commas are added. Those may be needed in some cases where they appear in literals.
* Add $<CONFIG:...> boolean query generator expressionBrad King2012-08-152-0/+4
| | | | | | | This expression evaluates to '1' or '0' to indicate whether the build configuration for which the expression is evaluated matches tha named configuration. In combination with the "$<0:...>" and "$<1:...>" expressions this allows per-configuration content to be generated.
* Add boolean generator expressionsBrad King2012-08-152-0/+49
Add generator expressions that combine and use boolean test results: $<0:...> = empty string (ignores "...") $<1:...> = content of "..." $<AND:?[,?]...> = '1' if all '?' are '1', else '0' $<OR:?[,?]...> = '0' if all '?' are '0', else '1' $<NOT:?> = '0' if '?' is '1', else '1' These will be useful to evaluate (future) boolean query expressions and condition content on the results. Include tests and documentation.