Skip to content
Snippets Groups Projects
  1. May 06, 2014
  2. Feb 19, 2014
    • Brad King's avatar
      Change version scheme to use only two components for feature levels · 7cbab178
      Brad King authored
      Historically CMake used three version components for the feature level.
      We released new features while incrementing only the third version
      component.  Since commit v2.8.2~105^2~4 (New version scheme to support
      branchy workflow, 2010-04-23) we used the fourth version component for
      bug-fix releases and the development date:
      
       <major>.<minor>.<patch>[.<tweak>][-rc<n>] = Release
       <major>.<minor>.<patch>.<date>[-<id>]     = Development
      
      This solidified use of three components for the feature level, and was
      necessary to continue releasing 2.x versions because:
      
      * Some existing projects performed floating-point comparisons of
        ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} to 2.x numbers
        so ``x`` could never be higher than 9.
      
      * Version 2.9.<date> was used briefly in post-2.8.0 development in
        CVS prior to the transition to Git, so using it in releases may
        have caused confusion.
      
      Now that we are moving to 3.x versions, these two restrictions go away.
      Therefore we now change to use only two components for the feature
      level and use the scheme:
      
       <major>.<minor>.<patch>[-rc<n>] = Release
       <major>.<minor>.<date>[-<id>]   = Development
      7cbab178
  3. Feb 10, 2014
  4. Feb 09, 2014
    • Stephen Kelly's avatar
      CMakeLists: Generate the cmCommands.cxx file. · 23d3d38a
      Stephen Kelly authored
      Define the list of commands in the CMakeLists.txt file. List the
      sources in the CMakeLib target, but mark them as HEADER_FILE_ONLY.
      This has the effect that IDEs will show the files, though they
      will not be built again.
      
      Add a cmCommandsForBootstrap.cxx file for bootstrapping purposes.
      
      Rename the cmExportLibraryDependencies file to match the common
      pattern.
      23d3d38a
  5. Jan 15, 2014
  6. Nov 25, 2013
    • Brad King's avatar
      bootstrap: Add KWSys Encoding and FStream · 2ba2c435
      Brad King authored
      Run the KWSYS_STL_HAS_WSTRING platform test and configure the result.
      Configure the Encoding and FStream header files and build the sources.
      On Windows, build EncodingC.c with KWSYS_ENCODING_DEFAULT_CODEPAGE=CP_ACP.
      2ba2c435
  7. Nov 12, 2013
  8. Oct 25, 2013
    • Brad King's avatar
      Shorten CMake version used in install destinations · 1093deeb
      Brad King authored
      Since commit c9a5f34b (Cleanup use of CMake version in install
      destinations, 2013-09-26) we use the full CMake version in default
      install destinations.  For rapidly changing versions of the form
      
       <major>.<minor>.<patch>.<date>-g<commit>[-dirty]
      
      used by developers this is too granular.  Instead use just
      
       <major>.<minor>.<patch>
      
      as the version for default install destinations.  This will still
      be granular enough for unique directories in releases.
      
      On Cygwin continue to use the full ${CMake_VERSION} as was the case
      prior to the above-mentioned commit.
      1093deeb
  9. Oct 19, 2013
  10. Oct 18, 2013
  11. Oct 16, 2013
    • Brad King's avatar
      Build Help documentation during CMake build using Sphinx · bfe07aa9
      Brad King authored
      Add a Utilities/Sphinx directory to hold CMake build code to run the
      Sphinx (sphinx-doc.org) documentation generation tool.  Create a
      CMakeLists.txt file there capable of building either as a subdirectory
      of the main CMake build, or as a standalone documentation build.
      
      Add cache options SPHINX_MAN and SPHINX_HTML to select output formats
      and SPHINX_EXECUTABLE to specify the sphinx-build executable.  Add
      bootstrap options --sphix-man and --sphinx-html to select output formats
      and --sphinx-build=<sb> to specify the sphinx-build executable.
      
      Create a "conf.py.in" file to configure_file into "conf.py" to tell
      sphinx-build how to build our documents.  Create a "cmake.py" Sphinx
      extension module defining:
      
      * The "cmake-module" directive used in Help/module/*.rst files to
        scan .rst markup from the corresponding Modules/*.cmake file.
      
      * A Sphinx domain called "cmake" defining documentation object types
        for CMake Help/<type> directories: command, generator, manual,
        module, policy, prop_*, and variable.  Add a "role" for each type
        to perform cross-references.  Teach the roles to treat "<XYZ>"
        as placeholders instead of explicit targets if not preceded by
        a space.  Add cmake domain directives to define command and
        variable objects explicitly in .rst file content.  This will
        allow modules to define their own commands and variables and
        have them indexed and linkable.
      
      * A Sphinx document transform that converts Help/<type>/*.rst documents
        into cmake domain objects of the corresponding <type> and adds index
        entries for them.  This will automatically index all CMake documentation
        objects and provide cross-reference targets for them with no special
        markup in the .rst files.
      bfe07aa9
    • Brad King's avatar
      Drop builtin property documentation · 399e9c46
      Brad King authored
      Drop all DefineProperty calls for non-chained properties.  Drop the
      documentation from the chained ones.  The documentation for all
      properties is now in Help/prop_*/*.rst files.
      399e9c46
    • Brad King's avatar
      Drop all documentation formatters except Usage · 80a3273b
      Brad King authored
      We now need only the Usage formatter to support command-line options
      that print basic usage, and the supporting indented=>preformatted markup
      processor to support CMake message formatting.  Drop all other
      documentation formatters and move the remaining code up into the top
      cmDocumentationFormatter class.
      80a3273b
  12. Oct 15, 2013
    • Brad King's avatar
      Cleanup use of CMake version in install destinations · c9a5f34b
      Brad King authored
      Factor the CMAKE_DATA_DIR, CMAKE_DOC_DIR, and CMAKE_MAN_DIR selection
      out of CMakeLists.txt and into a Source/CMakeInstallDestinations.cmake
      script.  Load the script from the original location of the code.
      
      Cache the destination values as empty strings so we know if the user
      sets them explicitly.  If not, then compute defaults based on the
      platform and full CMake version string.  By not caching the versioned
      defaults, we can change them in a single build tree as the version
      changes.
      
      Remove duplication of the install destination defaults from the
      bootstrap script.  Cache empty defaults there too.  Parse from the CMake
      code the default values to report in the help output.  Keep the CMake
      code in a structured format to make this reliable.
      c9a5f34b
    • Brad King's avatar
      bootstrap: Report -rc# in --version output · 82578d99
      Brad King authored
      82578d99
  13. Oct 03, 2013
    • Brad King's avatar
      cmake: Split -E command implementation into separate source file · c04995b4
      Brad King authored
      Move the cmake::ExecuteCMakeCommand static method and all the static
      methods it calls out of the 'cmake' class to a separate 'cmcmd' class.
      Build the latter as part of the main cmake executable with cmakemain.cxx
      and not in CMakeLib.  Drop unused header includes from "cmake.cxx".
      
      By moving this implementation out of cmake.cxx we avoid carrying it
      around in all the executables that use class 'cmake'.  It is needed only
      for the main "cmake -E" functionality.
      c04995b4
  14. Sep 12, 2013
  15. Aug 26, 2013
    • Brad King's avatar
      Clean up install rules of CMake itself (#14371) · df62f64d
      Brad King authored
      Ensure CMAKE_DATA_DIR, CMAKE_DOC_DIR, and CMAKE_MAN_DIR are always
      relative paths in CMake code, and set defaults accordingly.  Use the
      install() command instead of install_files() and install_targets().
      This is more modern and also avoids stripping of the first character
      from user-specified destinations.
      
      While at it, fix the default destinations reported in the bootstrap
      help.
      df62f64d
  16. Aug 02, 2013
    • Brad King's avatar
      bootstrap: Do not suppress CMAKE_OSX_SYSROOT if CFLAGS have -isysroot (#14324) · bf5a5bc8
      Brad King authored
      Revert commit a1c032b9 (bootstrap: Suppress CMAKE_OSX_SYSROOT if CFLAGS
      have -isysroot, 2012-09-21).  If MACOSX_DEPLOYMENT_TARGET is set then
      CMAKE_OSX_DEPLOYMENT_TARGET will be set and Darwin.cmake will complain
      if no CMAKE_OSX_SYSROOT is set.  Just allow both -isysroot flags to
      appear.  The one generated by CMAKE_OSX_SYSROOT appears after and
      overrides the one from CFLAGS/CXXFLAGS.
      bf5a5bc8
  17. Jun 14, 2013
  18. Jun 03, 2013
    • Brad King's avatar
      bootstrap: Compile KWSys SystemTools with UTIME(S|NSAT) values · 9d38db53
      Brad King authored
      The parent commit merged a change to KWSys that adds preprocessor
      definitions for KWSYS_CXX_HAS_UTIMENSAT and KWSYS_CXX_HAS_UTIMES to the
      command line for compiling SystemTools.  For bootstrapping we do not
      need sub-1s timestamps so just define them to 0 for now.
      9d38db53
  19. Feb 22, 2013
  20. Jan 07, 2013
  21. Dec 19, 2012
  22. Nov 05, 2012
  23. Oct 31, 2012
    • Rolf Eike Beer's avatar
      Linux/PA-RISC: Link with --unique=.text.* to help binutils · e496c540
      Rolf Eike Beer authored and Brad King's avatar Brad King committed
      There is a binutils bug that leads to errors like this:
      
      /usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.6.3/../../../../hppa2.0-unknown-linux-gnu/bin/ld: libCMakeLib.a(cmTarget.cxx.o)(.text+0x12084): cannot reach 00001d28__ZNSspLEPKc@@GLIBCXX_3.4+0, recompile with -ffunction-sections
      /usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.6.3/../../../../hppa2.0-unknown-linux-gnu/bin/ld: libCMakeLib.a(cmTarget.cxx.o)(.text+0x12084): cannot handle R_PARISC_PCREL17F for std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator+=(char const*)@@GLIBCXX_3.4
      /usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.6.3/../../../../hppa2.0-unknown-linux-gnu/bin/ld: final link failed: Bad value
      
      Until someone finds out what needs to be fixed in binutils this allows anyone
      to compile a working CMake even in debug mode.
      e496c540
  24. Sep 28, 2012
  25. Sep 21, 2012
    • Brad King's avatar
      bootstrap: Suppress CMAKE_OSX_SYSROOT if CFLAGS have -isysroot · a1c032b9
      Brad King authored
      In order to bootstrap on OS X with Xcode without the command line tools
      one must add -isysroot to CFLAGS and CXXFLAGS.  In this case the flags
      will make it into the configured CMake.  Set CMAKE_OSX_SYSROOT to empty
      in the initial cache to prevent CMake from adding -isysroot again.
      a1c032b9
  26. Sep 18, 2012
    • Stephen Kelly's avatar
      cmGeneratorExpression: Re-write for multi-stage evaluation · f1eacf0e
      Stephen Kelly authored and Brad King's avatar Brad King committed
      The expressions may be parsed and then cached and evaluated multiple
      times.  They are evaluated lazily so that literals such as ',' can be
      treated as universal parameter separators, and can be processed from
      results without appearing literally, and without interfering with the
      parsing/evaluation of the entire expression.
      f1eacf0e
  27. Aug 24, 2012
    • Brad King's avatar
      Make platform information files specific to the CMake version · 7195aca5
      Brad King authored
      At the top of a build tree we configure inside the CMakeFiles directory
      files such as "CMakeSystem.cmake" and "CMake<lang>Compiler.cmake" to
      save information detected about the system and compilers in use.  The
      method of detection and the exact results store varies across CMake
      versions as things improve.  This leads to problems when loading files
      configured by a different version of CMake.  Previously we ignored such
      existing files only if the major.minor part of the CMake version
      component changed, and depended on the CMakeCache.txt to tell us the
      last version of CMake that wrote the files.  This led to problems if the
      user deletes the CMakeCache.txt or we add required information to the
      files in a patch-level release of CMake (still a "feature point" release
      by modern CMake versioning convention).
      
      Ensure that we always have version-consistent platform information files
      by storing them in a subdirectory named with the CMake version.  Every
      version of CMake will do its own system and compiler identification
      checks even when a build tree has already been configured by another
      version of CMake.  Stored results will not clobber those from other
      versions of CMake which may be run again on the same tree in the future.
      Loaded results will match what the system and language modules expect.
      
      Rename the undocumented variable CMAKE_PLATFORM_ROOT_BIN to
      CMAKE_PLATFORM_INFO_DIR to clarify its purpose.  The new variable points
      at the version-specific directory while the old variable did not.
      7195aca5
  28. Aug 13, 2012
    • Kitware Robot's avatar
      Convert CMake-language commands to lower case · 77543bde
      Kitware Robot authored and Brad King's avatar Brad King committed
      Ancient CMake versions required upper-case commands.  Later command
      names became case-insensitive.  Now the preferred style is lower-case.
      
      Run the following shell code:
      
      cmake --help-command-list |
      grep -v "cmake version" |
      while read c; do
          echo 's/\b'"$(echo $c | tr '[:lower:]' '[:upper:]')"'\(\s*\)(/'"$c"'\1(/g'
      done >convert.sed &&
      git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' '*CMakeLists.txt' |
      egrep -z -v '^(Utilities/cm|Source/kwsys/)' |
      xargs -0 sed -i -f convert.sed &&
      rm convert.sed
      77543bde
  29. Jul 20, 2012
  30. Jul 17, 2012
  31. May 08, 2012
    • Brad King's avatar
      bootstrap: Port back to old shells (#13199) · e5dc7689
      Brad King authored
      Since commit f39e82c9 (bootstrap: Re-implement command line option
      processing, 2011-12-16) bootstrap uses POSIX shell expressions of the
      form "${x#y}" to remove prefix pattern 'y' from the vaule of 'x'.
      Although this is allowed by POSIX old shells on some platforms do not
      support it.  Revert to using 'sed' to work with old shells.
      e5dc7689
  32. Apr 27, 2012
    • 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.
      e48796b2
  33. Apr 20, 2012
    • Brad King's avatar
      Refactor CMake version handling · 0c7029c6
      Brad King authored
      Move the CMake version number components out of "CMakeLists.txt" into
      dedicated file "Source/CMakeVersion.cmake".  Set the TWEAK level to the
      date explicitly.  Add a "Source/CMakeVersion.bash" script to update the
      date, thus replacing KWSys DateStamp for CMake.  Teach the bootstrap
      script to extract the version components from their new location.
      0c7029c6
  34. Mar 09, 2012
    • Brad King's avatar
      Add cmGeneratorTarget to represent a target during generation · 11d9b211
      Brad King authored
      Some per-target information and logic is common to all generators.
      Some of that information is currently stored in cmTarget but that
      should be reserved for the configure step.  Create a class to hold
      per-target information for generators.  On construction classify
      sources from the target and store them in separate members.  This
      classification is already implemented separately in each generator.
      11d9b211
Loading