Only run pkg-config once in Makefile, added EXTRA linker vars

* Only run the pkg-config --cflags command once (instead of every .c file)
* Added EXTRA_LDFLAGS and EXTRA_LDLIBS vars
* Removed tabs in the middle of commands to make it easier to manually re-run
  commands manually (e.g. if a compilation fails)
* Replaced `cd dir; git command` in favor of $(shell git -C dir command)
* Minor version format change: dirty trees just append "+" instead of "-dirty"
  and if git describe fails, it now sets the version to "v0.1-nogit"

Also, don't ignore .gitignore files.
This commit is contained in:
Tim Schlueter 2019-01-13 15:01:12 -08:00
parent b199b91cb4
commit 079e6ab647
2 changed files with 20 additions and 11 deletions

3
.gitignore vendored
View File

@ -7,3 +7,6 @@ bcachefs
tags tags
cscope* cscope*
bcachefs-tools bcachefs-tools
# dot-files that we don't want to ignore
!.gitignore

View File

@ -15,9 +15,9 @@ CFLAGS+=-std=gnu89 -O2 -g -MMD -Wall \
-DNO_BCACHEFS_SYSFS \ -DNO_BCACHEFS_SYSFS \
-DVERSION_STRING='"$(VERSION)"' \ -DVERSION_STRING='"$(VERSION)"' \
$(EXTRA_CFLAGS) $(EXTRA_CFLAGS)
LDFLAGS+=$(CFLAGS) LDFLAGS+=$(CFLAGS) $(EXTRA_LDFLAGS)
VERSION?=$(shell git describe --dirty 2>/dev/null || echo 0.1-nogit) VERSION?=$(shell git describe --dirty=+ 2>/dev/null || echo v0.1-nogit)
CC_VERSION=$(shell $(CC) -v 2>&1|grep -E '(gcc|clang) version') CC_VERSION=$(shell $(CC) -v 2>&1|grep -E '(gcc|clang) version')
@ -36,10 +36,14 @@ endif
PKGCONFIG_LIBS="blkid uuid liburcu libsodium zlib liblz4 libzstd" PKGCONFIG_LIBS="blkid uuid liburcu libsodium zlib liblz4 libzstd"
CFLAGS+=`pkg-config --cflags ${PKGCONFIG_LIBS}` PKGCONFIG_CFLAGS:=$(shell pkg-config --cflags $(PKGCONFIG_LIBS))
LDLIBS+=`pkg-config --libs ${PKGCONFIG_LIBS}` PKGCONFIG_LDLIBS:=$(shell pkg-config --libs $(PKGCONFIG_LIBS))
CFLAGS+=$(PKGCONFIG_CFLAGS)
LDLIBS+=$(PKGCONFIG_LDLIBS)
LDLIBS+=-lm -lpthread -lrt -lscrypt -lkeyutils -laio LDLIBS+=-lm -lpthread -lrt -lscrypt -lkeyutils -laio
LDLIBS+=$(EXTRA_LDLIBS)
ifeq ($(PREFIX),/usr) ifeq ($(PREFIX),/usr)
ROOT_SBINDIR=/sbin ROOT_SBINDIR=/sbin
@ -83,7 +87,7 @@ install: bcachefs
.PHONY: clean .PHONY: clean
clean: clean:
$(RM) bcachefs $(OBJS) $(DEPS) $(RM) bcachefs .version $(OBJS) $(DEPS)
.PHONY: deb .PHONY: deb
deb: all deb: all
@ -94,11 +98,13 @@ deb: all
.PHONE: update-bcachefs-sources .PHONE: update-bcachefs-sources
update-bcachefs-sources: update-bcachefs-sources:
git rm -rf --ignore-unmatch libbcachefs git rm -rf --ignore-unmatch libbcachefs
test -d libbcachefs || mkdir libbcachefs
cp $(LINUX_DIR)/fs/bcachefs/*.[ch] libbcachefs/ cp $(LINUX_DIR)/fs/bcachefs/*.[ch] libbcachefs/
cp $(LINUX_DIR)/include/trace/events/bcachefs.h include/trace/events/ cp $(LINUX_DIR)/include/trace/events/bcachefs.h include/trace/events/
echo `cd $(LINUX_DIR); git rev-parse HEAD` > .bcachefs_revision $(RM) libbcachefs/*.mod.c
git -C $(LINUX_DIR) rev-parse HEAD | tee .bcachefs_revision
git add libbcachefs/*.[ch] include/trace/events/bcachefs.h .bcachefs_revision git add libbcachefs/*.[ch] include/trace/events/bcachefs.h .bcachefs_revision
.PHONE: update-commit-bcachefs-sources .PHONE: update-commit-bcachefs-sources
update-commit-bcachefs-sources: update-bcachefs-sources update-commit-bcachefs-sources: update-bcachefs-sources
git commit -m "Update bcachefs sources to `cd $(LINUX_DIR); git show --oneline --no-patch`" git commit -m "Update bcachefs sources to $(shell git -C $(LINUX_DIR) show --oneline --no-patch)"