Add README.md and COPYING
[revag-bap.git] / Makefile
index 6a0fe719b0f25d1bcb365c6cb409e6bcf4c5cef0..b50a6cc5ded9e8acb566c7228d059a8abb935c24 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,11 +1,60 @@
-CFLAGS += -Wall -g
+LIBNAME := vag-bap
 
-BAPLIB = vw-bap.c vw-bap-frame.c
+BUILDDIR  := build
+STATICLIB := $(BUILDDIR)/lib$(LIBNAME).a
 
-all: vw-bap-dump vw-bap-sniffer
+INCLUDEDIR := include
+HEADERS    := $(shell find $(INCLUDEDIR)/)
 
+SRCDIR  := src
+SOURCES := $(shell find $(SRCDIR)/ -iname "*.c")
+OBJS    := $(patsubst %.c, $(BUILDDIR)/%.o, $(SOURCES))
 
-vw-bap-dump: vw-bap-dump.c $(BAPLIB)
+INCLUDES := $(patsubst %, -I%, $(INCLUDEDIR))
+CFLAGS   := -Wall -g
 
-vw-bap-sniffer: vw-bap-sniffer.c $(BAPLIB)
-       gcc -o $@ $^ -lncurses
+TOOLDIR     := tools
+TOOLSOURCES := $(shell find $(TOOLDIR)/ -iname "*.c")
+TOOLEXES    := $(patsubst %.c, $(BUILDDIR)/%, $(TOOLSOURCES))
+TOOLLIBS    := -lncurses
+
+
+
+
+
+.PHONY: tools
+tools: $(TOOLEXES)
+
+
+$(BUILDDIR)/$(TOOLDIR)/%: $(TOOLDIR)/%.c $(HEADERS) $(STATICLIB)
+       @if [ ! -d $(dir $@) ] ; then mkdir -p $(dir $@) ; fi
+       $(CC) $(INCLUDES) $(CFLAGS) -o $@ $< $(STATICLIB) $(TOOLLIBS)
+
+
+
+.PHONY: lib
+lib: $(STATICLIB)
+
+$(STATICLIB): $(OBJS)
+       @if [ ! -d $(BUILDDIR) ] ; then echo "Error: Build dir '$(BUILDDIR)' does not exist." ; false ; fi
+       ar rcs $@ $^
+
+
+$(BUILDDIR)/$(SRCDIR)/%.o: $(SRCDIR)/%.c $(HEADERS)
+       @if [ ! -d $(dir $@) ] ; then mkdir -p $(dir $@) ; fi
+       $(CC) $(INCLUDES) $(CFLAGS) -c -o $@ $<
+
+
+
+.PHONY: clean
+clean:
+       rm -f $(STATICLIB)
+       rm -f $(OBJS)
+       rm -f $(TOOLEXES)
+       rm -rf $(BUILDDIR)/
+
+
+.PHONY: distclean
+distclean: clean
+       find . -xdev -name "*~" -exec rm {} \;
+       find . -xdev -name "core" -exec rm {} \;