summaryrefslogtreecommitdiffstats
path: root/Source/cmExportFileGenerator.h
Commit message (Collapse)AuthorAgeFilesLines
* install,export: Do not treat language names as target namesBrad King2019-10-161-1/+7
| | | | | | | When generating `IMPORTED_LINK_INTERFACE_LANGUAGES`, do not treat the entries as target names. Fixes: #19846
* 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.
* 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: Use `= default`Regina Pfeifer2019-01-251-1/+1
| | | | | | Suppress some cases in `Source/cmGeneratorExpressionNode.cxx` and `Source/cmUVHandlePtr.h` where a few older compilers require a user-defined default constructor (with `{}`).
* LINK_DIRECTORIES: Add new properties and commandsMarc Chevrier2018-09-251-0/+4
| | | | | | | | | | | | 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/+4
| | | | Fixes: #17997
* Export: allow exporting of additional propertiesWouter Klouwen2018-03-161-0/+4
| | | | | | | | | 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.
* install,export: Maybe transform OBJECT libraries to INTERFACE librariesBrad King2018-02-281-1/+3
| | | | | | | | | | | 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.
* Use quotes for non-system includesDaniel Pfeifer2017-04-111-1/+1
| | | | | | | | | | | | | Automate with: git grep -l '#include <cm_' -- Source \ | xargs sed -i 's/#include <\(cm_.*\)>/#include "\1"/g' git grep -l '#include <cmsys/' -- Source \ | xargs sed -i 's/#include <\(cmsys\/.*\)>/#include "\1"/g' git grep -l '#include <cm[A-Z]' -- Source \ | xargs sed -i 's/#include <\(cm[A-Z].*\)>/#include "\1"/g'
* 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.
* Export: Virtualize file generation step helpersBill Hoffman2016-09-081-20/+21
| | | | Allow subclasses to override the actual content generation.
* Export: Factor out file generation steps into helpersBill Hoffman2016-09-081-0/+2
| | | | | Do not actually generate any content in the driving code paths. Use helpers for that.
* fix a load of include-what-you-use violationsDaniel Pfeifer2016-09-031-3/+11
|
* Revise C++ coding style using clang-formatKitware Robot2016-05-161-62/+57
| | | | | | | | | | | | | 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.
* Format include directive blocks and ordering with clang-formatBrad King2016-04-291-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Sort include directives within each block (separated by a blank line) in lexicographic order (except to prioritize `sys/types.h` first). First run `clang-format` with the config file: --- SortIncludes: false ... Commit the result temporarily. Then run `clang-format` again with: --- SortIncludes: true IncludeCategories: - Regex: 'sys/types.h' Priority: -1 ... Commit the result temporarily. Start a new branch and cherry-pick the second commit. Manually resolve conflicts to preserve indentation of re-ordered includes. This cleans up the include ordering without changing any other style. Use the following command to run `clang-format`: $ git ls-files -z -- \ '*.c' '*.cc' '*.cpp' '*.cxx' '*.h' '*.hh' '*.hpp' '*.hxx' | egrep -z -v '(Lexer|Parser|ParserHelper)\.' | egrep -z -v '^Source/cm_sha2' | egrep -z -v '^Source/(kwsys|CursesDialog/form)/' | egrep -z -v '^Utilities/(KW|cm).*/' | egrep -z -v '^Tests/Module/GenerateExportHeader' | egrep -z -v '^Tests/RunCMake/CommandLine/cmake_depends/test_UTF-16LE.h' | xargs -0 clang-format -i This selects source files that do not come from a third-party. Inspired-by: Daniel Pfeifer <daniel@pfeifer-mail.de>
* Export: Port internal API to cmGeneratorTarget.Stephen Kelly2015-10-181-2/+3
|
* Export: Port internal utility to cmGeneratorTarget.Stephen Kelly2015-10-181-2/+2
|
* Export: Port some API to cmGlobalGenerator.Stephen Kelly2015-10-181-1/+0
|
* Export: Port interface to cmGeneratorTarget.Stephen Kelly2015-10-181-10/+13
|
* cmGeneratorTarget: Move GetInstallNameDir* from cmTarget.Stephen Kelly2015-08-051-1/+1
|
* Export: Port more API to cmGeneratorTarget.Stephen Kelly2015-08-051-1/+1
|
* Port some of the cmExportFileGenerator API to cmGeneratorTarget.Stephen Kelly2015-07-271-3/+5
| | | | | Enough to make it more possible to move GetLinkInterface to cmGeneratorTarget.
* Allow export of targets with INTERFACE_SOURCES.Stephen Kelly2015-02-101-0/+5
| | | | | | Use the same rules for paths in source and binary dirs in installed INTERFACE_SOURCES as are used for INTERFACE_INCLUDE_DIRECTORIES.
* cmExportFileGenerator: Make SetImportLinkProperty a templateBrad King2014-06-231-1/+3
| | | | | Allow the vector of property entries to have any element type that can convert to std::string.
* stringapi: Miscellaneous char* parametersBen Boeckel2014-03-081-1/+1
|
* stringapi: Pass configuration names as stringsBen Boeckel2014-03-081-7/+9
|
* strings: Remove cmStdString referencesBen Boeckel2014-03-081-1/+1
| | | | | | | | | | | Casts from std::string -> cmStdString were high on the list of things taking up time. Avoid such implicit casts across function calls by just using std::string everywhere. The comment that the symbol name is too long is no longer relevant since modern debuggers alias the templates anyways and the size is a non-issue since the underlying methods are generated since it's inherited.
* stringapi: Use strings for variable namesBen Boeckel2014-03-081-1/+1
| | | | Variable names are always generated by CMake and should never be NULL.
* stringapi: Use strings for property namesBen Boeckel2014-03-081-4/+4
| | | | Property names are always generated by CMake and should never be NULL.
* Change version scheme to use only two components for feature levelsBrad King2014-02-191-7/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Historically CMake used three version components for the feature level. We released new features while incrementing only the third version component. Since commit v2.8.2~105^2~4 (New version scheme to support branchy workflow, 2010-04-23) we used the fourth version component for bug-fix releases and the development date: <major>.<minor>.<patch>[.<tweak>][-rc<n>] = Release <major>.<minor>.<patch>.<date>[-<id>] = Development This solidified use of three components for the feature level, and was necessary to continue releasing 2.x versions because: * Some existing projects performed floating-point comparisons of ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} to 2.x numbers so ``x`` could never be higher than 9. * Version 2.9.<date> was used briefly in post-2.8.0 development in CVS prior to the transition to Git, so using it in releases may have caused confusion. Now that we are moving to 3.x versions, these two restrictions go away. Therefore we now change to use only two components for the feature level and use the scheme: <major>.<minor>.<patch>[-rc<n>] = Release <major>.<minor>.<date>[-<id>] = Development
* Export: Use the CMAKE_DEVEL_VERSION macro for build-export files.Stephen Kelly2014-02-111-0/+15
| | | | | Move the macro definition to the cmExportBuildFileGenerator.h header to share it.
* export: Rename some variables to reflect content type.Stephen Kelly2014-01-061-1/+1
| | | | This method is used with a list of languages.
* cmTarget: Make GetProperty() const.Stephen Kelly2013-10-311-3/+3
| | | | | | This has follow-on effects for other methods and classes. Further work on making the use of const cmTarget pointers common can be done, particularly with a view to generate-time methods.
* export(): Process the export() command at generate time.Stephen Kelly2013-10-111-0/+2
| | | | | | | | | | | | Make the API for adding targets string based so that it can easily use cmGeneratorTarget. Teach the cmIncludeCommand to generate the exported file at configure-time instead if it is to be include()d. The RunCMake.ExportWithoutLanguage test now needs a dummy header.h file as expected error from export() is now reported after the missing file error.
* Add a convenient way to add the includes install dir to the INTERFACE.Stephen Kelly2013-07-241-1/+3
| | | | | | | Export the INCLUDES DESTINATION without appending to the INTERFACE_INCLUDE_DIRECTORIES of the target itself. That way, a target can be exported multiple times with different INCLUDES DESTINATION without unintended cross-pollution of export sets.
* Export: Generate INTERFACE_LINK_LIBRARIES property on targets.Stephen Kelly2013-07-081-0/+11
| | | | | | | | | | This property is generated only for targets which have recorded policy CMP0022 as NEW, and a compatibility mode is added to additionally export the old interfaces in that case too. If the old interfaces are not exported, the generated export files require CMake 2.8.12. Because the unit tests use a version which is not yet called 2.8.12, temporarily require a lower version.
* OS X: Add support for @rpath in export files.Clinton Stimpson2013-06-031-0/+3
| | | | | Also expand the IMPORTED_SONAME property for targets to match the install_name.
* install(EXPORT): Ensure clean INTERFACE_INCLUDE_DIRECTORIESStephen Kelly2013-03-261-0/+5
| | | | | | | | | | Check that source and binary directories are not part of the INTERFACE_INCLUDE_DIRECTORIES for installed IMPORTED targets. This is limited to directories which do not contain generator expressions to evaluate. Such paths can only be checked at time of use of the imported target, which will be done in a follow up patch.
* Revert "Add the $<LINKED:...> generator expression."Stephen Kelly2013-02-131-2/+2
| | | | | | | | | This reverts commit 0b92602b816e2584db3781b120a1e5200da72ada. Conflicts: Source/cmGeneratorExpressionEvaluator.cxx Tests/CMakeCommands/target_compile_definitions/CMakeLists.txt Tests/CMakeCommands/target_include_directories/CMakeLists.txt
* Add the $<LINKED:...> generator expression.Stephen Kelly2013-01-311-2/+2
| | | | | | This is both a short form of using a TARGET_DEFINED expression together with a TARGET_PROPERTY definition, and a way to strip non-target content from interface properties when exporting.
* Add the INSTALL_PREFIX genex.Stephen Kelly2013-01-271-0/+2
|
* Export the COMPATIBLE_INTERFACE_BOOL content propertiesStephen Kelly2013-01-211-0/+2
|
* Export the INTERFACE_PIC property.Stephen Kelly2013-01-151-0/+2
|
* Move the exported check for dependencies of targetsStephen Kelly2013-01-151-2/+4
| | | | | Check only once, in the Config.cmake file, instead of once in each Config-<cfg>.cmake file.
* Split LINK_INTERFACE_LIBRARIES export handling into dedicated method.Stephen Kelly2013-01-101-0/+4
|
* Split the generator expression before extracting targets.Stephen Kelly2013-01-101-2/+12
| | | | | | | | | | | | Now that we're processing a LINK_INTERFACE_LIBRARIES string, it can contain targets. Make sure they are extracted for namespacing purposes. This needs to be restricted to strings which can actually have targets named in them. For example, this is not done for INTERFACE_COMPILE_DEFINITIONS, because even if there is a target named 'foo', the string 'foo' in that property means that '-Dfoo' will be set when compiling.
* Extract the AddTargetNamespace method.Stephen Kelly2013-01-101-0/+4
|
* Add API to populate INTERFACE properties in exported targets.Stephen Kelly2013-01-051-0/+15
| | | | | The INTERFACE properties need to be preprocessed for context (build location or install location) and to extract target names etc.
* Add API to extract target names from a genex string.Stephen Kelly2013-01-051-0/+4
| | | | | | | The TARGET_NAME expression, which requires a literal, provides target names. $<TARGET_PROPERTY:tgt,prop> also provides target names in the cases where tgt is a literal, so that TARGET_NAME is not needed then in addition.
* Generate an early-return guard in target Export files.Stephen Kelly2012-11-301-0/+2
| | | | | | | | | | | | Previously it was necessary for writers of Config files which incude exported target files to write the guard themselves, but this was not immediately obvious or documented. Options for them would be to use a variable, or an INHERITED directory property in an effort to avoid accidental name clashes in all contexts in which find_package can be used. Getting this right requires boiler plate code, so generate a simpler check automatically instead.