summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
| | * | | build.cc: constify BuildStatusKonstantin Kharlamov2019-11-202-4/+4
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
| | * | | build.cc: constify a map in BuildStatusKonstantin Kharlamov2019-11-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Modifying a key in C++ associative containers is UB. Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
| | * | | graph.cc: constify DependencyScanKonstantin Kharlamov2019-11-202-3/+3
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
| | * | | build.cc: constify a few Plan functionsKonstantin Kharlamov2019-11-202-13/+13
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
| | * | | build.cc: constify a map key in RealCommandRunnerKonstantin Kharlamov2019-11-201-3/+3
| | |/ / | | | | | | | | | | | | | | | | | | | | Modifying a key in C++ associative containers is UB. Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
| | * | Merge pull request #1680 from jonesmz/patch-1Jan Niklas Hasse2019-11-162-2/+2
| | |\ \ | | | | | | | | | | Fix invalid preprocessor #if
| | | * | Update graph_test.ccMichael Jones2019-11-141-1/+1
| | | | |
| | | * | Fix invalid preprocessor #ifMichael Jones2019-11-141-1/+1
| | | | |
| | * | | Fix minor typo of return valuexianglin10062019-11-151-2/+2
| | |/ / | | | | | | | | Return value of ManifestParser::ParseEdge shoule be boolean
| | * | Add Bionic tweak for getloadavgjoakim-noah2019-11-091-1/+1
| | | |
| | * | Merge pull request #1654 from BourgondAries/masterJan Niklas Hasse2019-10-302-0/+10
| | |\ \ | | | | | | | | | | Ensure substring indexing never goes negative
| | | * | Ensure substring indexing never goes negativeKevin Robert Stravers2019-09-282-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With widths lower than 4, the ElideMiddle function would crash because its substring access would wrap around and attempt to access the max size_t value. This patch fixes that.
| | * | | Revert "1492 add column headers to .ninja_log"Jan Niklas Hasse2019-10-282-8/+5
| | |/ / | | | | | | | | | | | | | | | | | | | | This reverts commit cfd0bd3007b291df505f8c45083453310142d681. See #1662.
| | * | Fix crash when using MSVC in debug modeJan Niklas Hasse2019-09-211-0/+4
| | | | | | | | | | | | | | | | | | | | Accessing inputs_[0] when it's empty results in an assert when running in debug. Avoid it by using data() if available.
| | * | Small constifications (#1647)Konstantin Kharlamov2019-09-195-15/+15
| | |/ | | | | | | | | | | | | | | | | | | * build: constify EdgeWanted() * build: constify a bit of CommandRunner * graph: constify functions of struct Edge Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
| | * Enable build on IBM i platform (#1630)ThePrez2019-08-091-1/+5
| | | | | | | | | | | | * No perfstat for IBM i (OS400) AIX variant * Allow for future IBM i to identify as 'os400'
| | * Merge pull request #1604 from jessemckenna/correct-cpu-count-over-64Jan Niklas Hasse2019-08-081-3/+1
| | |\ | | | | | | | | Enable ninja to use > 64 CPUs on Windows
| | | * Make GetProcessorCount() count processors across all processor groupsJesse McKenna2019-07-121-3/+1
| | | |
| | * | Merge pull request #1513 from nykula/masterJan Niklas Hasse2019-08-061-10/+4
| | |\ \ | | | | | | | | | | Use st_mtim if st_mtime is macro, fix #1510
| | | * | Use st_mtim if st_mtime is macro, fix #1510makepost2018-12-241-10/+4
| | | | | | | | | | | | | | | | | | | | | | | | | In POSIX.1-2008, sys_stat has a st_mtim member and a st_mtime backward compatibility macro. Should help avoid hardcoding platform detection.
| | * | | fix building ninja_test on AIX 6.1ky0ko2019-08-051-0/+9
| | | | |
| | * | | Merge pull request #1508 from mqudsi/colored_failJan Niklas Hasse2019-08-022-2/+8
| | |\ \ \ | | | | | | | | | | | | Emit "FAILED: " in red if terminal supports ANSI color output
| | | * | | Add braces to clarify conditional scopeMahmoud Al-Qudsi2019-02-041-2/+3
| | | | | |
| | | * | | Unset suports_color_ if SetConsoleMode fails on WIN32Mahmoud Al-Qudsi2018-12-101-1/+3
| | | | | |
| | | * | | Emit "FAILED: " in red if terminal supports ANSI color outputMahmoud Al-Qudsi2018-12-051-1/+4
| | | |/ /
| | * | | compdb: Dump every rule without any arguments, fix #1377Jan Niklas Hasse2019-08-021-16/+28
| | | | |
| | * | | Improve const-correctness in compdb related methodsJan Niklas Hasse2019-08-023-21/+16
| | | |/ | | |/|
| | * | Merge pull request #1517 from chagui/1492-add-headers-to-ninja_logJan Niklas Hasse2019-07-022-5/+8
| | |\ \ | | | | | | | | | | #1492 add column headers to .ninja_log
| | | * | 1492 add column headers to .ninja_logGuilhem Charles2019-01-132-5/+8
| | | |/
| | * | Follow GCC/Clang behavior wrt depfilesPeter Wu2019-06-083-46/+157
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The option is called "depfile = gcc" and should support depfiles created by GCC. GCC does not escape backslashes and GNU Make does not try to unescape it, so neither should Ninja try to "unescape" it. Only space (' ') and hash sign ('#') are specially treated by GCC/Clang. Note that while tabs are also treated specially by GCC, Clang does not, so do not special case it (why would someone use tabs in a filename?). Support for 2N trailing backslashes in a filename is a bit questionable, but is added to be as consistent as possible with GCC/Clang. See also https://github.com/llvm-mirror/clang/blob/44c160f916a1b080098b17b466b026aa07475ec2/lib/Frontend/DependencyFile.cpp#L316 https://github.com/gcc-mirror/gcc/blob/22a8377023d59cc01ab0a84a1df56d0e1336efa3/libcpp/mkdeps.c#L47 Fixes https://github.com/ninja-build/ninja/issues/1262
| | * | Fix UB "member call on null pointer of type 'DepsLog'", see #1248Jan Niklas Hasse2019-05-281-1/+1
| | | |
| * | | Adding a way to clean dead build artifacts that have an entry in the build log,ikifof2019-05-254-3/+108
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | but are no longer produced by the current manifest. For now adding a dedicated "-t cleandead" option, since it should be run after reading the log; ideally it should be part of the build config and done before to start looking for dirty targets so that an incremental build would produce the same end result as a clean build from scratch. But since I am not 100% sure to understand the comment in the NinjaMain::isPathDead(), I opted to make it a tool for now to avoid impacting users who want to keep those files. The option name "cleandead" was selected insteadof something like "reap" to keep the "clean" prefix.
| * | Resurrect the 'rules' tool.Nicolas Despres2019-05-093-0/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | This tool is useful for writing shell completion script for tools expecting a rule name as argument. The tool was dropped by 34b46f28c. Fix #1024.
| * | query: load dyndep files for queried edgesBrad King2019-04-181-0/+7
| | |
| * | graph: load dyndep filesBrad King2019-04-183-1/+16
| | | | | | | | | | | | | | | | | | Teach the `-t graph` tool to load dyndep files because they are part of the build graph. Issue a warning when the dyndep file cannot be loaded cleanly. This will help users visualize the complete build graph.
| * | clean: remove outputs specified by dyndep filesBrad King2019-04-183-0/+73
| | | | | | | | | | | | | | | | | | Some outputs may not be known in the main build manifest and are instead discovered through a dyndep binding. Load dyndep files that are available during cleaning so that we can clean these outputs too.
| * | clean: remove unnecessary Cleaner constructor variantBrad King2019-04-183-15/+1
| | | | | | | | | | | | | | | | | | | | | | | | `Cleaner` provides two constructors that are the same except that one constructs a "real" disk interface internally and the other takes a caller-provided disk interface. A real disk interface is already available at the only call site for the former constructor. Use it directly and drop the unnecessary constructor variant.
| * | Teach builder to load dyndep files when they are readyBrad King2019-04-183-7/+908
| | | | | | | | | | | | | | | | | | | | | | | | After finishing an edge that produces a dyndep file, load the file and update the build graph structure. Recompute the dirty state of all its dependents and of newly reachable portions of the graph. Add edges to the build plan that are discovered to be wanted. Finally, schedule edges that are wanted and now ready to build.
| * | Teach RecomputeDirty to load dyndep files that are readyBrad King2019-04-182-0/+219
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The full readiness of a node that has a dyndep binding cannot be known until after the dyndep file is loaded. If a dyndep file is ready while constructing the build plan it can be loaded immediately so full information can be used to decide whether anything needs to be built. If a dyndep file is not ready while constructing the build plan then the edges naming it cannot be ready either because the dyndep file is one of their inputs. In this case we defer loading the dyndep file until the build plan is being executed.
| * | Teach DependencyScan to load a dyndep fileBrad King2019-04-185-2/+354
| | | | | | | | | | | | | | | Add a LoadDyndeps method to load a dyndep file and update the edges that name it in their dyndep binding.
| * | Add a "dyndep" reserved binding to the manifest formatBrad King2019-04-185-3/+108
| | | | | | | | | | | | | | | | | | Allow rules or build statements to specify one of the build statement inputs in a "dyndep" binding. This will later be used to load dependency information from the specified file.
| * | Add a parser for a new "dyndep" file formatBrad King2019-04-184-0/+819
| | | | | | | | | | | | | | | | | | | | | | | | Define a file format suitable for specifying dynamically-discovered dependency information for build edges. Design a format inspired by the build manifest format and using the same lexer. Start with a required format version specification followed by "build" statements that add implicit inputs and outputs to existing edges.
| * | Explicitly avoid repeat deps loadingBrad King2019-04-183-7/+13
| | | | | | | | | | | | | | | | | | Track for each Edge whether depfile information has been loaded using an explicit flag. This will allow RecomputeDirty to be repeated for an edge without loading deps again.
| * | Make a Builder optionally available to PlanBrad King2019-04-182-3/+11
| | | | | | | | | | | | | | | | | | | | | In order to later support dynamic updates to the build plan while building, the Plan will need access to its Builder. Since this access will be needed only for specific features we can avoid updating all Plan constructions in the test suite by making this access optional.
| * | Factor out output edge ready check from Plan::NodeFinishedBrad King2019-04-182-9/+17
| | | | | | | | | | | | | | | Move the logic to a new Plan::EdgeMaybeReady method so it can be re-used elsewhere.
| * | Factor out edge marking logic from Plan::AddSubTargetBrad King2019-04-182-3/+9
| | | | | | | | | | | | | | | Move the logic to mark edges as wanted over to a Plan::EdgeWanted method so it can be re-used elsewhere later.
| * | Teach FakeCommandRunner to support multiple active commandsBrad King2019-04-181-21/+47
| | | | | | | | | | | | | | | | | | | | | | | | Replace our single active edge pointer with a vector and add a parameter that tests can set to limit the number of concurrent edges. Set the default to 1 to preserve the current behavior. Specific tests will be able to override it later to simulate concurrent builds.
| * | Allow EdgeFinished and NodeFinished to fail with errorsBrad King2019-04-183-37/+75
| | | | | | | | | | | | | | | | | | | | | Add an 'err' string argument and return a boolean for success. Update call sites to pass an 'err' string argument and check the return value. This will be useful later for adding logic to these methods that may fail.
| * | Assert precondition in BuildStatus::BuildEdgeStartedBrad King2019-04-181-0/+1
| | | | | | | | | | | | | | | This method should be called only with edges that have not already been started.
| * | Factor out a base class of ManifestParserBrad King2019-04-184-53/+104
| | | | | | | | | | | | | | | | | | Create a Parser base class that holds parser functionality not specific to the build manifest file format. This will allow it to be re-used for other parsers later.