summaryrefslogtreecommitdiffstats
path: root/Source/cmTarget.h
Commit message (Collapse)AuthorAgeFilesLines
* Modernize: Use #pragma once in all header filesKitware Robot2020-09-031-4/+1
| | | | | | | | | | | | | | | | #pragma once is a widely supported compiler pragma, even though it is not part of the C++ standard. Many of the issues keeping #pragma once from being standardized (distributed filesystems, build farms, hard links, etc.) do not apply to CMake - it is easy to build CMake on a single machine. CMake also does not install any header files which can be consumed by other projects (though cmCPluginAPI.h has been deliberately omitted from this conversion in case anyone is still using it.) Finally, #pragma once has been required to build CMake since at least August 2017 (7f29bbe6 enabled server mode unconditionally, which had been using #pragma once since September 2016 (b13d3e0d)). The fact that we now require C++11 filters out old compilers, and it is unlikely that there is a compiler which supports C++11 but does not support #pragma once.
* Factor out generator checks for filtering on non-compiling targetsBrad King2020-07-231-0/+1
| | | | | Add a `cmGeneratorTarget::CanCompileSources` helper method to tell generators whether a target might compile anything.
* fileapi: Support multiple backtraces for language standardJustin Goshi2020-07-061-1/+1
|
* Merge topic 'fileApiAddLanguageStandardBacktrace'Brad King2020-06-291-0/+7
|\ | | | | | | | | | | | | | | | | 7d6861f367 fileapi: Extend codemodel targets with language standard ba835874a4 Add backtrace support for language standard e43486a639 cmGeneratorTarget: Clarify name of language property lookup helper Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4798
| * Add backtrace support for language standardJustin Goshi2020-06-221-0/+7
| |
* | Refactor: Add IsAndroidGuiExecutable() method to cmTargetKyle Edwards2020-06-181-0/+3
|/
* Single location for cmProp typedefVitaly Stakhovsky2020-06-011-2/+1
|
* cmTarget: Replace "perConfig" constructor boolean with enumBrad King2020-05-181-1/+7
|
* GetSafeProperty: return std::string const&Vitaly Stakhovsky2020-04-301-1/+1
|
* cmTarget::GetProperty: return cmPropVitaly Stakhovsky2020-03-301-6/+7
|
* cmTarget: minor code improvementsVitaly Stakhovsky2020-03-171-2/+2
|
* Ninja Multi-Config: Fix issue with framework dependencies and AutogenKyle Edwards2020-02-171-2/+3
| | | | Fixes: #20345
* AppendProperty: convert value param to std::stringVitaly Stakhovsky2020-01-251-6/+1
|
* target_link_libraries: Fix out-of-dir linking of a list of targetsBrad King2020-01-161-3/+1
| | | | | | | | | | | | | | 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
* Merge topic 'stdstring-target'Brad King2019-12-171-0/+9
|\ | | | | | | | | | | | | c34b4497f8 cmTarget: add std::string overloads Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4137
| * cmTarget: add std::string overloadsVitaly Stakhovsky2019-12-141-0/+9
| |
* | Ninja: Add multi-config variantKyle Edwards2019-12-131-1/+2
|/ | | | Co-Authored-by: vector-of-bool <vectorofbool@gmail.com>
* cmCustomCommand: Move custom commandsDaniel Eiband2019-09-261-0/+3
|
* 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
|