Stephen Kelly
ef17bbefd7
cmMakefile: Separate storage of buildsystem properties and their origins.
...
This simplifies some existing and upcoming algorithms.
2015-07-22 20:25:43 +02:00
Stephen Kelly
a89c02ce3d
cmMakefile: Out of line some API.
2015-07-22 20:06:23 +02:00
Stephen Kelly
b19587e7d7
cmMakefile: Remove some references from APIs.
2015-07-22 20:06:22 +02:00
Brad King
5b2754d41f
Merge topic 'remove-special-MACROS-handling'
...
41bb831f
cmMakefile: Remove special handling of MACROS property.
2015-07-21 09:22:23 -04:00
Brad King
e13c189743
Merge topic 'remove-special-LINK_DIRECTORIES-handling'
...
881613c4
cmMakefile: Remove special handling of LINK_DIRECTORIES property.
35734260
cmMakefile: Inline only use of GetLinkDirectories.
2015-07-21 09:22:21 -04:00
Brad King
93b393e74c
Merge topic 'remove-Properties-accessor'
...
c6055d9d
cmMakefile: Remove GetProperties method.
cbe3ee58
cmMakefile: Add a PropertyKeys accessor.
2015-07-21 09:22:17 -04:00
Brad King
64aa41b248
Merge topic 'clean-up-include_regular_expression'
...
4efda261
cmMakefile: Remove special handling of INCLUDE_REGULAR_EXPRESSION.
2015-07-21 09:22:15 -04:00
Stephen Kelly
41bb831fc9
cmMakefile: Remove special handling of MACROS property.
2015-07-19 16:01:39 +02:00
Stephen Kelly
c6055d9d4c
cmMakefile: Remove GetProperties method.
...
The storage details of properties do not belong in the API.
2015-07-18 18:59:41 +02:00
Stephen Kelly
cbe3ee58ca
cmMakefile: Add a PropertyKeys accessor.
2015-07-18 18:59:18 +02:00
Stephen Kelly
4efda261fe
cmMakefile: Remove special handling of INCLUDE_REGULAR_EXPRESSION.
...
It costs an extra cmMakefile member and extra code to maintain in
directory property handling. Remove documentation note that it
is read-only and specify high-level command to populate it.
2015-07-18 14:10:34 +02:00
Stephen Kelly
881613c4ab
cmMakefile: Remove special handling of LINK_DIRECTORIES property.
...
There is no need to handle it in a special way.
2015-07-18 13:56:48 +02:00
Stephen Kelly
357342602d
cmMakefile: Inline only use of GetLinkDirectories.
2015-07-18 13:45:43 +02:00
Stephen Kelly
640fc5b54a
cmMakefile: Remove unused ListFileStack.
2015-07-18 13:27:19 +02:00
Stephen Kelly
d2475bb5c4
cmListFileBacktrace: Implement in terms of cmState::Snapshot.
...
Avoid copying many strings into each backtrace object.
2015-07-06 11:22:42 -04:00
Stephen Kelly
238aac2351
cmListFile: Remove FilePath member from cmListFileContext.
...
There is no need to store the FilePath for every function, as it is
known by other means.
2015-07-06 11:22:41 -04:00
Stephen Kelly
821f91d6ab
cmMakefile: Create a scoped context for parsing listfiles.
...
Update the Syntax tests to check for updated/improved backtraces.
2015-07-06 11:22:41 -04:00
Stephen Kelly
6361f68056
cmState: Store execution context.
...
Extend snapshot creation API to store the file being executed and the
entry point to get to that context.
2015-07-06 01:37:15 +02:00
Stephen Kelly
dbafb01580
cmMakefile: Split CallStack into two pieces.
2015-07-04 11:51:27 +02:00
Stephen Kelly
f346d88d10
cmMakefile: Avoid invoking EnforceDirectoryLevelRules.
...
This is part of the CMP0000 implementation and only needs to be invoked
for top-level buildsystem files currently.
2015-06-30 23:14:20 +02:00
Stephen Kelly
0818737c85
cmMakefile: Make listfile scopes responsible for logical checks.
...
Remove the LexicalPushPop.
2015-06-30 23:14:18 +02:00
Stephen Kelly
92cecd9369
cmMakefile: Add automatic scopes to listfile readers.
2015-06-30 23:14:18 +02:00
Brad King
5ab7dd544e
Merge topic 'fix-function-missing-end'
...
5d85fb4f
Fix assertion failure on unmatched function or macro
2015-06-23 09:08:18 -04:00
Brad King
ec6d6be57d
Merge topic 'minor-cleanups'
...
820986ed
cmLocalGenerator: Constify GetIncludeDirectories method.
b3e2e332
QtAutogen: Get the global generator from the Makefile.
61c0113c
cmLocalUnixMakefileGenerator3: Remove unused method.
080489b8
cmMakefile: Use member directly instead of through method.
8bfaadfa
cmMakefile: Move IsRoot API from cmLocalGenerator.
217c243d
cmake: Update the current snapshot when Resetting.
eb05dcd6
cmLocalGenerator: Add IssueMessage method.
cfae7fa4
cmMakefile: Use cmOutputConverter instead of cmLocalGenerator.
ccf7760f
cmOutputConverter: Constify API.
2015-06-22 13:00:32 -04:00
Brad King
24a0825585
Merge topic 'clean-up-ReadListFile'
...
81eb2c58
cmMakefile: Simplify filename handling.
5c837686
cmMakefile: Make the IncludeScope more responsible.
c10ab014
cmMakefile: Move IncludeScope.
3404f8a0
cmMakefile: Move ListFile parsing responsibility out of internal method.
a1858136
cmMakefile: Rename parameter.
ad47e6e5
cmMakefile: Inline ReadListFileInternal into caller.
254be613
cmMakefile: Move resource management into the IncludeScope.
826b6e68
cmMakefile: Move IncludeScope to ReadDependentFile.
e53072d6
cmMakefile: Move IncludeScope instance.
b7166afa
cmMakefile: Remove File from IncludeScope.
27f229b9
cmMakefile: Move include scope out of ReadListFileInternal.
9166b49d
cmMakefile: Change order of raii scopes.
384a0dba
cmMakefile: Simplify condition handling.
5e24ff17
cmMakefile: Split file handling from execution.
d5aaa2b9
cmMakefile: Move check for unused variables.
fff3c6cd
cmMakefile: Move a container population.
...
2015-06-22 13:00:30 -04:00
Brad King
5d85fb4f40
Fix assertion failure on unmatched function or macro
...
The fix in commit v3.2.3~3^2 (Fix assertion failure on unmatched foreach
in function, 2015-05-18) broke handling of unmatched non-loop blocks
because it assumed all function blockers removed during error unwinding
were for loops, essentially switching the set of mishandled cases.
The purpose of the loop block push/pop operations is to define a scope
matching the lifetime of the loop function blockers. Since our function
blockers already have the proper lifetime, simply move the push/pop
operations to their constructor/destructor.
Extend the RunCMake.Syntax test with a case covering this.
2015-06-22 11:41:51 -04:00
Stephen Kelly
8bfaadfa39
cmMakefile: Move IsRoot API from cmLocalGenerator.
2015-06-21 21:14:05 +02:00
Stephen Kelly
076760a63c
cmMakefile: Add filename context to ExpandArguments.
...
The cmListFileArgument currently stores a FilePath for use in this
method. The filename is the same as the CMAKE_CURRENT_LIST_FILE,
except if executing a macro or function defined in another file.
Set the context filename when expanding the arguments of macros and
functions using the filename recorded when defining the prototype.
2015-06-21 20:57:25 +02:00
Stephen Kelly
3404f8a081
cmMakefile: Move ListFile parsing responsibility out of internal method.
2015-06-21 20:10:51 +02:00
Stephen Kelly
a1858136c2
cmMakefile: Rename parameter.
2015-06-21 20:10:51 +02:00
Stephen Kelly
ad47e6e5bc
cmMakefile: Inline ReadListFileInternal into caller.
2015-06-21 20:10:50 +02:00
Stephen Kelly
826b6e6818
cmMakefile: Move IncludeScope to ReadDependentFile.
...
Add replacement simple push/pop in the other two callers of
ReadListFile.
2015-06-21 20:10:50 +02:00
Stephen Kelly
27f229b970
cmMakefile: Move include scope out of ReadListFileInternal.
...
Simplify the ReadListFileInternal API.
2015-06-21 20:10:48 +02:00
Stephen Kelly
a6e661b848
cmMakefile: Rename variables.
2015-06-21 20:10:46 +02:00
Stephen Kelly
fe38bb2c29
cmMakefile: Change return type of ReadListFileInternal.
2015-06-21 20:10:46 +02:00
Stephen Kelly
ac10fc0958
cmMakefile: Move listfile parsing responsibility.
2015-06-21 20:10:45 +02:00
Stephen Kelly
52b9d828ab
cmMakefile: Move CMP0059 handling to command code.
...
Don't pay a penalty for it in all GetProperty calls.
Additionally, the storage of properties will eventually move to
cmState, which should only contain state and not logic for policies
like this.
2015-06-08 22:23:44 +02:00
Brad King
d17aa60659
Merge topic 'data-layout'
...
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.
...
2015-06-08 13:54:11 -04:00
Brad King
ccc6fe9445
Merge topic 'clean-up-cmMakefile'
...
4c192fb5
cmMakefile: Remove cacheOnly option from GetDefinitions.
046aafff
cmGetCMakePropertyCommand: Don't explicitly specify default param.
021c4b6f
cmMakefile: Simplify handling of CACHE_VARIABLES property.
1981c971
cmMakefile: Simplify InitializeFromParent method.
353e422b
cmMakefile: Remove unused GetPolicies method.
00bfa047
cmMakefile: Out-of-line the cmMakefileCall.
db74ce58
cmMakefile: Inline PushScope into PushFunctionScope.
ca140c2e
cmMakefile: Create a unified raii for macro scopes.
d5dc4169
cmMakefile: Create a unified raii for function scopes.
2015-06-08 13:54:09 -04:00
Brad King
f5690cc57c
Merge topic 'move-Feature-API'
...
f573bd22
cmLocalGenerator: Add Feature API from cmMakefile.
ccbc2259
cmGeneratorTarget: Move Feature API from cmTarget.
2015-06-08 13:54:05 -04:00
Stephen Kelly
4c192fb531
cmMakefile: Remove cacheOnly option from GetDefinitions.
...
It is now unused.
2015-06-07 15:21:56 +02:00
Stephen Kelly
e042170103
cmMakefile: Re-arrange data layout.
...
2168 to 2152 bytes with GNU libstdc++-5.1.
2015-06-07 09:32:38 +02:00
Stephen Kelly
5181fae264
cmPropertyMap: Remove chaining logic.
...
The chaining logic doesn't belong to the container, and the
CMakeInstance pointer doesn't need to be in cmPropertyMap.
Size goes from 56 to 48 bytes with GNU libstdc++-5.1.
2015-06-07 09:29:31 +02:00
Stephen Kelly
f573bd22e4
cmLocalGenerator: Add Feature API from cmMakefile.
2015-06-06 15:44:17 +02:00
Stephen Kelly
1981c9718b
cmMakefile: Simplify InitializeFromParent method.
...
Provide a parent instead of requiring it to be computed through
the cmLocalGenerator.
2015-06-06 09:35:55 +02:00
Stephen Kelly
353e422b2a
cmMakefile: Remove unused GetPolicies method.
2015-06-06 09:35:55 +02:00
Stephen Kelly
00bfa04748
cmMakefile: Out-of-line the cmMakefileCall.
2015-06-06 09:31:16 +02:00
Stephen Kelly
8680520fea
cmMakefile: Make the cmState::Snapshot accessible.
2015-06-06 09:15:56 +02:00
Stephen Kelly
ca140c2e89
cmMakefile: Create a unified raii for macro scopes.
2015-06-04 22:08:23 +02:00
Stephen Kelly
d5dc4169ac
cmMakefile: Create a unified raii for function scopes.
2015-06-04 22:08:23 +02:00
Brad King
0886880e3b
Merge topic 'cmMakefile-Configure'
...
7657e8b1
cmMakefile: Introduce a local cmMakefile variable.
4e8f242d
cmMakefile: Store unconfigured cmMakefiles.
d65e0123
cmMakefile: Implement ConfigureSubDirectory in terms of cmMakefile.
f059ed16
cmMakefile: Move Configure responsibility from cmLocalGenerator.
a653611d
cmake: Replace CurrentLocalGenerator concept with CurrentMakefile.
69a038a9
cmMakefile: Refactor directories specified with the subdirs command.
08637970
cmLocalGenerator: ComputeObjectMaxPath just before generating.
27e11c6f
Merge Configure state with GeneratingBuildSystem state.
363caa2f
cmLocalGenerator: De-virtualize Configure().
2015-06-04 09:13:35 -04:00
Stephen Kelly
4e8f242d17
cmMakefile: Store unconfigured cmMakefiles.
...
Not cmLocalGenerators.
2015-06-04 09:06:42 -04:00
Stephen Kelly
d65e01235d
cmMakefile: Implement ConfigureSubDirectory in terms of cmMakefile.
2015-06-04 09:06:42 -04:00
Stephen Kelly
f059ed165b
cmMakefile: Move Configure responsibility from cmLocalGenerator.
...
The generator should only have a function at generate time.
2015-06-04 09:06:41 -04:00
Stephen Kelly
69a038a9e9
cmMakefile: Refactor directories specified with the subdirs command.
...
Store the directories on the cmMakefile as explicitly not-configured-yet.
2015-06-04 09:06:41 -04:00
Stephen Kelly
27e11c6fea
Merge Configure state with GeneratingBuildSystem state.
2015-06-04 09:06:40 -04:00
Stephen Kelly
b68f2ea8ae
cmMakefile: Add API for elseif to create backtrace.
2015-06-03 01:03:58 +02:00
Stephen Kelly
b9f9915516
cmMakefile: Remove VarUsageStack.
...
Store usage information in the cmDefintions value instead. We already
pay for the memory as padding in the Def struct, so we might as well
use it.
2015-05-19 22:36:53 +02:00
Stephen Kelly
528d68021c
cmMakefile: Use more suitable method name to log var usage.
2015-05-19 22:36:52 +02:00
Stephen Kelly
9118b53b79
cmMakefile: Move internal method to private scope.
2015-05-19 22:36:52 +02:00
Stephen Kelly
bb1e8c3adf
cmMakefile: Remove Print() debugging facilities.
...
They don't print things that are important in the modern implementation.
2015-05-19 22:36:50 +02:00
Stephen Kelly
8ab1cce704
cmMakefile: Rename method to something more appropriate.
...
Allow the name to be used for something more-suitable.
2015-05-19 22:36:49 +02:00
Stephen Kelly
2dd5d42f52
cmMakefile: Make the public ReadListFile method take one param.
...
Make the existing method a private overload. All external callers
invoke the method with only one argument.
2015-05-19 22:36:49 +02:00
Stephen Kelly
f3e6a336f2
cmMakefile: Remove CurrentListFile member.
...
It is never read externally. The CollapseFullPath removed in this commit
is a repeat of a similar call inside ReadListFile.
2015-05-19 22:36:48 +02:00
Brad King
594dd9b36a
Merge topic 'use-std-unordered_map'
...
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.
2015-05-19 11:30:21 -04:00
Stephen Kelly
d7923b82ad
Use std::unordered_map instead of hash_map where available.
2015-05-19 00:07:02 +02:00
Stephen Kelly
e96b5d14f9
cmListFileContext: Implement LessThanComparable.
...
Move wrapping existing code from cmMakefile, and simplify the
implementation there.
2015-05-18 23:55:43 +02:00
Stephen Kelly
f9785e0cb6
cmMakefile: Simplify CMP0054 handling.
2015-05-18 23:55:43 +02:00
Stephen Kelly
e17b5e4262
cmMakefile: Add access to the top-level execution context.
...
This is cheaper than getting the whole backtrace, and the cmListFileBacktrace
will not always be composed of cmListFileContext objects.
2015-05-18 23:55:41 +02:00
Stephen Kelly
9b4aefad41
cmMakefile: Replace deques with vectors.
2015-05-18 21:25:48 +02:00
Brad King
226df303f9
CTest: Stop telling 'make' to ignore errors with -i
...
Add policy CMP0061 to maintain compatibility for existing projects.
2015-05-12 09:06:49 -04:00
Brad King
82a55ff916
Merge topic 'refactor-cmMakefile-constructor'
...
42142d4f
cmMakefile: Inline Intialize method in constructor
f39f0c0a
cmMakefile: Initialize SuppressWatches member before use
2015-05-05 09:35:23 -04:00
Brad King
42142d4fd2
cmMakefile: Inline Intialize method in constructor
...
Since commit 80909041
(cmMakefile: Disable copy constructor, 2015-04-18)
the only call to cmMakefile::Initialize is in one constructor. Inline
it and drop the separate method.
2015-05-04 10:22:01 -04:00
Stephen Kelly
0bb6dbe0c6
cmMakefile: Extract an accessor for the global generator.
...
Both for convenience, and because cmMakefile should not be the
way to get access to the local generator, so that should go away
in the future.
2015-05-03 11:41:59 +02:00
Stephen Kelly
46f6a5f458
cmState: Store the Current directories.
2015-04-28 07:57:21 +02:00
Stephen Kelly
3a041c5949
Introduce cmState::Snapshot.
...
Create snapshots for buildsystem directories during configure time.
This class will be extended in follow up commits to snapshot
all values in the cmState.
2015-04-28 07:57:01 +02:00
Stephen Kelly
86f3cd0f7e
cmMakefile: Require the localGenerator in the constructor.
...
Move the contents of cmMakeile::SetLocalGenerator to the Initialize
method.
2015-04-28 07:50:57 +02:00
Stephen Kelly
e4c78b37ce
cmMakefile: Inline SetHome* methods into last remaining caller.
2015-04-28 07:50:02 +02:00
Stephen Kelly
410f39a43e
cmMakefile: Delegate storage of Home dirs to the cmake class.
...
There is no need to duplicate these on every cmMakefile.
2015-04-28 07:50:01 +02:00
Brad King
5a5ef00106
Merge topic 'clean-up-cmMakefile'
...
8dc3a67c
cmMakefile: Out-of-line the directory methods.
0f3c8cfa
cmMakefile: Use method abstraction to access directories.
b288a997
cmMakefile: Rename SetStart* directory API to SetCurrent*.
932d53bc
cmMakefile: Remove redundant method duplication.
32b8f03a
cmMakefile: Port users of GetStart* methods to new names.
54d6a918
cmMakefile: Rename GetCurrent{Output,Binary}Directory.
55d80d0a
cmMakefile: Rename GetCurrent{,Source}Directory.
b23cf06f
cmake: Remove redundant start directories.
fcf246ac
cmMakefile: Populate Home directories on initialize.
8878bea7
cmake: Initialize Home directories on cmake for find-package mode.
044dc815
Use the Home directories from the cmake class where intended.
d67e8f24
cmake: Fix directory used to find the cache
1ea085d1
cmMakefile: Initialize dir definitions early.
f034bb2f
Remove redundant calls to MakeStartDirectoriesCurrent.
3a68c323
cmMakefile: Fix wrong parameter names.
2015-04-21 09:42:07 -04:00
Stephen Kelly
8dc3a67c9c
cmMakefile: Out-of-line the directory methods.
2015-04-21 09:41:27 -04:00
Stephen Kelly
8090904198
cmMakefile: Disable copy constructor.
...
It is no longer necessary to be able to copy it. Additionally, this
gives us one less reason to copy cmTarget.
2015-04-21 00:26:37 +02:00
Stephen Kelly
b288a997e9
cmMakefile: Rename SetStart* directory API to SetCurrent*.
2015-04-21 00:15:20 +02:00
Stephen Kelly
932d53bc02
cmMakefile: Remove redundant method duplication.
2015-04-21 00:15:20 +02:00
Stephen Kelly
54d6a9187f
cmMakefile: Rename GetCurrent{Output,Binary}Directory.
...
Match names used in CMake code.
2015-04-21 00:12:52 +02:00
Stephen Kelly
55d80d0a85
cmMakefile: Rename GetCurrent{,Source}Directory.
...
Match the names used in cmake code.
2015-04-21 00:12:52 +02:00
Stephen Kelly
1ea085d1b6
cmMakefile: Initialize dir definitions early.
2015-04-21 00:12:51 +02:00
Stephen Kelly
3a68c323ba
cmMakefile: Fix wrong parameter names.
2015-04-21 00:12:51 +02:00
Stephen Kelly
6e23a4bddd
cmMakefile: Remove always-null first parameter to ReadListFile.
2015-04-18 15:31:18 +02:00
Stephen Kelly
813cd719c4
cmMakefile: Determine the file to read before calling Internal.
2015-04-18 15:29:18 +02:00
Stephen Kelly
0d9555779d
cmMakefile: Delegate ListFile reading to internal method.
2015-04-18 15:29:17 +02:00
Stephen Kelly
a2f2aeee2f
cmMakefile: Add wrapper for reading listfiles which have an origin.
...
Such files are delegates from other files, and so they set the
CMAKE_PARENT_LIST_FILE to the originator. They also may set a
policy scope.
2015-04-18 15:29:17 +02:00
Stephen Kelly
68f791cd06
cmMakefile: Add a method for processing buildsystem files.
...
These are different from other ListFiles in that a project() command is
required if it is top-level.
2015-04-18 15:29:17 +02:00
Stephen Kelly
5bb4248a80
cmMakefile: Remove fullPath parameter from ReadListFile.
...
There is no reason for this to be a responsibility of
ReadListFile. Additionally, the only user of it already computes
it itself.
2015-04-18 15:29:17 +02:00
Stephen Kelly
0aec491328
Port cmCommand consumers to cmState.
2015-04-15 11:43:49 -04:00
Stephen Kelly
b159bff732
Move property definition to cmState.
2015-04-13 20:13:13 +02:00
Brad King
62c5e6f1a1
Merge topic 'introduce-cmState'
...
f081c5bd
cmState: Move CacheEntryType enum from cmCacheManager.
f71fdf0e
cmMakefile: Remove unused CacheManager accessor.
ff7169a0
Port to cmState.
a6b1ad13
Introduce cmState class.
2015-04-13 11:45:02 -04:00
Stephen Kelly
f081c5bddd
cmState: Move CacheEntryType enum from cmCacheManager.
2015-04-13 11:44:16 -04:00
Stephen Kelly
f71fdf0ec8
cmMakefile: Remove unused CacheManager accessor.
...
Remove unneeded friend declarations from cmCacheManager.
2015-04-13 11:44:15 -04:00
Stephen Kelly
a6b1ad1309
Introduce cmState class.
...
At this point, it is an interface to the cache. It will be extended
to be a universal interface for access to and manipulation of
configuration-time data (defintions, properties on targets,
directories, source files etc).
This will allow porting all command implementations away
from the cmMakefile and cmTarget classes, and result in something
more-purely related to configuration-time processing of cmake
commands. That should serve at least the following goals:
* Split the CMake implementation more definitively into three
stages: Configuration, computation and generation, and be able to
implement each optimally for memory access patterns etc.
* Make better IDE integration possible by making more configuration
data available.
* Make it possiblte to use a smaller library than CMakeLib.a in
cpack and ctest, resulting in smaller executables.
* Make it possible to run the configure step multiple times in
the same CMake run (#14539 ).
Manage its lifetime in the cmake class, and add a convenience accessor
to cmMakefile.
2015-04-13 11:44:14 -04:00