Revision 1 (by moose, 2006/07/23 19:04:20) initial import
.PRECIOUS: .d .o .a
.PHONY: clean cleantest detectconfig

CC := gcc
AR := ar rcs
RM := rm -fr

LIB_PRE := lib
LIB_SUFF := .a
LIB_NAME := riff

LIB_FULLNAME := $(LIB_PRE)$(LIB_NAME)$(LIB_SUFF)
LIB_SRC := vfs.c filter.c stream.c stat.c dir.c
LIB_OBJS := $(addprefix obj/,$(patsubst %.c,%.o,$(LIB_SRC)))

LIB_CFLAGS := -W -Wall -ggdb3 -Iinclude
LIB_LDFLAGS :=

TESTS :=
TESTS := $(addprefix tests/,$(TESTS))

TEST_CFLAGS := -Iinclude -DDEBUG -ggdb3 -W -Wall
TEST_LDFLAGS := -Llib -lvfs

DEPS := $(addprefix dep/,$(patsubst %.c,%.d,$(LIB_SRC))) $(addprefix dep/,$(patsubst %.c,%.d,$(LIB_PLAT_SRC))) $(addprefix tests/,$(addsuffix .c,$(TESTS)))

all : detectconfig $(TESTS)

lib/$(LIB_FULLNAME) : $(LIB_OBJS)
	$(AR) lib/$(LIB_FULLNAME) $(LIB_OBJS)

obj/%.o : src/%.c makefile
	$(CC) $(LIB_CFLAGS) -c $< -o $@

dep/%.d : src/%.c makefile
	$(CC) -MM $(LIB_CFLAGS) $< | sed -e "s/^objs\/$*\.o:/objs\/$*\.o dep\/$*\.d:/" > $@

dep/%.d : tests/%.c makefile
	$(CC) -MM $(TEST_CFLAGS) $< | sed -e "s/^objs\.$*\.o:/objs\/$*\.o dep\/$*\.d:/" > $@

$(TESTS): %: %.c lib/$(LIB_FULLNAME)
	$(CC) $(TEST_CFLAGS) $< -o $@ $(TEST_LDFLAGS)

clean:
	$(RM) lib/$(LIB_FULLNAME) $(LIB_OBJS) $(TESTS) $(DEPS) core* tests/core* $(TESTS)

detectconfig:
	@scripts/detectconfig.sh

-include $(DEPS)