summaryrefslogtreecommitdiffstats
path: root/Source/cmState.h
Commit message (Collapse)AuthorAgeFilesLines
* fix a batch of include-what-you-use violationsDaniel Pfeifer2016-08-161-4/+10
|
* use CM_NULLPTRDaniel Pfeifer2016-06-281-1/+1
|
* cmState: Expose list of properties of values in the cacheTobias Hunger2016-06-101-0/+1
|
* Pass arguments that are not modified as const&.Daniel Pfeifer2016-05-261-2/+2
| | | | | | | Use clang-tidy's performance-unnecessary-value-param checker to find value parameter declarations of expensive to copy types that are not modified inside the function. Ignore findings in kwsys. After applying the fix-its, manually change `const T&` to `T const&`.
* Revise C++ coding style using clang-formatKitware Robot2016-05-161-36/+47
| | | | | | | | | | | | | Run the `Utilities/Scripts/clang-format.bash` script to update all our C++ code to a new style defined by `.clang-format`. Use `clang-format` version 3.8. * If you reached this commit for a line in `git blame`, re-run the blame operation starting at the parent of this commit to see older history for the content. * See the parent commit for instructions to rebase a change across this style transition commit.
* Format include directive blocks and ordering with clang-formatBrad King2016-04-291-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Sort include directives within each block (separated by a blank line) in lexicographic order (except to prioritize `sys/types.h` first). First run `clang-format` with the config file: --- SortIncludes: false ... Commit the result temporarily. Then run `clang-format` again with: --- SortIncludes: true IncludeCategories: - Regex: 'sys/types.h' Priority: -1 ... Commit the result temporarily. Start a new branch and cherry-pick the second commit. Manually resolve conflicts to preserve indentation of re-ordered includes. This cleans up the include ordering without changing any other style. Use the following command to run `clang-format`: $ git ls-files -z -- \ '*.c' '*.cc' '*.cpp' '*.cxx' '*.h' '*.hh' '*.hpp' '*.hxx' | egrep -z -v '(Lexer|Parser|ParserHelper)\.' | egrep -z -v '^Source/cm_sha2' | egrep -z -v '^Source/(kwsys|CursesDialog/form)/' | egrep -z -v '^Utilities/(KW|cm).*/' | egrep -z -v '^Tests/Module/GenerateExportHeader' | egrep -z -v '^Tests/RunCMake/CommandLine/cmake_depends/test_UTF-16LE.h' | xargs -0 clang-format -i This selects source files that do not come from a third-party. Inspired-by: Daniel Pfeifer <daniel@pfeifer-mail.de>
* Source: Stabilize include orderBrad King2016-04-291-0/+1
| | | | | Each source file has a logical first include file. Include it in an isolated block so that tools that sort includes do not move them.
* cmState: Remove unused entry point fields from snapshot dataBrad King2016-04-181-2/+0
| | | | This information is now kept in cmMakefile::Backtrace.
* cmListFileBacktrace: Refactor storage to provide efficient value semanticsBrad King2016-04-181-14/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-151-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-151-0/+1
| | | | | The bottom of the call stack is always a long-lived snapshot and can be saved for later use with cmOutputConverter.
* cmState: Rename CallStack snapshots to IncludeFileBrad King2016-04-121-5/+5
|
* Merge branch 'reduce-cmState-accumulation' into ↵Brad King2015-11-251-0/+1
|\ | | | | | | reduce-cmState-accumulation-for-master
| * cmState: Avoid accumulating snapshot storage for short-lived scopesBrad King2015-11-251-0/+1
| | | | | | | | | | We need to keep only certain snapshot types and their ancestors. Also keep those needed for backtraces.
* | cmState: Move GetTargetTypeName from cmTarget.Stephen Kelly2015-10-141-0/+2
| |
* | cmState: Move TargetType enum from cmTarget.Stephen Kelly2015-10-141-0/+6
| | | | | | | | | | | | | | Mostly automated: values=( "EXECUTABLE" "STATIC_LIBRARY" "SHARED_LIBRARY" "MODULE_LIBRARY" "OBJECT_LIBRARY" "UTILITY" "GLOBAL_TARGET" "INTERFACE_LIBRARY" "UNKNOWN_LIBRARY" "TargetType") for i in "${values[@]}"; do git grep -l cmTarget::$i | xargs sed -i "s|cmTarget::$i|cmState::$i|g"; done
* | Subdirs: Initialize from parent before configuring.Stephen Kelly2015-10-131-0/+2
| | | | | | | | | | | | | | Add new API for the subdirs command to cmState. This fixes a regression introduced in commit f716460e (cmMakefile: Move invokation to initialize snapshot., 2015-10-06).
* | cmState: Initialize default definitions immediately.Stephen Kelly2015-10-131-0/+1
| | | | | | | | Don't leave this as cmMakefile responsibility.
* | cmState: Initialize top level source directories immediately.Stephen Kelly2015-10-131-0/+2
| | | | | | | | Don't leave this as cmMakefile responsibility.
* | cmState: Port away from cmake instance.Stephen Kelly2015-10-101-2/+3
| |
* | cmState: Move ParseCacheEntry from cmCacheManager.Stephen Kelly2015-10-101-0/+6
| |
* | cmState: Add API for cache version.Stephen Kelly2015-10-101-0/+3
| |
* | cmState: Make AddCacheEntry method private.Stephen Kelly2015-10-101-2/+4
| |
* | cmState: Add cache file manipulation wrappers.Stephen Kelly2015-10-101-0/+8
| |
* | cmState: Internalize the initialization of a snapshot from its parent.Stephen Kelly2015-10-071-2/+3
|/
* Merge topic 'cmState-ProjectName'Brad King2015-08-271-0/+3
|\ | | | | | | | | | | | | | | 637c56b4 cmGlobalGenerator: Implement FillProjectMap in terms of cmState. b3f2299e cmState: Move ProjectName from cmMakefile. 6ce940ac cmMakefile: Use std::string in ProjectName API. e8c0341d cmMakefile: Out-of-line GetProjectName.
| * cmState: Move ProjectName from cmMakefile.Stephen Kelly2015-08-251-0/+3
| |
* | Merge topic 'rm-cmLocalGenerator-Children'Brad King2015-08-271-0/+2
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | 867b5be8 cmLocalGenerator: Remove unused Children member. 6c832219 cmLocalGenerator: Implement child traversal in terms of cmState. 3fcf3837 Makefiles: Remove valueless cast. 223f4a66 cmLocalGenerator: Simplify condition. ae026f54 cmState: Store Children states in parent state.
| * | cmState: Store Children states in parent state.Stephen Kelly2015-08-241-0/+2
| |/
* | cmState: Make Snapshot EqualityComparable.Stephen Kelly2015-08-241-0/+7
|/
* cmState: Move directory Properties from cmMakefile.Stephen Kelly2015-08-241-0/+9
|
* Merge topic 'cmState-definitions'Brad King2015-08-241-1/+17
|\ | | | | | | | | | | | | | | | | | | bff27391 cmState: Host variable definitions. 6954c893 cmState: Add a VariableScope snapshot type. 1fc645bd cmState: Add a Base snapshot type. 0f070dd3 cmMakefile: Decouple the container of cmDefinitions from scoping logic. 25e04ddf cmDefinitions: Implement in terms of cmLinkedTree. 4bbe261c cmMakefile: Extract InitializeVarScope method.
| * cmState: Host variable definitions.Stephen Kelly2015-08-231-0/+11
| |
| * cmState: Add a VariableScope snapshot type.Stephen Kelly2015-08-231-1/+5
| | | | | | | | Match the scopes currently used in cmMakefile for definitions.
| * cmState: Add a Base snapshot type.Stephen Kelly2015-08-231-0/+1
| | | | | | | | For completeness mostly.
* | cmState: Make it possible to order cmState::Snapshot.Stephen Kelly2015-08-231-0/+7
|/
* cmState: Move PolicyState from cmMakefile.Stephen Kelly2015-08-021-0/+10
| | | | | Implement lexical scope checking in terms of the state stack instead of barriers.
* cmState: Add Type for policy scope.Stephen Kelly2015-08-021-1/+3
|
* cmState: Add Snapshot Type accessor.Stephen Kelly2015-08-011-0/+1
|
* cmState: Host buildsystem properties for directories.Stephen Kelly2015-07-251-0/+29
|
* cmState: Fix compilation on IBM XL compilerBrad King2015-07-251-1/+2
| | | | | Delay use of the PositionType constructor until after SnapshotDataType is fully defined.
* cmState: Extract a Directory class.Stephen Kelly2015-07-181-18/+34
| | | | | Move Directory-scoped state accessors to it. This will be expanded with directory property state soon.
* cmState: Forward-declare a type earlier.Stephen Kelly2015-07-181-1/+1
|
* cmState: Store execution context.Stephen Kelly2015-07-051-5/+27
| | | | | Extend snapshot creation API to store the file being executed and the entry point to get to that context.
* cmState: Add GetCallStackParent method.Stephen Kelly2015-07-051-0/+1
|
* cmState: Store snapshots for more different types.Stephen Kelly2015-07-041-2/+12
| | | | Adjust cmMakefile implementation to create the snapshots.
* cmake: Update the current snapshot when Resetting.Stephen Kelly2015-06-211-1/+1
| | | | This will matter when definitions are stored in the cmState.
* cmOutputConverter: Constify API.Stephen Kelly2015-06-211-2/+4
|
* Merge topic 'data-layout'Brad King2015-06-081-4/+6
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8174e5cd cmCustomCommand: Remove special member functions. 34e1d6db cmCustomCommand: Re-arrange data layout. 54cb76f2 cmComputeLinkDepends: Re-arrange data layout. b661d6c6 cmQtAutoGenerators: Re-arrange data layout. 40844a14 cmProcessTools: Re-arrange data layout. b1ff32af cmOrderDirectories: Re-arrange data layout. dd0417c7 cmInstallTargetGenerator: Re-arrange data layout. 125c4866 cmInstallFilesGenerator: Re-arrange data layout. 92b8b1fc cmGraphVizWriter: Re-arrange data layout. 7f3e1623 cmGlobalGenerator: Re-arrange data layout. d9df7fa7 cmComputeComponentGraph: Re-arrange data layout. db24e41b cmCommandArgumentParserHelper: Re-arrange data. 4cd13e80 cmComputeLinkInformation: Re-arrange data layout. 3e087a40 cmLocalUnixMakefileGenerator: Re-arrange data layout. e0421701 cmMakefile: Re-arrange data layout. c26696eb cmSourceFile: Re-arrange data. ...
| * Constify property definition API.Stephen Kelly2015-06-071-4/+6
| |