summaryrefslogtreecommitdiffstats
path: root/Source/cmExportBuildFileGenerator.cxx
Commit message (Collapse)AuthorAgeFilesLines
* Apple: Handle generation and comsuption of text-based stubs (.tbd files)Marc Chevrier2023-03-011-1/+1
| | | | Fixes: #24123
* cmExport*FileGenerator: support exporting C++ module propertiesBen Boeckel2022-07-061-0/+66
| | | | | C++ module properties will be generated at build time, so generate code that includes the files actually responsible for the information.
* cmTarget: add support for C++ module fileset typesBen Boeckel2022-06-161-0/+32
| | | | | | | | | | | | | | | C++ modules have two variants which are of importance to CMake: - `CXX_MODULES`: interface modules (those using `export module M;`, `export module M:part;`, or `module M:internal_part;`) - `CXX_MODULE_HEADER_UNITS`: importable header units Creating C++ modules or partitions are *not* supported in any other source listing. This is because the source files must be installed (so their scope matters), but not part of usage requirements (what it means for a module source to be injected into a consumer is not clear at this moment). Due to the way `FILE_SET` works with scopes, they are a perfect fit as long as `INTERFACE` is not allowed (which it is not).
* Merge topic 'file-set-build-export'Brad King2022-04-211-8/+85
|\ | | | | | | | | | | | | | | 9ee47188c0 cmExportBuildFileGenerator: handle genex-wrapped source paths 60fab8a6e0 cmInstallCommand: tweak error message Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !7182
| * cmExportBuildFileGenerator: handle genex-wrapped source pathsBen Boeckel2022-04-181-8/+85
| | | | | | | | | | | | | | Previously a fileset with `$<$<CONFIG:Debug>:some_file>` would show up as-is (with escaping) in the build directory export. Instead, evaluate all fileset entries as generator expressions and list them as they are similar to the installation information.
* | Merge topic 'export-missing-targets'Brad King2022-04-141-24/+19
|\ \ | | | | | | | | | | | | | | | | | | | | | 8c65b7042e cmExportFileGenerator: Simplify collection of targets missing from export set Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: buildbot <buildbot@kitware.com> Merge-request: !7165
| * | cmExportFileGenerator: Simplify collection of targets missing from export setBrad King2022-04-111-24/+19
| |/ | | | | | | | | Store the list of missing target names in a member instead of threading an explicit reference to it through the call stack.
* | 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
* install(EXPORT): Install file setsKyle Edwards2021-10-271-0/+19
|
* Rename cmProp in cmValueMarc Chevrier2021-09-211-1/+1
|
* cmProp: refactoring: transform alias in classMarc Chevrier2021-08-081-0/+1
| | | | | | To handle safely the values used by CMake variables and properties, introduce the class cmProp as a replacement from the simple pointer to std::string instance.
* Refactor export file generator intefaceEugene Shalygin2021-07-221-3/+3
| | | | | Replace cmTargetExport with const cmGeneratorTarget to allow recursive processing of exported targets and their link dependencies.
* export: Do not fail generation for separate namelink only caseDeniz Bahadir2020-12-011-0/+3
| | | | | | | | Update the change from commit 64690f6df0 (export: Do not fail generation for namelink-only case, 2020-10-09, v3.19.0-rc1~7^2) to also handle separate namelink-only and namelink-skip calls. Fixes: #21529
* Refactoring: add cm::contains to <cmext/algorithm>Marc Chevrier2020-04-171-2/+3
|
* cmGlobalGenerator: modernize memrory managemenbtMarc Chevrier2019-12-301-3/+2
|
* Refactoring: use append functions from cmext/algorithmMarc Chevrier2019-12-171-0/+1
|
* Revise include order using clang-format-6.0Kitware Robot2019-10-011-6/+6
| | | | | 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.
* cmExportSet: subsume cmExportSetMap source filesTushar Maheshwari2019-09-191-0/+1
|
* cmExportSet: default destructorTushar Maheshwari2019-09-191-1/+2
|
* clang-tidy: modernize-return-braced-init-listRegina Pfeifer2019-09-061-1/+1
|
* PCH: add PRECOMPILE_HEADERS to special propertiesDaniel Pfeifer2019-08-261-0/+3
|
* Source sweep: Use cmStrCat for string concatenationSebastian Holtermann2019-08-221-6/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch is generated by a python script that uses regular expressions to search for string concatenation patterns of the kind ``` std::string str = <ARG0>; str += <ARG1>; str += <ARG2>; ... ``` and replaces them with a single `cmStrCat` call ``` std::string str = cmStrCat(<ARG0>, <ARG1>, <ARG2>, ...); ``` If any `<ARGX>` is itself a concatenated string of the kind ``` a + b + c + ...; ``` then `<ARGX>` is split into multiple arguments for the `cmStrCat` call. If there's a sequence of literals in the `<ARGX>`, then all literals in the sequence are concatenated and merged into a single literal argument for the `cmStrCat` call. Single character strings are converted to single char arguments for the `cmStrCat` call. `std::to_string(...)` wrappings are removed from `cmStrCat` arguments, because it supports numeric types as well as string types. `arg.substr(x)` arguments to `cmStrCat` are replaced with `cm::string_view(arg).substr(x)`
* cmAlgorithms: Add cmContainsRegina Pfeifer2019-08-191-2/+1
| | | | Also, use the new function where applicable.
* cmStringAlgorithms: Move string functions to the new cmStringAlgorithms.hSebastian Holtermann2019-07-291-1/+1
| | | | | This adds the `cmStringAlgorithms.h` header and moves all string functions from `cmAlgorithms.h` to `cmStringAlgorithms.h`.
* Refactor checks for whether a target has an import libraryBrad King2019-07-121-4/+5
| | | | Use `HasImportLibrary` for such checks.
* cmExportBuildFileGenerator: improve error messageBen Boeckel2019-06-271-22/+23
| | | | | | | | When an exported target depends on another exported target that is included in multiple build export sets, the error message was woefully unhelpful. Now, include information about what build exports the dependent target was included in with instructions for fixing the problem that are actually helpful.
* Export: A singular CMake version written for interface targetsRobert Maynard2019-06-171-3/+6
|
* Factor out enum MessageType into dedicated headerBruno Manganelli2019-01-161-3/+5
| | | | Reduce the number of files relying on `cmake.h`.
* LINK_DIRECTORIES: Add new properties and commandsMarc Chevrier2018-09-251-0/+3
| | | | | | | | | | | | 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
* LINK_DEPENDS: add support for property INTERFACE_LINK_DEPENDSMarc Chevrier2018-06-271-0/+3
| | | | Fixes: #17997
* LINK_OPTIONS: Add new family of propertiesMarc Chevrier2018-06-061-0/+3
| | | | | | | | | | | | | | 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
* Fix misc. typosluz.paz2018-06-041-1/+1
| | | | Found via `codespell` and `grep`
* cmGeneratorTarget: Make import library checks config-awareMichael Stürmer2018-04-051-2/+3
|
* Export: allow exporting of additional propertiesWouter Klouwen2018-03-161-0/+9
| | | | | | | | | This change introduces an additional property that may be set on a target to allow additional properties to be exported. Normally only a limited number of properties are exported. Additional properties may be exported by simply setting the `EXPORT_PROPERTIES` property on a target that is exported.
* objlib: Allow other libraries to link to `OBJECT` libraries.Deniz Bahadir2018-03-011-1/+3
| | | | | | | | Note: This only allows `OBJECT` libraries to be on the right-hand side of `target_link_libraries` but still does not link its object-files to the target on the left-hand side. Issue: #14778
* install,export: Maybe transform OBJECT libraries to INTERFACE librariesBrad King2018-02-281-4/+18
| | | | | | | | | | | Teach the `install` and `export` commands to support installing and exporting `OBJECT` libraries without their object files. Transform them to `INTERFACE` libraries in such cases. For `install(TARGETS)`, activate this when no destination for the object files is specified. For `export`, activate this only under Xcode with multiple architectures when we have no well-defined object file locations to give to clients.
* Reduce allocation of temporary values on heap.Pavel Solodovnikov2018-01-261-1/+1
| | | | | - Use `std::move` while inserting temporary results into vectors. - Change `push_back` to `emplace_back` where appropriate.
* Meta: modernize old-fashioned loops to range-based `for`.Pavel Solodovnikov2017-09-121-27/+12
| | | | | | Changes done via `clang-tidy` with some manual fine-tuning for the variable naming and `auto` type deduction where appropriate.
* Replace C-style castsDaniel Pfeifer2017-08-271-1/+1
|
* Use C++11 nullptrDaniel Pfeifer2017-08-241-2/+2
|
* Replace boolean `implib` parameters with enumGregor Jasny2017-04-201-3/+6
| | | | | Named enumeration values are much clearer at call sites and add more type safety.
* Allow OBJECT libraries to be installed, exported, and importedRobert Maynard2017-04-181-18/+42
| | | | | | | | Teach install() and export() to handle the actual object files. Disallow this on Xcode with multiple architectures because it still cannot be cleanly supported there. Co-Author: Brad King <brad.king@kitware.com>
* cmExportBuildFileGenerator: use HasImportLibraryBen Boeckel2017-04-131-3/+1
|
* cmState: Port dependents to new cmStateTypes headerStephen Kelly2016-10-191-1/+1
|
* cmState: Move TargetType enum to separate namespaceStephen Kelly2016-10-191-4/+4
|
* Simplify CMake per-source license noticesBrad King2016-09-271-11/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | Per-source copyright/license notice headers that spell out copyright holder names and years are hard to maintain and often out-of-date or plain wrong. Precise contributor information is already maintained automatically by the version control tool. Ultimately it is the receiver of a file who is responsible for determining its licensing status, and per-source notices are merely a convenience. Therefore it is simpler and more accurate for each source to have a generic notice of the license name and references to more detailed information on copyright holders and full license terms. Our `Copyright.txt` file now contains a list of Contributors whose names appeared source-level copyright notices. It also references version control history for more precise information. Therefore we no longer need to spell out the list of Contributors in each source file notice. Replace CMake per-source copyright/license notice headers with a short description of the license and links to `Copyright.txt` and online information available from "https://cmake.org/licensing". The online URL also handles cases of modules being copied out of our source into other projects, so we can drop our notices about replacing links with full license text. Run the `Utilities/Scripts/filter-notices.bash` script to perform the majority of the replacements mechanically. Manually fix up shebang lines and trailing newlines in a few files. Manually update the notices in a few files that the script does not handle.
* fix a load of include-what-you-use violationsDaniel Pfeifer2016-09-031-0/+14
|
* CMake: don't use else after returnDaniel Pfeifer2016-08-181-4/+3
|
* use CM_NULLPTRDaniel Pfeifer2016-06-281-2/+2
|
* Revise C++ coding style using clang-formatKitware Robot2016-05-161-165/+114
| | | | | | | | | | | | | 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.