* device/lib/Makefile.in (port-specific-objects-pic16):
[fw/sdcc] / device / lib / pic16 / Makefile.rules
index e36ebe6bb02b46906d83202e21e3b84ddfeb6d63..42aaef907412ee32a03f83a8c0d3ed1571985224 100644 (file)
@@ -37,22 +37,26 @@ ifneq (,$(strip $(LIB_O)))
        @echo "[  LIB  ] $(patsubst $(topsrcdir)/%,%,$@) <== $(patsubst $(topsrcdir)/$(builddir)/%,%,$^)";
        $(Q)$(RM) "$@"; $(LIB) $(LIBFLAGS) "$@" $^;
 else
-%.lib : force
+%.lib : recurse
        @echo "[  LIB  ] $(patsubst $(topsrcdir)/%,%,$@) <== **/*.o";
        $(Q)$(RM) "$@"; LIB_O=`find "$(topsrcdir)/$(builddir)" -name "*.o"`; [ "x$${LIB_O}" = "x" ] || $(LIB) $(LIBFLAGS) "$@" $${LIB_O};
 endif
 
-.PHONY : builddir recurse force
-
-# create builddir
-builddir : force
-       $(Q)[ -d "$(topsrcdir)/$(builddir)" ] || $(MKDIR) "$(topsrcdir)/$(builddir)";
+.PHONY : recurse force
 
 # build sub-directories
+ifneq (,$(strip $(SUBDIRS)))
 recurse : force
-       $(Q)for DIR in $(SUBDIRS) . ; do \
-               [ "$${DIR}" = "." ] || $(GREP) "^$${ARCH}$$" "$${DIR}.ignore" &> /dev/null || $(MAKE) -C "$${DIR}" builddir="$(builddir)/$${DIR}" $(MAKECMDGOALS) || exit 1; \
+       $(Q)+for DIR in $(SUBDIRS) ; do \
+               $(GREP) "^$${ARCH}$$" "$${DIR}.ignore" &> /dev/null || ( \
+                       [ -d "$(topsrcdir)/$(builddir)/$${DIR}" ] || $(MKDIR) "$(topsrcdir)/$(builddir)/$${DIR}"; \
+                       $(MAKE) -C "$${DIR}" builddir="$(builddir)/$${DIR}" $(MAKECMDGOALS); \
+               ) || exit 1; \
        done
+else
+recurse :
+       @# nothing to do
+endif
 
 # target to force remaking of (seemingly) independent targets
 force :