ninja-compatible build tool written in C
git clone
Log | Files | Refs | README | LICENSE | sfeed.txt

DateCommit messageAuthorFiles+-
2023-06-30 21:27deps: Handle escaped newlines in Makefile fragmentsMichael Forney1+7-14
2023-06-18 07:19Include exit status in job failure messageMichael Forney1+1-1
2022-07-13 15:31build: Add -Wmissing-prototypesorbea1+1-1
2022-07-13 15:28build: Add -Wshadoworbea2+4-4
2023-06-17 17:34Disable getloadavg support by defaultMichael Forney3+10-12
2023-06-17 17:44Rename reallocarray to prevent conflict with libcMichael Forney1+2-2
2022-07-21 13:47Ensure isalnum() argument is within the range of unsigned charVincent Torri1+1-1
2022-03-29 18:38Implement load average optioncapezotte5+62-8
2021-11-11 03:51Update LICENSE yearMichael Forney1+1-1
2021-11-11 03:44tool: Fail on first unknown target in commands and graph toolsMichael Forney1+6-14
2021-11-11 03:38tool: Order functions according to tool listMichael Forney1+36-36
2021-11-11 03:36tool: Remove list toolMichael Forney2+6-13
2021-11-10 23:55tool: Implement graph toolNicolas Abram2+74-1
2021-10-04 02:48manual: Use Pq macro to parenthesize link.Aman Verma1+1-1
2018-11-02 01:01log: Use fgets instead of getlineMichael Forney1+19-9
2021-04-28 00:35manual: Update list of supported commandsMichael Forney1+2-0
2021-04-10 18:44Add micro version number to --version outputMichael Forney1+1-1
2021-04-09 01:17scan: Allow stray indented but otherwise empty linesMichael Forney1+25-38
2021-04-07 08:36env: Fix const-ness of cycle sentinelMichael Forney1+2-2
2021-04-05 04:30Drop now-unused outer evalstring structureMichael Forney4+23-41
2021-04-05 04:25env: Use sentinel in tree node to detect cyclesMichael Forney5+36-39
2021-04-05 04:16scan: Use an array instead of linked list for path listMichael Forney4+45-44
2021-04-04 10:50parse: Check for non-empty command/rspfile/rspfile_contentMichael Forney1+2-0
2021-04-04 09:08build: Return early when there is no work to doMichael Forney1+5-3
2021-04-04 09:04build: Simplify "nothing to do" conditionMichael Forney1+1-1
2021-04-03 06:05tool: Remove now unnecessary check for descriptionMichael Forney1+2-4
2021-04-03 00:27util: Check for NULL string in writefileMichael Forney1+1-1
2021-03-31 21:13tool: Allow running 'list' subtool with no build manifestMichael Forney1+8-17
2021-03-31 21:06Remove build.ninjaMichael Forney2+0-28
2021-03-31 21:04build: Don't try to print phony edges during dry-runMichael Forney1+1-1
2021-03-31 21:03build: Print "nothing to do" when only phony jobs are scheduledMichael Forney1+1-1
2020-12-17 21:45Makefile: Add `all` targetMichael Forney1+3-2
2020-12-17 01:31build: Skip timing status specifier if clock_gettime failsMichael Forney1+3-2
2020-12-15 22:06Document commands subtoolMichael Forney1+10-0
2020-07-15 18:44add %o support to NINJA_STATUSEthan Sommer2+9-0
2020-12-10 02:11tool: Check for write error in tools that write to stdoutMichael Forney1+8-2
2020-11-12 00:57Fix mtime calculation on SunOSDavid H. Gutteridge1+7-0
2020-12-10 01:56Synchronize with MakefileMichael Forney1+1-1
2020-12-10 01:52Move dodefault to parse.c and rename to defaultnodesMichael Forney5+30-32
2020-12-10 01:38Print message when changing the working directoryMichael Forney1+3-1
2020-10-26 22:48build: Inline jobdryrunMichael Forney1+7-15
2020-10-26 22:21build: Add common status printing functionMichael Forney1+19-18
2020-10-24 07:25Implement "commands" toolPaolo Bonzini5+51-7
2020-10-23 14:21Implement dry-run modePaolo Bonzini4+34-8
2020-10-23 13:45Implement "query" toolPaolo Bonzini2+46-0
2020-10-23 13:51Implement "list" toolPaolo Bonzini4+29-5
2020-09-21 21:35Makefile: Add support for BINDIR variableperiish1+3-2
2020-06-29 19:28Revert "Add annotations"Michael Forney1+2-13
2020-05-06 07:39Use major/minor numbers for version comparison instead of stringMichael Forney3+11-5
2020-04-05 11:28update node gen and use commentDuncan Overbruck1+1-4
2020-03-30 01:07tool: Fix usage message for compdbMichael Forney1+1-1
2020-03-29 00:40build: Silence warningMichael Forney1+1-0
2020-03-29 00:39build: Add missing `len` decrementMichael Forney1+3-1
2020-03-28 21:26Update copyright yearMichael Forney1+1-1
2020-03-28 21:58build: Check result of clock_gettimeMichael Forney1+4-1
2020-03-28 05:18build: Format status string to bufferMichael Forney1+49-55
2020-03-25 01:05Use -Wpedantic instead of -pedanticMichael Forney1+1-1
2020-03-25 01:01graph: Free `use` array when deleting a nodeMichael Forney1+1-0
2020-03-25 00:59env: Free all environments on manifest rebuildMichael Forney1+15-9
2020-03-24 21:37build: Skip unused edges when scheduling dependent edgesMichael Forney1+3-3
2020-03-21 04:25Add some commentsAngular Orbit3+16-2
2020-03-21 03:58Free old environment and pools when manifest is rebuiltAngular Orbit5+53-4
2020-03-20 07:53htab: Free oldkeys and oldvals after resizeAngular Orbit1+2-0
2020-02-25 03:53tool: Implement targetsSimon Zeni2+117-2
2020-02-23 17:01Add .clang-format file and reformat.Daan De Meyer9+31-18
2020-02-29 01:52Keep track of whether dependencies for an edge were loadedMichael Forney3+5-1
2020-02-29 00:48Calculate reverse dependencies during parseMichael Forney3+6-14
2020-02-29 00:37Ignore -l flag for ninja compatibilityMichael Forney1+4-0
2020-02-29 00:31README: Mention argument handling differenceMichael Forney1+4-0
2020-02-13 07:19deps: Treat missing depfile as empty for deps logMichael Forney1+9-6
2020-01-26 22:32manual: Specify list width to avoid lint warningMichael Forney1+1-1
2020-01-26 18:58Add support for NINJA_STATUS environment variableEthan Sommer4+100-4
2020-01-23 17:56compdb: Remove trailing comma after last entry in command objectMichael Forney1+1-1
2020-01-22 19:50tool: Implement compdbMichael Forney2+117-3
2020-01-22 19:36parse: Check that rules have $rspfile iff they have $rspfile_contentMichael Forney2+8-2
2020-01-22 18:45parse: Check that rules always have a commandMichael Forney2+5-4
2020-01-17 20:53Fix manifest rebuild when it was pruned due to restatMichael Forney3+26-3
2019-12-17 08:47util: Use stdio to implement writefileMichael Forney1+9-19
2019-12-13 22:41Detect cycles in rule variablesMichael Forney3+7-0
2019-12-13 20:28canonpath: Fail on empty pathMichael Forney1+2-0
2019-12-07 20:46Add header dependencies to MakefileMichael Forney1+16-1
2019-12-05 05:37Set stdout to line bufferedMichael Forney1+2-0
2019-11-27 08:09Clarify LICENSEMichael Forney1+2-2
2019-11-26 21:15log: Make output file line-bufferedMichael Forney1+2-0
2019-11-17 23:29deps: Read version after checking headerMichael Forney1+4-4
2019-11-17 23:28deps: Better error message when fread returns 0Michael Forney1+2-2
2019-11-07 06:31Implement keepdepfile and keeprsp debug flagsMichael Forney5+21-9
2019-11-07 06:16deps: Fix depfile parsing with multiple `output: input` linesMichael Forney1+2-1
2019-09-03 18:52Add GitHub actions badgeMichael Forney1+1-0
2019-09-03 18:47Add explicit name to GitHub build workflowMichael Forney1+2-0
2019-08-28 02:33Remove Travis CIMichael Forney2+0-11
2019-08-28 02:17Add GitHub actions continuous buildMichael Forney1+12-0
2019-08-19 20:22build: Release a job from a pool, even if it failedMichael Forney1+19-18
2019-07-10 03:39Add OpenBSD continuous build manifestMichael Forney1+5-0
2019-07-10 03:36README: Fix typoMichael Forney1+1-1
2019-07-10 02:50Style changes to continuous build manifestsMichael Forney2+4-4
2019-07-10 00:46Revert "env: Re-use strings from evalstring when possible"Michael Forney1+6-19
2019-07-09 23:13scan: Undefine getc in case it is a macroMichael Forney1+1-0
2019-07-09 22:57parse: Fix allocation of edge `in` and `out` arraysMichael Forney1+2-2
2019-07-09 22:30env: Re-use strings from evalstring when possibleMichael Forney1+19-6
2019-07-09 20:37env: Simplify edgevar slightlyMichael Forney1+19-23
2019-07-09 19:33README: Mention some differences from ninjaMichael Forney1+25-0
2019-07-09 07:20When accessing $depfile and $rspfile, use unescaped $in and $outMichael Forney7+29-29
2019-07-09 06:00env: Don't create new path list string if there is just one pathMichael Forney1+2-0
2019-07-09 07:03graph: Make nodeescape more convenient to use and rename to nodepathMichael Forney3+12-11
2019-07-09 03:57env: Remove edge variable cacheMichael Forney1+3-4
2019-07-08 23:13Add annotationsMichael Forney1+13-2
2019-07-03 20:38Introduce SAMUFLAGS to allow -v and -j options to be set in environmentAndreas Baumann2+62-5
2019-07-01 01:41arg: Make sure EARGF(...) has type `char *`Michael Forney1+1-1
2019-07-01 01:30Handle empty argv arrayMichael Forney2+14-3
2019-07-01 01:36Make argv0 `const char *`Michael Forney4+4-4
2019-06-20 07:12build: Release console when job using it failsMichael Forney1+2-2
2019-03-28 19:52clean: Also remove $depfile and $rspfileMichael Forney1+31-16
2019-03-07 21:51Update man page slightlyMichael Forney1+2-1
2019-03-07 06:48scan: Use getc_unlockedMichael Forney1+3-0
2019-03-02 20:28Update copyright yearMichael Forney1+1-1
2019-03-05 02:38Fix error message printingMichael Forney1+1-1
2019-03-05 01:10Update READMEMichael Forney1+1-1
2019-03-04 19:28env: Fix variable lookup order between rule and parent environmentMichael Forney1+1-4
2019-03-04 19:23Improve some error messages slightlyMichael Forney7+17-17
2019-03-04 19:22deps: Make sure to check for any write errors before the flushMichael Forney1+6-4
2018-11-26 19:26Simplify error handlingMichael Forney11+123-143
2019-03-02 06:18Update README to reflect current .ninja_deps versionMichael Forney1+1-1
2019-03-02 06:00Update tree to new musl implementationMichael Forney1+84-76
2019-03-02 05:58Add some parentheses to silence gcc warningsMichael Forney1+3-3
2019-02-22 06:02We now support ninja 1.9.0 featuresMichael Forney2+2-2
2019-02-22 05:54Add statusMichael Forney1+1-0
2019-02-22 05:49Rename samurai.c to samu.cMichael Forney3+3-3
2019-02-22 05:46Treat -j 0 as infinite jobsMichael Forney1+6-5
2019-02-22 04:08Don't recalculate string length when we already have itMichael Forney8+13-18
2019-02-22 03:59Rewrite htabMichael Forney3+108-113
2018-12-14 23:12Add --verbose as a synonym for -vMichael Forney1+4-1
2019-02-22 03:11Rewrite arg.hMichael Forney2+19-40
2018-12-14 22:54deps: Update to .ninja_deps version 4 (nanosecond timestamps)Michael Forney2+26-24
2018-12-14 21:25parse: Make dupbuild=err the defaultMichael Forney3+4-4
2019-02-12 20:05Update continuous build image namesMichael Forney2+2-2
2019-02-07 00:13scan: Handle escaped newlines in whitespace separating tokensMichael Forney1+35-10
2019-02-02 08:58env: Free evalstring after they are used in envevalMichael Forney2+4-7
2019-02-02 08:51parse: Canonicalize paths in `default` linesMichael Forney1+1-0
2018-12-22 17:48deps: Allow blank linesMichael Forney1+6-2
2018-12-15 21:36deps: Don't require that the depfile output matches the edge outputMichael Forney1+14-10
2018-12-15 21:21deps: Allow spaces before `:`Michael Forney1+2-0
2018-12-13 04:14deps: Simplify depsparse path scanning loopMichael Forney1+35-39
2018-12-12 07:36graph: Make sure `in` is initialized in phony edgesMichael Forney1+2-0
2018-12-12 03:42parse: Ensure at least one output pathMichael Forney1+2-0
2018-12-12 00:55deps: Fix error message when output doesn't match $outMichael Forney1+1-1
2018-12-12 00:35parse: Make sure manifest files actually get closedMichael Forney1+1-1
2018-12-12 07:37scan: Simplify loop slightlyMichael Forney1+1-5
2018-11-26 06:01log: Rewrite on read failureMichael Forney1+3-1
2018-11-26 05:51deps, log: Only create during rewriteMichael Forney2+15-6
2018-11-26 05:29deps, log: Improve some error messagesMichael Forney2+14-14
2018-11-26 04:33deps: Allocate buffer as neededMichael Forney1+9-2
2018-11-26 04:26deps: Take advantage of stdio bufferingMichael Forney1+24-24
2018-11-02 01:11deps: Use stdio onlyMichael Forney3+37-41
2018-11-21 23:04scan: Fix variable references with bracesMichael Forney1+1-0
2018-11-18 19:18util: Simplify makedirs a bitMichael Forney1+1-6
2018-11-17 23:51util: Change makedirs to allow creation of main path tooMichael Forney4+13-20
2018-11-17 20:33scan: Fix error message in scancharMichael Forney1+1-1
2018-11-02 00:43Avoid POSIX-specific *at functionsMichael Forney7+72-43
2018-11-17 08:44Add .builds for sr.htMichael Forney3+15-0
2018-11-17 09:04util: Define _POSIX_C_SOURCE to avoid extra declarations from libcMichael Forney1+1-0
2018-11-12 04:12htab: Only keys need to be zeroedMichael Forney3+9-19
2018-11-12 04:07htab: Use presence of key rather than non-zero hash when growingMichael Forney1+1-1
2018-11-12 03:46Rename xstrdup to xmemdup and change semantics slightlyMichael Forney3+11-11
2018-11-12 03:39Add reallocarray and use where appropriateMichael Forney6+34-21
2018-11-01 06:02Rewrite lexerMichael Forney12+485-566
2018-11-08 21:33build: Fix isdirty for restat=1, generator=1, and no build log entryMichael Forney1+1-1
2018-10-12 01:34deps: Handle crazy escape scheme used by clang and gccMichael Forney1+38-1
2018-10-12 01:30Add support for -w flagsMichael Forney4+49-7
2018-10-09 03:11parse: Make multiple generating actions a warning instead of an errorMichael Forney1+16-8
2018-09-27 19:16tree: Make treefind iterative instead of recursiveMichael Forney1+7-8
2018-09-27 18:54lex: Handle Windows line endingsMichael Forney1+20-0
2018-08-29 02:31travis: Test on macOS tooMichael Forney1+3-0
2018-08-18 00:05Use a single ninja version variableMichael Forney3+9-10
2018-04-27 20:48add a --version option to print a compatible ninja versionIru Cai1+10-0
2018-04-13 18:07build: Fix numfds in pollMichael Forney1+12-16
2018-04-12 01:59build: Generator with no entry in build log is not dirtyMichael Forney1+7-6
2018-04-09 21:18Avoid use of O_DIRECTORYMichael Forney1+1-1
2018-04-09 21:15Fix mtime calculation on macOSMichael Forney2+4-3
2018-04-09 19:15build: Allocate jobs as neededMichael Forney1+19-15
2018-04-08 17:58Use size_t for maxjobs and maxfailMichael Forney3+20-21
2018-04-04 16:57Add note about building on macOSMichael Forney1+3-0
2018-04-04 16:31build: Allocate jobs and pollfds on heapMichael Forney1+6-2
2018-04-04 09:03Annotate constant data as suchEmil Velikov4+6-6
2018-03-23 08:17Fix maxfail when multiple jobs fail at the same timeMichael Forney2+4-3
2018-03-18 02:25log: Free line buffer when finishedMichael Forney1+1-0
2018-03-18 02:24deps: Don't allocate large buffer on the stackMichael Forney1+33-31
2018-03-17 23:53Use MTIME_MISSING instead of hash to detect presence of node in .ninja_logMichael Forney3+9-8
2018-03-17 22:46deps: Explain rebuild for missing depsMichael Forney1+11-4
2018-03-17 22:34deps: Don't need to stat the node againMichael Forney1+0-1
2018-03-17 22:26Move definition of _POSIX_C_SOURCE to the files that require itMichael Forney7+7-2
2018-03-17 22:15Store time internally as nanoseconds in an int64_tMichael Forney5+35-43
2018-03-15 07:59htab: Use size_t instead of ssize_t for value indexMichael Forney1+4-9
2018-03-01 05:01deps: Fix header descriptionMichael Forney1+3-3
2018-02-25 19:20Use remove instead of unlinkMichael Forney3+5-6
2018-02-28 05:44Update copyright yearMichael Forney1+1-1
2018-02-28 05:44Update README.mdMichael Forney1+11-4
2018-02-28 05:16build: Store next available job index in job structureMichael Forney1+6-7
2018-02-28 05:03build: Move environ to jobstart scopeMichael Forney1+1-1
2018-02-28 05:00Add support for `-d explain`Michael Forney4+66-14
2018-02-28 04:34build: Move options into a structureMichael Forney3+37-34
2018-02-25 09:11build: Always write job output if it failedMichael Forney1+2-2
2018-02-25 04:38deps: Simplify depsload slightlyMichael Forney1+6-10
2018-02-25 04:33deps: Add some documentation about .ninja_deps formatMichael Forney1+27-0
2018-02-25 01:51htab: Use NULL key to indicate no value instead of NULL hashMichael Forney1+5-16
2018-02-25 01:46htab: Specialize for string keysMichael Forney3+23-54
2018-02-25 01:33htab: Use uint64_t for hash throughoutMichael Forney2+7-7
2018-02-25 00:46htab: Add const to murmurhash64a prototypeMichael Forney2+3-3
2018-02-25 00:45htab: Remove unused hthasMichael Forney2+0-8
2018-02-25 00:30htab: Make struct hashtable opaqueMichael Forney3+30-26
2018-02-25 00:06Replace use of search.h with our own binary search tree implementationMichael Forney7+179-87
2018-01-22 22:17Makefile: add MANDIRAlexey Kovac1+3-2
2018-01-10 18:02lex: Fix slight incompatibilities in newline and comment handlingMichael Forney1+21-6
2017-10-19 03:54Fix lint errors in samu.1Michael Forney1+20-15
2017-10-11 05:31Remove unused stuff from arg.hMichael Forney1+0-24
2017-10-11 05:20Fix escaping of paths for shellMichael Forney1+2-1
2017-09-07 08:54parse: Support ninja_required_version = 1.8Michael Forney1+1-1
2017-09-07 08:56build: Close extra pipe fd before starting commandMichael Forney1+4-0
2017-09-07 07:58build: Store output mtime in build log regardless of restatMichael Forney1+12-8
2017-09-07 17:42build: For restat, check that inputs exist when calculating newest oneMichael Forney1+1-1
2017-09-06 06:44Only suppress command output when console is actually usedMichael Forney1+1-1
2017-09-02 02:37Check ninja_required_versionMichael Forney1+11-0
2017-08-27 01:40Only suppress command and output when console job is runningMichael Forney1+6-1
2017-08-26 19:19Turn on -WextraMichael Forney2+2-2
2017-08-26 19:16htab: Add fallthrough comments to silence GCC 7 with -WextraMichael Forney1+6-6
2017-08-26 19:07deps: Restrict node IDs to positive integersMichael Forney1+6-6
2017-08-23 20:28Store as signedAlexander Krotov1+1-1
2017-08-26 18:59env: Explicitly declare initializer fieldMichael Forney1+3-3
2017-08-26 18:40log: Fix recompact conditionMichael Forney1+2-1
2017-08-23 20:36Fix comparison of signed to unsigned in build()Alexander Krotov1+17-16
2017-08-23 20:25Make Makefile compatible with BSD makeAlexander Krotov1+1-1
2017-08-18 17:45Add dependency cycle detectionMichael Forney2+5-2
2017-08-18 05:37Mark Makefile as POSIX compliantMichael Forney1+2-0
2017-08-18 05:36Preserve CFLAGS from environmentMichael Forney1+2-2
2017-08-18 05:34Add install target to MakefileMichael Forney1+9-1
2017-08-18 04:58Print current and total action count with commandMichael Forney1+13-3
2017-08-16 05:06Move _POSIX_C_SOURCE definition to Makefile/build.ninjaMichael Forney10+2-10
2017-08-16 04:23Avoid err.h for POSIX conformanceMichael Forney12+80-18
2017-08-16 03:30Avoid _Noreturn, and set -std=c99Michael Forney3+3-3
2017-08-15 17:45deps: Allow @ and , in file pathsMichael Forney1+1-1
2017-08-12 05:59Allow empty deps records in .ninja_depsMichael Forney1+1-1
2017-08-11 05:29Add -v flagMichael Forney4+18-9
2017-08-11 05:23Implement .ninja_deps parsing and updatingMichael Forney7+310-11
2017-08-11 05:09log: Close old logfile in loginit in case of manifest rebuildMichael Forney1+2-0
2017-08-11 04:41Rename lognode -> logrecordMichael Forney3+4-4
2017-08-07 03:26Initial $depfile handlingMichael Forney7+159-1
2017-08-07 02:43Move bufadd to util.cMichael Forney3+23-27
2017-08-06 07:08Allocate n->use as neededMichael Forney4+14-9
2017-08-04 05:15Fix multiple generator error messageMichael Forney1+1-1
2017-07-29 04:48Fix error message for loginitMichael Forney1+1-1
2017-08-03 08:06We can now build llvmMichael Forney1+1-1
2017-08-03 05:55Fix order-only input handling in some casesMichael Forney1+5-5
2017-08-03 05:50Don't need outer condition in work loopMichael Forney1+1-1
2017-08-03 05:02Revert "Make phony edges skip work queue"Michael Forney1+6-9
2017-08-03 02:40Free pool depth value once parsedMichael Forney1+1-0
2017-08-03 02:37Use tokstr to show unexpected tokenMichael Forney1+1-1
2017-08-02 03:11Add build status to READMEMichael Forney1+3-0
2017-08-02 03:07Add travis configMichael Forney1+7-0
2017-08-01 07:54Simplify edge processingMichael Forney3+41-71
2017-07-28 16:33Make phony edges skip work queueMichael Forney1+9-6
2017-07-27 02:21Minor cleanupsMichael Forney2+4-4
2017-07-28 05:00Also print command if it is running in the console poolMichael Forney1+1-1
2017-07-28 04:52Fix edgedone when a restat rule updates a fileMichael Forney1+34-29
2017-07-26 05:21Update binary name in MakefileMichael Forney1+1-1
2017-07-26 04:30When restat prunes an edge, recalculate newest input for logMichael Forney2+29-21
2017-07-26 03:16Only add ;rspfile=${rspfile_content} if rspfile_content is non-emptyMichael Forney1+1-1
2017-07-25 09:10lex: Simplify, just read from file descriptorMichael Forney1+111-123
2017-07-25 07:49Small wording tweak in samu.1Michael Forney1+2-2
2017-07-25 07:46Update README.mdMichael Forney1+10-3
2017-07-25 07:36Print rule description if availableMichael Forney1+7-3
2017-07-25 05:01Fix lexing of variables in curly bracesMichael Forney1+1-0
2017-07-25 02:53Update binary path in .gitignoreMichael Forney1+1-1
2017-07-25 02:46Move code to create/open $builddir to a helper functionMichael Forney1+29-18
2017-07-24 08:57Use warnx to print "nothing to do"Michael Forney1+1-1
2017-07-24 07:53Add/fix some commentsMichael Forney1+2-1
2017-07-24 07:44Just mark phony outs done directlyMichael Forney1+8-9
2017-07-24 07:30Implement restat supportMichael Forney5+72-34
2017-07-24 07:31Only lookup generator once per edgeMichael Forney1+5-3
2017-07-24 07:24Keep track of dirtiness in flagsMichael Forney3+13-15
2017-07-24 07:08Rename mark to flagsMichael Forney3+11-12
2017-07-24 04:05Add initial man pageMichael Forney1+78-0
2017-07-24 00:06lex: Use a file structure to store file lex stateMichael Forney4+60-26
2017-07-23 21:55Add support for .ninja_logMichael Forney9+234-12
2017-07-23 08:12Expose murmurhash64aMichael Forney2+5-1
2017-07-23 08:04Extract default target calculation into builddefaultMichael Forney1+31-18
2017-07-23 07:48env: Expose envvarMichael Forney2+2-1
2017-07-23 07:47Extract node dirty check to helperMichael Forney1+19-4
2017-07-23 07:45Rename nodenewer to isnewerMichael Forney1+4-3
2017-07-23 07:43Switch from seen counter to more descriptive markMichael Forney3+10-8
2017-07-23 07:32Move writefile and makedirs to util.cMichael Forney3+81-75
2017-07-23 07:25Describe mkstr and canonpath in util.hMichael Forney1+5-1
2017-07-23 07:22Rename addtarget to buildaddMichael Forney3+9-6
2017-07-23 07:14Include time.h in graph.h since we only need it for struct timespecMichael Forney6+2-5
2017-07-23 07:07Use _Bool in headers to avoid forcing everything to include stdbool.hMichael Forney4+2-4
2017-07-23 06:11Add comment to mkedge declarationMichael Forney1+1-0
2017-07-22 09:12Implement -k and deal with job failure betterMichael Forney3+191-90
2017-07-22 04:20Use temporary edge variable in addsubtargetMichael Forney1+9-7
2017-07-22 04:07Keep track of number of inputs we are blocked byMichael Forney3+15-20
2017-07-22 03:14Change Makefile to match flags in build.ninjaMichael Forney1+1-1
2017-07-22 01:23Fix some memory leaksMichael Forney2+5-1
2017-07-22 00:43Change binary name to `samu`Michael Forney2+3-3
2017-07-22 00:21Add support for poolsMichael Forney9+156-17
2017-07-22 00:20Make phonyrule a static constantMichael Forney4+8-10
2017-07-21 08:09Allow let binding variables to be keywordsMichael Forney3+31-11
2017-07-21 08:06lex: Use a single static bufferMichael Forney1+39-38
2017-07-21 08:04lex: Remove obsolete VALUE tokenMichael Forney2+0-2
2017-07-21 05:58Rebuild manifest and reparse if it is dirtyMichael Forney6+54-7
2017-07-21 05:03Add some TODO itemsMichael Forney1+2-0
2017-07-21 04:52Merge binding and rulebinding to share addvarMichael Forney1+20-41
2017-07-21 04:37Add clean subtoolMichael Forney6+146-2
2017-07-21 04:28Move LEN to util.hMichael Forney3+2-4
2017-07-21 04:27Don't set argv0 in ARGBEGINMichael Forney2+2-1
2017-07-21 04:25Make root environment global and initialize in envinit()Michael Forney3+14-5
2017-07-20 07:53Just use a loop in envvar/envrule instead of recursionMichael Forney1+15-15
2017-07-20 05:35Fix a couple error messages after string changesMichael Forney1+2-2
2017-07-20 04:04Create missing parent directoriesMichael Forney2+40-1
2017-07-20 02:42Escape paths in $in and $outMichael Forney4+46-5
2017-07-19 11:05Fix pathlist when there are no pathsMichael Forney1+3-1
2017-07-19 09:24Canonicalize input and output pathsMichael Forney4+60-1
2017-07-19 07:26Use malloc + memcpy instead of strndupMichael Forney3+7-7
2017-07-19 07:15StyleMichael Forney3+29-25
2017-07-19 07:10Save expansions of rule variables in edge environmentMichael Forney5+40-45
2017-07-19 07:01Rename lookupvar -> envvar for consistencyMichael Forney1+4-4
2017-07-19 06:21Keep track of string lengthsMichael Forney11+136-102
2017-07-19 03:43Rename string to evalstringMichael Forney5+31-31
2017-07-18 17:27Switch to murmurhash64aMichael Forney1+24-20
2017-07-18 06:28Forgot to update TODOMichael Forney1+0-1
2017-07-18 06:26Handle order-only inputsMichael Forney1+1-1
2017-07-18 05:27Use singly-linked list for work queueMichael Forney2+7-29
2017-07-17 09:33Fold newest NULL check into nodenewerMichael Forney1+4-2
2017-07-17 09:23Edges with no inputs and missing outputs are dirtyMichael Forney1+7-11
2017-07-17 08:46Fix dirty calculation of phony edgesMichael Forney1+5-2
2017-07-17 07:23Add support for $in_newlineMichael Forney1+6-4
2017-07-17 07:19Add support for rspfileMichael Forney1+35-0
2017-07-17 06:47Make origin of htab.c clearMichael Forney1+2-0
2017-07-17 06:27build: Keep track of whether we've processed edges alreadyMichael Forney3+11-1
2017-07-17 05:36Separate alledges and work linksMichael Forney3+6-4
2017-07-17 05:14Use doubly-linked list for ready edges instead of search treeMichael Forney2+36-22
2017-07-16 18:14Use a better hash table than search.hMichael Forney11+292-21
2017-07-16 09:11build: Prevent crash if edge has no inputsMichael Forney1+1-1
2017-07-16 09:04Implement phony ruleMichael Forney4+12-0
2017-07-16 08:36Fail if rule has no commandMichael Forney3+7-5
2017-07-16 08:17build: Remove unused addtargetpathMichael Forney1+0-11
2017-07-16 08:13Ignore vim swap filesMichael Forney1+1-0
2017-07-16 08:07Use str as temporary in parseedgeMichael Forney1+8-8
2017-07-16 08:04Implement default targetsMichael Forney7+55-7
2017-07-16 07:58parse: Initialize in and out to NULL in parseedgeMichael Forney1+2-4
2017-07-16 07:01lex: Handle variables in curly bracesMichael Forney1+42-24
2017-07-16 00:31Add mkrule and move struct rule and struct environment to env.cMichael Forney3+25-14
2017-07-16 01:19lex: Handle || properlyMichael Forney1+20-8
2017-07-16 00:24Fix crash when building node with no relevant dependent actionsMichael Forney1+3-0
2017-07-16 00:08Don't include implicit and order-only inputs and outputs in $in and $outMichael Forney2+5-5
2017-07-16 00:08lex: | separates path stringMichael Forney1+1-0
2017-07-15 23:18Initial commitMichael Forney19+1698-0