mirror of
				https://github.com/Zygo/bees.git
				synced 2025-11-03 19:50:34 +01:00 
			
		
		
		
	If we create an identical .version.cc then don't bother keeping it. This prevents libcrucible from rebuilding if there are no other changes, which in turn prevents all the binaries from rebuilding unconditionally. Signed-off-by: Zygo Blaxell <bees@furryterror.org>
		
			
				
	
	
		
			52 lines
		
	
	
		
			986 B
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			986 B
		
	
	
	
		
			Makefile
		
	
	
	
	
	
TAG ?= $(shell git describe --always --dirty || echo UNKNOWN)
 | 
						|
 | 
						|
default: libcrucible.a
 | 
						|
%.a: Makefile
 | 
						|
 | 
						|
CRUCIBLE_OBJS = \
 | 
						|
	chatter.o \
 | 
						|
	city.o \
 | 
						|
	cleanup.o \
 | 
						|
	crc64.o \
 | 
						|
	error.o \
 | 
						|
	extentwalker.o \
 | 
						|
	fd.o \
 | 
						|
	fs.o \
 | 
						|
	ntoa.o \
 | 
						|
	path.o \
 | 
						|
	process.o \
 | 
						|
	string.o \
 | 
						|
	task.o \
 | 
						|
	time.o \
 | 
						|
	uuid.o \
 | 
						|
 | 
						|
include ../makeflags
 | 
						|
include ../Defines.mk
 | 
						|
 | 
						|
BEES_LDFLAGS = $(LDFLAGS)
 | 
						|
 | 
						|
configure.h: configure.h.in
 | 
						|
	$(TEMPLATE_COMPILER)
 | 
						|
 | 
						|
.depends:
 | 
						|
	mkdir -p $@
 | 
						|
 | 
						|
.depends/%.dep: %.cc configure.h Makefile | .depends
 | 
						|
	$(CXX) $(BEES_CXXFLAGS) -M -MF $@ -MT $(<:.cc=.o) $<
 | 
						|
 | 
						|
depends.mk: $(CRUCIBLE_OBJS:%.o=.depends/%.dep)
 | 
						|
	cat $^ > $@.new
 | 
						|
	mv -f $@.new $@
 | 
						|
 | 
						|
.version.cc: configure.h Makefile ../makeflags $(CRUCIBLE_OBJS:.o=.cc) ../include/crucible/*.h
 | 
						|
	echo "namespace crucible { const char *VERSION = \"$(TAG)\"; }" > $@.new
 | 
						|
	if ! cmp "$@.new" "$@"; then mv -fv $@.new $@; fi
 | 
						|
 | 
						|
include depends.mk
 | 
						|
 | 
						|
%.o: %.cc ../makeflags
 | 
						|
	$(CXX) $(BEES_CXXFLAGS) -o $@ -c $<
 | 
						|
 | 
						|
libcrucible.a: $(CRUCIBLE_OBJS) .version.o
 | 
						|
	$(AR) rcs $@ $^
 |