Commit Graph

11 Commits

Author SHA1 Message Date
Bill Hoffman f9687e328f Merge in changes to CMake-2-8 RC 2 2009-10-01 17:21:28 -04:00
Brad King 0de8be8b49 ENH: Link runtime libraries of all languages
This adds implicit libraries and search directories for languages linked
into a target other than the linker language to its link line.  For
example, when linking an executable containing both C++ and Fortran code
the C++ linker is used but we need to add the Fortran libraries.

The variables

  CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES
  CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES

contain the implicit libraries and directories for each language.
Entries for the linker language are known to be implicit in the
generated link line.  Entries for other languages that do not appear in
the known implicit set are listed explicitly at the end of the link
line.
2009-07-27 12:43:17 -04:00
Brad King d60608c858 STYLE: Factor CollectOriginalDirectories code
This factors code out of cmOrderDirectories::CollectOriginalDirectories
into cmOrderDirectories::AddOriginalDirectories.  Later a new call will
be added, and this is more readable anyway.
2009-07-14 10:14:41 -04:00
Brad King 85a46e9e51 BUG: Fix same-file check for directory ordering
When computing runtime search path ordering a constraint exists when a
file that may be found by the runtime search exists in a directory other
than that containing the desired file.  We test whether a potential
conflict is really the same due to a symlink.  Recently the change to
cmFindLibraryCommand to load directory content created a case in which
the same-file check would be incorrectly skipped.  This avoids skipping
the check.
2008-12-26 13:28:20 -05:00
Brad King f8f5dde2ee ENH: Warn when system libraries may be hidden.
We never explicitly specify system library directories in linker or
runtime search paths.  Furthermore, libraries in these directories are
always linked by asking the linker to search for them.  We need to
generate a warning when explicitly specified search directories contain
files that may hide the system libraries during the search.
2008-07-29 14:57:00 -04:00
Brad King 01d143c77b ENH: Provide context in path ordering warnings 2008-07-29 14:01:04 -04:00
Brad King 478fbdfc23 STYLE: Fix typo in comment in cmOrderDirectories 2008-07-29 14:00:59 -04:00
Brad King 5e7dce703e COMP: Fix unreachable code warning in cmOrderDirectories. 2008-02-22 09:44:11 -05:00
Brad King 90b99433fc COMP: Remove unused local variable from cmOrderDirectories. 2008-02-21 13:59:34 -05:00
Brad King 782e9f7ffe ENH: Improve linking to third-party shared libraries on soname platforms
- Reduce false positives in cases of unknown soname
  - Make library extension regular expressions match only at end of string
  - When linking to libraries in implicit dirs convert to the -l option
    only if the file name is one that can be found by the linker
    (ex. /usr/lib/libfoo.so.1 should be linked by full path)
  - Add cmSystemTools::GuessLibrarySOName to guess the soname of a
    library based on presence of a symlink
  - In cmComputeLinkInformation try to guess an soname before assuming
    that a third-party library is built without an soname
  - In cmOrderDirectories guess the soname of shared libraries in cases
    it is otherwise unknown
2008-02-21 13:58:41 -05:00
Brad King fd37a6ec3d ENH: Better linker search path computation.
- Use linker search path -L.. -lfoo for lib w/out soname
    when platform sets CMAKE_PLATFORM_USES_PATH_WHEN_NO_SONAME
  - Rename cmOrderRuntimeDirectories to cmOrderDirectories
    and generalize it for both soname constraints and link
    library constraints
  - Use cmOrderDirectories to order -L directories based
    on all needed constraints
  - Avoid processing implicit link directories
  - For CMAKE_OLD_LINK_PATHS add constraints from libs
    producing them to produce old ordering
2008-02-21 11:41:11 -05:00