1. 08 May, 2012 1 commit
    • 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
  2. 27 Apr, 2012 1 commit
    • 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
  3. 20 Apr, 2012 1 commit
    • 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
  4. 09 Mar, 2012 1 commit
    • 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
  5. 01 Mar, 2012 1 commit
    • Brad King's avatar
      bootstrap: Convert MSYS paths to Windows format (#13001) · 5cd879c4
      Brad King authored
      We set CMAKE_PREFIX_PATH from the --prefix= option.  The calling shell
      might not translate "/c/..." to "c:/..." paths but we need to store
      Windows paths in CMake cache variables.  Pass the specified path through
      the MSYS shell in a form it will convert to a Windows path using the
      MSYS fstab.
      
      Some MSYS bash implementations leave trailing space on the command line
      to 'cmd /c echo ...' after quoting the message.  The Windows echo tool
      preserves both the quotes and the trailing space.  Use a sed expression
      that strips quotes and trailing spaces after the end quote.
      5cd879c4
  6. 16 Dec, 2011 3 commits
  7. 29 Nov, 2011 1 commit
  8. 31 Jan, 2011 1 commit
  9. 17 Jan, 2011 2 commits
  10. 10 Jan, 2011 2 commits
  11. 08 Dec, 2010 1 commit
    • Brad King's avatar
      Factor out common custom command generator · 542b5174
      Brad King authored
      The Makefile, VS, and Xcode generators previously duplicated some custom
      command line generation code.  Factor this out into a separate class
      cmCustomCommandGenerator shared by all generators.
      542b5174
  12. 10 Sep, 2010 1 commit
  13. 30 Jun, 2010 1 commit
    • Brad King's avatar
      bootstrap: Detect known C/C++ compiler toolchains · 2ad2c2d7
      Brad King authored
      Look for a C/C++ compiler pair from known toolchains on some platforms.
      This makes it less likely that mismatched compilers will be found.
      Check only if the environment variables CC and CXX are both empty.
      2ad2c2d7
  14. 10 Jun, 2010 1 commit
    • Brad King's avatar
      Tru64: Place cmOStringStream vtable uniquely (#10541) · f20d091a
      Brad King authored
      GCC places the vtable in the object implementing the first non-pure,
      non-inline virtual method.  Since the symbol is not weak on Tru64, make
      the location unique by putting the destructor in a single object file.
      f20d091a
  15. 23 Apr, 2010 1 commit
    • Brad King's avatar
      New version scheme to support branchy workflow · 5bfffd6f
      Brad King authored
      Prepare to switch to the workflow described by "git help workflows".  In
      this workflow, the "master" branch is always used to integrate topics
      ready for release.  Brand new work merges into a "next" branch instead.
      We need a new versioning scheme to work this way because the version on
      "master" must always increase.
      
      We no longer use an even/odd minor number to distinguish releases from
      development versions.  Since we still support cvs checkout of our source
      tree we cannot depend on "git describe" to compute a version number
      based on the history graph.  We can use the CCYYMMDD nightly date stamp
      to get a monotonically increasing version component.
      
      The new version format is "major.minor.patch.(tweak|date)".  Releases
      use a tweak level in the half-open range [0,20000000), which is smaller
      than any current or future date.  For tweak=0 we do not show the tweak
      component, leaving the format "major.minor.patch" for most releases.
      Development versions use date=CCYYMMDD for the tweak level.  The
      major.minor.patch part of development versions on "master" always
      matches the most recent release.
      
      For example, a first-parent traversal of "master" might see
      
              v2.8.1      2.8.1.20100422    v2.8.2
                 |              |              |
        ----o----o----o----o----o----o----o----o----
      
      Since the date appears in the tweak component, the next release can
      increment the patch level (or any more significant component) to be
      greater than any version leading to it.  Topic branches not ready for
      release are published only on "next" so we know that all versions on
      master lead between two releases.
      5bfffd6f
  16. 13 Apr, 2010 1 commit
  17. 11 Nov, 2009 1 commit
  18. 10 Nov, 2009 1 commit
  19. 01 Oct, 2009 1 commit
  20. 30 Sep, 2009 1 commit
    • Brad King's avatar
      Fix default install prefix on Haiku · f40406ed
      Brad King authored
      Since Haiku does not have /usr (and therefore /usr/local), this commit
      changes the default install prefix to the equivalent directory of
      /boot/common.
      
      See issue #9607.
      f40406ed
  21. 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
  22. 25 Sep, 2009 1 commit
  23. 22 Sep, 2009 1 commit
  24. 31 Aug, 2009 1 commit
    • Brad King's avatar
      Test KWSYS_IOS_HAVE_BINARY during bootstrap · c2ee27c5
      Brad King authored
      We need to do this KWSys configuration test in the CMake bootstrap
      script to create a proper cmsys/Configure.hxx file.  This fixes the
      bootstrap script which was broken by the addition of the test to KWSys.
      c2ee27c5
  25. 11 Aug, 2009 1 commit
    • Brad King's avatar
      Introduce "generator expressions" to add_test() · d2e1f2b4
      Brad King authored
      This introduces a new syntax called "generator expressions" to the test
      COMMAND option of the add_test(NAME) command mode.  These expressions
      have a syntax like $<TARGET_FILE:mytarget> and are evaluated during
      build system generation.  This syntax allows per-configuration target
      output files to be referenced in test commands and arguments.
      d2e1f2b4
  26. 22 Jul, 2009 1 commit
    • Brad King's avatar
      ENH: Improve dynamic variable scope implementation · fd105899
      Brad King authored
      Previously each new variable scope (subdirectory or function call) in
      the CMake language created a complete copy of the key->value definition
      map.  This avoids the copy using transitive lookups up the scope stack.
      Results of queries answered by parents are stored locally to maintain
      locality of reference.
      
      The class cmDefinitions replaces cmMakefile::DefinitionsMap, and is
      aware of its enclosing scope.  Each scope stores only the definitions
      set (or unset!) inside it relative to the enclosing scope.
      fd105899
  27. 10 Jun, 2009 3 commits
    • Brad King's avatar
      BUG: Fix bootstrap for Debian Almquist Shell · 77972376
      Brad King authored
      The Debian Almquist Shell (dash) provides minimal POSIX compliance
      instead of the power of bash.  It converts literal '\n' to a real
      newline even in a single-quoted string.  This works around the problem
      by avoiding the literal.  We can no longer use HEREDOC.
      77972376
    • Brad King's avatar
      ENH: Make bootstrap script work on VMS bash · 653262ef
      Brad King authored
      A few sweeping changes were needed:
      
        - Avoid use of HEREDOC, which does not seem to work.
        - Avoid extra '.' in paths by using '_cmk' and '_tmp'
          instead of '.cmk' and '.tmp'.
      653262ef
    • Brad King's avatar
      COMP: Avoid String.c inclusion by Compaq templates · 776e21d1
      Brad King authored
      The Compaq compiler (on VMS) includes 'String.c' in source files that
      use the stl string while looking for template definitions.  This was the
      true cause of double-inclusion of the 'kwsysPrivate.h' header.  We work
      around the problem by conditionally compiling the entire source file on
      a condition only true when really building the source.
      776e21d1
  28. 27 May, 2009 1 commit
    • Brad King's avatar
      ENH: Auto-import symbols for cygwin executables · a6bc1c34
      Brad King authored
      This enables the --enable-auto-import linker flag on Cygwin when linking
      executables.  It works with the old gcc 3.x compiler and is necessary
      for the new gcc 4.x compiler.  See issue #9071.
      a6bc1c34
  29. 16 Mar, 2009 2 commits
    • Brad King's avatar
      ENH: Refactor generation of CTestTestfile content · 66d69f86
      Brad King authored
      This moves code which generates ADD_TEST and SET_TESTS_PROPERTIES calls
      into CTestTestfile.cmake files out of cmLocalGenerator and into a
      cmTestGenerator class.  This will allow more advanced generation without
      cluttering cmLocalGenerator.  The cmTestGenerator class derives from
      cmScriptGenerator to get support for per-configuration script
      generation (not yet enabled).
      66d69f86
    • Brad King's avatar
      ENH: Refactor cmInstallGenerator for re-use · e67f5138
      Brad King authored
      A new cmScriptGenerator base class factors out the non-install-specific
      part of cmInstallGenerator.  This will be useful for other generators
      that want per-configuration functionality.
      e67f5138
  30. 05 Mar, 2009 1 commit
    • Brad King's avatar
      ENH: Overhaul CMake version numbering · 98c51ff6
      Brad King authored
      This moves the version numbers into an isolated configured header so
      that not all of CMake needs to rebuild when the version changes.
      
      Previously we had spaces, dashes and/or the word 'patch' randomly chosen
      before the patch number.  Now we always report version numbers in the
      traditional format "<major>.<minor>.<patch>[-rc<rc>]".
      
      We still use odd minor numbers for development versions.  Now we also
      use the CCYYMMDD date as the patch number of development versions, thus
      allowing tests for exact CMake versions.
      98c51ff6
  31. 15 Sep, 2008 1 commit
  32. 07 Mar, 2008 1 commit
  33. 01 Mar, 2008 1 commit