one option would be to split deps/Makefile into N different deps/ABC.make files (one for each dependency), so that each makefile could have a dependency on itself
otherwise, authors just need to be careful to introduce a makefile dependency on the new build artifact whenever they add a patch file, or a different output, etc. On Thu, Oct 30, 2014 at 1:46 AM, Tony Kelman <t...@kelman.net> wrote: > > Anyone have a dependency graph in mind? > > I think a dozen or so of us have the dependency graph more or less > memorized. > > Since I'm pseudo-patching arpack via command-line -D flags, a stale copy > of it seems to reuse cached autotools-generated copies of the makefiles. I > think what we would effectively need to make rebuilds happen reliably would > be some way of having any git pull that modifies the relevant flags or > section of deps/Makefile also touch the corresponding configure scripts to > make them rerun. And any time we add or modify a patch to a dependency, the > only reliable ways I've found of forcing them to apply are either manually > applying them, or cleaning out the existing sources which requires make -C > deps distclean-xyz (and hence a re-downloading of the tarball and complete > rebuild of that dependency). > > I'm sort of wishing we could do out-of-tree builds for some of this, to > better separate sources from build objects. But some of the deps like > openblas don't really support out-of-tree builds at all. Grand plan would > be rewriting the thousands of lines of Makefile logic into CMake, which > might handle all of this better with its caching mechanism. That might be a > terrible idea and not work at all though, someone probably just has to try > it and see whether it ends up better or worse. Cross-compilation (which > only a few of us do very often) with CMake was... difficult... initially, > but I eventually changed my mind on it and came to the conclusion that it > just takes a really verbose invocation (or a toolchain file where you write > down the long set of flags you need) to get working. > > >