do not let these targets depend on clean, otherwise it could run in parallel with the object compile which runs into races https://bugs.gentoo.org/461806 While we're in here, fix up a few other things: - append -pthread to LDFLAGS instead of replacing them - do not bother with `rm` in the output since linking will clober it - use CXXFLAGS when linking - append LIBFLAGS to the individual targets instead of the final link --- a/makefile +++ b/makefile @@ -7,7 +7,7 @@ LIBFLAGS=-fPIC DEFINES=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DRAR_SMP STRIP=strip -LDFLAGS=-pthread +LDFLAGS+=-pthread DESTDIR=/usr # Linux using LCC @@ -119,8 +119,7 @@ @rm -f *.o *.bak *~ unrar: clean $(OBJECTS) $(UNRAR_OBJ) - @rm -f unrar - $(LINK) -o unrar $(LDFLAGS) $(OBJECTS) $(UNRAR_OBJ) $(LIBS) + $(LINK) -o unrar $(CXXFLAGS) $(LDFLAGS) $(OBJECTS) $(UNRAR_OBJ) $(LIBS) $(STRIP) unrar sfx: WHAT=SFX_MODULE @@ -130,10 +129,9 @@ $(STRIP) default.sfx lib: WHAT=RARDLL -lib: CXXFLAGS+=$(LIBFLAGS) -lib: clean $(OBJECTS) $(LIB_OBJ) - @rm -f libunrar.so - $(LINK) -shared -o libunrar.so $(LDFLAGS) $(OBJECTS) $(LIB_OBJ) +$(OBJECTS) $(LIB_OBJ): CXXFLAGS+=$(LIBFLAGS) +lib: $(OBJECTS) $(LIB_OBJ) + $(LINK) -shared -o libunrar.so $(CXXFLAGS) $(LDFLAGS) $(OBJECTS) $(LIB_OBJ) install-unrar: install -D unrar $(DESTDIR)/bin/unrar