On 23/01/2016 03:56, Bruce Dubbs wrote: > William Harrington wrote: >> On Fri, January 22, 2016 18:54, Bruce Dubbs wrote: >>> I'm thinking about changing the way we build packages in separate >>> directories. What we do now for tool chain packages is: >>> >>> mkdir -v ../binutils-build >>> cd ../binutils-build >>> >>> ../binutils-2.25.1/configure ... >>> >>> >>> I'm thinking about changing that to: >>> >>> mkdir -v build >>> cd build >>> >>> ../configure ... >>> >> >> Hello Bruce, >> >> [...] >> >> We have stuck with this for the longest time: >> >> https://gcc.gnu.org/install/configure.html >> >> "First, we highly recommend that GCC be built into a separate directory >> from the sources which does not reside within the source tree. This is how >> we generally build GCC; building where srcdir == objdir should still work, >> but doesn't get extensive testing; building where objdir is a subdirectory >> of srcdir is unsupported." > > When I read that, I interpret is to mean that they build for multiple targets > and want to keep the object files from those builds separate. > > I've modified LFS according to the attached diff. I did a full build and the > failures in the test logs are the same as with the current book. > > Actually I cannot think of a good reason for differentiation between the case > where objdir is completely separate from srcdir and the case where objdir is a > subdirectory of srcdir, even though they say that case is unsupported. About > the only thing I can think of is that they may be doing some kind of recursive > directory search and there is some sort of match in the build tree. >
Definitely, building with srcdir == objdir does not work: I tried that when I saw this thread, and it failed at gcc-pass1. It looks like "make" does not get the build order right in this case (I tried both with -j5 and -j1, and got the same error), or misses some dependency: Checking multilib configuration for libgcc... mkdir -p -- x86_64-lfs-linux-gnu/libgcc Configuring in x86_64-lfs-linux-gnu/libgcc configure: creating cache ./config.cache checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-lfs-linux-gnu [...] config.status: creating Makefile config.status: creating auto-target.h config.status: linking ../.././libgcc/enable-execute-stack-empty.c to enable-execute-stack.c config.status: linking ../.././libgcc/unwind-generic.h to unwind.h config.status: linking ../.././libgcc/config/i386/linux-unwind.h to md-unwind-support.h config.status: linking ../.././libgcc/config/i386/sfp-machine.h to sfp-machine.h config.status: linking ../.././libgcc/gthr-single.h to gthr-default.h config.status: executing default commands make[3]: Entering directory '/home/pierre/build/LFS-ESS/sources/gcc-5.3.0/x86_64-lfs-linux-gnu/libgcc' Makefile:168: ../.././gcc/libgcc.mvars: No such file or directory make[3]: *** No rule to make target '../.././gcc/libgcc.mvars'. Stop. make[3]: Leaving directory '/home/pierre/build/LFS-ESS/sources/gcc-5.3.0/x86_64-lfs-linux-gnu/libgcc' Makefile:11894: recipe for target 'all-target-libgcc' failed make[2]: *** [all-target-libgcc] Error 2 make[2]: Leaving directory '/home/pierre/build/LFS-ESS/sources/gcc-5.3.0' Makefile:858: recipe for target 'all' failed make[1]: *** [all] Error 2 make[1]: Leaving directory '/home/pierre/build/LFS-ESS/sources/gcc-5.3.0' Pierre -- http://lists.linuxfromscratch.org/listinfo/lfs-dev FAQ: http://www.linuxfromscratch.org/faq/ Unsubscribe: See the above information page
