summaryrefslogtreecommitdiffstats
path: root/Source/cmExportInstallFileGenerator.cxx
Commit message (Collapse)AuthorAgeFilesLines
* 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.
* exports: move the handling of missing targets into subclassesAlex Neundorf2012-09-301-1/+70
| | | | | | | | | | Before, cmExportFileGenerator::ComplainAboutMissingTarget() was a virtual function which had to be implemented in the subclasses. It is not anymore. Instead, there is now a virtual function HandleMissingTargets(), which is implemented in the two subclasses. This makes e.g. dealing correctly with APPEND mode easier. Alex
* exports: fix build with MSVC6Alex Neundorf2012-09-281-2/+2
| | | | | | it seems it doesn't like deleting const pointers Alex
* exports: first try at error handling if a target is missingAlex Neundorf2012-09-281-1/+3
| | | | | | | | | Now, if an imported target depends on a library which must come from some other export set, cmake generates a check which errors out if that target does not exist. I guess instead of completely erroring out it would be better to only make the find_package() fail. Alex
* exports: accept a missing target if it is exported exactly onceAlex Neundorf2012-09-281-3/+13
| | | | | | | | | | | If a target is exported, and a library it depends on is not part of the same export set, before this patch cmake errored out. With this patch, it now checks whether the missing target is exported somewhere else exactly once, and accepts in this case (because then it can determine the namespace for the missing target and use this). Alex
* exports: Hold an ExportSet pointer in cm*Export*GeneratorYury G. Kudryashov2012-09-281-12/+17
| | | | Get name from this->ExportSet.
* exports: Create class cmExportSetYury G. Kudryashov2012-09-281-8/+9
| | | | | Replace direct use of 'std::vector<cmTargetExport const*>' with a dedicated class.
* exports: Move cmTargetExport to a dedicated header fileYury G. Kudryashov2012-09-281-0/+1
|
* install(EXPORT): Enforce existence of imported target filesAlex Neundorf2011-11-221-10/+20
| | | | | | | | | | Typical <package>Config.cmake files for find_package() rely only on the files generated by install(EXPORT). They might be wrong, for whatever reasons, like people manually deleted files, projects were packaged wrong by distributions, whatever. To protect against this, add checks that the file locations we are importing actually exist on disk. Alex
* Add support for CFBundle targets on the Mac (#11295)Richard Bateman2011-01-111-0/+14
| | | | | This commit enables building, for example, plugin bundles to be loaded by web browsers.
* Convert CMake to OSI-approved BSD LicenseBrad King2009-09-281-14/+9
| | | | | | | This converts the CMake license to a pure 3-clause OSI-approved BSD License. We drop the previous license clause requiring modified versions to be plainly marked. We also update the CMake copyright to cover the full development time range.