c++ - GNU make - accelerate non-parallel makefile without modification -
i have project consisting of set of makefiles cannot run make --jobs=n
because dependencies not specified tightly enough make
correctly execute recipes in correct order (ie race conditions).
i using huddle, electric-cloud.com, , need: parses makefile , executes jobs in parallel , accounts unspecified dependencies.
question: there free or free-er thing this?
yes know re-write makefiles project management says "no way".
update #1
i understand i'll have some work functionality similar electric-cloud's functionality.
i know electric-cloud parses makefile(s) find dependencies wouldn't same thing accomplished using makedepend
?
i'm thinking:
- run
makedepend
on existing makefiles - feed in output using
include <makedepend.output>
make --jobs=64
update 2
turns out makedepend
specific c/c++: merely runs pre-processor on source files , parses #include
statements; not need.
i need guy asking for: build makefile dependency / inheritance tree
update 3
the makefile "dependency graph generator" exists
http://plindenbaum.blogspot.com/2012/11/visualizing-dependencies-of-makefile.html?m=1
but that's not going me.
many of recipes create directories used other targets' recipes, making them implicit prerequisites.
the graph dependency tool @ above url works parsing build log's statements statements don't indicate implicit dependencies.
even if try run makefile --dry-run
, build fails because of recipes aren't executed - cause it's dry run - create directories other invocations of make
need 'pretend execute' recipe.
update 4
electric-cloud has made huddle - 4 local cores, non-clustered - free forever. furthermore, output .xml file lists each job's dependencies can use fix makefiles compatible they're compatible --jobs
option.
i using huddle, electric-cloud.com, , need: parses makefile , executes jobs in parallel , accounts unspecified dependencies.
i don't know these tools, can't provide them super makefile under control, clarifies inner dependencies of various targets?
you have add indirection level these (imported?) projects directory structure , makefile
.