Use own Makefile for src directory.
authorDaniel Carl <danielcarl@gmx.de>
Sat, 24 Jan 2015 23:13:48 +0000 (00:13 +0100)
committerDaniel Carl <danielcarl@gmx.de>
Sat, 24 Jan 2015 23:13:48 +0000 (00:13 +0100)
.gitignore
Makefile
config.mk
src/Makefile [new file with mode: 0644]
tests/Makefile

index 0d7d2d5..fee9ca5 100644 (file)
@@ -1,10 +1,9 @@
 *.[oad]
-*.[ld]o
-vimb
-vimb_dbg
+*.lo
 *.tar.gz
 src/hints.js.h
 src/config.h
+src/vimb
 tests/*
 !tests/Makefile
 !tests/*.c
index 9e79c81..02f9d7d 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,9 @@
 include config.mk
 
-all:   $(TARGET)
-test:  $(LIBTARGET)
-       @$(MAKE) $(MFLAGS) -s -C tests
+SRCDIR=src
+DOCDIR=doc
 
+all: $(TARGET)
 options:
        @echo "$(PROJECT) build options:"
        @echo "LIBS    = $(LIBS)"
@@ -11,26 +11,25 @@ options:
        @echo "LDFLAGS = $(LDFLAGS)"
        @echo "CC      = $(CC)"
 
-install: $(TARGET) doc/$(MAN1)
+test: $(LIBTARGET)
+       @$(MAKE) $(MFLAGS) -s -C tests
+
+clean:
+       @$(MAKE) $(MFLAGS) -C src clean
+       @$(MAKE) $(MFLAGS) -C tests clean
+
+install: $(TARGET) $(DOCDIR)/$(MAN1)
        install -d $(DESTDIR)$(BINDIR)
-       install -d $(DESTDIR)$(MANDIR1)
-       install -m 755 $(TARGET) $(DESTDIR)$(BINDIR)/$(TARGET)
-       @echo "install -m 644 src/$(MAN1) $(DESTDIR)$(MANDIR1)/$(MAN1)"
+       install -d $(DESTDIR)$(MANDIR)/man1
+       install -m 755 $(SRCDIR)/$(TARGET) $(DESTDIR)$(BINDIR)/$(TARGET)
+       @echo "install -m 644 $(SRCDIR)/$(MAN1) $(DESTDIR)$(MANDIR)/man1/$(MAN1)"
        @sed -e "s/VERSION/$(VERSION)/g" \
-               -e "s/DATE/`date +'%m %Y'`/g" < doc/$(MAN1) > $(DESTDIR)$(MANDIR1)/$(MAN1)
-       @chmod 644 $(DESTDIR)$(MANDIR1)/$(MAN1)
+               -e "s/DATE/`date +'%m %Y'`/g" < $(DOCDIR)/$(MAN1) > $(DESTDIR)$(MANDIR)/man1/$(MAN1)
+       @chmod 644 $(DESTDIR)$(MANDIR)/man1/$(MAN1)
 
 uninstall:
        $(RM) $(DESTDIR)$(BINDIR)/$(TARGET)
-       $(RM) $(DESTDIR)$(MANDIR1)/$(MAN1)
-
-clean: test-clean
-       $(RM) src/*.o src/*.lo src/hints.js.h
-       $(RM) $(TARGET)
-
-test-clean:
-       $(RM) $(LIBTARGET)
-       @$(MAKE) $(MFLAGS) -C tests clean
+       $(RM) $(DESTDIR)$(MANDIR)/man1/$(MAN1)
 
 dist: dist-clean
        @echo "Creating tarball."
@@ -39,36 +38,10 @@ dist: dist-clean
 dist-clean:
        $(RM) $(DIST_FILE)
 
-src/hints.o:  src/hints.js.h
-src/hints.lo: src/hints.js.h
-
-src/hints.js.h: src/hints.js
-       @echo "minify $<"
-       @cat $< | src/js2h.sh > $@
-
-$(OBJ):  src/config.h config.mk
-$(LOBJ): src/config.h config.mk
-
-$(TARGET): $(OBJ)
-       @echo "$(CC) $@"
-       @$(CC) $(OBJ) -o $@ $(LDFLAGS)
-
-$(LIBTARGET): $(LOBJ)
-       @echo "$(CC) $@"
-       @$(CC) -shared ${LOBJ} -o $@ $(LDFLAGS)
-
-src/config.h:
-       @echo create $@ from src/config.def.h
-       @cp src/config.def.h $@
-
-%.o: %.c %.h
-       @echo "${CC} $@"
-       @$(CC) $(CFLAGS) -c -o $@ $<
-
-%.lo: %.c %.h
-       @echo "${CC} $@"
-       @$(CC) -DTESTLIB $(CFLAGS) -fPIC -c -o $@ $<
+$(TARGET):
+       @$(MAKE) $(MFLAGS) -C src $(TARGET)
 
--include $(DEPS)
+$(LIBTARGET):
+       @$(MAKE) $(MFLAGS) -C src $(LIBTARGET)
 
-.PHONY: clean debug all install uninstall options dist dist-clean test test-clean
+.PHONY: clean all install uninstall options dist dist-clean test
index 3197d95..a1e3275 100644 (file)
--- a/config.mk
+++ b/config.mk
@@ -50,14 +50,9 @@ CFLAGS  += -Wno-overlength-strings -Werror=format-security
 CFLAGS  += ${CPPFLAGS}
 LDFLAGS += ${LIBFLAGS}
 
-OBJ       = $(patsubst %.c, %.o, $(wildcard src/*.c))
-LOBJ      = $(patsubst %.c, %.lo, $(wildcard src/*.c))
-DEPS      = $(OBJ:%.o=%.d)
-
 TARGET    = $(PROJECT)
-LIBTARGET = tests/lib$(PROJECT).so
+LIBTARGET = lib$(PROJECT).so
 DIST_FILE = $(PROJECT)_$(VERSION).tar.gz
-MANDIR1   = $(MANDIR)/man1
 MAN1      = $(PROJECT).1
 
-MFLAGS    =
+MFLAGS    = --no-print-directory
diff --git a/src/Makefile b/src/Makefile
new file mode 100644 (file)
index 0000000..406caee
--- /dev/null
@@ -0,0 +1,47 @@
+BASEDIR=..
+include $(BASEDIR)/config.mk
+
+OBJ  = $(patsubst %.c, %.o, $(wildcard *.c))
+LOBJ = $(patsubst %.c, %.lo, $(wildcard *.c))
+
+all: $(TARGET)
+
+clean: clean-lib
+       $(RM) $(TARGET) *.o *.lo hints.js.h
+
+clean-lib:
+       $(RM) $(LIBTARGET)
+
+hints.o:  hints.js.h
+hints.lo: hints.js.h
+
+hints.js.h: hints.js
+       @echo "minify $<"
+       @cat $< | ./js2h.sh > $@
+
+$(OBJ):  config.h $(BASEDIR)/config.mk
+$(LOBJ): config.h $(BASEDIR)/config.mk
+
+$(TARGET): $(OBJ)
+       @echo "$(CC) $@"
+       @$(CC) $(OBJ) -o $@ $(LDFLAGS)
+
+$(LIBTARGET): $(LOBJ)
+       @echo "$(CC) $@"
+       @$(CC) -shared ${LOBJ} -o $@ $(LDFLAGS)
+
+config.h:
+       @echo create $@ from config.def.h
+       @cp config.def.h $@
+
+%.o: %.c %.h
+       @echo "${CC} $@"
+       @$(CC) $(CFLAGS) -c -o $@ $<
+
+%.lo: %.c %.h
+       @echo "${CC} $@"
+       @$(CC) -DTESTLIB $(CFLAGS) -fPIC -c -o $@ $<
+
+-include $(OBJ:.o=.d)
+
+.PHONY: all clean clean-lib
index 9998f1a..8653ecd 100644 (file)
@@ -1,6 +1,8 @@
-include ../config.mk
+BASEDIR=..
+SRCDIR=$(BASEDIR)/src
+include $(BASEDIR)/config.mk
 
-CPPFLAGS += -I ../
+CPPFLAGS += -I $(BASEDIR)/
 CFLAGS   += -fPIC -Wpedantic
 
 TEST_PROGS = test-handlers \
@@ -11,7 +13,7 @@ TEST_PROGS = test-handlers \
 all: $(TEST_PROGS)
        LD_LIBRARY_PATH="$(LD_LIBRARY_PATH):." gtester --verbose $(TEST_PROGS)
 
-${TEST_PROGS}: $(notdir $(LIBTARGET))
+${TEST_PROGS}: $(SRCDIR)/$(LIBTARGET)
 
 clean:
-       rm -f $(TEST_PROGS)
+       $(RM) -f $(TEST_PROGS)