From 079e6ab647649d03f9eb6feda33802b3d2fa8317 Mon Sep 17 00:00:00 2001 From: Tim Schlueter Date: Sun, 13 Jan 2019 15:01:12 -0800 Subject: [PATCH] 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. --- .gitignore | 3 +++ Makefile | 28 +++++++++++++++++----------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 7e4ee7a..5766435 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,6 @@ bcachefs tags cscope* bcachefs-tools + +# dot-files that we don't want to ignore +!.gitignore diff --git a/Makefile b/Makefile index 06a826c..d64553e 100644 --- a/Makefile +++ b/Makefile @@ -15,9 +15,9 @@ CFLAGS+=-std=gnu89 -O2 -g -MMD -Wall \ -DNO_BCACHEFS_SYSFS \ -DVERSION_STRING='"$(VERSION)"' \ $(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') @@ -36,10 +36,14 @@ endif PKGCONFIG_LIBS="blkid uuid liburcu libsodium zlib liblz4 libzstd" -CFLAGS+=`pkg-config --cflags ${PKGCONFIG_LIBS}` -LDLIBS+=`pkg-config --libs ${PKGCONFIG_LIBS}` +PKGCONFIG_CFLAGS:=$(shell pkg-config --cflags $(PKGCONFIG_LIBS)) +PKGCONFIG_LDLIBS:=$(shell pkg-config --libs $(PKGCONFIG_LIBS)) + +CFLAGS+=$(PKGCONFIG_CFLAGS) +LDLIBS+=$(PKGCONFIG_LDLIBS) LDLIBS+=-lm -lpthread -lrt -lscrypt -lkeyutils -laio +LDLIBS+=$(EXTRA_LDLIBS) ifeq ($(PREFIX),/usr) ROOT_SBINDIR=/sbin @@ -73,17 +77,17 @@ cmd_version.o : .version install: bcachefs mkdir -p $(DESTDIR)$(ROOT_SBINDIR) mkdir -p $(DESTDIR)$(PREFIX)/share/man/man8/ - $(INSTALL) -m0755 bcachefs $(DESTDIR)$(ROOT_SBINDIR) - $(INSTALL) -m0755 fsck.bcachefs $(DESTDIR)$(ROOT_SBINDIR) - $(INSTALL) -m0755 mkfs.bcachefs $(DESTDIR)$(ROOT_SBINDIR) + $(INSTALL) -m0755 bcachefs $(DESTDIR)$(ROOT_SBINDIR) + $(INSTALL) -m0755 fsck.bcachefs $(DESTDIR)$(ROOT_SBINDIR) + $(INSTALL) -m0755 mkfs.bcachefs $(DESTDIR)$(ROOT_SBINDIR) $(INSTALL) -m0755 -D initramfs/hook $(DESTDIR)$(INITRAMFS_DIR)/hooks/bcachefs echo "copy_exec $(ROOT_SBINDIR)/bcachefs /sbin/bcachefs" >> $(DESTDIR)$(INITRAMFS_DIR)/hooks/bcachefs $(INSTALL) -m0755 -D initramfs/script $(DESTDIR)$(INITRAMFS_DIR)/scripts/local-premount/bcachefs - $(INSTALL) -m0644 bcachefs.8 $(DESTDIR)$(PREFIX)/share/man/man8/ + $(INSTALL) -m0644 bcachefs.8 $(DESTDIR)$(PREFIX)/share/man/man8/ .PHONY: clean clean: - $(RM) bcachefs $(OBJS) $(DEPS) + $(RM) bcachefs .version $(OBJS) $(DEPS) .PHONY: deb deb: all @@ -94,11 +98,13 @@ deb: all .PHONE: update-bcachefs-sources update-bcachefs-sources: git rm -rf --ignore-unmatch libbcachefs + test -d libbcachefs || mkdir libbcachefs cp $(LINUX_DIR)/fs/bcachefs/*.[ch] libbcachefs/ 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 .PHONE: update-commit-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)" -- 2.39.2