mirror of
https://github.com/Zygo/bees.git
synced 2025-05-17 21:35:45 +02:00
Makefile: speedup dependency generation
Dependencies can be generated in parallel which can be much faster. It also puts away the problem that for may fail multiple times in a row and leaving behind a broken intermediate file which would be picked up by successive runs. Signed-off-by: Kai Krakow <kai@kaishome.de>
This commit is contained in:
parent
b8f933d360
commit
d6b847db0d
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,6 +1,7 @@
|
|||||||
*.[ao]
|
*.[ao]
|
||||||
*.bak
|
*.bak
|
||||||
*.new
|
*.new
|
||||||
|
*.dep
|
||||||
*.so*
|
*.so*
|
||||||
Doxyfile
|
Doxyfile
|
||||||
README.html
|
README.html
|
||||||
|
@ -24,8 +24,12 @@ libcrucible.so: $(CRUCIBLE_OBJS)
|
|||||||
|
|
||||||
include ../makeflags
|
include ../makeflags
|
||||||
|
|
||||||
depends.mk: *.cc
|
.depends/%.dep: %.cc Makefile
|
||||||
for x in $^; do $(CXX) $(CXXFLAGS) -M -MG -MT "$${x/%.cc/.o}" "$$x"; done > $@.new
|
@mkdir -p .depends
|
||||||
|
$(CXX) $(CXXFLAGS) -M -MF $@ -MT $(<:.cc=.o) $<
|
||||||
|
|
||||||
|
depends.mk: $(CRUCIBLE_OBJS:%.o=.depends/%.dep)
|
||||||
|
cat $^ > $@.new
|
||||||
mv -f $@.new $@
|
mv -f $@.new $@
|
||||||
|
|
||||||
.version.cc: Makefile ../makeflags *.cc ../include/crucible/*.h
|
.version.cc: Makefile ../makeflags *.cc ../include/crucible/*.h
|
||||||
|
43
src/Makefile
43
src/Makefile
@ -10,23 +10,6 @@ include ../makeflags
|
|||||||
LIBS = -lcrucible -lpthread
|
LIBS = -lcrucible -lpthread
|
||||||
LDFLAGS = -L../lib
|
LDFLAGS = -L../lib
|
||||||
|
|
||||||
depends.mk: Makefile *.cc
|
|
||||||
for x in *.cc; do $(CXX) $(CXXFLAGS) -M "$$x"; done > depends.mk.new
|
|
||||||
mv -fv depends.mk.new depends.mk
|
|
||||||
|
|
||||||
bees-version.c: Makefile *.cc *.h
|
|
||||||
echo "const char *BEES_VERSION = \"$(shell git describe --always --dirty || echo UNKNOWN)\";" > bees-version.new.c
|
|
||||||
mv -f bees-version.new.c bees-version.c
|
|
||||||
|
|
||||||
include depends.mk
|
|
||||||
|
|
||||||
%.o: %.cc %.h
|
|
||||||
$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
|
||||||
|
|
||||||
../bin/%: %.o
|
|
||||||
@echo Implicit bin rule "$<" '->' "$@"
|
|
||||||
$(CXX) $(CXXFLAGS) -o "$@" "$<" $(LDFLAGS) $(LIBS)
|
|
||||||
|
|
||||||
BEES_OBJS = \
|
BEES_OBJS = \
|
||||||
bees.o \
|
bees.o \
|
||||||
bees-context.o \
|
bees-context.o \
|
||||||
@ -35,10 +18,30 @@ BEES_OBJS = \
|
|||||||
bees-roots.o \
|
bees-roots.o \
|
||||||
bees-thread.o \
|
bees-thread.o \
|
||||||
bees-types.o \
|
bees-types.o \
|
||||||
bees-version.o \
|
|
||||||
|
|
||||||
../bin/bees: $(BEES_OBJS)
|
bees-version.c: bees.h $(BEES_OBJS:.o=.cc) Makefile
|
||||||
$(CXX) $(CXXFLAGS) -o "$@" $(BEES_OBJS) $(LDFLAGS) $(LIBS)
|
echo "const char *BEES_VERSION = \"$(shell git describe --always --dirty || echo UNKNOWN)\";" > bees-version.new.c
|
||||||
|
mv -f bees-version.new.c bees-version.c
|
||||||
|
|
||||||
|
.depends/%.dep: %.cc Makefile
|
||||||
|
@mkdir -p .depends
|
||||||
|
$(CXX) $(CXXFLAGS) -M -MF $@ -MT $(<:.cc=.o) $<
|
||||||
|
|
||||||
|
depends.mk: $(BEES_OBJS:%.o=.depends/%.dep)
|
||||||
|
cat $^ > $@.new
|
||||||
|
mv -f $@.new $@
|
||||||
|
|
||||||
|
include depends.mk
|
||||||
|
|
||||||
|
%.o: %.cc %.h
|
||||||
|
$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||||
|
|
||||||
|
../bin/%: %.o
|
||||||
|
@echo Implicit bin rule "$<" '->' "$@"
|
||||||
|
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(LIBS) -o $@ $<
|
||||||
|
|
||||||
|
../bin/bees: $(BEES_OBJS) bees-version.o
|
||||||
|
$(CXX) $(CXXFLAGS) -o "$@" $^ $(LDFLAGS) $(LIBS)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
-rm -fv bees-version.h
|
-rm -fv bees-version.h
|
||||||
|
@ -17,9 +17,13 @@ include ../makeflags
|
|||||||
LIBS = -lcrucible -lpthread
|
LIBS = -lcrucible -lpthread
|
||||||
LDFLAGS = -L../lib -Wl,-rpath=$(shell realpath ../lib)
|
LDFLAGS = -L../lib -Wl,-rpath=$(shell realpath ../lib)
|
||||||
|
|
||||||
depends.mk: *.cc
|
.depends/%.dep: %.cc
|
||||||
for x in *.cc; do $(CXX) $(CXXFLAGS) -M "$$x"; done > depends.mk.new
|
@mkdir -p .depends
|
||||||
mv -fv depends.mk.new depends.mk
|
$(CXX) $(CXXFLAGS) -M -MF $@ -MT $(<:.cc=.o) $<
|
||||||
|
|
||||||
|
depends.mk: $(PROGRAMS:%=.depends/%.dep)
|
||||||
|
cat $^ > $@.new
|
||||||
|
mv -f $@.new $@
|
||||||
|
|
||||||
include depends.mk
|
include depends.mk
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user