summaryrefslogtreecommitdiffstats
path: root/Source/cmGeneratorTarget.h
Commit message (Collapse)AuthorAgeFilesLines
* Ninja Multi-Config: Fix issue with framework dependencies and AutogenKyle Edwards2020-02-171-1/+1
| | | | Fixes: #20345
* Source: use std::string in place of const char*Vitaly Stakhovsky2020-01-291-3/+3
|
* macOS: Add OSX_COMPATIBILITY_VERSION and OSX_CURRENT_VERSION propertiesIsuru Fernando2020-01-241-2/+10
| | | | Fixes: #17652
* target_link_libraries: Fix out-of-dir linking of a list of targetsBrad King2020-01-161-0/+8
| | | | | | | | | | | | | | In a case like target_link_libraries(targetInOtherDir PUBLIC "$<1:a;b>") then all entries in the list need to be looked up in the caller's scope. Previously our `::@(directory-id)` suffix would apply only to the last entry. Instead surround the entire entry by a pair `::@(directory-id);...;::@` so that the `::@` syntax can encode a directory lookup scope change evaluated as the list is processed. Fixes: #20204
* Add set_property option: DEPRECATIONJoseph Snyder2020-01-021-0/+7
| | | | | | | | | | | | Add a new property flag for a target which contains a message regarding deprecation status. Add a warning at "Generate" time if a linked target is marked as deprecated. Expand ExportImport test to ensure that new property is being set and passed correctly. Ensure that the message is shown during the "Generate" step run of the ExportImport test.
* Ninja: Add multi-config variantKyle Edwards2019-12-131-0/+1
| | | | Co-Authored-by: vector-of-bool <vectorofbool@gmail.com>
* Link properties: must be transitive over private dependency on static libraryMarc Chevrier2019-12-091-2/+4
| | | | Fixes: #20022
* Merge topic 'unity-HEADER_FILE_ONLY'Brad King2019-11-121-1/+8
|\ | | | | | | | | | | | | 9a5418320e Unity: Don't include sources with HEADER_FILE_ONLY property set Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4023
| * Unity: Don't include sources with HEADER_FILE_ONLY property setCristian Adam2019-11-111-1/+8
| | | | | | | | | | | | Fixes: #19946 Fixes: #19947 Co-authored-by: Craig Scott <craig.scott@crascit.com>
* | Merge topic 'modernize-memory-management'Kyle Edwards2019-11-061-10/+14
|\ \ | | | | | | | | | | | | | | | | | | 2a67ebf71b cmGeneratorTarget: modernize memory management Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3997
| * | cmGeneratorTarget: modernize memory managementMarc Chevrier2019-11-051-10/+14
| | |
* | | INSTALL_NAME_DIR: Add support for generator expressionsKyle Edwards2019-11-041-1/+2
|/ /
* | cmGeneratorTarget: Add GetAllConfigCompileLanguages methodBrad King2019-10-171-0/+4
| | | | | | | | | | Return all languages needed to compile sources in the target in any configuration.
* | cmGeneratorTarget: Return non-const sources from GetAllConfigSourcesBrad King2019-10-171-1/+1
|/ | | | | We need a non-const pointer to `cmSourceFile` instances in order to call `GetOrDetermineLanguage` on them.
* PCH: Generate sources during Compute stepCristian Adam2019-10-091-0/+9
|
* Revise include order using clang-format-6.0Kitware Robot2019-10-011-5/+5
| | | | | 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.
* Precompile Headers: Add REUSE_FROM signatureCristian Adam2019-09-171-0/+3
| | | | | | | Add the ability to share precompiled headers artifacts between targets. Fixes: #19659
* clang-tidy: modernize-deprecated-headersRegina Pfeifer2019-09-161-1/+1
|
* clang-tidy: Replace typedef with usingRegina Pfeifer2019-09-041-14/+14
| | | | | | | | Automate the conversion with perl -i -0pe 's/typedef ([^;]*) ([^ ]+);/using $2 = $1;/g' then manually fix a few places.
* Precompile headers: Add methods to generate PCH sourcesCristian Adam2019-08-281-0/+5
| | | | Co-Author: Daniel Pfeifer <daniel@pfeifer-mail.de>
* PCH: add PRECOMPILE_HEADERS to special propertiesDaniel Pfeifer2019-08-261-0/+7
|
* Genex: Memoize usage requirement TARGET_PROPERTY existenceBrad King2019-07-231-0/+5
| | | | | | | | | | | | | | | For each usage requirement (such as `INTERFACE_COMPILE_DEFINITIONS` or `INTERFACE_INCLUDE_DIRECTORIES`), the value of the generator expression `$<TARGET_PROPERTY:target,prop>` includes the values of the same property from the transitive closure of link libraries of the target. In cases that a target's transitive closure of dependencies does not depend on the target being linked (the "head" target), we can memoize whether or not a usage requirement property exists at all for that target. When a usage requirement does not exist for a target, we can skip evaluating it for every consuming target. Fixes: #18964, #18965
* Genex: Optimize usage requirement TARGET_PROPERTY recursionBrad King2019-07-231-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | In large projects the generation process spends a lot of time evaluating usage requirements through transitive interface properties on targets. This can be seen in a contrived example with deep dependencies: set(prev "") foreach(i RANGE 1 500) add_library(a${i} a.c) target_compile_definitions(a${i} PUBLIC A${i}) target_link_libraries(a${i} PUBLIC ${prev}) set(prev a${i}) endforeach() For each usage requirement (such as `INTERFACE_COMPILE_DEFINITIONS` or `INTERFACE_INCLUDE_DIRECTORIES`), the value of the generator expression `$<TARGET_PROPERTY:target,prop>` includes the values of the same property from the transitive closure of link libraries of the target. Previously we computed this by constructing a generator expression string like `$<TARGET_PROPERTY:lib,INTERFACE_COMPILE_DEFINITIONS>` and recursively evaluating it with the generator expression engine. Avoid the string construction and parsing by creating and using a dedicated evaluation method `cmGeneratorTarget::EvaluateInterfaceProperty` that looks up the properties directly. Issue: #18964, #18965
* De-duplicate checks for whether a platform uses Windows DLLsBrad King2019-07-121-1/+0
|
* Refactor checks for whether a target has an import libraryBrad King2019-07-121-2/+6
| | | | Use `HasImportLibrary` for such checks.
* BUILD_RPATH/INSTALL_RPATH: Add generator expression supportKyle Edwards2019-06-251-1/+7
| | | | Fixes: #19423
* Refactor: introduce method cmGeneratorTarget::GetFilePostfixMarc Chevrier2019-05-021-0/+3
|
* Refactor: Add new methods to retrieve prefix and suffixMarc Chevrier2019-04-101-0/+14
|
* Genex: Add capability to retrieve base name for various target artifactsMarc Chevrier2019-04-081-0/+3
| | | | This new capability is required to solve efficiently issue #18771
* Fix invalid ///! doxygen comment line startsSebastian Holtermann2019-03-311-3/+3
| | | | | In various places `///!` was used to start a comment line. This is not valid Doygen syntax. This patch replaces `///!` comment starts with `//!`.
* Create and use `cmGeneratorTarget::Names`Saleem Abdulrasool2019-02-111-6/+12
| | | | | | Rather than taking a number of out parameters for the various names, create a structure that is reused for both `GetLibraryNames` and `GetExecutableNames`. Replace uses according to the new interface.
* clang-tidy: Use `= delete`Regina Pfeifer2019-01-291-2/+3
|
* cleanup: Prefer compiler provided special member functionsRegina Pfeifer2019-01-251-5/+0
|
* clang-tidy: Use `= default`Regina Pfeifer2019-01-251-5/+5
| | | | | | Suppress some cases in `Source/cmGeneratorExpressionNode.cxx` and `Source/cmUVHandlePtr.h` where a few older compilers require a user-defined default constructor (with `{}`).
* cmTarget,cmGeneratorTarget: Add optional `before` parameter to AddSourceSebastian Holtermann2019-01-181-2/+2
| | | | | | The new optional `before` parameter in `cmTarget::AddSource` and `cmGeneratorTarget::AddSource` allows to prepend a source file to the sources list instead of appending it.
* clang-tidy: Use default member initializationRegina Pfeifer2018-12-151-31/+13
|
* POSITION_INDEPENDENT_CODE: Manage link flags for executablesMarc Chevrier2018-11-111-0/+5
| | | | Fixes: #14983, #16561
* Merge topic 'fix-custom-target-with-csharp'Brad King2018-11-011-5/+1
|\ | | | | | | | | | | | | | | | | 9040df31e2 Merge branch 'backport-fix-custom-target-with-csharp' 1acd1c2b50 CSharp: Fix regression in VS project type selection for custom target a56edad6d6 CSharp: Fix regression in VS project type selection for custom target Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !2549
| * CSharp: Fix regression in VS project type selection for custom targetBrad King2018-10-311-5/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A target created by `add_custom_target` should always be a `.vcxproj` file even if it has `.cs` sources involved in custom commands and such. The latter case was broken by refactoring in commit v3.12.0-rc1~160^2~7 (remove TargetIsCSharpOnly() and use methods from cmGeneratorTarget, 2018-03-19). The reason is that the `HasLanguage` method added by commit v3.12.0-rc1~239^2~6 (cmGeneratorTarget: add HasLanguage() as wrapper for GetLanguages(), 2018-03-19) does not check the target type and so is not a suitable check for deciding the project file extension. The `HasLanguage` method was an attempt at an abstraction that turns out not to work very well. Replace it with a dedicated `IsCSharpOnly` method that considers the target type, sources, and non-transitive `LINKER_LANGUAGE`. Fixes: #18515
* | Add generator APIs to get build settings with backtracesBrad King2018-10-181-6/+25
| | | | | | | | | | | | In cmGeneratorTarget and cmLocalGenerator we offer several APIs to get build settings like include directories, compile definitions, source files, etc. Add corresponding APIs that include backtrace information.
* | add_dependencies: Track backtraces internallyBrad King2018-10-181-2/+1
| | | | | | | | | | Record backtraces for "utility" dependencies created by `add_dependencies` calls.
* | cmLinkItem: Add backtraceBrad King2018-10-181-1/+3
| | | | | | | | | | | | Carry a backtrace on every link item, not just link implementation items. For now the non-impl items will still have empty backtraces at runtime, but this will allow us to introduce values over time.
* | cmGeneratorTarget::GetExportMacro: return const std::string*Vitaly Stakhovsky2018-10-161-1/+1
|/
* Merge topic 'fix-csharp-target-type'Brad King2018-10-031-1/+1
|\ | | | | | | | | | | | | | | 375b420fdf CSharp: Fix regression in VS project type selection 8b21aa0af0 VS: Fix CSharp flag selection when linking to a static C++ library Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !2427
| * CSharp: Fix regression in VS project type selectionBrad King2018-10-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A that target contains only `.cs` sources should be generated as a `.csproj` project even if it links to non-CSharp static libraries. The latter case was broken by refactoring in commit v3.12.0-rc1~160^2~7 (remove TargetIsCSharpOnly() and use methods from cmGeneratorTarget, 2018-03-19). The reason is that the `HasLanguage` method added by commit v3.12.0-rc1~239^2~6 (cmGeneratorTarget: add HasLanguage() as wrapper for GetLanguages(), 2018-03-19) enforces its "exclusive" check on the combined set of source file languages and the link language. To restore the original `TargetIsCSharpOnly` semantics, update `HasLanguage` to enforce exclusiveness only on the list of sources. Fixes: #18239
* | LINK_DIRECTORIES: Add new properties and commandsMarc Chevrier2018-09-251-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | These new capabilities enable to manage link directories Two new properties: * target properties: LINK_DIRECTORIES and INTERFACE_LINK_DIRECTORIES One new command * target_link_directories(): to populate target properties Fixes: #17215
* | cmGeneratorTarget: Factor target name resolution out of link item resolutionBrad King2018-09-121-0/+7
| |
* | cmLinkItem: Convert to a "sum type" over a string and target pointerBrad King2018-09-071-1/+1
| | | | | | | | | | | | | | | | | | Avoid exposing the item name implicitly as std::string. When the item is a target, avoid storing a second copy of its name. Most link item construction is paired with calls to `FindTargetToLink` to get the possible target pointer. Rename these methods to `ResolveLinkItem` and refactor them to construct the entire item.
* | static library: add property STATIC_LIBRARY_OPTIONSMarc Chevrier2018-08-151-0/+3
| | | | | | | | issue: #18251
* | Return std::string from cmGeneratorTarget::ImportedGetLocationSebastian Holtermann2018-07-111-1/+1
| |