2017-05-12 17:39+0100, Alex Bennée: > Hi, > > Here is v2 of the out-of-tree build. There have been a number of > changes following review and also inclusion of Thomas' ppc64 patch > which completes the set. > > The biggest change is the way I deal with creating build directories. > There is now a make variable called OBJDIRS which sub-builds can add > to. I had originally tried to be clever by expanding OBJDIRS into a > bunch of templated mkdir's which could then be set as > order-on-prerequisites as suggested by Drew. However it turns out to > be very hard to add the directory of the target as a prerequisite even > using hacks like GNU's secondary expansion. In the end I just created > a directories target and made sure the all: target had it as the first > thing. This breaks if someone tries to build an individual file > without first building the tree but I assume most people don't build > like that. If anyone else can come up with a neater solution I'm all > ears ;-) I noticed few cases that don't work: - SRC_DIR path contains whitespace - SRC_DIR was `./configure`d for another arch - SRC_DIR isn't clean (up-to-date results won't be rebuilt out-of-tree) - reconfiguring --arch in a out-of-tree directory The in-tree build still works, out-of-tree in decent cases, Makefile changes are reasonable, and reviewers seem content in front of a first-grade bikeshedding material ... Applied, thanks. > Finally I've added a .travis.yml recipe. This really only works for > github hosted repos but its better than nothing. Evidently the cross > compilers complain about: > > lib/report.c:38:17: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] > assert_msg(len < sizeof(prefixes), "%d >= %lu", len, sizeof(prefixes)); > > and: > > lib/report.c:38:2: error: format '%lu' expects argument of type 'long unsigned int', but argument 6 has type 'unsigned int' [-Werror=format=] > assert_msg(len < sizeof(prefixes), "%d >= %lu", len, sizeof(prefixes)); > > But these can be addressed with separate patches. (Should be fixed now.)