| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In the Ninja generator we run all build rules from the top of the build
tree rather than changing into each subdirectory. Therefore we convert
all paths relative to the HOME_OUTPUT directory. However, the Convert
method on cmLocalGenerator restricts relative path conversions to avoid
leaving the build tree with a "../" sequence. Therefore conversions
performed for "subdirectories" that are outside the top of the build
tree always use full paths while conversions performed for
subdirectories that are inside the top of the build tree may use
relative paths to refer to the same files.
Since Ninja always runs rules from the top of the build tree we should
convert them using only the top-level cmLocalGenerator in order to
remain consistent. Also extend the test suite with a case that fails
without this fix.
|
| |
|
|
|
|
|
| |
De-duplicate per-target flag computation in Makefile and Ninja target
generators.
|
|
|
|
|
| |
Factor an AddIncludeFlags method out of ComputeFlagsForObject just like
cmMakefileTargetGenerator has already.
|
|
|
|
|
| |
De-duplicate the ModuleDefinitionFile and AddModuleDefinitionFlag
members from the Makefile and Ninja target generators.
|
|
|
|
|
| |
De-duplicate the GetFeature, GetFeatureAsBool, and AddFeatureFlags
members from the Makefile and Ninja target generators.
|
|
|
|
| |
De-duplicate the member from the Makefile and Ninja target generators.
|
|
|
|
|
| |
De-duplicate the GeneratorTarget, Target, and Makefile members from the
local Makefile and Ninja generators.
|
|
|
|
| |
Provide a place to move functionality common to both.
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
| |
The "/showIncludes" flag is only available with MS C and C++ compilers,
and on compilers that "simulate" them (like Intel for Windows). Fix our
logic to choose this type only for MS tools with these languages. All
other cases need to use "deps = gcc" and define DEP_FILE in the build
rule.
|
| |
|
|
|
|
|
|
|
|
|
| |
Ninja generator ensures that all custom commands being target
dependencies are run before other source compilations. However in case
there are no such dependencies it currently generates empty phony rules
which clutter the build graph.
Teach the Ninja generator to produce such rules only when necessary.
|
|
|
|
|
|
| |
This reduces ninja file output even more for projects with lots of
libraries with entangled transitive dependencies. ParaView goes from the
previous 58M to about 45M.
|
| |
|
|
|
|
|
| |
Computing the source files is now more expensive, so the Ninja
generator became very slow with a large number of files.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Casts from std::string -> cmStdString were high on the list of things
taking up time. Avoid such implicit casts across function calls by just
using std::string everywhere.
The comment that the symbol name is too long is no longer relevant since
modern debuggers alias the templates anyways and the size is a
non-issue since the underlying methods are generated since it's
inherited.
|
| |
|
|
|
|
|
|
| |
Instead of figuring out target flags per-source file, cache the flags
that are being used. This results in a *much* faster generate time for
Ninja.
|
|
|
|
|
| |
Could be tested by setting the environment
variable NINJA_STATUS=[%r]
|
|
|
|
|
|
|
| |
Just enough to reach the BuildMacContentDirectory method and the
NeedRelinkBeforeInstall methods.
In the future, those methods can be moved to cmGeneratorTarget.
|
|
|
|
| |
cmcldeps is now only used for .rc file processing
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
This patch fixes test BundleTest on Darwin.
|
|
|
|
|
| |
Ninja generates for paths with spaces wrong results for $out.d,
using the new DEP_FILE variable instead.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Refactoring in commit a2514f15 (Simplify cmNinjaTargetGenerator using
cmGeneratorTarget, 2012-03-13) accidentally removed mapping of .def file
paths through ConvertToNinjaPath (via GetSourceFilePath). Take the
ModuleDefinitionFile value from cmGeneratorTarget and map it correctly
through ConvertToNinjaPath.
In addition to generating cleaner paths in the ninja build files this
correctly links up references to a generated .def file with the custom
command output that produces it.
|
|
|
|
|
| |
Replace the classification of source files in this generator using that
computed by cmGeneratorTarget.
|
| |
|
| |
|
|
|
|
|
|
| |
Generally these are only required in build statements, as Ninja wants
to be able to chop paths up. But it doesn't hurt to also try to use
them in command line arguments.
|
|
|