-$(outdir)/%.latex: %.doc
- $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND_BOOK_PROCESS) $(LILYPOND_BOOK_INCLUDES) $(LILYPOND_BOOK_LILYPOND_FLAGS)' --output=$(outdir) $(LILYPOND_BOOK_FLAGS) $<
+# TODO: fix hardcoded out/ ?
+LYS_OUTPUT_OPTION= --lily-output-dir $(LYS_OUTPUT_DIR)
+LYS_OUTPUT_DIR=$(top-build-dir)/out/lybook-db
+LILYPOND_BOOK_FLAGS += $(LYS_OUTPUT_OPTION)
+$(outdir)/%.latex: %.doc $(INIT_LY_SOURCES) $(SCHEME_SOURCES)
+ LILYPOND_VERSION=$(TOPLEVEL_VERSION) $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND_BOOK_PROCESS) $(LILYPOND_BOOK_LILYPOND_FLAGS)' --output=$(outdir) $(LILYPOND_BOOK_FLAGS) --redirect-lilypond-output $<
+
+
+# This allows -j make option while making sure only one lilypond-book instance
+# is running at the same time, using GNU make's order-only prerequisites so
+# as to not create superficial dependencies between unrelated manuals.
+define CHAIN_RULE
+| $(i)
+$(i):
+endef
+
+$(eval $(firstword $(TEXI_FILES_FROM_TELY)):\
+ $(foreach i, $(wordlist 2, $(words $(TEXI_FILES_FROM_TELY)),\
+ $(TEXI_FILES_FROM_TELY)),$(CHAIN_RULE)))