LIBNAME := elfu
EXENAME := elfucli
-LIBRARIES := libelf
-
BUILDDIR := build
INCLUDEDIR := include
SRCDIR := src
LIBOBJS := $(patsubst %.c, $(BUILDDIR)/%.o, $(LIBSRCS))
EXEOBJS := $(patsubst %.c, $(BUILDDIR)/%.o, $(EXESRCS))
-INCLUDES := $(patsubst %, -I%, $(INCLUDEDIR) $(SRCDIR)) $(shell pkg-config --cflags-only-I $(LIBRARIES))
-CFLAGS := -g -Wall -pedantic -Wno-variadic-macros -fPIC $(shell pkg-config --cflags-only-other $(LIBRARIES))
-LDFLAGS := $(shell pkg-config --libs $(LIBRARIES))
+
+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
+
+
+INCLUDES := $(patsubst %, -I%, $(INCLUDEDIR) $(SRCDIR)) $(LIBELF_INCLUDES)
+CFLAGS := -g -Wall -std=gnu99 -pedantic $(LIBELF_CFLAGS)
+LDFLAGS := $(LIBELF_LDFLAGS)
+
$(EXE): $(EXEOBJS) $(STATICLIB)
gcc -o $@ $^ $(LDFLAGS)
-$(SHAREDLIB): $(LIBOBJS)
- gcc -shared -Wl,-soname,lib$(LIBNAME).so.$(SHARED_VERMAJ) -o $@ $^ $(LDFLAGS)
+$(SHAREDLIB): $(LIBSRCS)
+ gcc $(INCLUDES) $(CFLAGS) -shared -fPIC -Wl,-soname,lib$(LIBNAME).so.$(SHARED_VERMAJ) -o $@ $^ $(LDFLAGS)
$(STATICLIB): $(LIBOBJS)
ar rcs $@ $^
gcc $(INCLUDES) $(CFLAGS) -c -o $@ $<
+.PHONY: docs
+docs: doxygen-doc
+
+.PHONY: doxygen-doc
+doxygen-doc:
+ mkdir -p docs
+ doxygen
+
+
.PHONY: clean
clean:
rm -rf $(BUILDDIR)/
distclean: clean
find . -xdev -name "*~" -exec rm {} \;
find . -xdev -name "core" -exec rm {} \;
+ rm -rf docs/doxygen/