summaryrefslogtreecommitdiffstats
path: root/Source
Commit message (Collapse)AuthorAgeFilesLines
* Use cmSystemTools::GetCMakeCommand() to get path to cmake internallyBrad King2015-05-2016-56/+32
| | | | | This is much simpler than finding a way to lookup "CMAKE_COMMAND" everywhere.
* Merge topic 'use-std-unordered_map'Brad King2015-05-199-6/+93
|\ | | | | | | | | | | | | d7923b82 Use std::unordered_map instead of hash_map where available. 820777af Tests: Don't rely on ordering of targets in maps. 921d74d8 AutoGen: Don't iterate over a container while populating it.
| * Use std::unordered_map instead of hash_map where available.Stephen Kelly2015-05-188-5/+84
| |
| * AutoGen: Don't iterate over a container while populating it.Stephen Kelly2015-05-161-1/+9
| | | | | | | | | | | | | | | | The InitializeAutogenTarget creates new targets and adds them to the Targets container on the makefile. In this method, we have a reference to that container and we are iterating over it. That happens to work with hash_map, but it fails with undefined behavior when using the std::unordered_map from libstdc++-4.9 (and likely others).
* | Merge topic 'ninja-per-target-rules'Brad King2015-05-195-10/+49
|\ \ | | | | | | | | | | | | a390de65 Ninja: Generate separate compile and link rules for each target
| * | Ninja: Generate separate compile and link rules for each targetBrad King2015-05-185-10/+49
| | | | | | | | | | | | | | | | | | | | | | | | Our <LANG>_COMPILER and <LANG>_<TARGET_TYPE>_LINKER rule generation has access to a specific cmTarget so the results may depend on it. Instead generate separate rules for each target using an encoded target name. In particular, this makes CTEST_USE_LAUNCHERS report proper target information.
* | | Merge topic 'refactor-cmLocalGenerator'Brad King2015-05-1918-173/+230
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | fa9eb814 cmLocalGenerator: Remove redundant path access. 1933f3d1 cmLocalGenerator: Remove redundant path conversions. 9e4b6cc2 cmState: Store computed relative paths to to current directories. 991f5e49 cmState::Snapshot: Store components for current directories. 57bdc1a2 cmState: Compute and store directory components.
| * | | cmLocalGenerator: Remove redundant path access.Stephen Kelly2015-05-161-2/+1
| | | |
| * | | cmLocalGenerator: Remove redundant path conversions.Stephen Kelly2015-05-161-3/+0
| | | | | | | | | | | | | | | | The methods just called store the paths in already-converted form.
| * | | cmState: Store computed relative paths to to current directories.Stephen Kelly2015-05-165-121/+132
| | | |
| * | | cmState::Snapshot: Store components for current directories.Stephen Kelly2015-05-164-36/+38
| | | | | | | | | | | | | | | | Remove this responsibility from cmLocalGenerator.
| * | | cmState: Compute and store directory components.Stephen Kelly2015-05-1617-14/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There is no need to duplicate these in all cmLocalGenerators. Rename the symbols according to current conventions. Add explicit calls to Set{Source,Binary}Directory with empty strings in order to trigger the population of the components containers with the current working directory in cmLocalGenerator. Having directories set to empty is a special case in CMake, which is relied on for the `if(CMAKE_BINARY_DIR)` condition at the end of CMakeDetermineSystem.cmake.
* | | | Merge topic 'minor-cleanups'Brad King2015-05-199-105/+99
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 61d52e6e cmListFileBacktrace: Hide the context-stack implementation detail. a271f7f1 cmTarget: Simplify CMP0023 message loop. f4300cd4 cmTarget: Simplify output computation. 65a42849 cmTarget: Store context in stack only if different. 9645cba3 cmListFileContext: Implement EqualityComparable. 52a8d19c cmTarget: Store only cmListFileContext for CMP0023 handling. 59ba1215 cmTarget: Remove needless iteration. 18f810a8 cmListFileContext: Sort by line before file. e96b5d14 cmListFileContext: Implement LessThanComparable. 7eb0dfa0 cmMakefile: Use std::set::insert API to simplify CMP0054 handling. f9785e0c cmMakefile: Simplify CMP0054 handling. e17b5e42 cmMakefile: Add access to the top-level execution context. 1ec1bf9f if(): Test the effect of cmMakefileCall use in elseif() handling. 9b4aefad cmMakefile: Replace deques with vectors.
| * | | | cmListFileBacktrace: Hide the context-stack implementation detail.Stephen Kelly2015-05-185-24/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The backtrace will soon not be implemented in terms of a stack of cmListFileContext objects. Keep the cmListFileContext in the API for convenience for now.
| * | | | cmTarget: Simplify CMP0023 message loop.Stephen Kelly2015-05-181-15/+5
| | | | | | | | | | | | | | | | | | | | | | | | | This method is only called if there is a mismatch and something to print. Remove intermediate container.
| * | | | cmTarget: Simplify output computation.Stephen Kelly2015-05-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | We always have line information for contexts resulting from command execution.
| * | | | cmTarget: Store context in stack only if different.Stephen Kelly2015-05-181-8/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The PushTLLCommandTrace method is called once per link item for a single target_link_libraries command. Avoid storing copies of identical execution contexts and rely on the uniqueness while printing output.
| * | | | cmListFileContext: Implement EqualityComparable.Stephen Kelly2015-05-182-0/+12
| | | | |
| * | | | cmTarget: Store only cmListFileContext for CMP0023 handling.Stephen Kelly2015-05-182-16/+13
| | | | | | | | | | | | | | | | | | | | | | | | | Only the top level execution context is shown, as appropriate, so store only that.
| * | | | cmTarget: Remove needless iteration.Stephen Kelly2015-05-181-1/+0
| | | | | | | | | | | | | | | | | | | | This is not a loop.
| * | | | cmListFileContext: Sort by line before file.Stephen Kelly2015-05-181-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This should be much faster. In the context where it is used the line comparison should be sufficient, removing the need to compare files at all.
| * | | | cmListFileContext: Implement LessThanComparable.Stephen Kelly2015-05-184-23/+11
| | | | | | | | | | | | | | | | | | | | | | | | | Move wrapping existing code from cmMakefile, and simplify the implementation there.
| * | | | cmMakefile: Use std::set::insert API to simplify CMP0054 handling.Stephen Kelly2015-05-181-9/+1
| | | | |
| * | | | cmMakefile: Simplify CMP0054 handling.Stephen Kelly2015-05-183-13/+5
| | | | |
| * | | | cmMakefile: Add access to the top-level execution context.Stephen Kelly2015-05-183-6/+13
| | | | | | | | | | | | | | | | | | | | | | | | | This is cheaper than getting the whole backtrace, and the cmListFileBacktrace will not always be composed of cmListFileContext objects.
| * | | | cmMakefile: Replace deques with vectors.Stephen Kelly2015-05-182-4/+3
| | |/ / | |/| |
* | | | Merge topic 'clean-up-vs-generators'Brad King2015-05-1929-209/+162
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | dad8b03f VS: Remove obsolete methods. e435f875 VS: Move version information to global generator. b5f093f0 VS: Simplify setting of flag table.
| * | | | VS: Remove obsolete methods.Stephen Kelly2015-05-1912-68/+0
| | | | | | | | | | | | | | | | | | | | Base class implementations for these are identical.
| * | | | VS: Move version information to global generator.Stephen Kelly2015-05-1922-106/+136
| | | | |
| * | | | VS: Simplify setting of flag table.Stephen Kelly2015-05-197-41/+32
| | | | |
* | | | | Merge topic 'clean-up-makefile-generators'Brad King2015-05-1932-166/+68
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 036372c4 Remove obsolete overrides of CreateLocalGenerator. 684e5cef cmGlobalGenerator: Host the MakeSilentFlag. 2047144f cmLocalGenerator: Remove unused IgnoreLibPrefix. 333c1fa8 cmGlobalUnixMakefileGenerator3: Host the UnixCD. a97df5e1 cmGlobalUnixMakefileGenerator3: Host the PassMakeflags. 14f171c3 Remove method calls just repeating the default. cf7f03e5 cmGlobalUnixMakefileGenerator3: Host the DefineWindowsNULL. e9b134b9 cmGlobalUnixMakefileGenerator3: Host the include directive. 24613d8b cmLocalGenerator: Remove unused method. b659d161 cmGlobalGenerator: Add NVI wrapper to create local generator.
| * | | | | Remove obsolete overrides of CreateLocalGenerator.Stephen Kelly2015-05-1810-60/+0
| | | | | | | | | | | | | | | | | | | | | | | | The cmGlobalMakefileGenerator3 has an identical implementation.
| * | | | | cmGlobalGenerator: Host the MakeSilentFlag.Stephen Kelly2015-05-186-14/+8
| | | | | |
| * | | | | cmLocalGenerator: Remove unused IgnoreLibPrefix.Stephen Kelly2015-05-189-14/+0
| | | | | |
| * | | | | cmGlobalUnixMakefileGenerator3: Host the UnixCD.Stephen Kelly2015-05-188-13/+9
| | | | | |
| * | | | | cmGlobalUnixMakefileGenerator3: Host the PassMakeflags.Stephen Kelly2015-05-187-14/+8
| | | | | |
| * | | | | Remove method calls just repeating the default.Stephen Kelly2015-05-183-5/+0
| | | | | |
| * | | | | cmGlobalUnixMakefileGenerator3: Host the DefineWindowsNULL.Stephen Kelly2015-05-168-14/+9
| | | | | |
| * | | | | cmGlobalUnixMakefileGenerator3: Host the include directive.Stephen Kelly2015-05-168-15/+10
| | | | | | | | | | | | | | | | | | | | | | | | There is no sense in copying this to each cmLocalGenerator.
| * | | | | cmLocalGenerator: Remove unused method.Stephen Kelly2015-05-161-1/+0
| | | | | |
| * | | | | cmGlobalGenerator: Add NVI wrapper to create local generator.Stephen Kelly2015-05-1614-18/+26
| | |_|_|/ | |/| | |
* | | | | Merge topic 'clean-up-cmDefinitions'Brad King2015-05-193-61/+40
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f170985e cmDefinitions: Make the ClosureKeys method static. 98c5c903 cmDefinitions: Centralize knowledge of iterator type. 7872201b cmDefinitions: Remove internal MakeClosure method.
| * | | | | cmDefinitions: Make the ClosureKeys method static.Stephen Kelly2015-05-173-19/+17
| | | | | | | | | | | | | | | | | | | | | | | | For consistency with all other closure-related methods.
| * | | | | cmDefinitions: Centralize knowledge of iterator type.Stephen Kelly2015-05-172-26/+19
| | | | | | | | | | | | | | | | | | | | | | | | Currently we process a list of definitions, but that will change.
| * | | | | cmDefinitions: Remove internal MakeClosure method.Stephen Kelly2015-05-172-16/+4
| | |/ / / | |/| | | | | | | | | | | | | | | | | | There is no need to have a separate method, or to pass an external set to it.
* | | | | Merge topic 'clean-up-cmExecutionStatus'Brad King2015-05-191-16/+13
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2a44acb9 cmExecutionStatus: Remove inheritance of cmObject. c8c34169 cmExecutionStatus: De-virtualize API.
| * | | | | cmExecutionStatus: Remove inheritance of cmObject.Stephen Kelly2015-05-161-5/+3
| | | | | | | | | | | | | | | | | | | | | | | | It is not needed.
| * | | | | cmExecutionStatus: De-virtualize API.Stephen Kelly2015-05-161-11/+10
| | |_|_|/ | |/| | | | | | | | | | | | | It is clearly not required.
* | | | | Merge topic 'fix-function-missing-endforeach'Brad King2015-05-192-1/+2
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | 3a656065 Fix assertion failure on unmatched foreach in function (#15572)
| * | | | | Fix assertion failure on unmatched foreach in function (#15572)Brad King2015-05-182-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The lexical scope counting added by commit v3.2.0-rc1~332^2~1 (Track nested loop levels in CMake language with a stack of counters, 2014-11-18) forgot to account for scopes popped by error messages about unclosed scopes. Teach the error handler to pop the lexical scope it reports as unclosed. Re-order the lexical scope RAII object to be inside the variable scope RAII object scope so that the lexical scope is fully closed before we check assertions about variable scopes. Extend the RunCMake.Syntax test with a case covering this.