.POSIX:
.SUFFIXES: .c .o

-include .sources.mk

LIBNAME = lib<name here>
BIN = $(SRC:.c=)

OBJ = $(BIN:=.o)
LIB = $(LIBNAME:=.a)

all generate-sources $(LIB)

.PRECIOUS: $(OBJ)

$(LIB): $(OBJ)
	$(AR) -rc $@ $?

.c.o:
	$(CC) $(CFLAGS) $(CPPFLAGS) -s -c $<

clean:
	rm -f $(LIB) $(OBJ) .sources.mk

generate-sources: .sources.mk
.sources.mk: FORCE
	@set -e;\
	files=$$(ls -1 *.c 2>/dev/null | sort | tr '\n' ' ');\
	src=$$(printf 'SRC=%s\n' "$$files");\
	last='SRC=\n';\
	if [ -f .sources.mk ]; then\
		last=$$(grep 'SRC=' .sources.mk);\
	fi;\
	if [ "$$src" != "$$last" ]; then\
		echo "$$src" > .sources.mk;\
	fi

FORCE: