summaryrefslogtreecommitdiffstats
path: root/Source/cmGlobalGenerator.cxx
Commit message (Collapse)AuthorAgeFilesLines
* Merge topic 'custom-command-generator-expressions'Brad King2010-12-211-1/+1
|\ | | | | | | | | | | | | | | | | | | | | 4499d50 Mark CustomCommand test perconfig.out as SYMBOLIC f0cdb60 Introduce "generator expression" syntax to custom commands (#11209) 4749e4c Record set of targets used in cmGeneratorExpression ef9e9de Optionally suppress errors in cmGeneratorExpression 45e1953 Factor per-config sample targets out of 'Testing' test 4091bca Factor generator expression docs out of add_test bfb7288 Record backtrace in cmCustomCommand
| * Record backtrace in cmCustomCommandBrad King2010-12-151-1/+1
| | | | | | | | | | This will be used to report custom command errors to the user with a backtrace pointing at the add_custom_command or add_custom_target call.
* | Remove unused GLOBAL_TARGET generation codeBrad King2010-12-131-20/+2
|/ | | | | | Remove a boolean parameter of cmGlobalGenerator::CreateGlobalTarget that is never set to true anymore. Remove global target "consolidation" loop because no global targets exist before it runs anymore.
* Merge topic 'vs8-direct-depends'David Cole2010-11-161-3/+2
|\ | | | | | | | | 1a0c166 Store direct dependencies in solutions for VS >= 8
| * Store direct dependencies in solutions for VS >= 8Brad King2010-09-101-3/+2
| | | | | | | | | | | | | | | | 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.
* | Merge topic 'vs-project-groups'Brad King2010-10-051-2/+3
|\ \ | |/ |/| | | | | fd3249e New USE_FOLDERS property OFF by default. (#3796)
| * New USE_FOLDERS property OFF by default. (#3796)David Cole2010-10-021-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | Merge topic 'vs-project-groups'Brad King2010-09-081-0/+40
|\ \ | |/ | | | | | | e6ac0aa Add FOLDER target property, for IDEs (#3796)
| * Add FOLDER target property, for IDEs (#3796)David Cole2010-09-031-0/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | Merge topic 'vs-utility-depends'Brad King2010-08-311-10/+18
|\ \ | | | | | | | | | | | | | | | | | | | | | 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
| * | Factor out global generator ComputeTargetDepends methodBrad King2010-08-241-10/+18
| |/ | | | | | | | | Put the global dependency analysis in its own method so individual generators can hook into this point.
* | Restore GetTargetDirectDepends const returnBrad King2010-08-251-2/+2
|/ | | | | The returned set should never be modified. Restore 'const' correctness unnecessarily removed by commit 6903d2df (remove const, 2008-01-30).
* Fix rule hash persistence file generationBrad King2010-02-121-4/+14
| | | | | | | | | | | | | | | | | | | | | 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.
* Simplify CMake self-install special caseBrad King2009-12-101-13/+4
| | | | | | | | | | 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.
* Avoid non-root copies of root-only targetsBrad King2009-10-061-0/+12
| | | | | | | | | | | | | | 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.
* Cleanup cmGlobalGenerator::GetTargetSets methodBrad King2009-10-011-18/+13
| | | | | | 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.
* Fix warnings in CMake source code. Suppress warnings in Lexer and Parser ↵David Cole2009-09-301-3/+6
| | | | files that are 'too hard' to fix.
* Convert CMake to OSI-approved BSD LicenseBrad King2009-09-281-14/+9
| | | | | | | 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.
* Speed up graph traversal for project->targets mapBrad King2009-09-021-8/+6
| | | | | | | | 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.
* No /fast targets in try_compile project modeBrad King2009-08-041-2/+2
| | | | | | | | 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.
* Fix recursive try_compile callsBrad King2009-08-031-3/+15
| | | | | | | | 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.
* ENH: first pass at VS 10, can bootstrap CMake, but many tests still failBill Hoffman2009-06-251-1/+6
|
* ENH: Generate a central list of target directoriesBrad King2009-03-091-25/+11
| | | | | | | | 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.
* ENH: Extend GG::Build method for pre-parsed argsBrad King2009-03-041-3/+12
| | | | | This adds an argument to the cmGlobalGenerator::Build method to pass a vector of arguments for the native build tool programatically.
* ENH: Enforce unique binary directoriesBrad King2009-02-271-0/+4
| | | | | | 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.
* BUG: Fix logic of LabelFiles.txt generationBrad King2009-02-121-0/+1
| | | | | This fixes a dumb logic error which causes generation of LabelFiles.txt to try to open the file once for every target with labels.
* ENH: Define target and source property LABELSBrad King2009-02-101-0/+90
| | | | | | 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.
* COMP: Fix rule hash code during bootstrapBrad King2009-02-021-2/+1
| | | | | | 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.
* ENH: Refactor custom command rule hashingBrad King2009-02-021-10/+5
| | | | | | | | | | 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.
* BUG: fix package_source targetBill Hoffman2008-11-101-1/+1
|
* BUG: 4244, add a --build option to cmake that can build projects configured ↵Bill Hoffman2008-10-151-4/+7
| | | | by CMake
* STYLE: fix hidden variable warningBill Hoffman2008-10-011-2/+2
|
* BUG: fix for 7738, allow for spaces in the package target path to ↵Bill Hoffman2008-10-011-14/+23
| | | | CPackConfig files
* ENH: Make dir content cache work during configureBrad King2008-09-221-0/+1
| | | | | | 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.
* ENH: Simplify NOTFOUND variable checkBrad King2008-09-151-1/+2
| | | | | | | 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.
* BUG: fix for 7496, do not just report configure done when there is an error ↵Bill Hoffman2008-08-191-1/+6
| | | | during configure
* BUG: Fix crash on circular target dependenciesBrad King2008-08-061-1/+4
| | | | | | 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.
* BUG: fix for bug 7427, preinstall target name hard codedBill Hoffman2008-07-301-1/+1
|
* BUG: Fix try_compile during EnableLanguageBrad King2008-07-161-9/+32
| | | | | | | | | | | | | | - 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.
* COMP: fix warningBill Hoffman2008-07-051-1/+1
|
* ENH: add initial ctest -j featureBill Hoffman2008-07-031-1/+1
|
* BUG: -fail with error if the CMake<LANG>Information.cmake file wasn't foundAlexander Neundorf2008-06-101-8/+24
| | | | | | | | 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
* COMP: Fix bootstrap build after previous change to signature of AddRuleHash.Brad King2008-06-031-2/+2
|
* BUG: Include less content as input to "rule hash" computation.Brad King2008-06-031-18/+3
| | | | | | | - 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.
* ENH: Introduce "rule hashes" to help rebuild files when rules change.Brad King2008-06-021-0/+149
| | | | | | | | | | | | | | - 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.
* BUG: Fix crash on repeated configure steps and exported targets.Brad King2008-05-271-10/+17
| | | | | | - In cmGlobalGenerator the ExportSets ivar must be cleared at the beginning of each Configure. - See issue #7101.
* BUG: Make sure all source files are found before generating.Brad King2008-05-121-0/+34
| | | | | | | | - 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.
* BUG: Remove check for files written by file(WRITE) being loaded.Brad King2008-04-301-1/+0
| | | | | | | | | | | | - 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.
* BUG: Fix crash when CMAKE_BACKWARDS_COMPATIBILITY is not set.Brad King2008-03-041-3/+1
|
* ENH: Add global property ALLOW_DUPLICATE_CUSTOM_TARGETS to help existing ↵Brad King2008-02-141-0/+27
| | | | projects that depend on having duplicate custom targets. It is allowed only for Makefile generators. See bug#6348.