1. 20 Jun, 2012 1 commit
    • Brad King's avatar
      Do not crash on SHARED library without language (#13324) · 56148fd2
      Brad King authored
      Since commit e1409ac5 (Support building shared libraries or modules
      without soname, 2012-04-22) CMake crashes on the code
       add_library(foo SHARED foo.nolang)
      because the logic to lookup the language's soname flag was moved from
      cmTarget::GetLibraryNames to cmMakefile::GetSONameFlag without its check
      for a NULL language.  Restore the check for NULL.
      Add RunCMake.Languages test to cover language error cases like this one.
  2. 01 May, 2012 13 commits
  3. 30 Apr, 2012 4 commits
    • Brad King's avatar
      Test NO_SONAME property (#13155) · fdb3f878
      Brad King authored
      Teach the Plugin test to check that the NO_SONAME target property works
      as documented.  Check that the IMPORTED targets are written with the
      correct properties.  When readelf is available use it to check the
      actual binary files for SONAME fields.
    • Modestas Vainius's avatar
      Support building shared libraries or modules without soname (#13155) · e1409ac5
      Modestas Vainius authored and Brad King's avatar Brad King committed
      Add a boolean target property NO_SONAME which may be used to disable
      soname for the specified shared library or module even if the platform
      supports it.  This property should be useful for private shared
      libraries or various plugins which live in private directories and have
      not been designed to be found or loaded globally.
      Replace references to <CMAKE_SHARED_LIBRARY_SONAME_${LANG}_FLAG> and
      hard-coded -install_name flags with a conditional <SONAME_FLAG> which is
      expanded to the value of the CMAKE_SHARED_LIBRARY_SONAME_${LANG}_FLAG
      definition as long as soname supports is enabled for the target in
      question.  Keep expanding CMAKE_SHARED_LIBRARY_SONAME_${LANG}_FLAG in
      rules in case third party projects still use it.  Such projects would
      not yet use NO_SONAME so the adjacent <TARGET_SONAME> will always be
      expanded.  Make <TARGET_INSTALLNAME_DIR> NO_SONAME aware as well.  Since
      -install_name is soname on OS X, this should not be a problem if this
      variable is expanded only if soname is enabled.
      The Ninja generator performs rule variable substitution only once
      globally per rule to put its own placeholders.  Final substitution is
      performed by ninja at build time.  Therefore we cannot conditionally
      replace the soname placeholders on a per-target basis.  Rather than
      omitting $SONAME from rules.ninja, simply do not write its contents for
      targets which have NO_SONAME.  Since 3 variables are affected by
      soname is enabled.
    • Brad King's avatar
    • Kitware Robot's avatar
      CMake Nightly Date Stamp · 711f3ccb
      Kitware Robot authored
  4. 29 Apr, 2012 1 commit
  5. 28 Apr, 2012 3 commits
  6. 27 Apr, 2012 7 commits
    • Brad King's avatar
      VS10: Generate relative source paths when possible (#12570) · d931ce9f
      Brad King authored
      Since commit ed0075bd (Use relative paths for custom command inputs,
      2011-06-22) CMake generates full paths to source files in VS 10 project
      files to avoid trouble with deep source/build tree paths.  However, the VS
      10 IDE will not populate the source file property dialog for a file
      referenced by full path.  Instead use a relative path when possible.  When
      not possible produce a detailed warning explaining the problem and
      suggesting use of shorter directory paths.
    • Brad King's avatar
      VS11: Do not use source path conversion workaround specific to VS 10 · b2e7c7ae
      Brad King authored
      CMake <= 2.8.4 generated VS 10 project files with a relative path to
      source files.  Then commit ed0075bd (Use relative paths for custom command
      inputs, 2011-06-22) switched to using relative paths only for source files
      holding custom commands and full paths for other sources.  This behavior
      was inhereted by the VS 11 generator but is not needed so use the
      workaround only for exactly VS 10.  Explain the behavior in comments.
    • Brad King's avatar
      VS10: Convert paths normally unless forced to relative · 4248132e
      Brad King authored
      Most CMake generators produce relative paths within the build tree and
      full paths to files outside the build tree.  Make VS 10 and VS 11
      project files consistent with this approach except for paths forced to
      be relative to work around a VS 10 bug.
    • Brad King's avatar
      VS10: Simplify vcxproj.filter file generation · c2ba6ba4
      Brad King authored
      Remove the duplicate source file classification logic used to generate
      the filter files.  Instead record during the main vcxproj file
      generation the source files generated for each tool.  Also record
      whether or not each source file is converted to a relative path.  Use
      the recorded result during filter generation to ensure consistency
      between the project file and filter file.
    • Brad King's avatar
      VS10: Refactor custom commands to use WriteSource · 4f2d9d2d
      Brad King authored
      All other source file elements are already written through WriteSource.
      Refactor custom command source element generation into WriteSource too.
    • Brad King's avatar
      KWSys: Fix SystemTools environment memory handling (#13156) · e48796b2
      Brad King authored
      The SystemTools::PutEnv function tries to provide the "putenv" API
      without leaking memory.  However, the kwsysDeletingCharVector singleton
      frees memory that may still be referenced by the environment table,
      having been placed there by putenv.  If any static destruction or
      processing by an external tool happens after the singleton is destroyed
      and accesses the environment it will read invalid memory.
      Replace use of putenv with setenv/unsetenv when available.  The latter
      manage internal copies of the values passed instead of referencing the
      original memory.  When setenv/unsetenv are not available use putenv with
      a singleton that removes its values from the environment before freeing
      their memory.  This requires an "unputenv" implementation.  On at least
      some platforms it must be written in terms of "putenv" because other
      APIs are not available and direct modification of the "environ" global
      is not safe (e.g. on Windows there is interaction with "wenviron").
      Fortunately either putenv("A=") or putenv("A") will remove "A" from the
      environment on these platforms.  On other platforms fall back to direct
      manipulation of "environ".
      Also add UnPutEnv to the API and add a test for the behavior of both.
    • Kitware Robot's avatar
      CMake Nightly Date Stamp · e6d28c7e
      Kitware Robot authored
  7. 26 Apr, 2012 8 commits
  8. 25 Apr, 2012 3 commits