Workaround for Linux 3.14
[sysstatus.git] / Makefile
index fd5015242662fe1cb059dcf23e8f0b4dcfa98018..eda1d28c59d4c8ff786c74fac372dfbb87c0b389 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,16 +1,55 @@
-build:
-       gcc -Wall -o sysstatus sysstatus.c \
-                       statuses/tools.c \
-                       statuses/uptime.c \
-                       statuses/memusage.c \
-                       statuses/cpuusage.c \
-                       statuses/netif.c \
-                       statuses/netif_named.c \
-                       statuses/power.c \
-                       statuses/volume_alsa.c \
-                       statuses/temp.c \
-                       statuses/datetime.c \
-                       -lasound
+PROJ := sysstatus
 
+LIBRARIES := alsa
+
+BUILDDIR   := build
+INCLUDEDIR := include
+SRCDIR     := src
+
+EXE     := $(BUILDDIR)/$(PROJ)
+HEADERS := $(shell find $(INCLUDEDIR)/ -iname "*.h")
+HEADERS += $(shell find $(SRCDIR)/ -iname "*.h")
+
+INCLUDES := $(patsubst %, -I%, $(INCLUDEDIR) $(SRCDIR))
+CFLAGS   := -O3 -Wall -Wextra
+LDFLAGS  :=
+
+SOURCES := $(shell find $(SRCDIR)/ -iname "*.c")
+OBJS    := $(patsubst %.c, $(BUILDDIR)/%.o, $(SOURCES))
+
+INCLUDES += $(shell pkg-config --cflags-only-I $(LIBRARIES))
+CFLAGS   += $(shell pkg-config --cflags-only-other $(LIBRARIES))
+LDFLAGS  += $(shell pkg-config --libs $(LIBRARIES))
+
+
+
+.PHONY: default
+default: $(EXE)
+
+
+.PHONY: debug
+debug: $(EXE)
+       gdb $(EXE) $(shell ps -e | sed "s/^ *\([0-9]\+\) .*$(PROJ).*$$/\1/g;te;d;:e")
+
+
+$(EXE): $(OBJS)
+       @if [ ! -d $(BUILDDIR) ] ; then echo "Error: Build dir '$(BUILDDIR)' does not exist." ; false ; fi
+       gcc -o $@ $^ $(LDFLAGS)
+
+
+$(BUILDDIR)/$(SRCDIR)/%.o: $(SRCDIR)/%.c $(HEADERS)
+       @if [ ! -d $(dir $@) ] ; then mkdir -p $(dir $@) ; fi
+       gcc $(INCLUDES) $(CFLAGS) -c -o $@ $<
+
+
+.PHONY: clean
 clean:
-       rm -f sysstatus
+       rm -f $(STATICLIB)
+       rm -f $(OBJS)
+       rm -rf $(BUILDDIR)/
+
+
+.PHONY: distclean
+distclean: clean
+       find . -xdev -name "*~" -exec rm {} \;
+       find . -xdev -name "core" -exec rm {} \;