According to Re: Race condition with parallel recursive make
You must have the target built by only one makefile, and the other makefiles should merely depend on it. Whenever you have more than one makefile that contains rules to build the same target, you have a problem
-- Configuring done CMake Error in src/csync/CMakeLists.txt: No known features for CXX compiler "GNU" version 10.2.1.
Source was changed a lot. Solution: remove build
directory and run again.
make[2]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule.
Cause:
make ...
call not
$(MAKE) ...
.
$(MAKE)
usage, it is not working when $(MAKE) was used in variable:
DUMP_FILE_LIST := "$(MAKE)" -s --no-print-directory ... %.out: $(NO_ECHO)$(DUMP_FILE_LIST) ...
Correct usage is to add + before $(MAKE):
DUMP_FILE_LIST := +"$(MAKE)" -s --no-print-directory ...
The problem is that GNU make, to implement parallel build, requires special options and descriptors to be passed over the sub-make calls, this happens automatically when make is invoked directly or through $(MAKE) but if it’s indirected through variables, then it’s not happening automatically and the developer has to tell GNU make to actually pass the options along.