-#########################
-sp := $(sp).x
-dirstack_$(sp) := $(d)
-d := $(dir)
-#########################
-
#
# Define rules and targets for libmoof.
#
-OBJS_$(d) := \
- $(d)/ConvertUTF.o \
- $(d)/aabb.o \
- $(d)/backend.o \
- $(d)/camera.o \
- $(d)/dispatcher.o \
- $(d)/fastevents.o \
- $(d)/frustum.o \
- $(d)/hash.o \
- $(d)/image.o \
- $(d)/log.o \
- $(d)/packet.o \
- $(d)/plane.o \
- $(d)/resource.o \
- $(d)/service.o \
- $(d)/settings.o \
- $(d)/sound.o \
- $(d)/string.o \
- $(d)/texture.o \
- $(d)/timer.o \
- $(d)/video.o \
- $(d)/view.o \
- $(_END_)
-
-TGTS_$(d) := $(d)/libmoof.a
-DEPS_$(d) := $(OBJS_$(d):%=%.d)
-
-CLEAN := $(CLEAN) $(OBJS_$(d)) $(DEPS_$(d)) $(TGTS_$(d))
-
-
-$(OBJS_$(d)): CF_TGT := -I$(d) -I$(d)/..
-$(OBJS_$(d)): $(d)/rules.mk
+objects = $(patsubst %.c,$(builddir)/%.o,$(patsubst %.cc,$(builddir)/%.o,$(wildcard $d/*.c $d/*.cc)))
+$(objects): TGT_CFLAGS := -I$b -I$b/.. -I$d -I$d/..
+$(objects): config.h | $b
-$(TGTS_$(d)): $(OBJS_$(d))
- $(DO_AR)
+library = $b/libmoof.a
+$(library): $(objects)
+ $(Q)$(ar)
+ifeq (true,$(pch))
+pchfile := $b/precompile.hh
+exec += $(pchfile) $(pchfile).gch
+$(pchfile).gch: TGT_CFLAGS := -I$b -I$b/.. -I$d -I$d/..
+$(pchfile).gch: $(pchfile)
+$(pchfile): config.mk | $b
+$(objects): $(pchfile).gch
+endif
-#######################
--include $(DEPS_$(d))
-d := $(dirstack_$(sp))
-sp := $(basename $(sp))
-#######################
+exec += $(objects) $(library)