-PKGCONFIG_LIBS="blkid uuid"
-CFLAGS+=`pkg-config --cflags ${PKGCONFIG_LIBS}`
-LDLIBS+=`pkg-config --libs ${PKGCONFIG_LIBS}` -lscrypt -lsodium -lkeyutils -lm
+VERSION?=$(shell git describe --dirty=+ 2>/dev/null || echo v0.1-nogit)
+
+CC_VERSION=$(shell $(CC) -v 2>&1|grep -E '(gcc|clang) version')
+
+ifneq (,$(findstring gcc,$(CC_VERSION)))
+ CFLAGS+=-Wno-unused-but-set-variable
+endif
+
+ifneq (,$(findstring clang,$(CC_VERSION)))
+ CFLAGS+=-Wno-missing-braces
+endif
+
+ifdef D
+ CFLAGS+=-Werror
+ CFLAGS+=-DCONFIG_BCACHEFS_DEBUG=y
+endif
+
+PKGCONFIG_LIBS="blkid uuid liburcu libsodium zlib liblz4 libzstd"
+
+PKGCONFIG_CFLAGS:=$(shell pkg-config --cflags $(PKGCONFIG_LIBS))
+ifeq (,$(PKGCONFIG_CFLAGS))
+ $(error pkg-config error)
+endif
+PKGCONFIG_LDLIBS:=$(shell pkg-config --libs $(PKGCONFIG_LIBS))
+ifeq (,$(PKGCONFIG_LDLIBS))
+ $(error pkg-config error (libs))
+endif
+
+CFLAGS+=$(PKGCONFIG_CFLAGS)
+LDLIBS+=$(PKGCONFIG_LDLIBS)
+
+LDLIBS+=-lm -lpthread -lrt -lscrypt -lkeyutils -laio
+LDLIBS+=$(EXTRA_LDLIBS)