- 09 Apr, 2014 2 commits
-
-
Stephen Kelly authored
The AddSource method accepts one file and tries to avoiding adding it to the sources-list of the target if it already exists. This involves creating many cmSourceFileLocation objects for matching on existing files, which is an expensive operation. Avoid the searching algorithm by appending the new sources as one group. Generate-time processing of source files will ensure uniqueness. Add a new AddTracedSources for this purpose. The existing AddSources method must process the input for policy CMP0049, but as these source filenames come from cmSourceFile::GetFullPath(), we can forego that extra processing.
-
Stephen Kelly authored
Computing the language involves computing the source files, which is an expensive operation. It requires calling cmMakefile::GetOrCreateSource many times, which involves creating and matching on many cmSourceFileLocation objects. Source files of a target may depend on the head-target and the config as of commit e6971df6 (cmTarget: Make the source files depend on the config., 2014-02-13). The results are cached for each context as of commit c5b26f3b (cmTarget: Cache the cmSourceFiles in GetSourceFiles., 2014-04-05). Each target in the build graph causes language computation of all of its dependents with itself as the head-target. This means that for 'core' libraries on which everything depends, the source files are computed once for every transitive target-level-dependee and the result is not cached because the head-target is different. This was observed in the VTK buildsystem. Short circuit the computation for targets which have a source-list that is independent of the head-target. If the source-list has already been computed and the generator expression evaluation reports that it was context-independent, return the only source-list already cached for the target. Reset the short-circuit logic when sources are added and when the link libraries are re-computed.
-
- 08 Apr, 2014 1 commit
-
-
Kitware Robot authored
-
- 07 Apr, 2014 2 commits
-
-
Brad King authored
a4e6bf8e cmTarget: Make GetSourceFiles string overload private. 92e2fbe1 cmGeneratorTarget: Trace cmSourceFile objects instead of strings. c5b26f3b cmTarget: Cache the cmSourceFiles in GetSourceFiles. eb163f37 cmTarget: Extract a ProcessSourceItemCMP0049 method. 19b7c22d Ninja: Query custom commands once per target, not once per file.
-
Kitware Robot authored
-
- 06 Apr, 2014 5 commits
-
-
Stephen Kelly authored
Consumers should use the cmSourceFile overload, which is now always the case.
-
Stephen Kelly authored
This reverses the decision in commit d38423ec (cmTarget: Add a method to obtain list of filenames for sources., 2014-03-17). The cmSourceFile based API is preferred because that avoids creation of many cmSourceFileLocation objects for matching strings, and the result is cached by cmTarget.
-
Stephen Kelly authored
Avoid calling GetSourceFiles with the same result container multiple times when tracing target dependencies. The result from the previous configuration is cached and used later otherwise.
-
Stephen Kelly authored
Avoid calling AddSource for each src filename. That involves checking each entry for uniqueness and creating a separate generator expression for each one. Instead, add a single entry for the list of sources. The source files are passed through a uniqueness filter at generate-time, so duplicates don't matter so much.
-
Kitware Robot authored
-
- 05 Apr, 2014 2 commits
-
-
Stephen Kelly authored
Computing the source files is now more expensive, so the Ninja generator became very slow with a large number of files.
-
Kitware Robot authored
-
- 04 Apr, 2014 11 commits
-
-
Rolf Eike Beer authored
These flags are needed to enable support for C++98. Also teach the 'bootstrap' script to add them if necessary.
-
Rolf Eike Beer authored
Some flags we select may affect availability of C++ features.
-
Daniele E. Domenichelli authored
-
Kitware Robot authored
- 03 Apr, 2014 17 commits
-
-
Alex Ciobanu authored
On OS X 10.9 the system libcurl has a different error message when failing to connect: Failed connect to :21; Connection refused Match this message to pass the test.
-
Stephen Kelly authored
Clang based tools running over the code complain about these, but clang has a fixit for removing them.
-
Stephen Kelly authored
Apply the same workaround to the cmCPackTypeMacro. Additionally change that macro to not use 'class' as a macro parameter.
-
Stephen Kelly authored
Allow compilers to warn when new enum values are added, making switches no-longer fully-covered.
-
Brad King authored
After reporting an internal error we should continue rather than aborting. Remove such statements that are left from debugging.
-
Brad King authored
-
Robert Maynard authored
QT4_CREATE_MOC_COMMAND is given a moc_flags argument that contains the COMPILE_DEFINITIONS and a potentially large list of include directories. Since it is a macro, the ${moc_flags} reference is replaced with this content and sent through cmMakefile::ExpandVariablesInString (EVIS). Since commit v3.0.0-rc1~138^2 (Qt4: Use generator expression in COMPILE_DEFINITIONS, 2014-01-13) the COMPILE_DEFINITIONS value contains a '$' so the EVIS fast-path is no longer used. Instead the full cmCommandArgumentParserHelper is now used on the large input, which is very slow (since it was originally created for hand-written code). Change QT4_CREATE_MOC_COMMAND to a function instead of a macro to avoid passing large content through EVIS. This makes it significantly faster.
-
Brad King authored
9407174b target_sources: New command to add sources to target. 81ad69e0 Make the SOURCES target property writable. 6e636f2e cmTarget: Make the SOURCES origin tracable. 3676fb49 cmTarget: Allow transitive evaluation of SOURCES property. e6971df6 cmTarget: Make the source files depend on the config. df753df9 cmGeneratorTarget: Don't add computed sources to the target. 869328aa cmComputeTargetDepends: Use valid config to compute target depends.
-
Brad King authored
5de63265 Genex: Only evaluate TARGET_OBJECTS to determine target sources. aa0a3562 cmGeneratorTarget: Compute target objects on demand 042c1c83 cmTarget: Compute languages from object libraries on demand. fdcefe3c cmGeneratorTarget: Compute consumed object libraries on demand. c355d108 cmComputeTargetDepends: Track object library depends. e5da9e51 cmTarget: Allow any generator expression in SOURCES property. 5702e106 cmTarget: Include TARGET_OBJECTS genex in target SOURCES property. 857d30b5 cmGlobalGenerator: Add interface to call ForceLinkerLanguages 28e1d2f8 cmStringCommand: Add GENEX_STRIP subcommand. bf98cc25 Genex: Evaluate TARGET_OBJECTS as a normal expression. 8cd113ad cmTarget: Store strings instead of cmSourceFile* to represent SOURCES. 4959f341 cmSourceFileLocation: Collapse full path for directory comparisons. fcc92878 cmSourceFileLocation: Remove unused Update method. 59e8740a cmTarget: Remove AddSourceFile method 26d494ba cmTarget: Use string API to add sources to cmTarget objects. d38423ec cmTarget: Add a method to obtain list of filenames for sources. ...
-