767 Commits

Author SHA1 Message Date
008fa4844d allow passing Builder objects as sources to build targets - close #95 2019-04-09 20:35:46 -04:00
568b78e2e2 test tracking object file source language - #87 2019-04-09 19:52:25 -04:00
3b00016278 Program builder cleanup, track object file source language - #94, #87 2019-04-09 19:41:13 -04:00
a655d04541 Add Depfile builder mixin - #94 2019-04-09 18:41:02 -04:00
5534878f68 Object builder cleanup - #94 2019-04-09 18:28:42 -04:00
1efee50b2c add Builders::Mixins::ObjectDeps to commonize some builder functionality 2019-03-16 22:34:07 -04:00
3ff09978f4 remove Builder.features and Builder.produces? 2019-03-16 21:54:20 -04:00
ac1fc6d106 move default construction variables into one place 2019-03-13 21:17:37 -04:00
06b9c98ed0 support false :use value for configure operations - close #93 2019-02-28 21:09:56 -05:00
f58744d31f mv build_dist.rb -> rb/build_dist.rb 2019-02-28 21:00:39 -05:00
bf136e79f2 rework showing failed command - close #89 2019-02-26 06:52:43 -05:00
ab2fa1662f Replace specialized Cache accessors with general #[]/#[]= methods. 2019-02-25 21:22:54 -05:00
68118c2707 Remove Cache dirty-tracking
It really wasn't necessary since Cache#write is not called often.
2019-02-25 21:16:48 -05:00
6ce3d59ad9 Add integration test for copying multiple sources with Copy builder 2019-02-25 21:13:57 -05:00
983862a528 update builder messages - close #77 2019-02-18 22:30:11 -05:00
658b73e4de add build test for a builder waiting on another builder 2019-02-17 22:20:51 -05:00
b882f8de99 Rework builder interface to only use #run method - close #91
The builder's #run method will be called repeatedly until it returns
true or false. The Builder#wait_for method can be used to cause a
builder to wait for a Thread, Command, or another Builder.
2019-02-17 22:08:39 -05:00
8426a54a57 replace JobSet with BuilderSet 2019-02-17 14:17:31 -05:00
ee1640008c simplify JobSet logic a little 2019-02-17 13:59:03 -05:00
7cfd23e16f remove :builder and :cache from build_operation 2019-02-16 19:12:33 -05:00
5c3b615aee remove unused :which parameter to Environment#wait_for_threaded_commands 2019-02-16 18:36:44 -05:00
935848c3b5 remove some builder-tracked fields from the build_operation Hash 2019-02-16 18:21:19 -05:00
d047a1bf29 JobSet only stores builders instead of build info hashes 2019-02-16 18:06:03 -05:00
016bf5eac7 use Builder instance variables as much as possible in #finalize 2019-02-16 17:53:21 -05:00
33504f586b pass Builder object to build hooks instead of build_operation Hash 2019-02-13 21:13:13 -05:00
86594c62b6 begin transitioning builders to using instance variables instead of #run options Hash fields 2019-02-11 22:53:41 -05:00
ea25f62f7c remove deprecated Environment#add_target parameter - #84 2019-02-10 22:20:34 -05:00
f2cfc25604 Remove Environment#run_builder :allow_delayed_execution option - #84 2019-02-10 22:13:37 -05:00
a1f5f022d1 test build hooks overwriting entire vars hash as a non-backwards-compatiblity test 2019-02-10 22:07:08 -05:00
7992450383 Drop support for 5-argument form of Builder#run - #84 2019-02-10 21:47:34 -05:00
b41a368da1 alphabetize Util public methods 2019-02-10 21:26:37 -05:00
1b63dc7503 move Environment.parse_makefile_deps to Util 2019-02-10 21:23:52 -05:00
db788cdd35 Move Environment#command_to_s to Util. 2019-02-10 21:16:56 -05:00
3f8b4d616f Remove BuildTarget, Builder#create_build_target, and Builder#setup - close #90 2019-02-10 18:24:49 -05:00
aac32d20b0 create Builder instance for each build operation - close #88 2019-02-10 17:27:40 -05:00
12f1909d35 remove a few deprecated methods - #84 2019-01-04 13:55:00 -05:00
31ef45258f make global CLI options available under subcommands - close #86 2019-01-03 13:50:01 -05:00
9f9b7f0bf4 preserve .mf dependency files - close #58 2019-01-01 21:17:28 -05:00
918c629435 add verbose CLI option to set Environment default echo mode - close #70 2019-01-01 16:15:22 -05:00
eaac473f44 provide Environment construction option to use stored configuration settings - close #78 2019-01-01 15:49:15 -05:00
fa5aa51daa Do not rebuild after building after auto-configuration. - close #80
Split Environment into BasicEnvironment and Environment.
2018-12-30 15:57:05 -05:00
347d651ab6 Add builder construction variables to Environments before the builder is added. 2018-12-29 17:57:41 -05:00
08085f09c4 libs found with check_lib should be added to LIBS - close #79 2018-12-17 23:05:18 -05:00
5915ac2b95 ConfigureOp: refactor some logic into #store_common 2018-12-17 22:54:34 -05:00
a98c111cd2 implement distclean operation - close #81 2018-12-17 22:47:00 -05:00
93ffed2eb2 Use "Environment" instead of "Rscons::Environment" in build tests 2018-12-17 22:14:35 -05:00
f8e6666a2c Add 'build' DSL method.
Disallow processing Environments until configuration is performed.
2018-12-17 22:14:35 -05:00
5720662b7c avoid mkdir() race conditions - close #75 2018-12-11 22:13:52 -05:00
432d221be2 remove build_dir functionality - close #65 2018-12-11 22:06:20 -05:00
John Lindgren
a1efb1c1b3 Reduce recursion of VarSet#expand_varref by expanding vars earlier.
It's common for a build command to contain a reference like:

    ${INCPREFIX}${CPPPATH}

Where ${INCPREFIX} is "-I" and ${CPPPATH} is an array of include
paths.  Without this change, Rscons expands ${INCPREFIX} (and then
tries to expand "-I") repeatedly, once for each path.

This change simply makes Rscons intelligent enough to expand
${INCPREFIX} only once, then join the expanded value to each path.

In a mid-sized rake project, ruby-prof shows that the number of
calls to expand_varref is reduced from ~80,000 to ~30,000., and the
total CPU time spent in expand_varref is reduced by about 30%.

In a larger project, the improvement in real build time is small
but consistent enough to be measurable (~0.5 seconds off a total
of ~20 seconds).
2018-12-09 21:20:44 -05:00