summaryrefslogtreecommitdiffstats
path: root/Source/cmExportInstallFileGenerator.cxx
Commit message (Collapse)AuthorAgeFilesLines
* Include cmAlgorithms where it is used.Stephen Kelly2015-03-101-0/+1
|
* install: Allow generator expressions in TARGETS DESTINATION (#14317)Brad King2015-02-111-1/+1
| | | | | | | | | | | | This will allow per-config destinations for targets in EXPORT sets. Using multiple install(TARGETS) with separate CONFIGURATIONS is rejected as a target appearing more than once in an export set. Now instead one can write install(TARGETS foo EXPORT exp DESTINATION lib/$<CONFIG>) to get a single logical membership of the target in the export set while still having a per-config destination.
* cmInstallGenerator: Move GetDestination to subclasses that need itBrad King2015-02-111-4/+4
| | | | | | The method is used only for EXPORT and TARGET install destinations. While at it, make it return a std::string by reference instead of a "const char*".
* Allow export of targets with INTERFACE_SOURCES.Stephen Kelly2015-02-101-12/+16
| | | | | | Use the same rules for paths in source and binary dirs in installed INTERFACE_SOURCES as are used for INTERFACE_INCLUDE_DIRECTORIES.
* Port all cmOStringStream to std::ostringstream.Stephen Kelly2015-01-111-4/+4
| | | | All compilers hosting CMake support the std class.
* install: Allow absolute EXPORT destination with relative targets (#15258)Brad King2014-12-151-37/+20
| | | | | | | | | | | | | | | | | When install(EXPORT) is given an absolute destination we cannot compute the install prefix relative to the installed export file location. Previously we disallowed installation of targets in such exports with a relative destination, but did not enforce this for target property values besides the location of the main target file. This could lead to broken installations when the EXPORT is installed to an absolute path but usage requirements are specified relative to the install prefix. Since an EXPORT installed to an absolute destination cannot be relocated we can just hard-code the value of CMAKE_INSTALL_PREFIX as the base for relative paths. This will allow absolute install(EXPORT) destinations to work with relative destinations for targets and usage requirements. Extend the ExportImport test with a case covering this behavior.
* Export: Disallow export of targets with INTERFACE_SOURCESStephen Kelly2014-11-291-0/+11
| | | | | | | | | | | | | | | | | | | This can be allowed in the next release, but it needs to have some features present and tested such as * Ensuring that relative paths do not appear in the generated property. * Ensuring that paths to the source or build directories do not appear. * Generating a check in the file for CMake 3.1 or later so that the resulting property will be consumed. * Ensuring that any referenced targets are part of an export set and generating a check for them. * INSTALL_INTERFACE and BUILD_INTERFACE content. All of these checks are already done for INTERFACE_INCLUDE_DIRECTORIES, but it is too late to add them for INTERFACE_SOURCES for CMake 3.1. As the checks introduce some new error conditions, it is better to disallow exporting fully for this case and introduce proper error conditions later instead of policies.
* Export: Populate INTERFACE_COMPILE_FEATURES property.Stephen Kelly2014-04-081-0/+4
|
* Remove c_str calls when using stream APIs.Stephen Kelly2014-03-111-1/+1
| | | | | Use an ad-hoc clang tool for matching the calls which should be ported.
* Remove some c_str() calls.Stephen Kelly2014-03-111-1/+1
| | | | | | Use the clang RemoveCStrCalls tool to automatically migrate the code. This was only run on linux, so does not have any positive or negative effect on other platforms.
* stringapi: Pass configuration names as stringsBen Boeckel2014-03-081-4/+7
|
* CMake 3.0.0-rc1 version updateBrad King2014-02-191-1/+1
|
* Export: Use the CMAKE_DEVEL_VERSION macro for build-export files.Stephen Kelly2014-02-111-14/+0
| | | | | Move the macro definition to the cmExportBuildFileGenerator.h header to share it.
* Export: Fix internal CMake version test logicBrad King2014-02-101-4/+6
| | | | | | | | | Fix the internal DEVEL_CMAKE_VERSION macro to use CMake_VERSION_ENCODE to compare version component-wise. Otherwise an old invocation of the macro may be tricked into using the current version when the requested major version is smaller than the current version but the requested minor version is larger. It should use the requested (old) version in that case.
* Export: Use a macro to ensure minimum development version requirementStephen Kelly2014-02-091-1/+13
| | | | | Use the version number of the specified release, or of the current development version if the release is not yet made.
* export: Only generate and install configuration files if needed.Stephen Kelly2014-01-041-6/+15
| | | | | | | | | | The modern way to create configuration dependent content is using generator expressions in the main export file. The only non-deprecated property still generated in the configuration-specific files are IMPORTED_LOCATION_<CONFIG> INTERFACE_LIBRARY targets have no location, and no need for those files.
* install: Rename variable referencing cmake version.Stephen Kelly2014-01-041-3/+3
| | | | | | | | The next version is 3.0.0, not 2.8.13. The version generated in the export file should be updated in the release branch in both cmExportInstallFileGenerator and cmExportBuildFileGenerator.
* Export: Skip INTERFACE libraries when generating -config files.Stephen Kelly2013-12-191-7/+5
| | | | | | | | The properties object has just been created, so is always empty, which means the if block is never entered. The following lines do not have any effect because an INTERFACE library has no LOCATION. At the end, no code is generated for INTERFACE libraries in config-specific exported files, so skip them early.
* QtAutoUic: Add INTERFACE_AUTOUIC_OPTIONS target property.Stephen Kelly2013-11-271-0/+4
| | | | | | | | | | | | | | | | | | | | Transitively consume the property from linked dependents. Implement configuration-specific support by following the pattern set out for compile definitions and includes in cmQtAutoGenerators. Implement support for origin-tracking with CMAKE_DEBUG_TARGET_PROPERTIES. This is motivated by the needs of KDE, which provides a separate translation system based on gettext instead of the Qt linguist translation system. The Qt uic tool provides command line options for configuring the method used to translate text, and to add an include directive to the generated file to provide the method. http://thread.gmane.org/gmane.comp.kde.devel.frameworks/7930/focus=7992 Implement the interface to provide the uic options as a usage-requirement on the KI18n target, as designed for KDE.
* Use new cmHasLiteralPrefix functionStephen Kelly2013-11-211-4/+4
|
* cmExportInstallFileGenerator: Fix comment to match reality.Stephen Kelly2013-10-101-2/+2
| | | | It was copied from cmExportBuildFileGenerator.
* install: Teach EXPORT option to handle INTERFACE_LIBRARY targetsStephen Kelly2013-10-081-1/+18
|
* CMake 2.8.12-rc1Brad King2013-08-151-1/+1
|
* Add a convenient way to add the includes install dir to the INTERFACE.Stephen Kelly2013-07-241-6/+6
| | | | | | | 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.
* Merge topic 'tid-system-argument'Brad King2013-07-161-0/+4
|\ | | | | | | | | | | | | | | | | | | 9cf3547 Add the INTERFACE_SYSTEM_INCLUDE_DIRECTORIES target property. 1925cff Add a SYSTEM parameter to target_include_directories (#14180) 286f227 Extend the cmTargetPropCommandBase interface property handling. 83498d4 Store system include directories in the cmTarget. f1fcbe3 Add Target API to determine if an include is a system include. 2679a34 Remove unused variable.
| * Add the INTERFACE_SYSTEM_INCLUDE_DIRECTORIES target property.Stephen Kelly2013-07-161-0/+4
| | | | | | | | | | | | | | | | Unlike other target properties, this does not have a corresponding non-INTERFACE variant. This allows propagation of system attribute on include directories from link dependents.
* | Export: Generate INTERFACE_LINK_LIBRARIES property on targets.Stephen Kelly2013-07-081-0/+19
|/ | | | | | | | | | 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.
* Generate INTERFACE_COMPILE_OPTIONS on export.Stephen Kelly2013-06-101-0/+4
| | | | | This was missing from commit 80ca9c4b (Add COMPILE_OPTIONS target property., 2013-05-16).
* Merge topic 'cfbundle-location'Brad King2013-06-041-15/+1
|\ | | | | | | | | 483e208 OS X: Fix getting of CFBundle LOCATION property.
| * OS X: Fix getting of CFBundle LOCATION property.Clinton Stimpson2013-06-031-15/+1
| | | | | | | | | | | | | | This fixes bug #13797. The kinds of changes applied in 373faae5 for frameworks are now applied to CFBundle. The prefix and suffix for CFBundles are now handled in cmTarget::GetFullNameInternal.
* | Merge topic 'rpath-on-mac'Brad King2013-06-031-0/+16
|\ \ | | | | | | | | | | | | | | | | | | | | | dc1d025 OS X: Add test for rpaths on Mac. 8576b3f OS X: Add support for @rpath in export files. 00d71bd Xcode: Add rpath support in Xcode generator. 94e7fef OS X: Add RPATH support for Mac.
| * | OS X: Add support for @rpath in export files.Clinton Stimpson2013-06-031-0/+16
| |/ | | | | | | | | Also expand the IMPORTED_SONAME property for targets to match the install_name.
* | Merge topic 'framework-refactor'Brad King2013-06-031-7/+1
|\ \ | |/ | | | | | | 373faae Refactor how bundles and frameworks are supported.
| * Refactor how bundles and frameworks are supported.Clinton Stimpson2013-05-231-7/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make handling of directory separators consistent between non-bundle and bundle code. Remove xcode specific flag from cmTarget when getting install_name. Add (more) consistent convenience functions in cmTarget to get directories inside of bundles and frameworks to add files to. This refactor also fixes bug #12263 where frameworks had the wrong install name when SKIP_BUILD_RPATH. Also make install_name for frameworks consistent between Makefile and Xcode generator.
* | Add EXPORT_NAME property.Stephen Kelly2013-05-181-3/+4
|/ | | | | | This allows for example, the buildsystem to use names like 'boost_any' instead of the overly generic 'any', and still be able to generate IMPORTED targets called 'boost::any'.
* Handle usr-move without forcing absolute paths (#14041)Brad King2013-04-031-23/+26
| | | | | | | | | | | | | | | | | | | | | | In commit 0c727b90 (install(EXPORT): Force absolute paths for usr-move, 2013-03-08) and commit d4774140 (configure_package_config_file: force absolute paths for usr-move, 2013-01-24) we supported Linux distributions implementing the "/usr move" by assuming that installation to (/usr)?/lib(64)? represents a non-relocatable system package. When cross-compiling one may prepare a package for installation into a system location on a target machine but install the package files on the *host* machine inside another path for use with CMAKE_FIND_ROOT_PATH. In this case the package development files must still be relocatable. Handle "/usr move" with a new approach that works with relocatable files. Teach configure_package_config_file and install(EXPORT) to generate special logic in a package configuration file or targets file for installation under (/usr)?/lib(64)?. Teach the file to recognize when it is loaded through a symlink that refers to the same realpath as its original install destination. In such a case, use the original install prefix. Otherwise, compute the prefix relative to the current file location to make it relocatable.
* install(EXPORT): Ensure clean INTERFACE_INCLUDE_DIRECTORIESStephen Kelly2013-03-261-2/+1
| | | | | | | | | | 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.
* install(EXPORT): Force absolute paths for usr-moveBrad King2013-03-081-9/+27
| | | | | | | | | | | | | | | | | | | | | | If the absolute install(EXPORT) destination for the CMAKE_INSTALL_PREFIX used during configuration is under (/usr)?/lib(64)? then assume the current build is for a system package installation instead of a relocatable distribution. Generate an absolute path for _IMPORT_PREFIX in the target exports file instead of generating code to compute the value relative to the file location. This is necessary for distributions implementing a move to /usr such as: https://wiki.archlinux.org/index.php/DeveloperWiki:usrlib "All files in the /lib directory have been moved to /usr/lib and now /lib is a symlink to usr/lib." The relative path computation is not reliable because the targets file could be installed through cross-prefix a symlink and loaded without it or vice versa. A similar change was made for package configuration file generation by commit d4774140 (configure_package_config_file: force absolute paths for usr-move, 2013-01-24).
* Add the INSTALL_PREFIX genex.Stephen Kelly2013-01-271-0/+15
|
* Generate the _IMPORT_PREFIX in the non-config export file.Stephen Kelly2013-01-271-29/+28
|
* Merge topic 'export-new-style-files'Brad King2013-01-231-11/+11
|\ | | | | | | | | 02d4e53 Generate new-style cmake code during export.
| * Generate new-style cmake code during export.Stephen Kelly2013-01-201-11/+11
| | | | | | | | Use empty end*() commands and lowercase commands.
* | Export the COMPATIBLE_INTERFACE_BOOL content propertiesStephen Kelly2013-01-211-0/+1
|/
* Export the INTERFACE_PIC property.Stephen Kelly2013-01-151-0/+2
|
* Move the exported check for file existence.Stephen Kelly2013-01-151-2/+2
| | | | | Check only once, in the Config.cmake file, instead of once in each Config-<cfg>.cmake file.
* Move the exported check for dependencies of targetsStephen Kelly2013-01-151-7/+9
| | | | | 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
|
* Handle INTERFACE properties transitively for includes and defines.Stephen Kelly2013-01-051-0/+17
| | | | | Contextually, the behavior is as if the properties content from another target is included in the string and then the result is evaluated.
* Populate the ExportedTargets member early in GenerateMainFileStephen Kelly2013-01-051-11/+14
| | | | | | | The member variable is checked to determine whether to call HandleMissingTarget(). As that could be called during the loop in the comming commits, ensure that it contains all targets being exported.
* Generate an early-return guard in target Export files.Stephen Kelly2012-11-301-0/+14
| | | | | | | | | | | | 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.