Commit Graph

422 Commits

Author SHA1 Message Date
Ben Boeckel b97ee21fc6 Check for unused variables at the end of generate 2010-11-15 10:33:14 -05:00
Brad King dacc47853d Merge topic 'vs-project-groups'
fd3249e New USE_FOLDERS property OFF by default. (#3796)
2010-10-05 15:31:49 -04:00
David Cole fd3249e11a New USE_FOLDERS property OFF by default. (#3796)
Visual Studio Express editions do not support solution folders,
so default behavior should be as if USE_FOLDERS global property
is OFF.

Also, allow folder names to be the same as target names: internally,
use a prefix to distinguish folder GUIDs from target GUIDs. Add
a target and folder with the same name in the ExternalProject
test to exercise this code.

For CMake itself, provide a new option CMAKE_USE_FOLDERS that
defaults to ON so that Visual Studio users get a nicely organized
CMake project. Express edition users will have to turn off the
CMAKE_USE_FOLDERS option in order to build CMake in the VS Express
IDE.
2010-10-02 14:31:02 -04:00
Brad King 1a0c166a26 Store direct dependencies in solutions for VS >= 8
Since commit bc43b0f2 (Do not link library dependencies in VS solutions,
2009-10-20) CMake disables for VS >= 8 linking of a target to libraries
that happen to be listed as solution-level dependencies.  Therefore we
can list the direct dependencies of each target in the solution file and
let VS handle transitive dependencies automatically.
2010-09-10 09:12:03 -04:00
Brad King 28edb70a9e Merge topic 'vs-project-groups'
e6ac0aa Add FOLDER target property, for IDEs (#3796)
2010-09-08 11:08:05 -04:00
David Cole e6ac0aacf6 Add FOLDER target property, for IDEs (#3796)
This work was started from a patch by Thomas Schiffer.
Thanks, Thomas!

See the newly added documentation of the FOLDER target
property for details.

Also added global properties, USE_FOLDERS and
PREDEFINED_TARGETS_FOLDER. See new docs here, too.

By default, the FOLDER target property is used to organize
targets into folders in IDEs that have support for such
organization.

This commit adds "solution folder" support to the Visual
Studio generators. Currently works with versions 7 through
10.

Also, use the new FOLDER property in the ExternalProject
test and in the CMake project itself.
2010-09-03 13:53:22 -04:00
Brad King 6c155d9e9e Merge topic 'vs-utility-depends'
a99f620 Fix unused parameter warning in VS 7.1 generator
79a88c3 Refactor VS <= 7.1 utility-depends workaround
325bdb2 Factor out duplicate VS target dependency code
6bea843 Factor out global generator ComputeTargetDepends method
2010-08-31 14:38:18 -04:00
Brad King 95b3bb5dbc Restore GetTargetDirectDepends const return
The returned set should never be modified.  Restore 'const' correctness
unnecessarily removed by commit 6903d2df (remove const, 2008-01-30).
2010-08-25 17:05:01 -04:00
Brad King 6bea84353c Factor out global generator ComputeTargetDepends method
Put the global dependency analysis in its own method so individual
generators can hook into this point.
2010-08-24 18:12:44 -04:00
Brad King 41a608a75d Fix rule hash persistence file generation
We store custom command rule hashes in CMakeFiles/CMakeRuleHashes.txt
persistently across CMake runs.  When the rule hash changes we delete
the custom command output file and write a new hash into the persistence
file.

This functionality was first added by the commit 'Introduce "rule
hashes" to help rebuild files when rules change.' (2008-06-02).
However, the implementation in cmGlobalGenerator::CheckRuleHashes kept
the file open for read when attempting to rewrite a new file.  On
Windows filesystems this prevented the new version of the file from
being written!  This caused the first set of rule hashes to be used
forever within a build tree, meaning that all custom commands whose
rules changed would be rebuilt every time CMake regenerated the build
tree.

In this commit we address the problem by splitting the read and write
operations into separate methods.  This ensures that the input stream is
closed before the output stream opens the file.
2010-02-12 08:00:53 -05:00
Brad King d5eb99cb6f Simplify CMake self-install special case
CMake has a special case for the "make install" target when building
CMake itself.  We use the just-built CMake to install itself since an
existing CMake installation cannot replace itself (at least on Windows).
We simplify the code that computes the location of the CMake binary by
taking advantage of existing generator support for target lookup.  This
will make it robust to any changes in CMake's own CMakeLists.txt files
in the future.
2009-12-10 09:09:50 -05:00
Brad King 9000b5a4de Avoid non-root copies of root-only targets
In cmGlobalGenerator::GetTargetSets we collect targets from all local
generators in a tree or subtree corresponding to a project() command.
Some targets, such as ALL_BUILD, are duplicated in each subdirectory
with a project() command.  For such targets we should keep only the copy
for the top-most (root) local generator.

Previously this filtering was done in each VS IDE generator, but it is
easier to do it in one place when the targets are first encountered.
This also fixes bad ALL_BUILD dependencies generated for VS 7.0 because
the cmGlobalVisualStudio7Generator::WriteTargetDepends method was not
filtering out duplicates.  Now we avoid duplicates from the start.
2009-10-06 13:30:00 -04:00
Brad King c8ddb6813b Cleanup cmGlobalGenerator::GetTargetSets method
This commit cleans up the declaration, definition, and invocations of
the GetTargetSets method and related code.  There is no change in
function except to make the method virtual.
2009-10-01 10:26:54 -04:00
David Cole a9dcc7fd47 Fix warnings in CMake source code. Suppress warnings in Lexer and Parser files that are 'too hard' to fix. 2009-09-30 11:41:34 -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 0af3b3b802 Speed up graph traversal for project->targets map
The cmGlobalGenerator::AddTargetDepends method traces the dependencies
of targets recursively to collect the complete set of targets needed for
a given project (for VS .sln files).  This commit teaches the method to
avoid tracing its dependencies more than once.  Otherwise the code does
an all-paths walk needlessly.
2009-09-02 16:06:43 -04:00
Brad King 80c947b397 No /fast targets in try_compile project mode
The try_compile command builds the cmTryCompileExec executable using the
cmTryCompileExec/fast target with Makefile generators in order to save
time since dependencies are not needed.  However, in project mode the
command builds an entire source tree that may have dependencies.
Therefore we can use the /fast target approach only in one-source mode.
2009-08-04 14:37:46 -04:00
Brad King 73de2362dd Fix recursive try_compile calls
When building an entire source tree with try_compile instead of just a
single source file, it is possible that the CMakeLists.txt file in the
try-compiled project invokes try_compile.  This commit fixes propagation
of language-initialization results from the outer-most project into any
number of try-compile levels.
2009-08-03 13:37:36 -04:00
Bill Hoffman 7491f52992 ENH: first pass at VS 10, can bootstrap CMake, but many tests still fail 2009-06-25 16:41:57 -04:00
Brad King a86e81c358 ENH: Generate a central list of target directories
This generalizes the previous CMakeFiles/LabelFiles.txt created at the
top of the build tree to a CMakeFiles/TargetDirectories.txt file.  It
lists the target support directories for all targets in the project.
Labels can still be loaded by looking for Labels.txt files in each
target directory.
2009-03-09 12:19:27 -04:00
Brad King d35651fb6c ENH: Extend GG::Build method for pre-parsed args
This adds an argument to the cmGlobalGenerator::Build method to pass a
vector of arguments for the native build tool programatically.
2009-03-04 15:38:47 -05:00
Brad King 1d3308156e ENH: Enforce unique binary directories
The second argument of add_subdirectory must name a unique binary
directory or the build files will clobber each other.  This enforces
uniqueness with an error message.
2009-02-27 11:23:14 -05:00
Brad King 7590ad17ad BUG: Fix logic of LabelFiles.txt generation
This fixes a dumb logic error which causes generation of LabelFiles.txt
to try to open the file once for every target with labels.
2009-02-12 13:25:15 -05:00
Brad King 13f9bb646d ENH: Define target and source property LABELS
This creates a new LABELS property for targets and source files.  We
write the labels of each target and its source files in target-specific
locations in the build tree for future use.
2009-02-10 08:50:21 -05:00
Brad King fd40f27420 COMP: Fix rule hash code during bootstrap
During bootstrap we do not bother with rule hashing.  This updates the
dummy implementation to account for the recent change in rule hash
method signatures.
2009-02-02 14:36:45 -05:00
Brad King ac9b7ec155 ENH: Refactor custom command rule hashing
This simplifies computation of custom command rule hashes to hash
content exactly chosen as the custom commands are generated.
Unfortunately this will change the hashes of existing build trees from
earlier CMake versions, but this is not a big deal.  The change is
necessary so that in the future we can make optional adjustments to
custom command lines at generate time without changing the hashes every
time the option is changed.
2009-02-02 13:28:12 -05:00
Bill Hoffman 7d1bbb872c BUG: fix package_source target 2008-11-10 13:42:52 -05:00
Bill Hoffman 1777bb502a BUG: 4244, add a --build option to cmake that can build projects configured by CMake 2008-10-15 13:56:07 -04:00
Bill Hoffman 049e3da2ec STYLE: fix hidden variable warning 2008-10-01 12:45:49 -04:00
Bill Hoffman ab409fec89 BUG: fix for 7738, allow for spaces in the package target path to CPackConfig files 2008-10-01 09:50:11 -04:00
Brad King 4719984553 ENH: Make dir content cache work during configure
Previously the cmGlobalGenerator::GetDirectoryContent method would work
safely only during build system generation.  These changes make it safe
to use during each configure step by flushing it at the beginning.
2008-09-22 10:56:48 -04:00
Brad King f49f1d2973 ENH: Simplify NOTFOUND variable check
When looking for NOTFOUND libraries, use the direct dependencies of a
target instead of all dependencies.  At least one target will trigger
the NOTFOUND error anyway because at least one must directly link it.
This removes another use of the old-style link line computation.
2008-09-15 13:46:56 -04:00
Bill Hoffman 513f7d1869 BUG: fix for 7496, do not just report configure done when there is an error during configure 2008-08-19 13:48:21 -04:00
Brad King 578e83501b BUG: Fix crash on circular target dependencies
After reporting an error about circular target dependencies do not try
to continue generation because the dependency computation object is not
in a useful state.
2008-08-06 17:48:44 -04:00
Bill Hoffman beeebcdc40 BUG: fix for bug 7427, preinstall target name hard coded 2008-07-30 15:18:19 -04:00
Brad King 2bc9acb1ca BUG: Fix try_compile during EnableLanguage
- The source-file signature of try_compile looks up the language
    of the source file using the extension-to-language map so that
    it knows what language to enable in the generated project.
  - This map needs to be filled before loading a file specified by
      CMAKE_USER_MAKE_RULES_OVERRIDE
      CMAKE_USER_MAKE_RULES_OVERRIDE_<LANG>
    so that the user file may call the try_compile() source-file
    signature.
  - It must still be re-filled after loading CMake<LANG>Information.cmake
    in case the compiler- or platform-specific files added anything.
  - See bug #7340.
2008-07-16 11:03:58 -04:00
Bill Hoffman 70662e7f86 COMP: fix warning 2008-07-05 09:29:33 -04:00
Bill Hoffman bb7b27e417 ENH: add initial ctest -j feature 2008-07-03 09:31:33 -04:00
Alexander Neundorf 3e909b5908 BUG: -fail with error if the CMake<LANG>Information.cmake file wasn't found
ENH: -if no compiler has been found, don't test it, and also remove the compiler
information file again. This makes optionally enabling a language work
better.

Alex
2008-06-10 18:28:01 -04:00
Brad King 2453164126 COMP: Fix bootstrap build after previous change to signature of AddRuleHash. 2008-06-03 10:02:18 -04:00
Brad King e79b73d61f BUG: Include less content as input to "rule hash" computation.
- The rule hash should use only commands specified by the user.
  - No make output (echo and progress) rules should be included.
  - No outputs or dependencies need be included.  The native build tool
    will take care of them.
2008-06-03 09:55:28 -04:00
Brad King 6be09c3667 ENH: Introduce "rule hashes" to help rebuild files when rules change.
- In CMake 2.4 custom commands would not rebuild when rules changed.
  - In CMake 2.6.0 custom commands have a dependency on build.make
    which causes them to rebuild when changed, but also when any
    source is added or removed.  This is too often.
  - We cannot have a per-rule file because Windows filesystems
    do not deal well with lots of small files.
  - Instead we add a persistent CMakeFiles/CMakeRuleHashes.txt file
    at the top of the build tree that is updated during each
    CMake Generate step.  It records a hash of the build rule for
    each file to be built.  When the hash changes the file is
    removed so that it will be rebuilt.
2008-06-02 16:44:58 -04:00
Brad King 1c0ffdc11c BUG: Fix crash on repeated configure steps and exported targets.
- In cmGlobalGenerator the ExportSets ivar must be cleared at
    the beginning of each Configure.
  - See issue #7101.
2008-05-27 11:18:01 -04:00
Brad King 771bdb7ef8 BUG: Make sure all source files are found before generating.
- Previously this was done implicitly by the check for a target
    link language which checked all source full paths.
  - The recent change to support computing a link language without
    finding all the source files skipped the implicit check.
  - This change adds an explicit check to find all source files.
2008-05-12 17:43:45 -04:00
Brad King 1381aab4b7 BUG: Remove check for files written by file(WRITE) being loaded.
- CMake 1.8 and below did not do the check but could get in
    infinite loops due to the local generate step.
  - CMake 2.0 added the check but failed to perform it in directories
    with no targets (see bug #678).
  - CMake 2.2 removed the local generate which fixed the problem but
    did not remove the check.
  - Between CMake 2.4 and 2.6.0rc6 the check was fixed to work even
    when no targets appear in a directory (see bug #6923).
  - Bottom line: the check is no longer needed.
2008-04-30 13:42:40 -04:00
Brad King 53e0ed3273 BUG: Fix crash when CMAKE_BACKWARDS_COMPATIBILITY is not set. 2008-03-04 18:41:52 -05:00
Brad King 1c0595c73f ENH: Add global property ALLOW_DUPLICATE_CUSTOM_TARGETS to help existing projects that depend on having duplicate custom targets. It is allowed only for Makefile generators. See bug#6348. 2008-02-14 16:42:29 -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
Ken Martin 22835a71cd ENH: really Bill, using Ken's checkout, fix output in ctest so clean output in build and test is not lost, also display the command lines used 2008-02-01 16:05:40 -05:00
Bill Hoffman 48b554dee8 ENH: remove a const cast 2008-01-31 12:19:00 -05:00
Bill Hoffman 6903d2df8b ENH: remove const 2008-01-30 22:56:34 -05:00
Bill Hoffman 8a83f09637 ENH: fix for bug 3218 dependant projects are written out automatically if they are in the project. Also fix bug 5829, remove hard coded CMAKE_CONFIGURATION_TYPES from vs 7 generator 2008-01-30 12:04:38 -05:00
Brad King 28ea034737 ENH: Support exporting/importing of Framework targets.
- Imported frameworks have the FRAMEWORK property set
  - Added cmTarget::IsFrameworkOnApple method to simplify checks
  - Also remove separate IMPORTED_ENABLE_EXPORTS property and just use ENABLE_EXPORTS since, like FRAMEWORK, it just represents the target type.
  - Document FRAMEWORK keyword in INSTALL command.
  - Updated IMPORTED_LOCATION property documentation for Frameworks
2008-01-28 13:05:58 -05:00
Brad King 5594ad4885 ENH: Updated exporting and importing of targets to support libraries and configurations.
- Created cmExportFileGenerator hierarchy to implement export file generation
  - Installed exports use per-config import files loaded by a central one.
  - Include soname of shared libraries in import information
  - Renamed PREFIX to NAMESPACE in INSTALL(EXPORT) and EXPORT() commands
  - Move addition of CMAKE_INSTALL_PREFIX to destinations to install generators
  - Import files compute the installation prefix relative to their location when loaded
  - Add mapping of importer configurations to importee configurations
  - Rename IMPORT targets to IMPORTED targets to distinguish from windows import libraries
  - Scope IMPORTED targets within directories to isolate them
  - Place all properties created by import files in the IMPORTED namespace
  - Document INSTALL(EXPORT) and EXPORT() commands.
  - Document IMPORTED signature of add_executable and add_library
  - Enable finding of imported targets in cmComputeLinkDepends
2008-01-28 08:38:36 -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
David Cole 546c839d04 ENH: Add a dependency from the PACKAGE target to the ALL target so that "make package" will first (essentially) do a "make all"... A similar chunk of code already existed for the make install target. This change makes it easy to build an installer package as part of a dashboard run simply by setting CTEST_BUILD_TARGET to "package". 2007-12-31 17:29:20 -05:00
Brad King 70f73adccb COMP: Fix build on VS6. 2007-12-24 11:15:45 -05:00
Brad King 430296dc96 ENH: Moved global inter-target dependency analysis and cycle-prevention code up from cmGlobalUnixMakefileGenerator3 to cmGlobalGenerator. Simplified cmGlobalUnixMakefileGenerator3 to use it. Later other generators may be modified to use it also. 2007-12-23 15:03:42 -05:00
Brad King d83b4cd255 ENH: Add a depends check step to custom targets. Add support for the IMPLICIT_DEPENDS feature of custom commands when building in custom targets. Convert multiple-output pair checks to be per-target instead of global. 2007-12-21 12:22:12 -05:00
Brad King eee575283d STYLE: Fixed line-too-long. COMP: Fixed warnings about lossy conversions. 2007-11-20 11:10:11 -05:00
David Cole 867de7fc67 ENH: Add ability to call Visual Studio macros from CMake. Add a CMake Visual Studio macro to reload a solution file automatically if CMake makes changes to .sln files or .vcproj files. Add code to call the macro automatically for any running Visual Studio instances with the .sln file open at the end of the Visual Studio Generate call. Only call the macro if some .sln or .vcproj file changed during Generate. Also, add handling for REG_EXPAND_SZ type to SystemTools::ReadRegistryValue - returned string has environment variable references expanded. 2007-11-16 07:01:58 -05:00
Bill Hoffman a2ff3928de ENH: add f stuff to avoid warnings 2007-11-12 22:36:26 -05:00
Bill Hoffman d9d40942a0 ENH: add guess progress for first time configuring a project. 2007-11-12 22:33:00 -05:00
Ken Martin 6cdf032505 ENH: change to make the documentation class more generic, about halfway there, also provides secitons for Variables now 2007-10-22 12:49:09 -04:00
David Cole 8e4c7b99e1 ENH: Finish up the Framework creation code restructuring. Frameworks build and install now. More work needed on the packaging step. See Tests/Framework for example use. 2007-10-10 11:06:15 -04:00
Alexander Neundorf b7527db958 STYLE: the temporary variable is not necessary
Alex
2007-08-31 13:45:02 -04:00
Alexander Neundorf d338e69c01 ENH: add support for Fortran to the KDevelop generator
-minor optimization for GetLanguageEnabled()

Alex
2007-08-31 13:42:21 -04:00
Alexander Neundorf 3e12a6cb91 ENH: add install files generators for targets which have PUBLIC_HEADER,
PRIVATE_HEADER or RESOURCE_FILES property, use the destination for the
public headers as include directory property for exported libraries

Alex
2007-08-27 16:04:57 -04:00
David Cole ef22ad6bec ENH: Handle FRAMEWORK and BUNDLE arguments in the INSTALL TARGETS command. Work in progress... More to come. 2007-08-22 11:32:48 -04:00
Alexander Neundorf e8ced6a0e2 COMP: include windows.h first, as it is done in the other source files
Alex
2007-08-17 10:14:32 -04:00
Alexander Neundorf 950c1359fa COMP: quick windows name mangling fix (otherwise the compiler complains about cmMakefile::GetCurrentDirectoryA(), which doesn't exist)
Alex
2007-08-16 16:50:27 -04:00
Alexander Neundorf 12f6383561 ENH: move the code for the NOTFOUND checking into its own function, so
Configure() gets easier to overview
-improve the error message, now it also says in which directories and for
which targets the missing variables are used
-minor speedup: the include directories don't have to be checked per target,
per directory is enough

Alex
2007-08-16 15:33:17 -04:00
Alexander Neundorf 1059a8891d STYLE: I think the comment (and the book) were wrong about the naming of
this file

Alex
2007-08-07 15:09:21 -04:00
Brad King d7118006de BUG: Target exclusion-from-all tests should always use the root local generator associated with the all target being tested. 2007-08-03 15:44:25 -04:00
Alexander Neundorf 55303d6dd2 STYLE: fix line lengths
Alex
2007-07-20 08:36:16 -04:00
Alexander Neundorf 95a8331edb ENH: produce a lot more output when running with --debug-output
-try to fix build error on HPUX

Alex
2007-07-17 09:25:08 -04:00
Alexander Neundorf 021ceea1b0 ENH: second try for handling the linker language with integer priority values (returning a pointer to a string on the stack is no good idea)
Alex
2007-07-12 08:37:10 -04:00
Alexander Neundorf 16705a3e87 COMP: revert last commit for now, broke Visual Studio
Alex
2007-07-11 17:29:27 -04:00
Alexander Neundorf bea1a5de77 ENH: CMAKE_<LANG>_LINKER_PREFERENCE is now an integer priority, not a
two-step priority (None or Prefered)
Current order: ASM 0, C 10, Fortran 20, CXX 30, Java 40
This is the same order as automake choses:
http://www.gnu.org/software/automake/manual/html_node/How-the-Linker-is-Chosen.html

This change should be backward compatible:
if there is a project using fortran and CXX, they had to set the
LINKER_LANGUAGE explicitely, otherwise cmake complained (but still generated
the project files). Explicitely setting the linker language still overrides
automatic detection.
If somebody has a custom language for cmake and the PREFERENCE starts with
"P", its changed to 100, which gives it preference over all other languages
(except the other custom languages which have also "Prefered"). "None" is
converted to 0.

Alex
2007-07-11 16:22:04 -04:00
Alexander Neundorf 33e9becd6f COMP: fix warning about unused parameter
Alex
2007-06-28 15:28:00 -04:00
Alexander Neundorf 43de8c8628 ENH: add OPTIONAL keyword to ENABLE_LANGUAGE, so it will be possible to do
something like this:

ENABLE_LANGUAGE(ASM-ATT)
IF(CMAKE_ASM-ATT_COMPILER_WORKS)
  ... do assembler stufff
ELSE(CMAKE_ASM-ATT_COMPILER_WORKS)
  ... fallback to generic C/C++
ENDIF(CMAKE_ASM-ATT_COMPILER_WORKS)

Alex
2007-06-28 09:09:26 -04:00
Alexander Neundorf b1aac1fb0d ENH: use CMAKE_SYSTEM instead of CMAKE_SYSTEM_NAME, since
CMAKE_SYSTEM_NAME may already have been set when crosscompiling


Alex
2007-06-26 19:54:00 -04:00
Alexander Neundorf b459ac2a1e COMP: fix broken tests for now
Alex
2007-06-26 17:14:13 -04:00
Alexander Neundorf 5fb7dab541 ENH: check for CMAKE_HOST_SYSTEM_NAME to decide whether to load
CMakeDetermineSystem.cmake, since CMAKE_SYSTEM_NAME might already be preset
when using cmake for cross compiling
use type STRING instead of FILEPATH since otherwise a strange filename was
generated

Alex
2007-06-26 13:00:42 -04:00
Alexander Neundorf c0d000d234 ENH: add INSTALL(EXPORT ...) mode and INSTALL( TARGETS ... EXPORT <set> ) ,
tests still have to be added

Alex
2007-06-19 13:10:21 -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
Alexander Neundorf 6d200fa6be STYLE: minor fixes
Alex
2007-06-15 16:07:16 -04:00
Alexander Neundorf 3ca8c8d946 COMP: remove warning about unused variable
Alex
2007-06-12 08:23:24 -04:00
Alexander Neundorf 6c02ec1a40 STYLE: add a comment about SetLanguageEnabled()
-add a Generic.cmake for target platforms without operating system

Alex
2007-06-11 15:47:35 -04:00
Alexander Neundorf 422dc631b6 ENH: split cmGlobalGenerator::SetLanguageEnabled() in two parts, where the
second part copies the values from the cmake variables into internal maps.
So this can now be done after the compiler-specific information has been
loaded, which can now overwrite more settings.

Alex
2007-06-11 15:31:42 -04:00
Alexander Neundorf 1b68e41b08 STYLE: determineLanguageCalled removed, now the conditional code is directly
called in the only place where it could be set to true

Alex
2007-06-11 14:28:31 -04:00
Alexander Neundorf 0ddc9f62e5 ENH: add cmExternalMakefileProjectGenerator, which should make it easier to
write generators for IDE projects, which use already existing makefiles
(current the kdevelop generator)
-first stept of the export interface, iniitial export() command
-more replacements for the FIND_XXX docs

Alex
2007-06-08 11:57:16 -04:00
Alexander Neundorf ae035f7c90 BUG: fix #5137, now with the modified CMakeDetermineSystem.cmake the
CMAKE_HOST_SYSTEM_xxx variables have to be preset, not the CMAKE_SYSTEM_xxx
ones

Alex
2007-06-07 09:37:54 -04:00
Bill Hoffman 8cba2c55f9 BUG: fix crash, bug 5121 2007-06-01 09:18:08 -04:00
Brad King 775f012fae BUG: Need to create global targets before AddHelperCommands is called. We should investigate creating global targets at the beginning of the configure step even if their commands are not populated or if they will not actually be generated later. 2007-05-25 15:51:33 -04:00
Alexander Neundorf 4878c00905 ENH: add the IMPORT keyword to ADD_EXECUTABLE(), which generates an
"imported" executable target. This can then be used e.g. with
ADD_CUSTOM_COMMAND() to generate stuff. It adds a second container for
"imported" targets, and FindTarget() now takes an additional argument bool
useImportedTargets to specify whether you also want to search in the
imported targets or only in the "normal" targets.

Alex
2007-05-22 10:24:59 -04:00
Alexander Neundorf df8f550029 ENH: add install/strip target for makefile generators if strip was found
Alex
2007-05-18 13:43:39 -04:00
Alexander Neundorf 8245f437b6 BUG: fix problem for non-C/CXX languages with Visual Studio, the
dependencies for the custom commands added for java were not handled
correctly. Needs more work.

Alex
2007-05-09 14:41:38 -04:00
Alexander Neundorf 7f11536704 ENH: now target names can be used in add_custom_command() and
add_custom_target() as COMMAND, and cmake will recognize them and replace
them with the actual output path of these executables. Also the dependency
will be added automatically. Test included.
ENH: moved TraceVSDependencies() to the end of GlobalGenerator::Configure(),
so it is done now in one central place

Alex
2007-05-09 08:25:45 -04:00
Bill Hoffman 32aecc84a1 ENH: fix seg fault in ccmake when hitting configure twice 2007-04-24 12:30:25 -04:00
Ken Martin 2a1e2456ae ENH: some code consolidation and cleanup 2007-04-12 15:46:14 -04:00
Bill Hoffman 5891ba16ce ENH: add project to target map, not used yet, but created 2007-03-13 14:23:08 -04:00
Ken Martin b99129d2d8 ENH: some code cleanup 2007-03-12 10:26:59 -04:00
Brad King fc19882e8f ENH: Moved ConvertToRelativePath from cmGlobalGenerator to cmLocalGenerator. This is in preparation for setting up each local generator to have its own RelativePathTopSource and RelativePathTopBinary based on its ancestor directories. 2007-03-07 15:15:46 -05:00
Brad King 73a5c33f9b BUG: Removed legacy SetupTests method that was causing RUN_TESTS to test twice. 2007-03-05 13:01:02 -05:00
Bill Hoffman d999d0240d ENH: get rid of some extra erase calls 2007-02-21 14:07:33 -05:00
Ken Martin 49085f7fed BUG: fixes so that --build-and-test will honor timeouts 2007-01-30 11:35:17 -05:00
Ken Martin 27379d7b08 ENH: make properties a bit more formal with documentation and chaining 2006-12-07 09:45:32 -05:00
Bill Hoffman ccb77b65c6 ENH: unify version stuff, get rid of it out of cmake and cmMakefile and only use cmVersion 2006-11-29 15:59:16 -05:00
Bill Hoffman dd8d1e8c8d ENH: remove warning 2006-11-10 09:32:27 -05:00
Bill Hoffman 3b7005c554 BUG: fix for broken borland compiler 2006-11-10 08:11:37 -05:00
Bill Hoffman b0bc59f709 ENH: commit fix for putting everything in the build on vs 2006-11-09 09:57:23 -05:00
Andy Cedilnik 897a2a9029 ENH: Cleanup of install component list. There was already the list in the global generator. Use that one 2006-10-31 14:28:48 -05:00
Andy Cedilnik 7ded253013 ENH: Add support for displaying the list of components 2006-10-30 15:59:54 -05:00
Andy Cedilnik d5f31292b2 BUG: Use variable instead of retrieving again. Fixes bug: Bug #3476 2006-10-12 15:30:01 -04:00
Bill Hoffman 4f304e7a07 BUG: fix for bug #3517 seg fault with enable language before project command 2006-10-04 11:11:21 -04:00
Bill Hoffman 18e302a377 ENH: fix dashbaord error do not exclude root project from itself. 2006-10-03 17:53:07 -04:00
Bill Hoffman f851821cc7 BUG: fix for bug#3714 execlude_from_all not working on vs 2006-10-03 15:12:25 -04:00
Brad King e4ec89d036 ENH: Added SYMBOLIC source file property to mark custom command outputs that are never actually created on disk. This is used by the Watcom WMake generator to generate the .SYMBOLIC mark on the files in the make system. 2006-10-02 10:20:53 -04:00
Brad King 7d2de52c1a ENH: Cleaned up signature of cmMakefile::AddUtilityCommand. It is not valid to have an output from a utility rule and no calls to the method asked for an output anyway. The argument has been removed. 2006-09-28 13:55:26 -04:00
Brad King 57eb30087f STYLE: Fixed line-too-long warning. 2006-09-01 09:51:28 -04:00
Brad King 239fce5caa ENH: Do not generate install target unless some INSTALL or INSTALL_* commands have been used. This addresses bug#2827. 2006-08-31 10:47:00 -04:00
Brad King eef327b944 ENH: Adding install/local global target for Makefile generators. This runs installation only in the current directory and not subdirectories. 2006-08-29 10:03:47 -04:00
Brad King ed6791c898 BUG: Make sure targets of type GLOBAL_TARGET have a makefile set. 2006-08-25 22:56:36 -04:00
Brad King 15ca72a862 BUG: Delay relative path configuration until as late as possible to make sure the source/binary dir are set. This is a work-around for lack of a more structured way of creating the global generator. 2006-06-19 14:57:57 -04:00
Brad King 0bbcb49f65 ENH: Added generation of link rules into script files executed by a cmake -E command in order to support longer link lines. This is needed only on platforms without response file support and that may have weak shells. 2006-06-15 16:17:11 -04:00
Ken Martin 8e9a6beccc ENH: centralized locaiton of CMakeFiles setting 2006-06-14 12:28:32 -04:00
Brad King 87d4d0e039 BUG: cmGlobalGenerator::Build should not always use the /fast target name because dependency checking is often required. It now takes an argument specifying whether to use the /fast target name, and the argument is currently only true for try-compiles. 2006-06-01 15:51:24 -04:00
Brad King ec2104cd31 BUG: Updated Makefile dependency scanning to provide a full local generator to the dependency scanner to do proper path conversions. This allows the rules written into the depend.make files to use the same relative path conversion as those written into the build.make files. Several previous changes added more and more information for use by the dependency scanner and it was converging to having the full local generator anyway. 2006-05-25 09:47:30 -04:00
Brad King e838bb31e3 BUG: Make sure RUN_TESTS target passes the desired configuration to ctest. 2006-05-13 12:28:06 -04:00
Ken Martin 01c25dd378 STYLE: fix line length 2006-05-12 10:46:50 -04:00
Ken Martin b8483cf109 STYLE: fix line length 2006-05-11 10:40:28 -04:00
Ken Martin 3023eb7ccb ENH: Makefile performance improvements 2006-05-02 09:56:42 -04:00
Brad King 4494c29078 ENH: Enabling color makefile support using cmsysTerminal_cfprintf. Support for color is automatically detected when messages are printed. Also made color scheme more readable on both black and white backgrounds. This option can be enabled by setting CMAKE_COLOR_MAKEFILE to true in the project. 2006-04-26 21:31:39 -04:00
Bill Hoffman 0952ff6f4b ENH: don't add package target if no package file is around 2006-04-20 15:49:37 -04:00
Andy Cedilnik 71b370c79c BUG: Verify the global target name exists before using it. Fixes VS and Xcode 2006-04-17 16:06:31 -04:00
Andy Cedilnik 1e608c912c ENH: Add packaging of source code (make package_source) 2006-04-17 15:26:54 -04:00
Ken Martin 17ebcb1bcd COMP: fix warning 2006-04-12 11:56:27 -04:00
Ken Martin 535acdc7a0 ENH: some performance optimizations 2006-04-11 12:51:20 -04:00
Brad King d5719f22c1 ENH: Added support for multiple outputs generated by a single custom command. For Visual Studio generators the native tool provides support. For Xcode and Makefile generators a simple trick is used. The first output is considered primary and has the build rule attached. Other outputs simply depend on the first output with no build rule. During cmake_check_build_system CMake detects when a secondary output is missing and removes the primary output to make sure all outputs are regenerated. This approach always builds the custom command at the right time and only once even during parallel builds. 2006-04-11 11:06:19 -04:00
Brad King 2301a025ea ENH: Added global TargetManifest computation between Configure and Generate steps. This allows generators to know what other targets will exist on disk when the build completes. 2006-04-04 11:48:19 -04:00
Bill Hoffman 6e217924ce ENH: use correct addcache call to fix build tools 2006-04-03 22:05:58 -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
Brad King eb31755eb2 ENH: Implemented VT100 terminal escape sequences. If CMAKE_COLOR_MAKEFILE is set then messages produced by makefiles will be in color if the native tool supports it. This addresses bug#3060. 2006-03-30 15:39:03 -05:00
Bill Hoffman 5a2668b326 ENH: add support for win64 for visual studio 2005 ide and nmake, also fix warnings produced by building for win64 2006-03-30 13:49:56 -05:00
Brad King 08b14163ee ENH: Added named component installation implementation. Installation behavior should be unchanged unless -DCOMPONENT=<name> is specified when cmake_install.cmake is invoked. 2006-03-30 13:33:48 -05:00
Ken Martin 7b3be313ee ENH: modified the relative path code to not do relative paths between bin and source 2006-03-30 09:17:02 -05:00
Brad King 94cc5898e7 BUG: When generating the install rules for CMake itself the per-configuration subdirectory must be used to specify the executable location. 2006-03-16 18:24:26 -05:00
Ken Martin 3d96e52261 STYLE: some m_ to this-> cleanup 2006-03-15 11:02:08 -05:00
Brad King c21a61c91a BUG: Check for whether to add -C to package rule should check for a . in the first character not the second. 2006-03-07 14:38:52 -05:00
Brad King 93c95f1cc5 BUG: Fixed installation of MacOSX Bundle executables and the corresponding install_name remapping support. Extended the BundleTest test to check that this all works. Part of these fixes required changing the signature of AppendDirectoryForConfig in all generators. It now accepts prefix and suffix strings to deal with whether leading or trailing slashes should be included with the configuration subdirectory. 2006-03-03 12:58:48 -05:00
Bill Hoffman 2f78d874a7 ENH: fix for bug 2921, move _OVERRIDE variable to a better position to allow changing _INIT variables 2006-03-02 07:52:52 -05:00
Brad King 007421e19c BUG: Check for whether to add BUILD_TYPE to install rule should check for a . in the first character not the second. 2006-03-01 18:49:52 -05:00
Andy Cedilnik 07260a6f27 ENH: Cleanup global targets even more and potentially fix Xcode 2006-03-01 08:28:39 -05:00
Andy Cedilnik e6b8706225 BUG: Ok, fix the ordering 2006-02-28 16:33:14 -05:00
Andy Cedilnik 6783765c90 BUG: On Visual Studio and XCode, handle build configurations 2006-02-28 15:31:43 -05:00
Brad King 7db64cdb28 BUG: Need to use the CMAKE_COMMAND cache entry to get the location of CMake. 2006-02-28 09:53:32 -05:00
Andy Cedilnik ee227d3af5 ENH: Several packaging issues. Allow random variables to be passed to cpack (anything starting with CPACK_, add preinstall to the list of dependencies for package, fix typos 2006-02-27 10:58:20 -05:00
Andy Cedilnik 3d9610feec COMP: More fixes for non makefile generators and global targets 2006-02-24 18:15:35 -05:00
Andy Cedilnik 1cd8c64384 STYLE: Remove debug 2006-02-24 17:43:19 -05:00
Andy Cedilnik c4156b4531 COMP: Even more global target fixes 2006-02-24 17:35:35 -05:00
Andy Cedilnik 77e5a607f2 BUG: Only add test targets when testing is enabled. Also add CMAKE_CFG_INTDIR when specified 2006-02-24 10:55:44 -05:00
Andy Cedilnik 0ba40b59c7 COMP: Handle preinstall properly on IDEs 2006-02-24 09:43:23 -05:00
Andy Cedilnik 66ea097554 ENH: Properly handle target dependencies 2006-02-23 17:30:12 -05:00
Andy Cedilnik 7c0251014c COMP: More fixes for visual studio 2006-02-23 13:46:34 -05:00
Andy Cedilnik 549b77034e COMP: Fixes for visual studio 2006-02-23 13:37:35 -05:00
Andy Cedilnik 32c403f665 ENH: Remove debug 2006-02-23 10:48:35 -05:00
Andy Cedilnik 12dc64c7f5 ENH: Add a notion of a global target 2006-02-23 10:07:24 -05:00
Bill Hoffman 347c5f4b46 ENH: add working directory support 2006-02-08 10:58:36 -05:00
Brad King afa8367885 BUG: Fixed cmTarget::GetFullPath to not append the configuration name when only one configuration is built. It now asks the generator what subdirectory if any to use for a given configuration name. 2006-02-03 11:36:11 -05:00
Andy Cedilnik 782bef7374 ENH: Add a way for the generated command to include extra flags. This is useful for CTest (or try compile) to add -j2 2005-12-01 11:41:00 -05:00
Bill Hoffman 5b9ecdec44 ENH: fix warning 2005-09-15 13:26:29 -04:00
Bill Hoffman 8be3e4eeca ENH: clean up EnableLanguage try to fix problem where try compile runs cmake 2005-09-15 12:17:38 -04:00
Ken Martin 2a45d5cd68 ENH: added DIRECTORY option to GET_DIRECTORY_PROPERTIES 2005-09-13 10:39:42 -04:00
Bill Hoffman 9c4bfe975a ENH: add a fix for VTK on the mac and a way to fix some projects with a single file in the cmake modules directory 2005-09-07 17:05:01 -04:00
Ken Martin c6b011e35e ENH: put cmake files intoa CMakeFiles subdir to clean up bin tree 2005-07-29 09:19:25 -04:00
Brad King 80802c21b6 ENH: RUN_TESTS target now uses proper CMAKE_CFG_INTDIR setting to get $(IntDir) or $(OutDir) depending on the generator. 2005-07-27 16:46:06 -04:00
Andy Cedilnik de217bee8d BUG: Generate RUN_TEST target if any tests are there 2005-07-27 15:46:21 -04:00
Ken Martin 369308ca76 ENH: make LOCATION an computed property of the target and get rid of a bunch of const junk 2005-06-22 09:06:46 -04:00
Brad King 7ed018ec09 BUG: Changing to a new test for whether to do relative path conversion. Now only paths inside the source or binary trees are converted. 2005-05-16 14:17:30 -04:00
Ken Martin 3744464c5e BUG: filx for old bug in rel path computaiton code 2005-05-13 14:12:05 -04:00
Ken Martin 8c65179339 ENH: warning fixes and some first steps in cleaning up the convert code 2005-05-13 09:54:30 -04:00
Ken Martin 25f75d9075 ENH: added new methods to convert to HomeRelative paths 2005-05-11 10:19:58 -04:00
Andy Cedilnik 082b3b44d7 BUG: Fix bootstrap test on machines with spaces in the path 2005-05-04 11:13:00 -04:00
Andy Cedilnik d772fce254 ENH: No need to convert to output path 2005-05-03 15:20:16 -04:00
Andy Cedilnik 61d0a75d11 ENH: Add option to ignore errors. Only works on make 2005-04-29 11:49:18 -04:00
Andy Cedilnik 7c5745ae95 ENH: Start working on command that will abstract generating of build command 2005-04-28 17:33:51 -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
Bill Hoffman 697d749c73 BUG: fix for bug 1660 2005-04-05 13:14:50 -04:00
Andy Cedilnik 0dd2b6eb80 BUG: By default disable new files. 2005-04-04 12:22:08 -04:00
Andy Cedilnik 86cebea79a ENH: More ctest changes and move SetupTest to superclass 2005-04-01 15:48:46 -05:00
Ken Martin 62969492b0 ENH: removed GetParentProjects 2005-03-29 15:34:27 -05:00
Bill Hoffman 213040b612 ENH: make sure project map is cleared each time. 2005-03-22 11:33:46 -05:00
Ken Martin eb1764b34f COMP: fix warning 2005-03-19 09:05:17 -05:00
Ken Martin 345cf04012 ENH: big change that includes immediate subdir support, removing the notion of inherited commands, makefiles no longer read in the parent makefiles but instead inherit thier parent makefiles current settings 2005-03-18 10:41:41 -05:00
Ken Martin 791aa6052b ENH: add support for out of source source 2005-03-14 11:29:15 -05:00
Ken Martin 3ff6722934 ENH: cleanup by removing all the olf local generate junk that i not longer needed 2005-03-10 13:39:38 -05:00
Bill Hoffman a9a0c91630 ENH: fix for finding the correct target in the current project 2005-03-03 22:35:06 -05:00
Brad King de47b43c6f BUG: Need to configure relative path support for LocalGenerate to support old makefile generator. 2005-02-24 19:28:44 -05:00
Brad King cb48e0c161 ENH: Merged implementations of ConvertToRelative*Path methods. The main ConvertToRelativePath method is now in cmGlobalGenerator. It converts paths only if they are at least inside the deepest common directory between the top-level source and build trees. Each cmLocalGenerator instance calls this global method with its own output directory as the "local" argument from which paths are relative. Added separate ConvertToOptionallyRelative path that pays attention to the CMAKE_USE_RELATIVE_PATHS option. 2005-02-24 16:04:54 -05:00