1. 09 Jun, 2014 2 commits
  2. 11 Mar, 2014 1 commit
    • Stephen Kelly's avatar
      Remove some c_str() calls. · 21c573f6
      Stephen Kelly authored
      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.
  3. 08 Mar, 2014 5 commits
  4. 02 Jan, 2014 1 commit
  5. 11 Dec, 2013 1 commit
  6. 21 Nov, 2013 1 commit
    • Stephen Kelly's avatar
      Introduce CMAKE_STAGING_PREFIX variable. · 7521da28
      Stephen Kelly authored
      This variable can be useful in cross-compiling contexts where the
      sysroot is read-only or where the sysroot should otherwise remain
      If the new CMAKE_STAGING_PREFIX variable is set, it is used instead
      of CMAKE_INSTALL_PREFIX when generating the installation rules in
      This way, the CMAKE_INSTALL_PREFIX variable
      always refers to the installation prefix on the target device, regardless
      of whether host==target.
      If any -rpath paths passed to the linker contain the CMAKE_STAGING_PREFIX,
      the matching path fragments are replaced with the CMAKE_INSTALL_PREFIX.
      Matching paths in the -rpath-link are not transformed.
      The cross-prefix usr-move workaround is assumed not to require extension
      regarding CMAKE_STAGING_PREFIX. The staging area is a single prefix, so
      there is no scope for cross-prefix symlinks. The CMAKE_INSTALL_PREFIX
      is still used to determine the workaround path, and that variable
      remains the relevant one even if CMAKE_STAGING_PREFIX is used. If the
      generated export files are deployed to the target, the workaround
      will still be in place, and still be employed if required.
  7. 19 Nov, 2013 1 commit
    • Stephen Kelly's avatar
      Add CMAKE_SYSROOT variable to set --sysroot when cross compiling. · 7cd65c97
      Stephen Kelly authored
      As CMAKE_ROOT_FIND_PATH can be a list, a new CMAKE_SYSROOT is
      introduced, which is never a list.
      The contents of this variable is passed to supporting compilers
      as --sysroot. It is also accounted for when processing implicit
      link directories reported by the compiler, and when generating
      RPATH information.
  8. 31 Oct, 2013 1 commit
    • Stephen Kelly's avatar
      cmTarget: Make GetProperty() const. · c4373b33
      Stephen Kelly authored
      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.
  9. 07 Oct, 2013 1 commit
    • Stephen Kelly's avatar
      Add the INTERFACE_LIBRARY target type. · fe732264
      Stephen Kelly authored
      This target type only contains INTERFACE_* properties, so it can be
      used as a structural node. The target-specific commands enforce
      that they may only be used with the INTERFACE keyword when used
      with INTERFACE_LIBRARY targets. The old-style target properties
      matching LINK_INTERFACE_LIBRARIES_<CONFIG> are always ignored for
      this target type.
      The name of the INTERFACE_LIBRARY must match a validity generator
      expression. The validity is similar to that of an ALIAS target,
      but with the additional restriction that it may not contain
      double colons. Double colons will carry the meaning of IMPORTED
      or ALIAS targets in CMake 2.8.13.
      An ALIAS target may be created for an INTERFACE library.
      At this point it can not be exported and does not appear in the
      buildsystem and project files are not created for them. That may
      be added as a feature in a later commit.
      The generators need some changes to handle the INTERFACE_LIBRARY
      targets returned by cmComputeLinkInterface::GetItems. The Ninja
      generator does not use that API, so it doesn't require changes
      related to that.
  10. 16 Jul, 2013 1 commit
  11. 12 Jul, 2013 1 commit
  12. 21 Jun, 2013 1 commit
  13. 07 Jun, 2013 1 commit
    • Stephen Kelly's avatar
      Use --sysroot when cross compiling. · de4da665
      Stephen Kelly authored
      As CMAKE_ROOT_FIND_PATH can be a list, a new CMAKE_SYSROOT is
      introduced, which is never a list.
      The contents of this variable is passed to supporting compilers
      as --sysroot. It is also accounted for when processing implicit
      link directories reported by the compiler, and when generating
      RPATH information.
  14. 03 Jun, 2013 1 commit
    • Clinton Stimpson's avatar
      OS X: Add RPATH support for Mac. · 94e7fef2
      Clinton Stimpson authored
      RPATH support is activated on targets that have the MACOSX_RPATH
      property turned on.
      For install time, it is also useful to set INSTALL_RPATH to help
      find dependent libraries with an @rpath in their install name.
      Also adding detection of rpath conflicts when using frameworks.
  15. 21 May, 2013 1 commit
  16. 28 Feb, 2013 1 commit
  17. 14 Feb, 2013 2 commits
    • Brad King's avatar
      AIX-GNU: Put implicit link directories in runtime libpath (#13909) · baa33acb
      Brad King authored
      The GNU compiler front-ends on AIX invoke the linker with flags of the
      form "-L/path/to/gnu/runtime/lib" to tell ld where to find the language
      runtime libraries.  They depend on the default libpath behavior
      documented in "man ld" to add the -L paths also to the runtime libpath
      so the dynamic loader can find the language runtime libraries.  This
      differs from platforms whose linkers have distinct -rpath flags that
      non-system compilers can use to tell the dynamic loader where to find
      their language runtime libraries.
      Since commit 96fd5909 (Implement linking with paths to library files,
      2008-01-22) CMake always passes "-Wl,-blibpath:" followed by any
      project-defined RPATH plus "/usr/lib:/lib" in order to explicitly set
      the runtime libpath and avoid getting all the project -L paths in the
      runtime libpath.  The explicit libpath prevents the GNU compiler runtime
      library -L paths from being placed in the libpath and then the dynamic
      loader fails to find the language runtime libraries.
      CMake already detects the implicit link directories for each language
      since commit 07ea19ad (Implicit link info for C, CXX, and Fortran,
      2009-07-23).  Add the implicit link directories to the explicit runtime
      libpath for GNU compilers on AIX to fix this use case.
    • Brad King's avatar
      Avoid duplicate RPATH entries · 171b0993
      Brad King authored
      Teach cmComputeLinkInformation::GetRPath to avoid adding the same
      directory to the output runtime path more than once.
  18. 08 Jan, 2013 1 commit
    • Stephen Kelly's avatar
      Make linking APIs aware of 'head' target · 40cf3fb9
      Stephen Kelly authored
      The 'head' is the dependent target to be linked with the current target.
      It will be used to evaluate generator expressions with proper handling
      of mapped configurations and is used as the source target of properties.
      This requires that memoization is done with a key of a pair of target
      and config, instead of just config, because now the result also depends
      on the target.  Removing the memoization entirely is not an option
      because it slows cmake down considerably.
  19. 11 Dec, 2012 1 commit
    • Brad King's avatar
      OS X: Detect implicit linker framework search paths · cc676c3a
      Brad King authored
      Previously we hard-coded a list of implicit framework directories but
      did not account for CMAKE_OSX_SYSROOT or for changes to the list across
      OS X versions.  Instead we should automatically detect the framework
      directories for the active toolchain.
      The parent commit added the "-Wl,-v" option to ask "ld" to print its
      implicit directories.  It displays a block such as:
       Framework search paths:
      Parse this block to extract the list of framework directories.
      Detection may fail on toolchains that do not list their framework
      directories, such as older OS X linkers.  Always treat the paths
       <sdk>/Network/Library/Frameworks # Older OS X only
      as implicit.  Note that /System/Library/Frameworks should always be
      considered implicit so that frameworks CMake finds there will not
      override the SDK copies.
  20. 26 Oct, 2012 1 commit
  21. 13 Aug, 2012 1 commit
    • Kitware Robot's avatar
      Remove trailing whitespace from most CMake and C/C++ code · 7bbaa428
      Kitware Robot authored
      Our Git commit hooks disallow modification or addition of lines with
      trailing whitespace.  Wipe out all remnants of trailing whitespace
      everywhere except third-party code.
      Run the following shell code:
      git ls-files -z -- \
       bootstrap doxygen.config '*.readme' \
       '*.c' '*.cmake' '*.cpp' '*.cxx' \
       '*.el' '*.f' '*.f90' '*.h' '*.in' '*.in.l' '*.java' \
       '*.mm' '*.pike' '*.py' '*.txt' '*.vim' |
      egrep -z -v '^(Utilities/cm|Source/(kwsys|CursesDialog/form)/)' |
      egrep -z -v '^(Modules/CPack\..*\.in)' |
      xargs -0 sed -i 's/ \+$//'
  22. 05 Mar, 2012 1 commit
  23. 13 Feb, 2012 1 commit
    • Brad King's avatar
      Recognize OpenBSD versioned .so names (#12954) · afc75bb7
      Brad King authored
      OpenBSD shared library names end in a ".#.#" version number suffix.
      Teach cmComputeLinkInformation to tolerate the extra suffix after
      the normal library name suffixes when parsing library names.
  24. 15 Dec, 2011 1 commit
    • Brad King's avatar
      Do not link private dependent shared libraries on OS X > 10.4 · 5d993431
      Brad King authored
      The default OS X 10.4 linker incorrectly searches for dependencies of
      linked shared libraries only under the -isysroot location.  It fails to
      find dependencies of linked shared libraries in cases such as the
      ExportImport test.  It produces errors like:
       /usr/libexec/gcc/i686-apple-darwin8/4.0.1/ld: warning can't open dynamic library:
       referenced from: /.../ExportImport/Root/lib/libtestLib3lib.1.2.dylib
       (checking for undefined symbols may be affected) (No such file or directory, errno = 2)
       /usr/libexec/gcc/i686-apple-darwin8/4.0.1/ld: Undefined symbols: _testLib3Imp
       referenced from libtestLib3lib expected to be defined in
      or with CMAKE_SKIP_RPATH off to enable install_name in the Export side:
       /usr/libexec/gcc/i686-apple-darwin8/4.0.1/ld: warning can't open dynamic library:
       referenced from: /.../ExportImport/Export/libtestLib3lib.1.2.dylib
       (checking for undefined symbols may be affected) (No such file or directory, errno = 2)
       /usr/libexec/gcc/i686-apple-darwin8/4.0.1/ld: Undefined symbols:_testLib3Imp
       referenced from libtestLib3lib expected to be defined in
      Note how "/Developer/SDKs/MacOSX10.4u.sdk" is prepended to the dependent
      library path.
      Commit 2cff26fa (Support linking to shared libs with dependent libs,
      2008-01-31) and commit 82fcaebe (Pass dependent library search path to
      linker on some platforms, 2008-02-01) worked around the problem by
      defining platform variable CMAKE_LINK_DEPENDENT_LIBRARY_FILES.  It tells
      CMake to link to dependent libraries explicitly by their path thus
      telling the linker where to find them.
      Unfortunately the workaround had the side effect of linking dependent
      libraries and defeats most benefits of LINK_INTERFACE_LIBRARIES.
      Fortunately OS X 10.5 and above do not need to find transitive
      dependencies at all so we can avoid the workaround on Modern OS X.
  25. 02 Nov, 2011 1 commit
    • Brad King's avatar
      Fix linking to OS X Frameworks named with spaces (#12550) · e74f3744
      Brad King authored
      Teach cmComputeLinkInformation to generate the "-framework" option as a
      separate link item preceding the actual framework name.  Then escape the
      framework name to pass as an argument through a shell.  This fixes the
      link line for frameworks with spaces in the name.
      The build system generators that call cli.GetItems() and generate the
      final list of items on the link line already handle escaping correctly
      for items that are paths.  However, for raw link items like "-lfoo" they
      just pass through to the command line verbatim.  This is incorrect.  The
      generators should escape these items too.  Unfortunately we cannot fix
      that without introducing a new CMake Policy because projects may already
      be passing raw link flags with their own escapes to work around this
      bug.  Therefore we punt on this bug for now and go with the above fix.
  26. 27 Jul, 2011 1 commit
  27. 03 Mar, 2011 1 commit
    • Brad King's avatar
      Add target property LINK_SEARCH_START_STATIC to aid static linking · 5abfb571
      Brad King authored
      Commit afd7d4ca (Add target property LINK_SEARCH_END_STATIC, 2008-01-31)
      defined a property to ensure that static runtime libraries get selected.
      Add a property to specify that all libraries whose type is unknown, such
      as "-lm", should be assumed static.  Furthermore it assumes that an
      option such as "-static" is also used so that no initial -Bstatic is
  28. 18 Nov, 2010 1 commit
    • Brad King's avatar
      Prefer non-empty prefixes when matching lib names (#11468) · 5fe3ac86
      Brad King authored
      In cmComputeLinkInformation we match library names with a regular
      expression, possibly extracting the 'lib' prefix.  The regex component
      to match the prefix always allows an empty prefix to be matched, as in
      "(lib|)".  Avoid every adding an empty prefix option earlier in the
      regex, as in "(|lib|)", because it will be preferred and 'lib' will
      never match.
  29. 27 Apr, 2010 1 commit
  30. 21 Apr, 2010 1 commit
  31. 26 Mar, 2010 1 commit
    • Chuck Atkins's avatar
      OpenBSD: Work-around static/runtime linker inconsistency · e7507618
      Chuck Atkins authored
      Detect the runtime linker's search path and add to the compile time
      linker's search path.  This is needed because OpenBSD's static linker
      does not search for shared library dependencies in the same places as
      the runtime linker.
  32. 01 Oct, 2009 1 commit
  33. 30 Sep, 2009 1 commit
  34. 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.