Guenter Roeck <li...@roeck-us.net> writes: > Hi, > > On 7/11/19 12:48 AM, Philippe Mathieu-Daudé wrote: >> Hi Guenter, >> >> Cc'ing Markus/Dan/Alex >> >> On 7/11/19 3:07 AM, Guenter Roeck wrote: >>> On Wed, Jul 10, 2019 at 03:01:53PM -0700, Guenter Roeck wrote: >>>> Hi, >>>> >>>> when trying to run "make -j30 install" from a clean tree on v4.1.0-rc0, I >>>> get >>>> _lots_ of undefined symbol errors. >>>> >>>> If I run "make -j30" followed by "make -j30 install", make succeeds, but >>>> then >>>> I get linker errors such as the following when running "make -j30 install". >> >> Seems similar to this report: >> https://lists.gnu.org/archive/html/qemu-devel/2019-07/msg01860.html >> > Yes, that looks like the same problem. > > Reverting the following commits fixes the problem for me. > > 8d358a5 Makefile: Fix "make clean" in "unconfigured" source directory > (possibly for context to be able to revert the next patch) > 1338a4b Makefile: Reuse all's recursion machinery for clean and install
Hmm. Target install depends on all. Before commit 1338a4b, the recursion into target directories was in install's recipe: it ran make install in a for-loop. This trivially ensured we run the sub-make install only after completing target all. Since commit 1338a4b, the target recursion is in the dependencies, just like for target all. That's good, but I forgot to add dependencies to ensure make runs the sub-make install only after completing target all. Can you try the appended patch for me? I'm having difficulties reproducing the bug locally. [...] diff --git a/Makefile b/Makefile index 1fcbaed62c..09b77e8a7b 100644 --- a/Makefile +++ b/Makefile @@ -522,6 +522,7 @@ $(ROM_DIRS_RULES): recurse-all: $(addsuffix /all, $(TARGET_DIRS) $(ROM_DIRS)) recurse-clean: $(addsuffix /clean, $(TARGET_DIRS) $(ROM_DIRS)) recurse-install: $(addsuffix /install, $(TARGET_DIRS)) +$(addsuffix /install, $(TARGET_DIRS)): all $(BUILD_DIR)/version.o: $(SRC_PATH)/version.rc config-host.h $(call quiet-command,$(WINDRES) -I$(BUILD_DIR) -o $@ $<,"RC","version.o")