I'm going to have a stream-of-consciousness thing here. At first sight the Makefile does not look that bad. > (And Makefile.subdirs is not touched, so yours is the same as every > other's one.) > >> >> Nonetheless this is the problem, I think. If you substitute things in line 41 of Makefile.subdirs, you get
-include $(patsubst %, %.d, $(patsubst %.c, $(BUILD_DIR)/%$(EXEEXT), $(wildcard profile/*.c))) BUILD_DIR is clearly defined in Makefile in the profile target. Okay, it looks like this is all happening during $(AT)$(foreach dir, $(BUILD_DIRS), mkdir -p build/$(dir)/profile; BUILD_DIR=../build/$(dir); export BUILD_DIR; $(MAKE) -f ../Makefile.subdirs -C $(dir) profile || exit $$?;) At the very top of Makefile we have EXEEXT= But maybe that isn't relevant, since it would still get substituted, just without the .c? Is that what is desired here, would that return an empty list? Or is it (from what I gather about reading about patsubst) that profile/*.c doesn't have any entries? In local/var/tmp/sage/build/flint.../src/profile there are indeed two .c files, so presumably that isn't it. Though the two flies in profile/ do NOT show up in local/var/tmp/sage/build/flint.../src/build which is (I presume) where they would end up. (These are p-udiv_qrnnd.c and p-udiv_qrnnd_preinv.c.) Otherwise I can't see where there would be something empty. But now I think that the EXEEXT is not relevant, since we just add .d. Also, I see at the very beginning of the log Configuring...unknown-Darwin which could be relevant? Let's dig deeper. The problem occurs only for CC ../build/ulong_extras/../ulong_extras.lo (where this happens each time this type of file with the /../ back in the main build directory is supposed to be used) and not other .lo files. And there are indeed plenty of .d files in the subdirectories, but none in src/build itself. Okay, it looks like this is all happening during $(FLINT_LIB): $(LOBJS) $(LIB_SOURCES) $(EXT_SOURCES) $(HEADERS) $(EXT_HEADERS) | build build/interfaces $(AT)$(foreach ext, $(EXTENSIONS), $(foreach dir, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h)), mkdir -p build/$(dir); BUILD_DIR=$(CURDIR)/build/$(dir); export BUILD_DIR; MOD_DIR=$(dir); export MOD_DIR; $(MAKE) -f $(CURDIR)/Makefile.subdirs -C $(ext)/$(dir) shared || exit $$?;)) $(AT)$(foreach dir, $(BUILD_DIRS), mkdir -p build/$(dir); BUILD_DIR=../build/$(dir); export BUILD_DIR; MOD_DIR=$(dir); export MOD_DIR; $(MAKE) -f ../Makefile.subdirs -C $(dir) shared || exit $$?;) $(AT)if [ "$(WANT_NTL)" -eq "1" ]; then \ $(MAKE) build/interfaces/NTL-interface.lo; \ $(CXX) $(ABI_FLAG) -shared build/interfaces/NTL-interface.lo $(LOBJS) $(MOD_LOBJS) $(EXT_OBJS) $(LIBS2) -o $(FLINT_LIB); \ fi $(AT)if [ "$(WANT_NTL)" -ne "1" ]; then \ $(CC) $(ABI_FLAG) -shared $(LOBJS) $(MOD_LOBJS) $(EXT_OBJS) $(LIBS2) -o $(FLINT_LIB); \ fi I have to go now. I hope this enlightens someone! I feel like I'm close but I don't have enough experience parsing makefiles. -- You received this message because you are subscribed to the Google Groups "sage-release" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sage-release. For more options, visit https://groups.google.com/d/optout.
