Commit Graph

186 Commits

Author SHA1 Message Date
Brad King 60d72b56ed bootstrap: Granular system library selection (#11431)
This adds the ability for packagers to specify that some libraries
should use system versions and others should use the CMake versions.

This allows a bit of flexibility and means Homebrew (an OSX package
manager) no longer has to continue to patch the CMake build process.

Inspired-by: Mike McQuaid <mike@mikemcquaid.com>
2011-01-10 09:32:09 -05:00
Brad King 542b517449 Factor out common custom command generator
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.
2010-12-08 17:29:20 -05:00
Brad King c7aa38ff39 bootstrap: Honor CFLAGS during "make" test (#10545) 2010-09-10 11:39:43 -04:00
Brad King 2ad2c2d7a5 bootstrap: Detect known C/C++ compiler toolchains
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.
2010-06-30 10:50:28 -04:00
Brad King f20d091a2c Tru64: Place cmOStringStream vtable uniquely (#10541)
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.
2010-06-10 15:22:40 -04:00
Brad King 5bfffd6f29 New version scheme to support branchy workflow
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.
2010-04-23 09:44:23 -04:00
Bill Hoffman 78d505031f Fix for bug #10544, make check was sent to the wrong log file 2010-04-13 09:28:16 -04:00
Bill Hoffman 21a59bdc4d Fix double bootstrap build for in source builds 2009-11-10 08:09:54 -05:00
Brad King f40406ed6b Fix default install prefix on Haiku
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.
2009-09-30 08:31:53 -04:00
Brad King 96afb12087 Convert CMake to OSI-approved BSD License
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.
2009-09-28 11:43:28 -04:00
Brad King 28531d1707 Simplify bootstrap script source dir detection
This teaches the bootstrap shell script to detect the CMake source
directory from which it is executed using a simpler idiom.
2009-09-25 10:48:24 -04:00
Bill Hoffman 25cf2f4352 Make sure KWSYS_DO_NOT_CLEAN_PUTENV is defined at bootstrap time for cmake in the bootstrap script. 2009-09-22 16:12:40 -04:00
Brad King c2ee27c535 Test KWSYS_IOS_HAVE_BINARY during bootstrap
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.
2009-08-31 13:25:40 -04:00
Brad King d2e1f2b4d6 Introduce "generator expressions" to add_test()
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.
2009-08-11 09:54:56 -04:00
Brad King fd10589995 ENH: Improve dynamic variable scope implementation
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.
2009-07-22 14:22:45 -04:00
Brad King 7797237629 BUG: Fix bootstrap for Debian Almquist Shell
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.
2009-06-10 13:39:40 -04:00
Brad King 653262ef17 ENH: Make bootstrap script work on VMS bash
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'.
2009-06-10 13:04:25 -04:00
Brad King 776e21d1c7 COMP: Avoid String.c inclusion by Compaq templates
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.
2009-06-10 11:46:06 -04:00
Brad King a6bc1c34b1 ENH: Auto-import symbols for cygwin executables
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.
2009-05-27 11:33:37 -04:00
Brad King 66d69f864a ENH: Refactor generation of CTestTestfile content
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).
2009-03-16 10:40:46 -04:00
Brad King e67f5138b8 ENH: Refactor cmInstallGenerator for re-use
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.
2009-03-16 10:39:56 -04:00
Brad King 98c51ff6dc ENH: Overhaul CMake version numbering
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.
2009-03-05 15:17:07 -05:00
Bill Hoffman 64fc597de2 ENH: add initial support for HAIKU OS from bug# 7425 2008-09-15 17:53:28 -04:00
Brad King 22f12322bb COMP: Fix bootstrap build after using cmDocumentationFormatterText in cmMakefile. 2008-03-07 16:26:29 -05:00
Ken Martin d49ef18f8a ENH: add first cut and policies still need to add the doc support 2008-03-01 15:20:35 -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
Bill Hoffman 22927ede1e ENH: support for cpack and install of cmake-gui as mac app bundle 2008-02-16 13:05:03 -05:00
Brad King ad95a57509 ENH: Add option to bootstrap script to enable Qt dialog.
- Add --qt-gui and --no-qt-gui options
  - Add --qt-qmake=<qmake> option to help locate Qt
  - Build more commands during bootstrap to help FindQt4.cmake:
    MATH, GET_DIRECTORY_PROPERTY, EXECUTE_PROCESS,
    SEPARATE_ARGUMENTS
  - Bootstrapping with the cmake-gui is now possible in MSys
2008-02-13 14:47:03 -05:00
Brad King 4987e17f46 ENH: Improve link line generation for static library cycles.
- Move Tarjan algorithm from cmComputeTargetDepends
    into its own class cmComputeComponentGraph
  - Use cmComputeComponentGraph to identify the component DAG
    of link dependencies in cmComputeLinkDepends
  - Emit non-trivial component members more than once but always
    in a contiguous group on the link line
2008-02-07 16:14:05 -05:00
Brad King 523ddedac5 ENH: Analyze inter-target dependencies to safely fix cycles
- Cycles may be formed among static libraries
  - Native build system should not have cycles in target deps
  - Create cmComputeTargetDepends to analyze dependencies
  - Identify conneced components and use them to fix deps
  - Diagnose cycles containing non-STATIC targets
  - Add debug mode property GLOBAL_DEPENDS_DEBUG_MODE
  - Use results in cmGlobalGenerator as target direct depends
2008-02-05 23:10:41 -05:00
Brad King 82fcaebe28 ENH: Pass dependent library search path to linker on some platforms.
- Move runtime path ordering out of cmComputeLinkInformation
    into its own class cmOrderRuntimeDirectories.
  - Create an instance of cmOrderRuntimeDirectories for runtime
    path ordering and another instance for dependent library
    path ordering.
  - Replace CMAKE_DEPENDENT_SHARED_LIBRARY_MODE with explicit
    CMAKE_LINK_DEPENDENT_LIBRARY_FILES boolean.
  - Create CMAKE_LINK_DEPENDENT_LIBRARY_DIRS boolean.
  - Create variables to specify -rpath-link flags:
      CMAKE_SHARED_LIBRARY_RPATH_LINK_<LANG>_FLAG
      CMAKE_EXECUTABLE_RPATH_LINK_<LANG>_FLAG
  - Enable -rpath-link flag on Linux and QNX.
  - Documentation and error message updates
2008-02-01 08:56:00 -05:00
Brad King 8f97980615 COMP: Use kwsys to get STL set_intersection algorithm. 2008-01-27 15:09:58 -05:00
Brad King 99b97dece8 ENH: Created cmComputeLinkDepends to compute link dependencies.
- This will be useful for imported library dependencies
  - Replaces old cmTarget analyze-lib-depends stuff for linking
  - Formalizes graph construction and dump
  - Explicitly represents dependency inferral sets
  - Use BFS of initial dependencies to preserve order
2008-01-27 13:42:49 -05:00
Brad King 02c3b71b2f BUG: Do not have variable and function of the same name. Old shells do not likeit. 2008-01-23 17:43:08 -05:00
Brad King 96fd5909d9 ENH: Implement linking with paths to library files instead of -L and -l separation. See bug #3832
- This is purely an implementation improvement.  No interface has changed.
  - Create cmComputeLinkInformation class
  - Move and re-implement logic from:
      cmLocalGenerator::ComputeLinkInformation
      cmOrderLinkDirectories
  - Link libraries to targets with their full path (if it is known)
  - Dirs specified with link_directories command still added with -L
  - Make link type specific to library names without paths
    (name libfoo.a without path becomes -Wl,-Bstatic -lfoo)
  - Make directory ordering specific to a runtime path computation feature
    (look for conflicting SONAMEs instead of library names)
  - Implement proper rpath support on HP-UX and AIX.
2008-01-22 09:13:04 -05:00
Brad King c6a7d55127 COMP: The find_package command needs more of kwsys. Added String.h, String.c, and auto_ptr.hxx to bootstrapping kwsys. 2008-01-17 10:35:32 -05:00
Brad King 0ea6a8d1a4 ENH: Simplified CMake version information using KWSys DateStamp feature. Reduced duplicate code in bootstrap script. 2007-11-14 21:17:53 -05:00
Bill Hoffman d88b30a742 ENH: add new file 2007-10-18 09:39:02 -04:00
Brad King 35936433e1 ENH: Merging changes from branch CMake-SourceFile2-b between tags
CMake-SourceFile2-bp and CMake-SourceFile2-b-mp1 to trunk.  This
commit is surrounded by tags CMake-SourceFile2-b-mp1-pre and
CMake-SourceFile2-b-mp1-post on the trunk.

The changes re-implement cmSourceFile and the use of it to allow
instances to be created much earlier.  The use of cmSourceFileLocation
allows locating a source file referenced by a user to be much simpler
and more robust.  The two SetName methods are no longer needed so some
duplicate code has been removed.  The strange "SourceName" stuff is
gone.  Code that created cmSourceFile instances on the stack and then
sent them to cmMakefile::AddSource has been simplified and converted
to getting cmSourceFile instances from cmMakefile.  The CPluginAPI has
preserved the old API through a compatibility interface.

Source lists are gone.  Targets now get real instances of cmSourceFile
right away instead of storing a list of strings until the final pass.

TraceVSDependencies has been re-written to avoid the use of
SourceName.  It is now called TraceDependencies since it is not just
for VS.  It is now implemented with a helper object which makes the
code simpler.
2007-06-18 11:59:23 -04:00
Andy Cedilnik 310ca5795a ENH: Fix copyright year 2007-04-04 13:41:12 -04:00
Ken Martin 21d9f9a8f1 COMP: fix bootstrap maybe 2006-12-07 10:48:11 -05:00
Bill Hoffman 0c381a2ce8 ENH: fix bootstrap for mac 2006-12-05 08:47:06 -05:00
Bill Hoffman 3a32cec969 ENH: merge in changes for beos support 2006-12-04 17:26:41 -05:00
Bill Hoffman b56a60d01e ENH: fix errors for unix builds 2006-11-29 17:45:55 -05:00
Brad King 6ff05e3946 ENH: Adding option to use system-installed third-party libraries. This addresses bug#3653. 2006-10-19 15:17:58 -04:00
Brad King 6c19d3a862 ENH: Renamed kwsysPlatformCxxTests to kwsysPlatformTests and generalized it for multiple language tests (C and CXX). 2006-10-04 17:24:36 -04:00
Brad King f0050269ea ENH: Added System component of kwsys. 2006-09-21 13:47:54 -04:00
Brad King 6e2f819942 ENH: Changing default data and doc directories to share/cmake-V.v and doc/cmake-V.v instead of share/CMake and doc/CMake for consistency with many linux distribution conventions. 2006-08-25 21:21:10 -04:00
Brad King a2e3b01a59 COMP: Fix for new kwsys Configure.h.in. 2006-08-25 20:52:37 -04:00
Andy Cedilnik d510ef2557 ENH: Support large file systems in kwsys 2006-08-22 15:34:14 -04:00
Andy Cedilnik e49b93989d COMP: More warnings and hp issues 2006-07-26 14:10:14 -04:00
Andy Cedilnik a9c0929d39 COMP: Handle both ansi and non-ansi C 2006-07-26 11:46:22 -04:00
Andy Cedilnik c3412def5d COMP: Remove warning 2006-07-25 11:00:10 -04:00
Andy Cedilnik 126e5e39ff ENH: Fix copyright year 2006-04-17 19:02:42 -04:00
Bill Hoffman cae4e6b37a ENH: add patch for finding applications on OSX 2006-04-13 11:00:52 -04:00
Bill Hoffman ae10b3578d ENH: add a wrapper for xcodebuild to get around bug and verbose output 2006-03-31 13:17:23 -05:00
Andy Cedilnik 3806c1050d ENH: Remove things from bootstrap 2006-03-22 09:58:11 -05:00
Andy Cedilnik 15d7dd9937 ENH: Remove cmGlob and use glob from kwsys 2006-03-21 12:54:31 -05:00
Bill Hoffman 506afe9e8c ENH: add more depends for bootstrap 2006-03-06 15:41:56 -05:00
Brad King 518080136d ENH: Implemented FILES and PROGRAMS forms of the INSTALL command as replacements for the INSTALL_FILES and INSTALL_PROGRAMS commands. This addresses the request for absolute path install destinations in bug#2691. 2006-02-19 18:47:13 -05:00
Brad King 96f0266228 ENH: Created new install script generation framework. The INSTALL command creates the generators which are later used by cmLocalGenerator to create the cmake_install.cmake files. A new target installation interface is provided by the INSTALL command which fixes several problems with the INSTALL_TARGETS command. See bug#2691. Bugs 1481 and 1695 are addressed by these changes. 2006-02-19 15:25:27 -05:00
Brad King 8facf1f406 ENH: Made default install prefix consistent with building with another CMake. 2006-02-16 20:13:54 -05:00
Ken Martin 141ad7645e ENH: some reorg of the unix makefile generator 2006-02-15 10:34:11 -05:00
Brad King 62ca4d34c2 BUG: Fixed bootstrap from MSYS prompt. It was working only when the bootstrap directory in MSYS mapped to the same directory on windows except for the drive letter in front. Now it should work from any path. 2006-02-10 11:19:19 -05:00
Brad King f71a085f74 ENH: Added kwsys::String class to shorten debugging symbols and error messages involving std::string. 2006-02-07 10:11:40 -05:00
Brad King 576d8b41cb ENH: Enabled bootstrapping with MinGW from an MSYS prompt. 2006-01-31 18:50:16 -05:00
Andy Cedilnik fdc4795b91 ENH: Push glob to the kwsys 2005-10-18 14:08:55 -04:00
Andy Cedilnik 775c3495e2 ENH: Add file time comparison code 2005-10-12 13:36:07 -04:00
Bill Hoffman f8c259b443 BUG: try to fix qt problems 2005-09-10 10:33:10 -04:00
Bill Hoffman a0fb6e97db ENH: fix bootstrap, maybe this should somehow grep awk the sources from the cmakelist file.... 2005-09-03 22:16:41 -04:00
Andy Cedilnik 29f7e505a5 ENH: Use the new parser that supports nested variables 2005-06-13 11:00:29 -04:00
Ken Martin c08862a88d ENH: removed UMG2 2005-06-09 14:39:14 -04:00
Ken Martin 32aef87e3b ENH: moved gen3 into bootstrap process 2005-05-12 11:53:42 -04:00
Andy Cedilnik d395b563ed ENH: Improve internal test handling by creating a test class. Command cmEnableTesting now only sets CMAKE_TESTING_ENABLED and cmAddTest only adds a test to the list. The actual test files are written by local generator. This way we can at some point in the future replace DartTestfile with some XML file 2005-04-24 15:59:51 -04:00
Brad King 8ddc8accb3 COMP: Added KWSys try-compiles KWSYS_STL_HAS_ALLOCATOR_TEMPLATE and KWSYS_STL_HAS_ALLOCATOR_OBJECTS. Needed for more old-stl support in the hashtable. 2005-04-21 13:47:43 -04:00
Brad King bddade9696 COMP: Added KWSYS_CXX_HAS_CSTDDEF try-compile to KWSys to provide kwsys/cstddef header (to get size_t for hash_fun.hxx). 2005-04-15 16:00:44 -04:00
Brad King 6c68c81475 ENH: Added KWSys try-compiles KWSYS_STL_HAS_ITERATOR_TRAITS, KWSYS_STL_HAS_ITERATOR_CATEGORY, KWSYS_STL_HAS___ITERATOR_CATEGORY, and KWSYS_STL_HAS_ALLOCATOR_NONTEMPLATE to get the hash table to compile on old HP and Sun compilers. 2005-04-15 09:54:03 -04:00
Brad King 7f706ecc98 ENH: Added KWSYS_CXX_HAS_ARGUMENT_DEPENDENT_LOOKUP try-compile to KWSys. Needed to optionally bring hash table comparison operators into the global namespace when argument dependent lookup is not supported. 2005-04-15 08:59:30 -04:00
Brad King be1084b524 COMP: Added KWSYS_STL_HAS_ALLOCATOR_MAX_SIZE_ARGUMENT check for non-standard argument to stl allocator<>::max_size method. Needed for kwsys hashtable to compile on Sun CC. 2005-04-13 15:39:03 -04:00
Brad King b370936a25 BUG: Added more try-compiles from kwsys. 2005-04-13 14:13:35 -04:00
Brad King 6f95540ac7 BUG: The bootstrap script should perform the KWSYS_STL_STRING_HAVE_NEQ_CHAR test for kwsys. 2005-04-06 13:34:09 -04:00
Brad King 22f6d68be3 ENH: Added istream and ostream operators for stl string in KWSys when using old streams that do not provide them. 2005-03-29 08:20:08 -05:00
Andy Cedilnik 11077bfcaa BUG: The is replaced by cvs... This is safer anyway 2005-03-28 18:00:42 -05:00
Andy Cedilnik 888d5f2f47 ENH: For development versions report version when doing bootstrap 2005-03-25 14:23:55 -05:00
Ken Martin fe41711a08 ENH: oops forgot to chek this in 2005-03-14 12:25:12 -05:00
Andy Cedilnik 83343c59c9 BUG: Remove awk, remove problems and add full spaces in the path support 2005-03-09 15:51:30 -05:00
Brad King 636f1587b5 BUG: Fix for spaces in the path when constructing cmBootstrapCommands dependencies. 2005-03-08 17:27:08 -05:00
Andy Cedilnik cc9a43dd13 ENH: Add proper dependencies for cmBootstrapCommands 2005-03-07 12:11:51 -05:00
Andy Cedilnik 6cb01848fb BUG: Handle when initial cmake fails 2005-03-04 10:03:38 -05:00
Brad King 2aa613b98c ENH: Enabling cmLocalUnixMakefileGenerator2 (new makefile generator) by default. 2005-03-01 12:26:25 -05:00
Bill Hoffman ff812580eb ENH: add a new library path ordering algorithm to make sure -L paths will pick the correct libraries if possible 2005-02-24 13:16:41 -05:00
Brad King 508cff55f6 ENH: Added try-compile KWSYS_STAT_HAS_ST_MTIM. This tests whether struct stat has the extra st_mtim member that has high resolution times. 2005-02-17 11:27:15 -05:00
Bill Hoffman 7eba58a439 ENH: add xcode stuff to bootstrap 2005-01-25 16:09:59 -05:00
Bill Hoffman a641ad3bba ENH: split up cmCommands into two files 2005-01-21 10:27:51 -05:00
Brad King d46d8df0ed ENH: Re-implemented cmGeneratedFileStream to look like a real stream and replace the destination file atomically. This will avoid problems with the process being terminated while generating a file. 2004-11-03 07:23:18 -05:00
Andy Cedilnik 56234aed4b PERF: Remove several classes from the bootstrap and so making bootstrap smaller and faster 2004-10-27 10:47:14 -04:00
Brad King 3e59af4dcd ENH: Added cmLocalUnixMakefileGenerator2 to build. 2004-10-26 12:54:51 -04:00
Andy Cedilnik fc70a2bb2a ENH: Add development version support in CMake 2004-10-22 15:44:54 -04:00
Bill Hoffman 30c71b5f20 ENH: perfer gmake for bootstrap 2004-10-19 14:51:25 -04:00
Will Schroeder 20461af1e6 COMP: Fix on sun 2004-10-18 18:11:42 -04:00