"post/board/$(BOARDDIR)/libpost$(BOARD).a"; fi)
 LIBS += common/libcommon.a
 LIBS += libfdt/libfdt.a
-ifeq ($(CONFIG_API),y)
 LIBS += api/libapi.a
-endif
 
 LIBS := $(addprefix $(obj),$(LIBS))
 .PHONY : $(LIBS)
 # The "tools" are needed early, so put this first
 # Don't include stuff already done in $(LIBS)
 SUBDIRS        = tools \
-         examples
-
-ifeq ($(CONFIG_API),y)
-SUBDIRS += api_examples
-endif
+         examples \
+         api_examples
 
 .PHONY : $(SUBDIRS)
 
 
 
 LIB    = $(obj)libapi.a
 
-COBJS  = api.o api_net.o api_storage.o api_platform-$(ARCH).o
+COBJS-$(CONFIG_API) += api.o api_net.o api_storage.o api_platform-$(ARCH).o
 
+COBJS  := $(COBJS-y)
 SRCS   := $(COBJS:.o=.c)
 OBJS   := $(addprefix $(obj),$(COBJS))
 
-all:   $(LIB)
-
 $(LIB):        $(obj).depend $(OBJS)
        $(AR) $(ARFLAGS) $@ $(OBJS)
 
 
 
 include $(TOPDIR)/config.mk
 
-ELF    += demo
-BIN    += demo.bin
+ELF-$(CONFIG_API) += demo
+BIN-$(CONFIG_API) += demo.bin
+ELF    := $(ELF-y)
+BIN    := $(BIN-y)
 
 #CFLAGS += -v
 
-COBJS  := $(ELF:=.o)
-SOBJS  := crt0.o
+COBJS-$(CONFIG_API) += $(ELF:=.o)
+SOBJS-$(CONFIG_API) += crt0.o
 ifeq ($(ARCH),ppc)
-SOBJS  += ppcstring.o
+SOBJS-$(CONFIG_API) += ppcstring.o
 endif
+COBJS  := $(COBJS-y)
+SOBJS  := $(SOBJS-y)
 
 LIB    = $(obj)libglue.a
-LIBCOBJS= glue.o crc32.o ctype.o string.o vsprintf.o libgenwrap.o
+LIBCOBJS-$(CONFIG_API) += glue.o crc32.o ctype.o string.o vsprintf.o \
+                               libgenwrap.o
+LIBCOBJS := $(LIBCOBJS-y)
 
 LIBOBJS        = $(addprefix $(obj),$(SOBJS) $(LIBCOBJS))
 
 
 CPPFLAGS += -I..
 
-all:   $(obj).depend $(OBJS) $(LIB) $(BIN) $(ELF)
+all:   $(obj).depend $(OBJS) $(LIB) $(ELF) $(BIN)
 
 #########################################################################
 $(LIB):        $(obj).depend $(LIBOBJS)