48 Commits

Author SHA1 Message Date
Brad King
67bd514adc Ninja: Refactor restat to be a string internally
This will allow values other than "" and "1" to be generated in
the rules.ninja file.
2014-11-14 16:16:00 -05:00
Peter Collingbourne
f42d86f0b8 Ninja: Implement USES_TERMINAL using the console pool if available 2014-11-14 11:56:33 -05:00
Peter Collingbourne
d5eae5563f Ninja: factor out the test for console pool support 2014-11-14 11:56:33 -05:00
Geoff Viola
bef23e8181 Fix some spelling errors in comments 2014-10-13 10:00:53 -04:00
Sylvain Joubert
9f32a2411b Ninja: Use 'console' pool for CMake re-run if possible (#14915)
The pre-defined 'console' pool is a non-buffered pool that runs with a
depth of 1.  CMake re-run cannot be run concurrently and it will
eventually output something.  A non-buffered pool allows to get it as
soon as possible

Also, generate the minimal required version of Ninja in the build file.
2014-10-03 08:48:47 -04:00
Brad King
f5c0efdbe4 cmGlobalGenerator: Create a non-virtual 'DoGenerate' method
Make the virtual 'Generate' method protected.  Make 'DoGenerate'
the main entry point to generation.  This gives cmGlobalGenerator
a chance to do some early operations before the individual
generator-specific implementations take over.
2014-07-22 15:05:36 -04:00
Adam Strzelecki
a33cf6d088 Ninja: Consider only custom commands deps as side-effects (#14972)
Since commit v2.8.12~248^2 (Ninja: Custom Command file depends don't
need to exist before building, 2013-06-07) all explicit dependencies
inside build folder were considered as possible build command
side-effects and phony rules were produced for them in case they don't
exist when starting to build. This is unnecessary since regular compile
inputs need to exist or cmake will fail.  Moreover the exception for
sources having GENERATED property that can be missing is already handled
by WriteAssumedSourceDependencies.

This fixes unwanted phony rules for all regular source files when doing
in-source build, causing Ninja not complain when such files gets missing,
i.e. during development. Also this reduces number of rules in ninja.build.

Now only custom command dependencies are considered as possible side-effects.
2014-06-30 09:33:37 -04:00
Stephen Kelly
6c9dd0ec7b cmGlobalGenerator: Make ComputeTargetObjects non-virtual
Implement it in terms of the ComputeObjectFilenames virtual method
on the local generators.

Remove the reimplementation from the global generators which are
now all functionally identical.
2014-03-15 09:30:24 +01:00
Stephen Kelly
cd43433de5 cmGlobalGenerator: Extract a ComputeTargetObjectDirectory interface.
Make it public for future external calls.
2014-03-13 15:27:23 +01:00
Ben Boeckel
6557382dcf stringapi: Use strings for program paths 2014-03-08 13:05:38 -05:00
Ben Boeckel
1a1b737c99 stringapi: Use strings for generator names 2014-03-08 13:05:38 -05:00
Ben Boeckel
24b5e93de2 stringapi: Use strings for directories 2014-03-08 13:05:38 -05:00
Ben Boeckel
84fdc9921c stringapi: Pass configuration names as strings 2014-03-08 13:05:36 -05:00
Ben Boeckel
c3833c7da4 stringapi: Use strings for VS project names 2014-03-08 13:05:33 -05:00
Ben Boeckel
fabf1fbabb stringapi: Use strings in target name 2014-03-08 13:05:31 -05:00
Stephen Kelly
b4ff38a5ef cmGlobalGenerator: Make CheckALLOW_DUPLICATE_CUSTOM_TARGETS const 2014-01-12 20:18:11 +01:00
Stephen Kelly
ef25ba8d06 Constify handling of target dependencies. 2013-12-11 15:30:11 +01:00
Brad King
8904d1410b cmGlobalGenerator: Cleanup GenerateBuildCommand API
All cmGlobalGenerator::GenerateBuildCommand call sites that need to
produce a string now generate "cmake --build" commands.  The remaining
call sites immediately pass the result to cmSystemTools::RunSingleCommand.
Avoid the intermediate string and argument parsing by directly producing a
vector of strings.  Also drop the ignoreErrors argument because no call
sites remain that use it.
2013-11-18 08:26:21 -05:00
Brad King
684063c036 Refactor tool selection for edit_cache (#14544)
Refactor edit_cache tool selection to ask each global generator for its
preference.  Teach the Ninja generator to always use cmake-gui because
Ninja by design cannot run interactive terminal dialogs like ccmake.
Teach the Makefile generator to use cmake-gui when also using an "extra"
generator whose IDE has no terminal to run ccmake, and otherwise fall
back to CMAKE_EDIT_COMMAND selection for normal Makefile build systems.
2013-11-12 08:47:19 -05:00
Peter Kümmel
eeb4aece1c Ninja: use deps = gcc/msvc feature
cmcldeps is now only used for .rc file processing
2013-10-24 19:48:18 +02:00
Robert Maynard
539356f128 Ninja: Custom Command file depends don't need to exist before building
When converting custom commands for the ninja build system we
need to make sure that any file dependencies that exist in the build
tree are converted to phony targets. This tells ninja that these
files might not exist when starting the build, but could be generated
during the build.

This is done by tracking all dependencies for custom command targets.
After all have been written out we remove all items from the set
that have been seen as a target, custom command output, an alias,
or a file in the source directory. Anything that is left is considered
to be a file that will be generated as a side effect of another
custom command.
2013-07-01 09:01:01 -04:00
Robert Maynard
874e17120d Ninja: GlobalNinjaGenerator WriteBuild and WritePhonyBuild non static
To properly track the usage of dependencies that are generated at
compile time as the side effect of other build steps we need
to make the WriteBuild and WritePhonyBuild commands non static
2013-07-01 08:59:38 -04:00
Petr Kmoch
de8be9ef7d Add projectDir parameter to GenerateBuildCommand
Extend the cmGlobalGenerator::GenerateBuildCommand virtual method
signature with a "projectDir" parameter specifying the top of the
project build tree for which the build command will be generated.
Populate it from call sites in cmGlobalGenerator::Build where a
fully-generated build tree should be available.
2013-04-12 11:35:35 -04:00
Patrick Gansterer
5170a8800f Make cmGlobalGenerator::GetDocumentation() a static function
Making the function static allows us to call it directly,
without creating and removing an instance of the generator.
2012-11-19 12:54:50 -05:00
Patrick Gansterer
e8f841473b Introduce the abstract class cmGlobalGeneratorFactory
This new abstract class allows us move some logic from the
cmGlobalGenerator into its own layer in a next step.
2012-11-19 12:54:30 -05:00
Peter Kümmel
f1670ab18a Ninja: don't confuse ninja's rsp files with nmake's
Move response files into CMakeFiles/ which makes them different to nmake's.
2012-09-28 12:33:57 +02:00
Peter Kümmel
7751966297 Ninja: remove 'friend' in ninja code 2012-07-18 11:27:49 +02:00
Nicolas Despres
10686a17f4 Ninja: Copy resource files in the bundle.
This patch fixes test BundleTest on Darwin.
2012-07-17 14:03:08 +02:00
Peter Kümmel
8c1e35c195 Ninja: remove some unused default arguments 2012-07-10 10:53:24 +02:00
Peter Kümmel
7f647cf5eb Ninja: also write link libraries to rsp file
and enable rspfile support on Linux, needed for commands longer than e.g. 2096152 characters on Ubuntu.
2012-07-10 10:53:24 +02:00
Peter Kuemmel
6332ba5a58 Ninja: also consider rule command length for rsp file 2012-07-02 10:30:29 +02:00
Peter Kuemmel
50b6f33dbc Ninja: build cmcldeps with mingw 2012-06-15 13:46:49 +02:00
Peter Kuemmel
2fb07fc44c Ninja: Eclipse and KDevelop fixes for ninja
Thx to Claus Klein
2012-06-15 12:14:13 +02:00
Peter Kuemmel
f13a6a087e Ninja: undo all the NOSHELL patches 2012-06-15 01:43:08 +02:00
Peter Kuemmel
6546086004 Ninja: don't use shell when cmake is called directly
When linking with cmake and vs_link_* the command line
could be too long for cmd.exe, which needs not to be
called in this case. (was not cached by a test)

Introduce rules which don't use the shell and use this
rule when there are no pre or post step.

For free we get a small speedup, because cmd is then
not called.

Also be more accurate when estimating the
command line length.
2012-06-14 14:22:56 +02:00
Peter Kuemmel
4b43999ca3 Ninja: remove unused CommentStream 2012-06-13 17:23:31 +02:00
Peter Kuemmel
5590625fa3 Ninja: use slashes for include dirs, so also slahes are in the .d files 2012-06-12 13:52:32 +02:00
Peter Kuemmel
ba8d0db217 Ninja: don't pollute the rules file with useless comments 2012-06-10 20:20:29 +02:00
Peter Kuemmel
ad4a768d59 Ninja: add response file support on Windows
When MinGW is used slashes are used for dependencies
because ar.exe can't read rsp files with backslashes.

Many thx to Claus Klein for starting working on this.
2012-06-05 22:39:42 +02:00
Stephen Kelly
db839bec7d Make the CMAKE_EXPORT_COMPILE_COMMANDS option work with Ninja. 2012-06-04 23:42:37 +02:00
Nicolas Despres
92cee7626c Ninja: Add a convenient 'help' target. 2012-05-09 19:08:12 +02:00
Nicolas Despres
3bd41f2eb5 Ninja: Add a convenient 'clean' target.
It has been asked on the mailing list:
http://public.kitware.com/pipermail/cmake-developers/2012-April/003805.html
2012-05-09 19:08:12 +02:00
Brad King
f5b06cda0f Pre-compute object file names before Ninja generation
Implement cmGlobalGenerator::ComputeTargetObjects in the Ninja generator
to pre-compute all the object file names.  Use the results during
generation instead of re-computing it later.
2012-03-16 10:18:35 -04:00
Brad King
ac800f49d0 Ninja: Constify use of cmCustomCommand
The generator never needs to modify custom command instances.
2012-03-13 11:23:14 -04:00
Peter Kuemmel
dbe3dce546 Ninja: add .def file support 2012-03-07 16:24:34 -05:00
Peter Collingbourne
cea03e632b Ninja: Backslash rules for Windows
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.
2012-02-19 04:00:02 +00:00
Peter Collingbourne
5d19e8aa6a Ninja: Appease various compilers 2012-02-05 01:48:08 +00:00
Peter Collingbourne
6dd410c2b9 Ninja: Add the Ninja generator 2012-02-02 23:40:21 +00:00