summaryrefslogtreecommitdiffstats
path: root/Source/cmTarget.h
Commit message (Collapse)AuthorAgeFilesLines
...
* cmMakefile: Move enumerations into new headerDaniel Eiband2019-09-261-7/+0
| | | | The enumerations will also be used in cmLocalGenerator.
* cmMakefile: Separate custom command setup from actual creationDaniel Eiband2019-09-171-1/+1
| | | | | Refactor custom command manipulation functions to consist of a setup and a commit stage. The commit stage will be delayed to generate time.
* 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.
* clang-tidy: Replace typedef with usingRegina Pfeifer2019-09-031-1/+1
|
* PCH: add PRECOMPILE_HEADERS to special propertiesDaniel Pfeifer2019-08-261-0/+5
|
* Merge topic 'fileapi-install-generators'Brad King2019-08-051-0/+4
|\ | | | | | | | | | | | | d70a0f8681 fileapi: Fix codemodel target install destination for cross-dir rules Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3639
| * fileapi: Fix codemodel target install destination for cross-dir rulesBrad King2019-07-311-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | Since commit e89ad0f94e (install: Allow installing targets created in another directory, 2018-06-18, v3.13.0-rc1~407^2) we support calling `install(TARGETS)` for targets created in another directory. However, install generators are associated with the directory in which the call to `install()` appears. This may not be the same directory in which the target is defined. Record in each target the list of install generators it has. Fixes: #19546
* | cmStringAlgorithms: Move string functions to the new cmStringAlgorithms.hSebastian Holtermann2019-07-291-0/+1
| | | | | | | | | | This adds the `cmStringAlgorithms.h` header and moves all string functions from `cmAlgorithms.h` to `cmStringAlgorithms.h`.
* | AIX: Explicitly compute executable exports for both XL and GNUBrad King2019-07-151-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On AIX, symbols in executables must be exported in order to be visible to modules (plugins) they load via `dlopen`. Prior to policy `CMP0065`, CMake linked all executables with flags to export symbols, but the NEW behavior for that policy is to do so only for executables that have the `ENABLE_EXPORTS` target property set. In both cases, CMake has always used the AIX linker option `-bexpall` option to export symbols from executables. This has worked fairly well with the XL compiler, but with the GNU compiler it works only for C ABI symbols. The reason is that `-bexpall` does not export symbols starting in `_` but the GNU C++ ABI mangles all symbols with a leading `_`. Therefore we have only supported C ABI plugins with the GNU compiler on AIX. Some projects have tried to work around this by replacing `-bexpall` with `-bexpfull`, but the latter often exports symbols that we do not want exported. Avoid using `-bexpall` for executables by instead using by our own internal `ExportImportList` script to compute symbol export lists from the object files to be linked into an executable. Pass the explicitly computed export list to the AIX linker's `-bE:...` option. We already do this for shared object exports. Issue: #19163
* | De-duplicate checks for whether a platform uses Windows DLLsBrad King2019-07-121-0/+3
| |
* | IWYU: Fix handling of <memory> standard headerBrad King2019-07-101-1/+1
|/ | | | | | | | An old workaround for `std::allocator_traits<>::value_type` lints from IWYU on `std::vector<>` usage breaks IWYU's handling of `<memory>`. Convert the workaround to use the same approach we already use for a workaround of `std::__decay_and_strip<>::::__type` lints. Then update the `<memory>` inclusions to follow the now-correct IWYU lints.
* cmMakefile: Define cmTargetMap type in cmMakefile instead of cmTargetSebastian Holtermann2019-05-231-3/+0
| | | | | | | | The `cmTargetMap` type is only used in the context of `cmMakefile`. Therefore it is the most appropriate place to declare it. This moves the `cmTarget.h/cmTargets` type definition to `cmMakefile::cmTargetMap`.
* Fix invalid ///! doxygen comment line startsSebastian Holtermann2019-03-311-21/+21
| | | | | In various places `///!` was used to start a comment line. This is not valid Doygen syntax. This patch replaces `///!` comment starts with `//!`.
* cmTarget: Use std::unique_ptr instead of custom smart pointerSebastian Holtermann2019-03-231-18/+12
| | | | | | | | To manage the lifetime of `cmTargetInternals`, the private implementation of `cmTarget`, use `std::unique_ptr<cmTargetInternals>` instead of `cmTargetInternalPointer`, which is removed. `cmTarget` is made non-copyable but movable.
* cmTarget: Single line comment clanupsSebastian Holtermann2019-03-231-9/+7
|
* cmTarget: Make private `SetPropertyDefault` an in code lambda `InitProperty`Sebastian Holtermann2019-03-231-5/+0
|
* cmTarget: Remove obsolete `friend` definitionsSebastian Holtermann2019-03-231-5/+3
|
* cmTarget: Inline private HasImportLibrary methodSebastian Holtermann2019-03-231-3/+0
|
* cmTarget: Move member method `CheckImportedLibName` to implSebastian Holtermann2019-03-231-3/+0
|
* cmTarget: Move member method `ProcessSourceItemCMP0049()` to implSebastian Holtermann2019-03-231-5/+2
|
* cmTarget: Move member booleans to implSebastian Holtermann2019-03-231-16/+6
|
* cmTarget: Move member `*Commands` to implSebastian Holtermann2019-03-231-31/+12
|
* cmTarget: Move member `RuntimeInstallPath` to implSebastian Holtermann2019-03-231-9/+2
|
* cmTarget: Move member `InstallPath` to implSebastian Holtermann2019-03-231-3/+2
|
* cmTarget: Move member `Name` to implSebastian Holtermann2019-03-231-2/+1
|
* cmTarget: Move member `TLLCommands` to implSebastian Holtermann2019-03-231-1/+0
|
* cmTarget: Move member `Backtrace` to implSebastian Holtermann2019-03-231-2/+0
|
* cmTarget: Move member `PolicyMap` to implSebastian Holtermann2019-03-231-2/+7
|
* cmTarget: Move member `OriginalLinkLibraries` to implSebastian Holtermann2019-03-231-13/+4
|
* cmTarget: Move member `Utilities` to implSebastian Holtermann2019-03-231-7/+4
|
* cmTarget: Move member `SystemIncludeDirectories` to implSebastian Holtermann2019-03-231-6/+2
|
* cmTarget: Move member `Properties` to impl classSebastian Holtermann2019-03-231-5/+3
|
* cmTarget: Move member `Makefile` to implSebastian Holtermann2019-03-231-4/+4
|
* cmTarget: Move member `TargetType` to implSebastian Holtermann2019-03-231-5/+2
|
* cmTarget: Rename member `Internal` to `impl`Sebastian Holtermann2019-03-231-1/+1
|
* cmTarget,cmGeneratorTarget: Add optional `before` parameter to AddSourceSebastian Holtermann2019-01-181-1/+1
| | | | | | 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.
* cmTarget: Remove unused classes cmTargetSet and cmTargetManifestArtur Ryt2018-12-061-8/+0
|
* add_dependencies: Track backtraces internallyBrad King2018-10-181-5/+6
| | | | | Record backtraces for "utility" dependencies created by `add_dependencies` calls.
* LINK_DIRECTORIES: Add new properties and commandsMarc Chevrier2018-09-251-6/+5
| | | | | | | | | | | | 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
* target_link_libraries: Allow use with targets in other directoriesBrad King2018-09-121-0/+3
| | | | | | | | | | | | | | | | | | | | | Previously the command did not allow naming targets on the LHS that were not created in the calling directory. Lift this restriction to enable more flexible use by projects. Targets named on the RHS will need to be looked up during generation in the scope of the call site rather than the scope of the LHS target. Introduce an internal syntax in `[INTERFACE_]LINK_LIBRARIES` properties to specify target names that need to be looked up in a directory other than that containing the target on which the property is set. Add minimal documentation of the syntax to help users that encounter it. Unfortunately CMake previously did allow such calls in the case that only `INTERFACE` libraries are specified, but those libraries would be looked up in the target's directory rather than the caller's. Add policy `CMP0079` to enable the new behavior with new lookup scope in a compatible way. Fixes: #17943
* Add GetSafeProperty method to cmTarget, cmGeneratorTarget and cmSourceFileSebastian Holtermann2018-07-021-0/+3
|
* LINK_OPTIONS: Add new family of propertiesMarc Chevrier2018-06-061-0/+6
| | | | | | | | | | | | | | This family enable to manage link flags Three new properties: * directory property: LINK_OPTIONS * target properties: LINK_OPTIONS and INTERFACE_LINK_OPTIONS Two new commands * add_link_options(): to populate directory property * target_link_options(): to populate target properties Fixes: #16543
* Revise C++ coding style using clang-format-6.0Kitware Robot2018-06-011-2/+3
| | | | | | | | | | | | 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.
* cmTarget: Remove unnecessary RecordDependencies memberBrad King2018-03-061-1/+0
| | | | Inline the condition in the one remaining place it is checked.
* cmTarget: Simplify ClearDependencyInformation signatureBrad King2018-03-061-1/+1
| | | | We don't need to pass an argument with the target's own name.
* server: return whether or not a target is generator providedJustin Goshi2017-11-201-0/+7
| | | | | | Some generators auto-generate targets. For example VS generators create the ALL_BUILD target. Add the ability to mark targets as generator provided and return that info through cmake-server codemodel.
* clang-format: format all code as Cpp11Daniel Pfeifer2017-08-301-1/+1
|
* Use C++11 nullptrDaniel Pfeifer2017-08-241-1/+1
|
* Use C++11 unordered containersDaniel Pfeifer2017-08-221-2/+2
|
* Replace boolean `implib` parameters with enumGregor Jasny2017-04-201-3/+5
| | | | | Named enumeration values are much clearer at call sites and add more type safety.