diff --git a/rules.mk b/rules.mk index 247d3fd..506a80b 100644 --- a/rules.mk +++ b/rules.mk @@ -1,30 +1,12 @@ -.PHONY: all clean distclean - -# Figure out root of library, unless used as submodule -ROOTDIR ?= $(shell pwd) - -CC ?= $(CROSS)gcc -AR ?= $(CROSS)ar -STRIP ?= $(CROSS)strip -INSTALL := install --backup=off -STRIPINST := $(INSTALL) -s --strip-program=$(CROSS)strip -m 0755 CFLAGS += -g -O0 CPPFLAGS += -D_GNU_SOURCE -ARFLAGS = crus -# Default to silent build, use V=1 to get verbose mode. ifeq ($V,1) -Q = -PRINT = @true -REDIRECT = -MAKEFLAGS = VERBOSE = -v +REDIRECT = else -Q = @ -PRINT = @printf -REDIRECT = >/dev/null -MAKEFLAGS = --no-print-directory --silent VERBOSE = +REDIRECT = >/dev/null endif # Some tests may need to be run as root, e.g. pidfile() @@ -34,35 +16,15 @@ else SUDO = endif -# Default install paths -prefix ?= /usr/local -libdir ?= $(prefix)/lib -datadir ?= $(prefix)/share/doc/$(LIBNAME) -incdir ?= $(prefix)/include +all: $(TARGET) -# Pretty printing and GCC -M for auto dep files -%.o: %.c - $(PRINT) " CC $(subst $(ROOTDIR)/,,$(shell pwd)/)$@\n" - $(Q)$(CC) $(CFLAGS) $(CPPFLAGS) -c -MMD -MP -o $@ $< - -%: %.o - $(PRINT) " LINK $(subst $(ROOTDIR)/,,$(shell pwd)/)$@\n" - $(Q)$(CC) $(CFLAGS) $(LDFLAGS) -Wl,-Map,$@.map -o $@ $^ $(LDLIBS$(LDLIBS-$(@))) - -.PHONY: %.test %.test: %.c - $(PRINT) " TEST $(subst $(ROOTDIR)/,,$(shell pwd)/)$(@:.test=)\n" - $(Q)$(CC) $(CFLAGS) $(CPPFLAGS) -g -o $@ -DUNITTEST $< $(OBJS) - $(Q)$(RM) $(OBJS) - $(Q)$(SUDO) ./$@ $(VERBOSE) $(REDIRECT) - - -# Default build rules for both main and unit test makefiles -all:: $(TARGET) + @printf " TEST $@\n" + @$(CC) $(CFLAGS) $(CPPFLAGS) -g -o $@ -DUNITTEST $< $(OBJS) + @$(RM) $(OBJS) + @$(SUDO) ./$@ $(VERBOSE) $(REDIRECT) clean:: - -$(Q)$(RM) $(OBJS) $(DEPS) $(TARGET) $(SOLIB) $(STATICLIB) - -distclean:: - -$(Q)$(RM) $(JUNK) unittest *.o *.a *.so* *.unittest *.test + -@$(RM) $(OBJS) $(DEPS) $(TARGET) $(SOLIB) $(STATICLIB) + -@$(RM) $(JUNK) unittest *.o *.a *.so* *.unittest *.test