8 EXE := $(BUILDDIR)/$(EXENAME)
9 STATICLIB := $(BUILDDIR)/lib$(LIBNAME).a
14 SHAREDLIB := $(BUILDDIR)/lib$(LIBNAME).so.$(SHARED_VERMAJ).$(SHARED_VERMIN).$(SHARED_VERREV)
16 HEADERS := $(shell find $(INCLUDEDIR)/ -iname "*.h")
17 HEADERS += $(shell find $(SRCDIR)/ -iname "*.h")
19 ALLSRCS := $(shell find $(SRCDIR)/ -iname "*.c")
20 LIBSRCS := $(filter $(SRCDIR)/lib$(LIBNAME)/%.c, $(ALLSRCS))
21 EXESRCS := $(filter-out $(SRCDIR)/lib$(LIBNAME)/%.c, $(ALLSRCS))
22 LIBOBJS := $(patsubst %.c, $(BUILDDIR)/%.o, $(LIBSRCS))
23 EXEOBJS := $(patsubst %.c, $(BUILDDIR)/%.o, $(EXESRCS))
26 ifeq ($(shell pkg-config --exists libelf > /dev/null 2> /dev/null ; echo $$?),0)
27 LIBELF_INCLUDES := $(shell pkg-config --cflags-only-I libelf)
28 LIBELF_CFLAGS := $(shell pkg-config --cflags-only-other libelf)
29 LIBELF_LDFLAGS := $(shell pkg-config --libs libelf)
33 LIBELF_LDFLAGS := -lelf
37 INCLUDES := $(patsubst %, -I%, $(INCLUDEDIR) $(SRCDIR)) $(LIBELF_INCLUDES)
38 CFLAGS := -g -Wall -std=gnu99 -pedantic $(LIBELF_CFLAGS)
39 LDFLAGS := $(LIBELF_LDFLAGS)
45 all: $(STATICLIB) $(SHAREDLIB) $(EXE)
55 gdb $(EXE) $(shell ps -e | sed "s/^ *\([0-9]\+\) .*$(EXENAME).*$$/\1/g;te;d;:e")
58 $(EXE): $(EXEOBJS) $(STATICLIB)
59 gcc -o $@ $^ $(LDFLAGS)
61 $(SHAREDLIB): $(LIBSRCS)
62 gcc $(INCLUDES) $(CFLAGS) -shared -fPIC -Wl,-soname,lib$(LIBNAME).so.$(SHARED_VERMAJ) -o $@ $^ $(LDFLAGS)
64 $(STATICLIB): $(LIBOBJS)
67 $(BUILDDIR)/$(SRCDIR)/%.o: $(SRCDIR)/%.c $(HEADERS)
68 @if [ ! -d $(dir $@) ] ; then mkdir -p $(dir $@) ; fi
69 gcc $(INCLUDES) $(CFLAGS) -c -o $@ $<
89 find . -xdev -name "*~" -exec rm {} \;
90 find . -xdev -name "core" -exec rm {} \;