-SOURCES := $(shell find $(SRCDIR)/ -iname "*.c")
-OBJS := $(patsubst %.c, $(BUILDDIR)/%.o, $(SOURCES))
+ALLSRCS := $(shell find $(SRCDIR)/ -iname "*.c")
+LIBSRCS := $(filter $(SRCDIR)/lib$(LIBNAME)/%.c, $(ALLSRCS))
+EXESRCS := $(filter-out $(SRCDIR)/lib$(LIBNAME)/%.c, $(ALLSRCS))
+LIBOBJS := $(patsubst %.c, $(BUILDDIR)/%.o, $(LIBSRCS))
+EXEOBJS := $(patsubst %.c, $(BUILDDIR)/%.o, $(EXESRCS))
+
+
+ifeq ($(shell pkg-config --exists libelf > /dev/null 2> /dev/null ; echo $$?),0)
+ LIBELF_INCLUDES := $(shell pkg-config --cflags-only-I libelf)
+ LIBELF_CFLAGS := $(shell pkg-config --cflags-only-other libelf)
+ LIBELF_LDFLAGS := $(shell pkg-config --libs libelf)
+else
+ LIBELF_INCLUDES :=
+ LIBELF_CFLAGS :=
+ LIBELF_LDFLAGS := -lelf
+endif
+