summaryrefslogtreecommitdiffstats
path: root/Source
Commit message (Collapse)AuthorAgeFilesLines
* Merge topic 'refactor-cmListFileBacktrace'Brad King2016-04-188-238/+253
|\ | | | | | | | | | | | | | | | | 0f96ef00 Remove unused cmake::IssueMessage overload 563bf9dd cmState: Remove unused entry point fields from snapshot data 7c36d206 cmListFileBacktrace: Refactor storage to provide efficient value semantics 1f6bd8a9 cmState: Avoid accumulating snapshot storage for backtraces 18b6676b cmState: Add Snapshot method to get bottom of call stack
| * Remove unused cmake::IssueMessage overloadBrad King2016-04-182-38/+0
| | | | | | | | | | | | All callers now pass a full backtrace so we do not need the alternative that takes a cmListFileContext directly. Drop this overload to remove the code duplication.
| * cmState: Remove unused entry point fields from snapshot dataBrad King2016-04-182-14/+0
| | | | | | | | This information is now kept in cmMakefile::Backtrace.
| * cmListFileBacktrace: Refactor storage to provide efficient value semanticsBrad King2016-04-186-182/+231
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since commit v3.4.0-rc1~321^2~2 (Genex: Store a backtrace, not a pointer to one, 2015-07-08) we treat cmListFileBacktrace instances as lightweight values. This was true at the time only because the backtrace information was kept in the cmState snapshot hierarchy. However, that forced us to accumulate a lot of otherwise short-lived snapshots just to have the backtrace fields available for reference by cmListFileBacktrace instances. Recent refactoring made backtrace instances independent of the snapshot hierarchy to avoid accumulating short-lived snapshots. This came at the cost of making backtrace values heavy again, leading to lots of string coying and slower execution. Fix this by refactoring cmListFileBacktrace to provide value semantics with efficient shared storage underneath. Teach cmMakefile to maintain its call stack using an instance of cmListFileBacktrace. This approach allows the current backtrace to be efficiently saved whenever it is needed. Also teach cmListFileBacktrace the notion of a file-level scope. This is useful for messages about the whole file (e.g. during parsing) that are not specific to any line within it. Push the CMakeLists.txt scope for each directory and never pop it. This ensures that we always have some context information and simplifies cmMakefile::IssueMessage. Push/pop a file-level scope as each included file is processed. This supersedes cmParseFileScope and improves diagnostic message context information in a few places. Fix the corresponding test cases to expect the improved output.
| * cmState: Avoid accumulating snapshot storage for backtracesBrad King2016-04-154-37/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Changes during post-3.3/pre-3.4 development refactored storage of most configure-time information, including variable bindings and function scopes. All scopes (even short-lived) were kept persistently for possible future debugging features, causing huge accumulated memory usage. This was mostly addressed by commit v3.4.1~4^2 (cmState: Avoid accumulating snapshot storage for short-lived scopes, 2015-11-24). Since then we still keep short-lived scopes when they are needed for a backtrace. This is because since commit v3.4.0-rc1~378^2 (cmListFileBacktrace: Implement in terms of cmState::Snapshot, 2015-05-29) backtraces have been lightweight objects that simply point into the snapshot tree. While the intention of this approach was to avoid duplicating the call stack file path strings, the cost turned out to be holding on to the entire call stack worth of scope snapshots, which is much worse. Furthermore, since commit v3.4.0-rc2~1^2 (cmIfCommand: Issue CMP0054 warning with appropriate context, 2015-10-20) all conditions used in `if()` commands hold a backtrace for use in diagnostic messages. Even though the backtrace is short-lived it still causes the scope snapshot to be kept. This means that code like function(foo) if(0) endif() endfunction() foreach(i RANGE 1000000) foo() endforeach() accumulates storage for the function call scope snapshots. Fix this by partially reverting commit v3.4.0-rc1~378^2 and saving the entire call stack during cmListFileBacktrace construction. This way we can avoid keeping short-lived scope snapshot storage in all cases.
| * cmState: Add Snapshot method to get bottom of call stackBrad King2016-04-152-0/+16
| | | | | | | | | | The bottom of the call stack is always a long-lived snapshot and can be saved for later use with cmOutputConverter.
* | Merge topic 'minor-cleanups'Brad King2016-04-187-78/+32
|\ \ | |/ | | | | | | | | | | | | | | | | | | 2faa8b36 Add call stack to unused/uninitialized variable warnings da07c506 cmLocalGenerator: Simplify IssueMessage implementation cc7aed77 cmLocalGenerator: Use own IssueMessage method c50285de cmOutputConverter: Assert construction with a valid snapshot b6ed71b1 cmMakefile: Move cmMakefileCall to .cxx file a559f0f6 cmWhileCommand: Simplify context construction 7503deb2 cmIfCommand: Simplify execution context construction
| * Add call stack to unused/uninitialized variable warningsBrad King2016-04-152-25/+4
| | | | | | | | | | | | | | | | In commit v2.8.4~32^2~14 (Use cmake::IssueMessage for warnings, 2010-12-07) these warnings became formatted. It is more informative to give the full call stack with such warnings. Also it is easier to implement warnings with a full call stack because we do not have to construct a custom backtrace with only the top.
| * cmLocalGenerator: Simplify IssueMessage implementationBrad King2016-04-151-11/+1
| | | | | | | | | | | | | | | | | | | | | | This method was added by commit v3.4.0-rc1~424^2~6 (cmLocalGenerator: Add IssueMessage method, 2015-06-13) in order to reduce callers' dependency on cmMakefile. Currently the implementation of cmLocalGenerator::IssueMessage is just a copy of the post-configure code path in cmMakefile::IssueMessage. De-duplicate the implementation by simply calling the cmMakefile copy for now. This will simplify upcoming refactoring of backtraces. The dependency on cmMakefile can be removed by future work once that is done.
| * cmLocalGenerator: Use own IssueMessage methodBrad King2016-04-151-2/+2
| |
| * cmOutputConverter: Assert construction with a valid snapshotBrad King2016-04-151-0/+1
| | | | | | | | | | We unconditionally use information from the snapshot so it must be valid.
| * cmMakefile: Move cmMakefileCall to .cxx fileBrad King2016-04-152-26/+20
| |
| * cmWhileCommand: Simplify context constructionBrad King2016-04-151-6/+2
| |
| * cmIfCommand: Simplify execution context constructionBrad King2016-04-151-8/+2
| |
* | Merge topic 'cmPolicies-missing-include'Brad King2016-04-181-0/+1
|\ \ | | | | | | | | | | | | cc684857 cmPolicies.cxx: Add missing include <ctype.h> for isdigit (#16066)
| * | cmPolicies.cxx: Add missing include <ctype.h> for isdigit (#16066)Brad King2016-04-151-0/+1
| | |
* | | Merge topic 'cmake-host-solaris'Brad King2016-04-181-0/+3
|\ \ \ | | | | | | | | | | | | | | | | 5dc6cfd6 Solaris: Add a CMAKE_HOST_SOLARIS variable (#16061)
| * | | Solaris: Add a CMAKE_HOST_SOLARIS variable (#16061)Stafen Teleman2016-04-151-0/+3
| |/ /
* | | Merge topic 'cmake-gui-osx-install-mkdir'Brad King2016-04-181-0/+1
|\ \ \ | | | | | | | | | | | | | | | | 32d569af cmake-gui: Teach --install make destination directory (#16064)
| * | | cmake-gui: Teach --install make destination directory (#16064)Brad King2016-04-151-0/+1
| |/ / | | | | | | | | | Ensure the destination directory exists before creating symlinks in it.
* | | CMake Nightly Date StampKitware Robot2016-04-181-1/+1
| | |
* | | CMake Nightly Date StampKitware Robot2016-04-171-1/+1
| | |
* | | CMake Nightly Date StampKitware Robot2016-04-161-1/+1
|/ /
* | CMake Nightly Date StampKitware Robot2016-04-151-1/+1
| |
* | CMake Nightly Date StampKitware Robot2016-04-141-1/+1
|/
* Merge topic 'cmState-rename-include-snapshot'Brad King2016-04-133-11/+11
|\ | | | | | | | | c54ed781 cmState: Rename CallStack snapshots to IncludeFile
| * cmState: Rename CallStack snapshots to IncludeFileBrad King2016-04-123-11/+11
| |
* | Merge topic 'try_compile-config-flags'Brad King2016-04-131-2/+11
|\ \ | | | | | | | | | | | | | | | bd581a37 try_compile: Honor CMAKE_<LANG>_FLAGS_<CONFIG> changes (#16054) 82ef90fc cmCoreTryCompile: Factor out config lookup for re-use
| * | try_compile: Honor CMAKE_<LANG>_FLAGS_<CONFIG> changes (#16054)Brad King2016-04-111-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | In the `try_compile` source file signature we propagate the caller's value of `CMAKE_<LANG>_FLAGS` into the test project. Extend this to propagate `CMAKE_<LANG>_FLAGS_<CONFIG>` too instead of always using the default value in the test project. This will be useful, for example, to allow the MSVC runtime library to be changed (e.g. `-MDd` => `-MTd`).
| * | cmCoreTryCompile: Factor out config lookup for re-useBrad King2016-04-111-2/+4
| | | | | | | | | | | | | | | Store the lookup of CMAKE_TRY_COMPILE_CONFIGURATION in a local variable so we can re-use it.
* | | Merge topic 'clang-tidy'Brad King2016-04-134-27/+92
|\ \ \ | | | | | | | | | | | | | | | | 5e62444c Add options to run clang-tidy with the compiler
| * | | Add options to run clang-tidy with the compilerDaniel Pfeifer2016-04-134-27/+92
| |/ / | | | | | | | | | | | | | | | Create a <LANG>_CLANG_TIDY target property (initialized by a CMAKE_<LANG>_CLANG_TIDY variable) to specify a clang-tidy command line to be run along with the compiler.
* | | CMake Nightly Date StampKitware Robot2016-04-131-1/+1
| |/ |/|
* | CMake Nightly Date StampKitware Robot2016-04-121-1/+1
|/
* Merge topic 'preallocate-condition-keywords'Brad King2016-04-111-4/+4
|\ | | | | | | | | aff4a5fa cmConditionEvaluator: Use pre-allocated keywords in more places
| * cmConditionEvaluator: Use pre-allocated keywords in more placesBrad King2016-04-081-4/+4
| | | | | | | | Inspired-by: Harry Mallon <Harry@codexdigital.com>
* | CMake Nightly Date StampKitware Robot2016-04-111-1/+1
| |
* | CMake Nightly Date StampKitware Robot2016-04-101-1/+1
| |
* | CMake Nightly Date StampKitware Robot2016-04-091-1/+1
| |
* | Merge topic 'ninja-restat-custom-command-byproducts'Brad King2016-04-081-2/+2
|\ \ | | | | | | | | | | | | | | | add7abc8 Ninja: Restat custom command byproducts even with a SYMBOLIC output (#16049) ff805113 Ninja: Fix detection of custom command symbolic outputs
| * | Ninja: Restat custom command byproducts even with a SYMBOLIC output (#16049)Brad King2016-04-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The change in commit v3.5.0-rc1~198^2 (Ninja: Always re-run custom commands that have symbolic dependencies, 2015-11-19) broke the byproducts feature added by commit v3.2.0-rc1~340^2~2 (Add an option for explicit BYPRODUCTS of custom commands, 2014-11-13) when SYMBOLIC outputs also appear. This case occurs with AUTORCC-generated custom targets because the output is SYMBOLIC (to always run) and the generated file is a byproduct (for restat so dependents do not run unnecessarily). The two use cases conflict because Ninja does not support per-output restat. Favor restat whenever byproducts are present because it is required for byproducts to work correctly. In use cases where we want an always-run chain we simply will not be able to also use byproducts.
| * | Ninja: Fix detection of custom command symbolic outputsBrad King2016-04-051-1/+1
| | | | | | | | | | | | | | | | | | | | | Fix logic introduced by commit v3.5.0-rc1~198^2 (Ninja: Always re-run custom commands that have symbolic dependencies, 2015-11-19) to not consider only the last output. We need to know if any output is SYMBOLIC, so stop checking as soon as one is found.
* | | Merge topic 'ninja-object-rsp'Brad King2016-04-085-12/+40
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | 7731e44f Ninja: Honor CMAKE_NINJA_FORCE_RESPONSE_FILE for compile rules f9644a2d cmGlobalNinjaGenerator: Clarify logic for forcing use of response files 24c9106b cmNinjaTargetGenerator: Factor out helper for forced response file check
| * | | Ninja: Honor CMAKE_NINJA_FORCE_RESPONSE_FILE for compile rulesDmitry Ivanov2016-04-071-4/+24
| | | |
| * | | cmGlobalNinjaGenerator: Clarify logic for forcing use of response filesDmitry Ivanov2016-04-073-5/+6
| | | | | | | | | | | | | | | | | | | | Update the WriteBuild method to use a negative command line length limit to specify that we should force use of response files.
| * | | cmNinjaTargetGenerator: Factor out helper for forced response file checkDmitry Ivanov2016-04-073-3/+10
| | | |
* | | | CMake Nightly Date StampKitware Robot2016-04-081-1/+1
|/ / /
* | | CMake Nightly Date StampKitware Robot2016-04-071-1/+1
| | |
* | | Merge topic 'fortran-line-directives-no-dirs'Brad King2016-04-061-1/+1
|\ \ \ | | | | | | | | | | | | | | | | f831d752 cmFortranParser: Skip #line directives that do not name files
| * | | cmFortranParser: Skip #line directives that do not name filesBrad King2016-04-051-1/+1
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | Since commit v3.5.0-rc1~241^2~1 (cmFortranParser: Parse #line directives, 2015-11-02) our Fortran dependency scanner parses `#line` directives to extract the named files. However, some compilers produce `#line` directives that name directories instead of files. Work around such cases by verifying that the extracted path names a file and not a directory.