Commit Graph

173 Commits

Author SHA1 Message Date
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
Andy Cedilnik 6b7257db61 ENH: Add check for previous bootstrap in the source tree when doing out-of-source build 2004-10-18 11:34:02 -04:00
Bill Hoffman 9fd8d5f181 allow kdevelop for cygwin 2004-10-12 10:57:24 -04:00
Bill Hoffman 832a302ca2 BUG: do not build kdevlop stuff when bootstrapping 2004-10-12 09:50:36 -04:00
Bill Hoffman 031e956adc ENH: add kdev to bootstrap 2004-10-11 11:47:59 -04:00
Bill Hoffman 29794b24a9 ENH: pick native compilers first, and aCC before CC 2004-10-05 11:29:16 -04:00
Andy Cedilnik bb865245f4 ERR: Fix bootstrap 2004-10-05 08:49:07 -04:00
Andy Cedilnik d186bbd719 BUG: Check if the compiler is gnu. If it is, do not do special platform tests. Fixes Bug #1215 - bootstrap uses native flags with gnu compiler on OSF 2004-09-30 16:24:54 -04:00
Andy Cedilnik 47c82a381a ENH: Attempt to detect a non-parallel make 2004-09-23 07:53:42 -04:00
Andy Cedilnik 25b0dbf608 ERR: Fix bootstrap for the changes in kwsys 2003-12-31 08:56:37 -05:00
Brad King ef96274a08 ENH: Merging changes from KWSys-IOS-bp to KWSys-IOS-b2t-1-mp to main tree. This corresponds to the same merge in KWSys. Fixes for bootstrapping on cygwin are also included. 2003-12-23 11:03:38 -05:00
Andy Cedilnik aa859a7603 ENH: Fix bootstrap to handle lex parser 2003-12-08 14:11:58 -05:00
Brad King 54584d1cb9 BUG: Need to check for -Ae flag on HP-UX cc compiler. Needed for ANSI C compilation. 2003-09-15 15:58:27 -04:00
Brad King 0cd97b4030 BUG: Must use C compiler to compile C files during bootstrap, not C++ compiler. 2003-09-02 13:27:58 -04:00