summaryrefslogtreecommitdiffstats
path: root/Source/cmGeneratorExpressionNode.cxx
Commit message (Collapse)AuthorAgeFilesLines
* clang-tidy: fix `performance-unnecessary-copy-initialization` lintsBen Boeckel2022-05-241-5/+5
|
* Genex: Add TARGET_BUNDLE_DIR_NAMEBen Leadbetter2022-04-221-1/+39
| | | | | | Evaluate to the name of the bundle directory for a given bundle target. Fixes: #23409
* cmTarget: Add `HasKnownObjectFileLocation()` shorthandHyper Nova Sun2022-04-111-1/+1
| | | | | | | | Allow `cmGlobalGenerator`s to decide `HasKnownObjectFileLocation()` per given `cmTarget` - `cmGlobalGenerator::HasKnownObjectFileLocation()` now takes an optional `cmGeneratorTarget` - `cmTarget::HasKnownObjectFileLocation()` added as a shorthand
* LINK_LIBRARIES: Evaluate separately for linking and usage requirementsBrad King2022-03-221-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | We evaluate `LINK_LIBRARIES` and `INTERFACE_LINK_LIBRARIES` for two purposes: * Constructing the link line. * Collecting usage requirements. We evaluate `INTERFACE_LINK_LIBRARIES` separately for each purpose in order to support the `$<LINK_ONLY:...>` generator expression used to express private link dependencies of a static library. Previously we only evaluated `LINK_LIBRARIES` for linking, and used that result for collecting usage requirements too. Therefore `$<LINK_ONLY:...>` does not work in `LINK_LIBRARIES`. With the introduction of `INTERFACE_LINK_LIBRARIES_DIRECT`, evaluation of `LINK_LIBRARIES` now needs to distinguish these two cases in order to honor link dependencies encountered through `$<LINK_ONLY:...>` without also exposing other usage requirements through private dependencies of a static library. Revise internal infrastructure to distinguish the two cases when evaluating `LINK_LIBRARIES`. Make the information available in code paths for `INTERFACE_LINK_LIBRARIES_DIRECT` and `LINK_ONLY`. Defer actually using the information to later commits. Issue: #22496
* Genex-LINK_GROUP: Add possibility to group libraries at link stepMarc Chevrier2022-02-281-0/+85
| | | | Fixes: #23121
* Genex: Add $<LINK_LIBRARY:...>Marc Chevrier2022-02-071-0/+63
| | | | | | | | This generator expression offers the capability, for the link step, to decorate libraries with prefix/suffix flags and/or adding any specific flag for each library. Fixes: #22812, #18751, #20078, #22703
* Source: fix more -Wmissing-prototypes warningsSean McBride2021-10-251-1/+2
|
* Source: fix many -Wmissing-prototypes warnings by marking functions staticSean McBride2021-10-251-4/+4
|
* Rename cmProp in cmValueMarc Chevrier2021-09-211-10/+11
|
* cmSystemTools::VersionCompare: use std::string for argumentsMarc Chevrier2021-09-171-4/+2
|
* Refactor: cmStandardLevelResolver::ComputeFeaturesAvailable returns cmPropMarc Chevrier2021-08-121-1/+1
|
* Ninja Multi-Config: Restore TARGET_OBJECTS support in cross-configsBrad King2021-07-211-1/+1
| | | | | | | | | | | | | | | | Since commit 2ae72ef74b (Xcode: Enable multi-arch TARGET_OBJECTS genex in [INTERFACE_]LINK_LIBRARIES, 2021-05-26, v3.21.0-rc1~126^2) the TARGET_OBJECTS genex, when referenced for linking, is now evaluated with EvaluateForBuildsystem enabled. This causes the object file paths to be computed with a buildsystem-specific placeholder for the configuration. This is normally fine because the placeholder will be evaluated by the native buildsystem tool using the proper configuration. However, the Ninja Multi-Config generator's `${CONFIGURATION}` placeholder may not have the correct value for cross-config object files. Switch back to using the per-config location of each object file for this generator. Fixes: #22436
* cmGeneratorExpressionNode: Factor out local variable for global generatorBrad King2021-07-201-3/+4
|
* HIP: Add language to CMakeRobert Maynard2021-06-071-2/+5
|
* cmGeneratorExpressionNode: Constify local variableBrad King2021-05-281-1/+1
|
* Genex: Fix grammatical error in TARGET_OBJECTS error messageKyle Edwards2021-02-241-2/+2
|
* Genex: Add TARGET_RUNTIME_DLLS genexKyle Edwards2021-02-241-0/+51
| | | | Co-Authored-by: Brad King <brad.king@kitware.com>
* Constify some code as suggested by clang-tidyCengizhan Pasaoglu2020-10-191-7/+7
|
* OBJECT libraries: Properly recognize if sources depend on configurationDeniz Bahadir2020-09-231-3/+2
| | | | Fixes: #21198
* cmMakefile::GetDefinition: return cmPropVitaly Stakhovsky2020-09-021-1/+1
|
* Merge topic 'target_genex_dependency'Brad King2020-09-011-2/+68
|\ | | | | | | | | | | | | | | f14b390198 GenEx: Remove unneeded dependencies from target info queries Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: Raul Tambre <raul@tambre.ee> Merge-request: !5127
| * GenEx: Remove unneeded dependencies from target info queriesRobert Maynard2020-09-011-2/+68
| | | | | | | | | | | | | | | | | | | | Only generate a graph dependency between a custom command and a target when the custom command queries for the file path of an artifact of the target. This makes generator expressions such as `TARGET_FILE_DIR` behave the same way as `TARGET_PROPERTY` which never generated a graph dependency.
* | Add ISPC compiler support to CMakeRobert Maynard2020-08-281-2/+3
|/
* Genex: $<TARGET_PROPERTY> strip emtpy list elements for predefined propertiesMarc Chevrier2020-07-211-4/+6
| | | | Fixes: #20951
* Genex $<COMPILE_LANGUAGE>: Extend contexts supportedMarc Chevrier2020-07-131-3/+6
| | | | | | | | When genex $<TARGET_PROPERTY:...> for properties like INCLUDE_DIRECTORIES is evaluated as part of add_custom_command or add_custom_target, genex $<COMPILE_LANGUAGE> and $<COMPLIE_LANG_AND_ID> should be supported. Fixes: #20926
* cmStandardLevelResolver: Added to handle standard level queriesRobert Maynard2020-07-011-5/+6
| | | | Refactored out of cmMakefile
* Genex: $<CONFIG:> now supports multiple configurationsRobert Maynard2020-06-241-12/+16
| | | | | Instead of having to do $<OR:$<CONFIG:Release>,$<CONFIG:MinSizeRel>> you can do $<CONFIG:Release,MinSizeRel>
* Refactor language standard computationJustin Goshi2020-06-161-2/+2
| | | | | Instead of mutating the configure-time cmTarget's properties at generate time, compute and store it in a cmGeneratorTarget field.
* cmMakefile: Change CompileFeatureKnown to take target name instead of targetJustin Goshi2020-06-151-1/+1
| | | | The implementation needs only the target name.
* add_library/add_executable: allow local alias to imported targetsMarc Chevrier2020-06-021-0/+8
| | | | Fixes: #20641
* Single location for cmProp typedefVitaly Stakhovsky2020-06-011-0/+1
|
* Merge topic 'stl-support'Brad King2020-05-011-2/+1
|\ | | | | | | | | | | | | 8d4a9ee398 Refactoring: rename "cm_static_string_view.hxx" as <cmext/string_view> Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4689
| * Refactoring: rename "cm_static_string_view.hxx" as <cmext/string_view>Marc Chevrier2020-04-301-2/+1
| |
* | cmGeneratorTarget::GetProperty: return cmPropVitaly Stakhovsky2020-04-291-9/+8
|/
* Genex: Add generator expressions $<DEVICE_LINK> and $<HOST_LINK>Marc Chevrier2020-04-191-0/+68
| | | | | | These generator expressions can only be used in link options properties. These expressions return the arguments respectively for device and host link step, otherwise return an empty string.
* Refactoring: add cm::contains to <cmext/algorithm>Marc Chevrier2020-04-171-4/+5
|
* cmTarget::GetProperty: return cmPropVitaly Stakhovsky2020-03-301-5/+5
|
* cmTarget: minor code improvementsVitaly Stakhovsky2020-03-171-3/+3
|
* Genex: Add $<LINK_LANGUAGE:...> and $<LINK_LANG_AND_ID:...>Marc Chevrier2020-02-261-0/+149
| | | | | | This MR may help to solve issues #19757 and #18008 Fixes: #19965
* cm::String: enhance compatibility with STLMarc Chevrier2020-01-251-1/+1
|
* Revise include order using clang-format-6.0Kitware Robot2019-10-011-17/+18
| | | | | Run the `clang-format.bash` script to update our C and C++ code to a new include order `.clang-format`. Use `clang-format` version 6.0.
* Languages: Add support for Objective-C++Steve Wilson2019-09-281-1/+7
| | | | | | | | | | | | | | | | | Add entries in Modules and Modules/Platform to support Objective-C++ compiler determination and identification. Add Modules to check Objective-C++ compiler flags, source compilations, program checks, etc... Use OBJCXX as the designator of the language, eg: project(foo OBJCXX) Add various tests for Objective-C++ language features. Add tests to preserve C++ handling of .M and .mm files when Objective-C++ is not a configured language. Co-authored-by: Cristian Adam <cristian.adam@gmail.com>
* cmGeneratorExpression: Remove Evaluate overload by parameter re-orderingDaniel Eiband2019-09-221-8/+8
| | | | | | | | Simplify by re-ordering parameters of cmCompiledGeneratorExpression::Evaluate so that frequently used parameters are before less frequently used parameters. This allows with little extra arguments to get rid of one Evaluate overload, which makes it easier to implement the cmGeneratorExpression::Evaluate utility. The latter would otherwise need four overloads.
* cmGeneratorExpression: Move quiet flag to cmCompiledGeneratorExpressionDaniel Eiband2019-09-221-2/+3
| | | | | | The quiet flag is false for all but one call to Evaluate. Make the quiet flag a setter of cmCompiledGeneratorExpression to be able to remove it from the Evaluate function signature.
* cmstd: Modernize CMake system headersMarc Chevrier2019-09-201-1/+2
| | | | | | | | | | | | | | Provide a standardized way to handle the C++ "standard" headers customized to be used with current CMake C++ standard constraints. Offer under directory `cm` headers which can be used as direct replacements of the standard ones. For example: #include <cm/string_view> can be used safely for CMake development in place of the `<string_view>` standard header. Fixes: #19491
* clang-tidy: modernize-deprecated-headersRegina Pfeifer2019-09-161-4/+4
|
* clang-tidy: Replace typedef with usingRegina Pfeifer2019-09-041-1/+1
| | | | | | | | Automate the conversion with perl -i -0pe 's/typedef ([^;]*) ([^ ]+);/using $2 = $1;/g' then manually fix a few places.
* Merge topic 'source_sweep_ostringstream_single'Brad King2019-08-261-3/+3
|\ | | | | | | | | | | | | 3b2b02825d Source sweep: Replace std::ostringstream when used with a single append Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3726
| * Source sweep: Replace std::ostringstream when used with a single appendSebastian Holtermann2019-08-231-3/+3
| | | | | | | | | | | | | | This replaces `std::ostringstream`, when it is written to only once. If the single written argument was numeric, `std::to_string` is used instead. Otherwise, the single written argument is used directly instead of the `std::ostringstream::str()` invocation.
* | Source sweep: Replace cmExpandList with the shorter cmExpandedListSebastian Holtermann2019-08-231-6/+3
|/ | | | | | | | | | | | This replaces the code pattern ``` std::vector<std::string> args; cmExpandList(valueStr, args, ...) ``` with ``` std::vector<std::string> args = cmExpandedList(valueStr, ...) ```