1. 03 Apr, 2013 1 commit
    • Brad King's avatar
      Handle usr-move without forcing absolute paths (#14041) · 6c613b43
      Brad King authored
      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.
      6c613b43
  2. 26 Mar, 2013 1 commit
    • Stephen Kelly's avatar
      install(EXPORT): Ensure clean INTERFACE_INCLUDE_DIRECTORIES · af81a3c3
      Stephen Kelly authored and Brad King's avatar Brad King committed
      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.
      af81a3c3
  3. 08 Mar, 2013 1 commit
    • Brad King's avatar
      install(EXPORT): Force absolute paths for usr-move · 0c727b90
      Brad King authored
      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).
      0c727b90
  4. 27 Jan, 2013 2 commits
  5. 21 Jan, 2013 1 commit
  6. 20 Jan, 2013 1 commit
  7. 15 Jan, 2013 3 commits
  8. 10 Jan, 2013 1 commit
  9. 04 Jan, 2013 2 commits
  10. 30 Nov, 2012 1 commit
    • Stephen Kelly's avatar
      Generate an early-return guard in target Export files. · bf2ddceb
      Stephen Kelly authored
      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.
      bf2ddceb
  11. 30 Sep, 2012 1 commit
    • Alexander Neundorf's avatar
      exports: move the handling of missing targets into subclasses · 0cfd055a
      Alexander Neundorf authored and Brad King's avatar Brad King committed
      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
      0cfd055a
  12. 28 Sep, 2012 6 commits
  13. 22 Nov, 2011 1 commit
    • Alexander Neundorf's avatar
      install(EXPORT): Enforce existence of imported target files · a2be068c
      Alexander Neundorf authored and Brad King's avatar Brad King committed
      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
      a2be068c
  14. 11 Jan, 2011 1 commit
  15. 01 Oct, 2009 1 commit
  16. 28 Sep, 2009 1 commit
    • Brad King's avatar
      Convert CMake to OSI-approved BSD License · 96afb120
      Brad King authored
      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.
      96afb120
  17. 07 Jan, 2009 1 commit
    • Brad King's avatar
      ENH: Refactor computation of import file glob · 254782ed
      Brad King authored
      New method cmExportInstallFileGenerator::GetConfigImportFileGlob
      computes the globbing expression that an installed export file uses to
      load its per-configuration support files.
      254782ed
  18. 06 Feb, 2008 1 commit
  19. 01 Feb, 2008 2 commits
    • Brad King's avatar
    • Brad King's avatar
      ENH: Pass dependent library search path to linker on some platforms. · 82fcaebe
      Brad King authored
        - Move runtime path ordering out of cmComputeLinkInformation
          into its own class cmOrderRuntimeDirectories.
        - Create an instance of cmOrderRuntimeDirectories for runtime
          path ordering and another instance for dependent library
          path ordering.
        - Replace CMAKE_DEPENDENT_SHARED_LIBRARY_MODE with explicit
          CMAKE_LINK_DEPENDENT_LIBRARY_FILES boolean.
        - Create CMAKE_LINK_DEPENDENT_LIBRARY_DIRS boolean.
        - Create variables to specify -rpath-link flags:
            CMAKE_SHARED_LIBRARY_RPATH_LINK_<LANG>_FLAG
            CMAKE_EXECUTABLE_RPATH_LINK_<LANG>_FLAG
        - Enable -rpath-link flag on Linux and QNX.
        - Documentation and error message updates
      82fcaebe
  20. 30 Jan, 2008 1 commit
    • Brad King's avatar
      ENH: Implemented link-interface specification feature. · 7902bc06
      Brad King authored
        - Shared libs and executables with exports may now have
          explicit transitive link dependencies specified
        - Created LINK_INTERFACE_LIBRARIES and related properties
        - Exported targets get the interface libraries as their
          IMPORTED_LINK_LIBRARIES property.
        - The export() and install(EXPORT) commands now give
          an error when a linked target is not included since
          the user can change the interface libraries instead
          of adding the target.
      7902bc06
  21. 28 Jan, 2008 4 commits
    • Brad King's avatar
    • Brad King's avatar
      ENH: Support exporting/importing of AppBundle targets. · e3b1bdb0
      Brad King authored
        - Imported bundles have the MACOSX_BUNDLE property set
        - Added cmTarget::IsAppBundleOnApple method to simplify checks
        - Document BUNDLE keyword in INSTALL command
        - Updated IMPORTED_LOCATION property documentation for bundles
        - Updated ExportImport test to test bundles
      e3b1bdb0
    • Brad King's avatar
      ENH: Support exporting/importing of Framework targets. · 28ea0347
      Brad King authored
        - Imported frameworks have the FRAMEWORK property set
        - Added cmTarget::IsFrameworkOnApple method to simplify checks
        - Also remove separate IMPORTED_ENABLE_EXPORTS property and just use ENABLE_EXPORTS since, like FRAMEWORK, it just represents the target type.
        - Document FRAMEWORK keyword in INSTALL command.
        - Updated IMPORTED_LOCATION property documentation for Frameworks
      28ea0347
    • Brad King's avatar
      ENH: Updated exporting and importing of targets to support libraries and configurations. · 5594ad48
      Brad King authored
        - Created cmExportFileGenerator hierarchy to implement export file generation
        - Installed exports use per-config import files loaded by a central one.
        - Include soname of shared libraries in import information
        - Renamed PREFIX to NAMESPACE in INSTALL(EXPORT) and EXPORT() commands
        - Move addition of CMAKE_INSTALL_PREFIX to destinations to install generators
        - Import files compute the installation prefix relative to their location when loaded
        - Add mapping of importer configurations to importee configurations
        - Rename IMPORT targets to IMPORTED targets to distinguish from windows import libraries
        - Scope IMPORTED targets within directories to isolate them
        - Place all properties created by import files in the IMPORTED namespace
        - Document INSTALL(EXPORT) and EXPORT() commands.
        - Document IMPORTED signature of add_executable and add_library
        - Enable finding of imported targets in cmComputeLinkDepends
      5594ad48