cmdline: new build system
[libcmdline.git] / libcmdline.lib.mk
diff --git a/libcmdline.lib.mk b/libcmdline.lib.mk
new file mode 100644 (file)
index 0000000..2a2f898
--- /dev/null
@@ -0,0 +1,42 @@
+VPATH += $(SRCDIR)/$(S)
+
+OBJS := $(SRCS:%.c=%.o)
+DEPS := $(SRCS:%.c=%.d)
+
+INST := $(addsuffix _install,$(INSTALL_HEADERS))
+
+all: $(LIB).so $(LIB).a
+
+RANLIB ?= ranlib
+$(LIB).a: $(OBJS)
+       $(AR) cru $(LIB).a $(OBJS)
+       $(RANLIB) $(LIB).a
+
+$(LIB).so: $(OBJS)
+       $(CC) $(LDFLAGS) -shared $(OBJS) -o $@
+
+%.o: %.c
+       $(CC) -Wp,-MD,$(@:%.o=%.d) $(CFLAGS) -o $@ -c $<
+
+clean:
+       rm -f $(OBJS) $(DEPS) $(LIB).a $(LIB).so
+
+%_install: %
+       @echo "Install $< in $(PREFIX)/include"; \
+       cp $< $(PREFIX)/include || exit 1
+
+install: $(INST)
+       @echo "Install $(LIB).so in $(PREFIX)/lib"; \
+       cp $(LIB).so $(PREFIX)/lib || exit 1
+
+uninstall: $(UNINST)
+       @for i in $(INSTALL_HEADERS); do \
+               echo "Uninstall $$i from $(PREFIX)/include"; \
+               rm -f $(PREFIX)/include/$$i; \
+       done
+       @echo "Uninstall $(LIB).so"
+       @rm -f $(PREFIX)/lib/$(LIB).so
+
+.PHONY: all clean install uninstall
+
+-include $(DEPS)