summaryrefslogtreecommitdiff
path: root/Tests/GeneratorExpression
Commit message (Collapse)AuthorAgeFilesLines
* Apple: text-based stubs: manage imported configurations mappingMarc Chevrier2023-03-052-0/+17
|
* Genex: Fix CONFIG on imported target with no explicit mappingLuis Caro Campos2022-12-162-0/+8
| | | | | | | | | When evaluating the `$<CONFIG>` genex on an imported target has the `IMPORTED_CONFIGURATIONS` property set, the current project has a config that does not match any of those, and no explicit configuration mappings are defined, fall back to the same configuration as `IMPORTED_LOCATION`. Fixes: #24222
* Tests: Improve GeneratorExpression SHELL_PATH case robustness on MSYS 1.0Brad King2022-11-022-4/+20
| | | | | | | | | | | | Since commit ca6ba3fee5 (Genex: Add a SHELL_PATH expression, 2015-09-24, v3.4.0-rc1~37^2) and commit 21da25d2a8 (Tests: Generalize GeneratorExpression MSYS path conversion workaround, 2019-03-11, v3.15.0-rc1~407^2~1) we use a prefix string to prevent the MSYS 1.0 shell from converting absolute paths of the form `/c/...` to windows-style paths. In the newer `mingw.osdn.io` distribution of MSYS 1.0, the `bash` shell now also converts paths that appear after `:`. We have no way to add a prefix string in that context, so perform the test's check of the `SHELL_PATH` genex value at generate time instead.
* Genex: $<TARGET_PROPERTY> strip emtpy list elements for predefined propertiesMarc Chevrier2020-07-211-2/+2
| | | | Fixes: #20951
* Genex: $<CONFIG:> now supports multiple configurationsRobert Maynard2020-06-242-7/+5
| | | | | Instead of having to do $<OR:$<CONFIG:Release>,$<CONFIG:MinSizeRel>> you can do $<CONFIG:Release,MinSizeRel>
* add_custom_command: Delay slash conversion until after genex evaluationSebastian Lipponer2019-09-132-4/+25
| | | | | | Generator expressions may contain or produce backslashes. Fixes: #19553
* Genex: PlatformId now can match against a list of ids.Robert Maynard2019-06-032-0/+6
|
* Relax the usage of TARGET_OBJECTS generator expressionRobert Maynard2019-04-191-0/+45
| | | | | The geneator expression can now be used with static, shared, and module libraries and executables.
* Genex: Teach SHELL_PATH to support a list of pathsHenri Manson2019-03-112-0/+14
| | | | | | | Extend the genex added by commit ca6ba3fee5 (Genex: Add a SHELL_PATH expression, 2015-09-24, v3.4.0-rc1~37^2) to accept a `;`-list of paths, convert them all, and generate a list separated by the native shell `PATH``` separator.
* Tests: Generalize GeneratorExpression MSYS path conversion workaroundBrad King2019-03-112-8/+24
| | | | | Use MSYS2's `MSYS2_ARG_CONV_EXCL` environment variable to prevent path conversion where possible.
* Revise C++ coding style using clang-format-6.0Kitware Robot2018-06-012-14/+14
| | | | | | | | | | | | Run the `clang-format.bash` script to update all our C and C++ code to a new style defined by `.clang-format`. Use `clang-format` version 6.0. * If you reached this commit for a line in `git blame`, re-run the blame operation starting at the parent of this commit to see older history for the content. * See the parent commit for instructions to rebase a change across this style transition commit.
* Genex: Add IN_LIST logical operatorMarc Chevrier2018-02-072-0/+10
| | | | Implements #17679
* sourceFile properties: add property INCLUDE_DIRECTORIESMarc Chevrier2018-01-243-2/+37
|
* sourceFile properties: add property COMPILE_OPTIONSMarc Chevrier2018-01-235-48/+28
| | | | | | | Add the support of per-source property COMPILE_OPTIONS, including generator expressions support. Related: #17507
* Genex: Enable COMPILE_LANGUAGE for COMPILE_DEFINITIONS with VS and XcodeBrad King2018-01-121-4/+2
| | | | | | | | | | | | | | | The set of compile flags used for a target's C and C++ sources is based on the linker language. By default this is always the C++ flags if any C++ sources appear in the target, and otherwise the C flags. Therefore we can define the `COMPILE_LANGUAGE` generator expression in `COMPILE_DEFINITIONS` to match the selected language. This is not exactly the same as for other generators, but is the best VS and Xcode can do. It is also sufficient for many use cases since the set of definitions for C and C++ is frequently similar but may be distinct from those for other languages like CUDA. Issue: #17435
* Genex: Per-source $<COMPILE_LANGUAGE:...> supportMarc Chevrier2017-12-133-0/+32
| | | | Fixes: #17542
* Add generator expression support to per-source COMPILE_DEFINITIONSMarc Chevrier2017-12-053-3/+20
| | | | | | This allows users to specify different genex-based compile definitions for each file in a target. Fixes: #17508
* VS,Xcode: Fix TARGET_PROPERTY genex in source COMPILE_FLAGS propertyBrad King2017-10-033-4/+15
| | | | | | This already worked in other generators. Also add a test case. Fixes: #17314
* Genex: Allow TARGET_OBJECTS to be used everywhereRobert Maynard2017-04-184-0/+50
| | | | | | | | | Previously the `TARGET_OBJECTS` generator expression was limited only to use in a buildsystem context so that Xcode's placeholders in object file paths can be evaluated. Lift this restriction so that the expression can at least be used in most settings. Co-Author: Brad King <brad.king@kitware.com>
* Merge topic 'genex-if'Brad King2017-01-272-0/+9
|\ | | | | | | | | 895f7f16 Genex: Add `IF` generator expression
| * Genex: Add `IF` generator expressionColby Pike2017-01-262-0/+9
| | | | | | | | | | | | | | | | This allows a single condition to be used to choose between two alternatives. Without this the condition must be duplicated with one surrounded by `NOT`. Closes: #15585
* | Tests: Extend GeneratorExpression to work with more configurationsBrad King2017-01-262-1/+5
| | | | | | | | Add missing pieces for RelWithDebInfo and MinSizeRel.
* | Tests: Teach GeneratorExpression to cover spaces in include dirsBrad King2017-01-262-3/+3
| | | | | | | | | | Add a space to the imported include directories used for the test. This works around funny quoted-`;` interpretation by Visual Studio.
* | Tests: Simplify GeneratorExpression imported include directory checkBrad King2017-01-262-15/+9
|/ | | | Do not duplicate the list of include directories 4 times.
* Add generator expression support to per-source COMPILE_FLAGSZsolt Parragi2016-10-282-0/+4
| | | | | | This allows users to specify different genex-based compile flags for each file in a target, e.g. compiling just a single file with `Od/Ox` in release builds on Visual Studio.
* Tests: Add test for MAP_IMPORTED_CONFIG_<CONFIG> empty fallbackBrad King2016-10-202-0/+10
|
* Revise C++ coding style using clang-formatKitware Robot2016-05-163-17/+18
| | | | | | | | | | | | | Run the `Utilities/Scripts/clang-format.bash` script to update all our C++ code to a new style defined by `.clang-format`. Use `clang-format` version 3.8. * If you reached this commit for a line in `git blame`, re-run the blame operation starting at the parent of this commit to see older history for the content. * See the parent commit for instructions to rebase a change across this style transition commit.
* Genex: Add a SHELL_PATH expressionStefan Kislinskiy2015-09-282-3/+38
| | | | | | | | | Some commands on Windows do not understand forward slash paths and require backslashes. In order to help projects generate shell invocations of such commands, provide a generator expression to convert paths to the shell-preferred path format for the current generator. This will allow custom commands to generate paths the same way CMake does for compiler command invocations.
* Tests: Simplify GeneratorExpression check implementationBrad King2015-09-232-3/+3
| | | | | | Use a function instead of a macro so we do not need an extra layer of backslashes. Use a bracket argument to avoid another layer of extra backslashes.
* Genex: Only evaluate TARGET_OBJECTS to determine target sources.Stephen Kelly2014-04-024-72/+0
| | | | | | | | | | The output of this expression may contain macros for IDEs to replace such as $(Configuration), $(CURRENT_ARCH) etc. To avoid generating content which is not usable in other contexts, report an error if there is an attempt to use it in other contexts. This commit may be reverted in the future if a solution to the above difference is implemented.
* cmTarget: Allow any generator expression in SOURCES property.Stephen Kelly2014-04-021-1/+1
| | | | | | | | | | | | | | | | Remove use of UseObjectLibraries from Makefile and Ninja generators. It is not needed now because those generators use GetExternalObjects which already contains the objects from object libraries. The VS10 generator calls both the UseObjectLibraries and the GetExternalObjects methods. Ensure that duplicates are not created by skipping objects from object libraries in handling of GetExternalObjects. Similarly, fix VS6, VS7 and Xcode object handling by skipping external objects from OBJECT_LIBRARY usage as appropriate. The error message in the BadSourceExpression1 test is now reported by the generator expression evaluator, so it has different text.
* Genex: Evaluate TARGET_OBJECTS as a normal expression.Stephen Kelly2014-03-314-0/+72
|
* Genex: Use case-sensitive comparison for COMPILER_ID.Stephen Kelly2014-01-083-0/+51
|
* Genex: Add a nullary form for CONFIGStephen Kelly2014-01-072-0/+2
| | | | | | | | | | | | | This is consistent with other similar expressions such as PLATFORM_ID, and makes the CONFIGURATION expression obsolete. Fix an off-by-one error in GeneratorExpressionContent::EvaluateParameters exposed by a unit test. Remove the test for 'bad' nullary use of $<CONFIG>. Add a unit test to verify that $<CONFIG> and $<CONFIGURATION> have the same value.
* Genex: Make EQUAL support upper case binary literalsStephen Kelly2014-01-062-9/+13
| | | | | | | | As C++11, python, D and java do. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3472.pdf Add test for uppercase hex literals.
* Genex: Add EQUAL expression.Stephen Kelly2014-01-062-0/+42
| | | | Support decimal, hex, octal and binary literals.
* Genex: Accept arbitrary content in *_CASE and MAKE_C_IDENTIFIER.Stephen Kelly2013-12-192-6/+6
|
* Genex: Add {UPPER,LOWER}_CASE and MAKE_C_IDENTIFIER.Stephen Kelly2013-11-272-0/+6
|
* Merge topic 'test-property-genex'Brad King2013-10-073-1/+73
|\ | | | | | | | | | | | | 6a47c37 add_test: Mention generator expressions in old-style add_test docs d331292 cmTestGenerator: Evaluate generator expressions in test properties 6fe5c4a cmTestGenerator: Separate test properties for each configuration
| * cmTestGenerator: Evaluate generator expressions in test propertiesBen Boeckel2013-09-203-1/+73
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is useful for cases like: add_test(NAME mytest COMMAND mydriver $<TARGET_FILE:myexe>) set_tests_properties(mytest PROPERTIES REQUIRED_FILES "$<TARGET_FILE:myexe>" WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>" ) In this example we require the actual test executable to exist to run the test in addition to the test driver at argv[0]. Also the $<CONFIGURATION> expression improves over \${CTEST_CONFIGURATION_TYPE} because the latter is not normalized for case-sensitive filesystems.
* | Genex: Add the PLATFORM_ID expression.Stephen Kelly2013-08-282-0/+13
|/
* Genex: Fix segfault when parsing ends with parameter expectation.Stephen Kelly2013-08-132-0/+4
| | | | | | | The extendResult method expects a non-empty parameters vector, as assured by the normal case. Avoid calling the method when the parser finds an incomplete generator expression, but has already entered the state of expecting to find parameters.
* Add the ALIAS target concept for libraries and executables.Stephen Kelly2013-08-023-2/+16
| | | | | | | | | | | | | | | | | * The ALIAS name must match a validity regex. * Executables and libraries may be aliased. * An ALIAS acts immutable. It can not be used as the lhs of target_link_libraries or other commands. * An ALIAS can be used with add_custom_command, add_custom_target, and add_test in the same way regular targets can. * The target of an ALIAS can be retrieved with the ALIASED_TARGET target property. * An ALIAS does not appear in the generated buildsystem. It is kept separate from cmMakefile::Targets for that reason. * A target may have multiple aliases. * An ALIAS target may not itself have an alias. * An IMPORTED target may not have an alias. * An ALIAS may not be exported or imported.
* Genex: Fix $<CONFIG> with IMPORTED targets and multiple locations.Stephen Kelly2013-07-242-0/+43
| | | | | | | | The old code checked only that there was a LOCATION for the specified config, but did not check whether the config actually mapped. Task-number: 14292
* Split the GeneratorExpression test into a third part.Stephen Kelly2013-06-283-9/+22
| | | | | | | Avoid command lines beyond NMake limits. http://open.cdash.org/testDetails.php?test=196577461&build=2949683 expanded command line '...' too long
* Add generator expressions for version comparision.Stephen Kelly2013-06-122-0/+12
|
* Fix handling of commas in arbitrary content in genexes.Stephen Kelly2013-05-162-0/+20
| | | | | As the comma is the parameter separator, it needs to be re-added when evaluating to reconstruct arbitrary content.
* 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.