diff --git a/arch/8051/src/Makefile b/arch/8051/src/Makefile
index 83c796119f..54a3ce79bc 100644
--- a/arch/8051/src/Makefile
+++ b/arch/8051/src/Makefile
@@ -35,51 +35,51 @@
 
 -include $(TOPDIR)/Make.defs
 
-CFLAGS		+= -I$(TOPDIR)/sched
-ASFLAGS		= -x -j -g -l -s -p
-CPPFLAGS	= $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) -D__ASSEMBLY__
+CFLAGS += -I$(TOPDIR)/sched
+ASFLAGS = -x -j -g -l -s -p
+CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) -D__ASSEMBLY__
 
-SSRCS		= 
-ASRCS		= $(SSRCS:.S=$(ASMEXT))
-AOBJS		= $(ASRCS:$(ASMEXT)=$(OBJEXT))
-CSRCS		= up_initialize.c up_idle.c up_interruptcontext.c \
-		  up_initialstate.c up_unblocktask.c up_blocktask.c \
-		  up_releasepending.c up_reprioritizertr.c \
-		  up_exit.c up_assert.c up_allocateheap.c \
-		  up_irq.c up_savecontext.c up_restorecontext.c \
-		  up_timerisr.c up_putc.c up_debug.c up_delay.c
-COBJS		= $(CSRCS:.c=$(OBJEXT))
-SRCS		= $(SSRCS) $(CSRCS)
-OBJS		= $(AOBJS) $(COBJS)
+SSRCS = 
+ASRCS = $(SSRCS:.S=$(ASMEXT))
+AOBJS = $(ASRCS:$(ASMEXT)=$(OBJEXT))
+CSRCS = up_initialize.c up_idle.c up_interruptcontext.c \
+		up_initialstate.c up_unblocktask.c up_blocktask.c \
+		up_releasepending.c up_reprioritizertr.c \
+		up_exit.c up_assert.c up_allocateheap.c \
+		up_irq.c up_savecontext.c up_restorecontext.c \
+		up_timerisr.c up_putc.c up_debug.c up_delay.c
+COBJS = $(CSRCS:.c=$(OBJEXT))
+SRCS = $(SSRCS) $(CSRCS)
+OBJS = $(AOBJS) $(COBJS)
 
-SDCCLIBDIR	= /usr/local/share/sdcc/lib/large-stack-auto
-SDCCPATH	= -L$(SDCCLIBDIR)
-SDCCLIBS	= -llibfloat.lib -llibint.lib -lliblong.lib -llibmysdcc.lib -lmcs51.lib
+SDCCLIBDIR = /usr/local/share/sdcc/lib/large-stack-auto
+SDCCPATH = -L$(SDCCLIBDIR)
+SDCCLIBS = -llibfloat.lib -llibint.lib -lliblong.lib -llibmysdcc.lib -lmcs51.lib
 
-LINKSSRCS	= up_head.S
-LINKASRCS	= $(LINKSSRCS:.S=$(ASMEXT))
-LINKOBJS	= $(LINKASRCS:$(ASMEXT)=$(OBJEXT))
-LINKLIBS	=
-LDPATHES	= $(addprefix -L$(TOPDIR)/,$(dir $(LINKLIBS)))
-LDLIBS		= $(addprefix -l,$(notdir $(LINKLIBS)))
+LINKSSRCS = up_head.S
+LINKASRCS = $(LINKSSRCS:.S=$(ASMEXT))
+LINKOBJS = $(LINKASRCS:$(ASMEXT)=$(OBJEXT))
+LINKLIBS ?=
+LDPATHS = -L"$(TOPDIR)/lib"
+LDLIBS =  $(patsubst %.a,%,$(patsubst lib%,-l%,$(LINKLIBS)))
 
-TESTSRCS	= up_irqtest.c
-TESTOBJS	= $(TESTSRCS:.c=$(OBJEXT))
-TESTLINKOBJS	= up_head$(OBJEXT)
-TESTEXTRAOBJS	= up_savecontext$(OBJEXT) up_restorecontext$(OBJEXT)
+TESTSRCS = up_irqtest.c
+TESTOBJS = $(TESTSRCS:.c=$(OBJEXT))
+TESTLINKOBJS = up_head$(OBJEXT)
+TESTEXTRAOBJS = up_savecontext$(OBJEXT) up_restorecontext$(OBJEXT)
 
-BOARDDIR	= $(TOPDIR)/arch/$(CONFIG_ARCH)/src/board
+BOARDDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/src/board
 
-IRAM_SIZE	= 0x100
-DEF_STACK_BASE	= 0x24
-LDFLAGS		+= --model-large --nostdlib \
-		  --data-loc $(DEF_STACK_BASE) --iram-size $(IRAM_SIZE) \
-		  --code-loc 0x2100 --code-size 0x5f40 \
-		  --xram-loc $(IRAM_SIZE) --xram-size 0x1f00
+IRAM_SIZE = 0x100
+DEF_STACK_BASE = 0x24
+LDFLAGS += --model-large --nostdlib \
+		--data-loc $(DEF_STACK_BASE) --iram-size $(IRAM_SIZE) \
+		--code-loc 0x2100 --code-size 0x5f40 \
+		--xram-loc $(IRAM_SIZE) --xram-size 0x1f00
 
-DEPSRCS		= $(SRCS) $(LINKSSRCS)
+DEPSRCS = $(SRCS) $(LINKSSRCS)
 
-HEAP1_BASE	= ${shell \
+HEAP1_BASE = ${shell \
 			if [ -e pass1.mem ]; then \
 				cat pass1.mem | grep "EXTERNAL RAM" | \
 				sed -e "s/[ ][ ]*/ /g" | cut -d' ' -f5 ; \
@@ -87,8 +87,8 @@ HEAP1_BASE	= ${shell \
 				echo $(IRAM_SIZE) ; \
 			fi \
 		   }
-DEF_HEAP2_BASE	= 0x6000
-HEAP2_BASE	= ${shell \
+DEF_HEAP2_BASE = 0x6000
+HEAP2_BASE = ${shell \
 			if [ -e pass1.mem ]; then \
 				cat pass1.mem | grep "ROM/EPROM/FLASH" | \
 				sed -e "s/[ ][ ]*/ /g" | cut -d' ' -f4 ; \
@@ -96,7 +96,7 @@ HEAP2_BASE	= ${shell \
 				echo $(DEF_HEAP2_BASE) ; \
 			fi \
 		   }
-STACK_BASE	= ${shell \
+STACK_BASE = ${shell \
 			if [ -e pass1.mem ]; then \
 				cat pass1.mem | grep "Stack starts" | \
 				cut -d' ' -f4 ; \
@@ -173,7 +173,7 @@ board/libboard$(LIBEXT):
 
 pass1.hex: up_mem.h $(SDCCLIBDIR)/libmysdcc.lib $(LINKOBJS) board/libboard$(LIBEXT)
 	@echo "LD:  $@"
-	@$(CC) $(LDFLAGS) $(LDPATHES) -L$(BOARDDIR) $(SDCCPATH) $(LINKOBJS) \
+	@$(CC) $(LDFLAGS) $(LDPATHS) -L$(BOARDDIR) $(SDCCPATH) $(LINKOBJS) \
 		$(LDLIBS) -llibboard$(LIBEXT) $(SDCCLIBS) -o $@
 	@rm -f up_mem.h
 	@rm -f up_allocateheap$(OBJEXT) libarch$(LIBEXT)
@@ -181,7 +181,7 @@ pass1.hex: up_mem.h $(SDCCLIBDIR)/libmysdcc.lib $(LINKOBJS) board/libboard$(LIBE
 
 nuttx.hex: up_mem.h $(SDCCLIBDIR)/libmysdcc.lib $(LINKOBJS)
 	@echo "LD:  $@"
-	@$(CC) $(LDFLAGS) $(LDPATHES) -L$(BOARDDIR) $(SDCCPATH) $(LINKOBJS) \
+	@$(CC) $(LDFLAGS) $(LDPATHS) -L$(BOARDDIR) $(SDCCPATH) $(LINKOBJS) \
 		$(LDLIBS) -llibboard$(LIBEXT) $(SDCCLIBS) -o $@
 
 nuttx$(EXEEXT): pass1.hex nuttx.hex
diff --git a/arch/arm/src/Makefile b/arch/arm/src/Makefile
index f356f4d02a..49fabb7087 100644
--- a/arch/arm/src/Makefile
+++ b/arch/arm/src/Makefile
@@ -74,16 +74,17 @@ LDFLAGS += $(ARCHSCRIPT)
 
 EXTRA_LIBS ?=
 EXTRA_LIBPATHS ?=
+LINKLIBS ?=
 
-LINKLIBS =
 ifeq ($(WINTOOL),y)
-  LIBPATHS = ${shell for path in $(LINKLIBS); do dir=`dirname $(TOPDIR)/$$path`;echo "-L\"`cygpath -w $$dir`\"";done}
+  LIBPATHS += -L"${shell cygpath -w "$(TOPDIR)/lib"}"
   LIBPATHS += -L"${shell cygpath -w $(BOARDDIR)}"
 else
-  LIBPATHS = $(addprefix -L$(TOPDIR)/,$(dir $(LINKLIBS)))
+  LIBPATHS += -L"(TOPDIR)/lib"
   LIBPATHS += -L"$(BOARDDIR)"
 endif
-LDLIBS = $(patsubst lib%,-l%,$(basename $(notdir $(LINKLIBS))))
+
+LDLIBS = $(patsubst %.a,%,$(patsubst lib%,-l%,$(LINKLIBS)))
 
 BOARDDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/src/board
 
diff --git a/arch/avr/src/Makefile b/arch/avr/src/Makefile
index bbfc4dd4f9..160ae63179 100644
--- a/arch/avr/src/Makefile
+++ b/arch/avr/src/Makefile
@@ -37,61 +37,62 @@
 -include $(TOPDIR)/Make.defs
 -include chip/Make.defs
 
-ARCH_SRCDIR	= $(TOPDIR)/arch/$(CONFIG_ARCH)/src
+ARCH_SRCDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/src
 ifeq ($(CONFIG_ARCH_AVR32),y)
-ARCH_SUBDIR	= avr32
+ARCH_SUBDIR = avr32
 else ifeq ($(CONFIG_ARCH_AVR),y)
-ARCH_SUBDIR	= avr
+ARCH_SUBDIR = avr
 endif
 
 ifeq ($(WINTOOL),y)
-  NUTTX		= "${shell cygpath -w $(TOPDIR)/nuttx}"
-  INCLUDES	+= -I "${shell cygpath -w $(ARCH_SRCDIR)/chip}"
-  INCLUDES	+= -I "${shell cygpath -w $(ARCH_SRCDIR)/common}"
-  INCLUDES	+= -I "${shell cygpath -w $(ARCH_SRCDIR)/$(ARCH_SUBDIR)}"
-  INCLUDES	+= -I "${shell cygpath -w $(TOPDIR)/sched}"
+  NUTTX = "${shell cygpath -w $(TOPDIR)/nuttx}"
+  INCLUDES += -I "${shell cygpath -w $(ARCH_SRCDIR)/chip}"
+  INCLUDES += -I "${shell cygpath -w $(ARCH_SRCDIR)/common}"
+  INCLUDES += -I "${shell cygpath -w $(ARCH_SRCDIR)/$(ARCH_SUBDIR)}"
+  INCLUDES += -I "${shell cygpath -w $(TOPDIR)/sched}"
 else
-  NUTTX		= "$(TOPDIR)/nuttx"
-  INCLUDES	+= -I "$(ARCH_SRCDIR)/chip"
-  INCLUDES	+= -I "$(ARCH_SRCDIR)/common"
-  INCLUDES	+= -I "$(ARCH_SRCDIR)/$(ARCH_SUBDIR)"
-  INCLUDES	+= -I "$(TOPDIR)/sched"
+  NUTTX = "$(TOPDIR)/nuttx"
+  INCLUDES += -I "$(ARCH_SRCDIR)/chip"
+  INCLUDES += -I "$(ARCH_SRCDIR)/common"
+  INCLUDES += -I "$(ARCH_SRCDIR)/$(ARCH_SUBDIR)"
+  INCLUDES += -I "$(TOPDIR)/sched"
 endif
 
-CPPFLAGS	+= $(INCLUDES)
-CFLAGS		+= $(INCLUDES)
-CXXFLAGS	+= $(INCLUDES)
-AFLAGS		+= $(INCLUDES)
+CPPFLAGS += $(INCLUDES)
+CFLAGS += $(INCLUDES)
+CXXFLAGS += $(INCLUDES)
+AFLAGS += $(INCLUDES)
 
-HEAD_OBJ	= $(HEAD_ASRC:.S=$(OBJEXT))
+HEAD_OBJ = $(HEAD_ASRC:.S=$(OBJEXT))
 
-ASRCS		= $(CHIP_ASRCS) $(CMN_ASRCS)
-AOBJS		= $(ASRCS:.S=$(OBJEXT))
+ASRCS = $(CHIP_ASRCS) $(CMN_ASRCS)
+AOBJS = $(ASRCS:.S=$(OBJEXT))
 
-CSRCS		= $(CHIP_CSRCS) $(CMN_CSRCS)
-COBJS		= $(CSRCS:.c=$(OBJEXT))
+CSRCS = $(CHIP_CSRCS) $(CMN_CSRCS)
+COBJS = $(CSRCS:.c=$(OBJEXT))
 
-SRCS		= $(ASRCS) $(CSRCS)
-OBJS		= $(AOBJS) $(COBJS)
+SRCS = $(ASRCS) $(CSRCS)
+OBJS = $(AOBJS) $(COBJS)
 
-LDFLAGS		+= $(ARCHSCRIPT)
-EXTRA_LIBS	?=
+LDFLAGS += $(ARCHSCRIPT)
+EXTRA_LIBS ?=
+LINKLIBS ?=
 
-LINKLIBS	=
 ifeq ($(WINTOOL),y)
-  LIBPATHS	= ${shell for path in $(LINKLIBS); do dir=`dirname $(TOPDIR)/$$path`;echo "-L\"`cygpath -w $$dir`\"";done}
-  LIBPATHS	+= -L"${shell cygpath -w $(BOARDDIR)}"
+  LIBPATHS += -L"${shell cygpath -w "$(TOPDIR)/lib"}"
+  LIBPATHS += -L"${shell cygpath -w $(BOARDDIR)}"
 else
-  LIBPATHS	= $(addprefix -L$(TOPDIR)/,$(dir $(LINKLIBS)))
-  LIBPATHS	+= -L"$(BOARDDIR)"
+  LIBPATHS += -L"(TOPDIR)/lib"
+  LIBPATHS += -L"$(BOARDDIR)"
 endif
-LDLIBS		= $(patsubst lib%,-l%,$(basename $(notdir $(LINKLIBS))))
 
-BOARDDIR	= $(TOPDIR)/arch/$(CONFIG_ARCH)/src/board
+LDLIBS = $(patsubst %.a,%,$(patsubst lib%,-l%,$(LINKLIBS)))
 
-LIBGCC		= "${shell $(CC) $(ARCHCPUFLAGS) -print-libgcc-file-name}"
+BOARDDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/src/board
 
-VPATH		= chip:common:$(ARCH_SUBDIR)
+LIBGCC = "${shell $(CC) $(ARCHCPUFLAGS) -print-libgcc-file-name}"
+
+VPATH = chip:common:$(ARCH_SUBDIR)
 
 all: $(HEAD_OBJ) libarch$(LIBEXT)
 
diff --git a/arch/hc/src/Makefile b/arch/hc/src/Makefile
index ff19ce6fe6..b2058466ca 100644
--- a/arch/hc/src/Makefile
+++ b/arch/hc/src/Makefile
@@ -36,55 +36,56 @@
 -include $(TOPDIR)/Make.defs
 -include chip/Make.defs
 
-ARCH_SRCDIR	= $(TOPDIR)/arch/$(CONFIG_ARCH)/src
+ARCH_SRCDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/src
 ifeq ($(CONFIG_ARCH_HC12),y)
-ARCH_SUBDIR	= hc12
+ARCH_SUBDIR = hc12
 endif
 ifeq ($(CONFIG_ARCH_HCS12),y)
-ARCH_SUBDIR	= hcs12
+ARCH_SUBDIR = hcs12
 endif
 
 ifeq ($(WINTOOL),y)
-  NUTTX		= "${shell cygpath -w $(TOPDIR)/nuttx}"
-  CFLAGS	+= -I "${shell cygpath -w $(ARCH_SRCDIR)/chip}" \
-  		   -I "${shell cygpath -w $(ARCH_SRCDIR)/common}" \
+  NUTTX = "${shell cygpath -w $(TOPDIR)/nuttx}"
+  CFLAGS += -I "${shell cygpath -w $(ARCH_SRCDIR)/chip}" \
+		   -I "${shell cygpath -w $(ARCH_SRCDIR)/common}" \
 		   -I "${shell cygpath -w $(ARCH_SRCDIR)/$(ARCH_SUBDIR)}" \
 		   -I "${shell cygpath -w $(TOPDIR)/sched}"
 else
-  NUTTX		= $(TOPDIR)/nuttx
-  CFLAGS	+= -I$(ARCH_SRCDIR)/chip -I$(ARCH_SRCDIR)/common \
-		   -I$(ARCH_SRCDIR)/$(ARCH_SUBDIR) -I$(TOPDIR)/sched
+  NUTTX = $(TOPDIR)/nuttx
+  CFLAGS += -I$(ARCH_SRCDIR)/chip -I$(ARCH_SRCDIR)/common \
+			-I$(ARCH_SRCDIR)/$(ARCH_SUBDIR) -I$(TOPDIR)/sched
 endif
 
-HEAD_OBJ	= $(HEAD_ASRC:.S=$(OBJEXT))
+HEAD_OBJ = $(HEAD_ASRC:.S=$(OBJEXT))
 
-ASRCS		= $(CHIP_ASRCS) $(CMN_ASRCS)
-AOBJS		= $(ASRCS:.S=$(OBJEXT))
+ASRCS = $(CHIP_ASRCS) $(CMN_ASRCS)
+AOBJS = $(ASRCS:.S=$(OBJEXT))
 
-CSRCS		= $(CHIP_CSRCS) $(CMN_CSRCS)
-COBJS		= $(CSRCS:.c=$(OBJEXT))
+CSRCS = $(CHIP_CSRCS) $(CMN_CSRCS)
+COBJS = $(CSRCS:.c=$(OBJEXT))
 
-SRCS		= $(ASRCS) $(CSRCS)
-OBJS		= $(AOBJS) $(COBJS)
+SRCS = $(ASRCS) $(CSRCS)
+OBJS = $(AOBJS) $(COBJS)
 
-LDFLAGS		+= $(ARCHSCRIPT)
-EXTRA_LIBS	?=
+LDFLAGS += $(ARCHSCRIPT)
+EXTRA_LIBS ?=
+LINKLIBS ?=
 
-LINKLIBS	=
 ifeq ($(WINTOOL),y)
-  LIBPATHS	= ${shell for path in $(LINKLIBS); do dir=`dirname $(TOPDIR)/$$path`;echo "-L\"`cygpath -w $$dir`\"";done}
-  LIBPATHS	+= -L"${shell cygpath -w $(BOARDDIR)}"
+  LIBPATHS += -L"${shell cygpath -w "$(TOPDIR)/lib"}"
+  LIBPATHS += -L"${shell cygpath -w $(BOARDDIR)}"
 else
-  LIBPATHS	= $(addprefix -L$(TOPDIR)/,$(dir $(LINKLIBS)))
-  LIBPATHS	+= -L"$(BOARDDIR)"
+  LIBPATHS += -L"(TOPDIR)/lib"
+  LIBPATHS += -L"$(BOARDDIR)"
 endif
-LDLIBS		= $(patsubst lib%,-l%,$(basename $(notdir $(LINKLIBS))))
 
-BOARDDIR	= $(TOPDIR)/arch/$(CONFIG_ARCH)/src/board
+LDLIBS = $(patsubst %.a,%,$(patsubst lib%,-l%,$(LINKLIBS)))
 
-LIBGCC		= "${shell $(CC) $(ARCHCPUFLAGS) -print-libgcc-file-name}"
+BOARDDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/src/board
 
-VPATH		= chip:common:$(ARCH_SUBDIR)
+LIBGCC = "${shell $(CC) $(ARCHCPUFLAGS) -print-libgcc-file-name}"
+
+VPATH = chip:common:$(ARCH_SUBDIR)
 
 all: $(HEAD_OBJ) libarch$(LIBEXT)
 .PHONY: board/libboard$(LIBEXT)
diff --git a/arch/mips/src/Makefile b/arch/mips/src/Makefile
index 8769f35eca..c9019febdc 100644
--- a/arch/mips/src/Makefile
+++ b/arch/mips/src/Makefile
@@ -36,52 +36,53 @@
 -include $(TOPDIR)/Make.defs
 -include chip/Make.defs
 
-ARCH_SRCDIR	= $(TOPDIR)/arch/$(CONFIG_ARCH)/src
+ARCH_SRCDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/src
 ifeq ($(CONFIG_ARCH_MIPS),y)
-ARCH_SUBDIR     = mips32
+ARCH_SUBDIR = mips32
 endif
 
 ifeq ($(WINTOOL),y)
-  NUTTX		= "${shell cygpath -w $(TOPDIR)/nuttx}"
-  CFLAGS	+= -I "${shell cygpath -w $(ARCH_SRCDIR)/chip}" \
-  		   -I "${shell cygpath -w $(ARCH_SRCDIR)/common}" \
-		   -I "${shell cygpath -w $(ARCH_SRCDIR)/$(ARCH_SUBDIR)}" \
-		   -I "${shell cygpath -w $(TOPDIR)/sched}"
+  NUTTX = "${shell cygpath -w $(TOPDIR)/nuttx}"
+  CFLAGS += -I "${shell cygpath -w $(ARCH_SRCDIR)/chip}" \
+			-I "${shell cygpath -w $(ARCH_SRCDIR)/common}" \
+			-I "${shell cygpath -w $(ARCH_SRCDIR)/$(ARCH_SUBDIR)}" \
+			-I "${shell cygpath -w $(TOPDIR)/sched}"
 else
-  NUTTX		= $(TOPDIR)/nuttx
-  CFLAGS	+= -I$(ARCH_SRCDIR)/chip -I$(ARCH_SRCDIR)/common \
-		   -I$(ARCH_SRCDIR)/$(ARCH_SUBDIR) -I$(TOPDIR)/sched
+  NUTTX = $(TOPDIR)/nuttx
+  CFLAGS += -I$(ARCH_SRCDIR)/chip -I$(ARCH_SRCDIR)/common \
+			-I$(ARCH_SRCDIR)/$(ARCH_SUBDIR) -I$(TOPDIR)/sched
 endif
 
-HEAD_OBJ	= $(HEAD_ASRC:.S=$(OBJEXT))
+HEAD_OBJ = $(HEAD_ASRC:.S=$(OBJEXT))
 
-ASRCS		= $(CHIP_ASRCS) $(CMN_ASRCS)
-AOBJS		= $(ASRCS:.S=$(OBJEXT))
+ASRCS = $(CHIP_ASRCS) $(CMN_ASRCS)
+AOBJS = $(ASRCS:.S=$(OBJEXT))
 
-CSRCS		= $(CHIP_CSRCS) $(CMN_CSRCS)
-COBJS		= $(CSRCS:.c=$(OBJEXT))
+CSRCS = $(CHIP_CSRCS) $(CMN_CSRCS)
+COBJS = $(CSRCS:.c=$(OBJEXT))
 
-SRCS		= $(ASRCS) $(CSRCS)
-OBJS		= $(AOBJS) $(COBJS)
+SRCS = $(ASRCS) $(CSRCS)
+OBJS = $(AOBJS) $(COBJS)
 
-LDFLAGS		+= $(ARCHSCRIPT)
-EXTRA_LIBS	?=
+LDFLAGS += $(ARCHSCRIPT)
+EXTRA_LIBS ?=
+LINKLIBS ?=
 
-LINKLIBS	=
 ifeq ($(WINTOOL),y)
-  LIBPATHS	= ${shell for path in $(LINKLIBS); do dir=`dirname $(TOPDIR)/$$path`;echo "-L\"`cygpath -w $$dir`\"";done}
-  LIBPATHS	+= -L"${shell cygpath -w $(BOARDDIR)}"
+  LIBPATHS += -L"${shell cygpath -w "$(TOPDIR)/lib"}"
+  LIBPATHS += -L"${shell cygpath -w $(BOARDDIR)}"
 else
-  LIBPATHS	= $(addprefix -L$(TOPDIR)/,$(dir $(LINKLIBS)))
-  LIBPATHS	+= -L"$(BOARDDIR)"
+  LIBPATHS += -L"(TOPDIR)/lib"
+  LIBPATHS += -L"$(BOARDDIR)"
 endif
-LDLIBS		= $(patsubst lib%,-l%,$(basename $(notdir $(LINKLIBS))))
 
-BOARDDIR	= $(TOPDIR)/arch/$(CONFIG_ARCH)/src/board
+LDLIBS = $(patsubst %.a,%,$(patsubst lib%,-l%,$(LINKLIBS)))
 
-LIBGCC		= "${shell $(CC) $(ARCHCPUFLAGS) -print-libgcc-file-name}"
+BOARDDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/src/board
 
-VPATH		= chip:common:$(ARCH_SUBDIR)
+LIBGCC = "${shell $(CC) $(ARCHCPUFLAGS) -print-libgcc-file-name}"
+
+VPATH = chip:common:$(ARCH_SUBDIR)
 
 all: $(HEAD_OBJ) libarch$(LIBEXT)
 
diff --git a/arch/rgmp/src/Makefile b/arch/rgmp/src/Makefile
index 80ad78b379..3989ab102c 100644
--- a/arch/rgmp/src/Makefile
+++ b/arch/rgmp/src/Makefile
@@ -53,9 +53,8 @@ LINKSRCS    = rgmp.c bridge.c
 LINKOBJS    = $(LINKSRCS:.c=$(OBJEXT))
 
 LDFLAGS		+= -T$(RGMPLKSCPT)
-LDPATHS		= $(addprefix -L$(TOPDIR)/,$(dir $(LINKLIBS)))
-LDLIBS		= $(patsubst lib%,-l%,$(basename $(notdir $(LINKLIBS))))
-LDPATHS		+= -L$(RGMPLIBDIR)
+LDLIBS		= $(patsubst %.a,%,$(patsubst lib%,-l%,$(LINKLIBS)))
+LDPATHS		+= -L"$(TOPDIR)/lib -L$(RGMPLIBDIR)
 LDLIBS		+= -lrgmp $(shell $(CC) -print-libgcc-file-name)
 
 all: libarch$(LIBEXT)
diff --git a/arch/sh/src/Makefile b/arch/sh/src/Makefile
index 3008983966..2cb22728ef 100644
--- a/arch/sh/src/Makefile
+++ b/arch/sh/src/Makefile
@@ -36,32 +36,39 @@
 -include $(TOPDIR)/Make.defs
 -include chip/Make.defs
 
-ARCH_SRCDIR	= $(TOPDIR)/arch/$(CONFIG_ARCH)/src
-CFLAGS		+= -I$(ARCH_SRCDIR)/chip -I$(ARCH_SRCDIR)/common -I$(TOPDIR)/sched
+ARCH_SRCDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/src
+CFLAGS += -I$(ARCH_SRCDIR)/chip -I$(ARCH_SRCDIR)/common -I$(TOPDIR)/sched
 
-HEAD_OBJ	= $(HEAD_ASRC:.S=$(OBJEXT))
+HEAD_OBJ = $(HEAD_ASRC:.S=$(OBJEXT))
 
-ASRCS		= $(CHIP_ASRCS) $(CMN_ASRCS)
-AOBJS		= $(ASRCS:.S=$(OBJEXT))
+ASRCS = $(CHIP_ASRCS) $(CMN_ASRCS)
+AOBJS = $(ASRCS:.S=$(OBJEXT))
 
-CSRCS		= $(CHIP_CSRCS) $(CMN_CSRCS)
-COBJS		= $(CSRCS:.c=$(OBJEXT))
+CSRCS = $(CHIP_CSRCS) $(CMN_CSRCS)
+COBJS = $(CSRCS:.c=$(OBJEXT))
 
-SRCS		= $(ASRCS) $(CSRCS)
-OBJS		= $(AOBJS) $(COBJS)
+SRCS = $(ASRCS) $(CSRCS)
+OBJS = $(AOBJS) $(COBJS)
 
-LDFLAGS		+= $(ARCHSCRIPT)
-EXTRA_LIBS	?=
+LDFLAGS += $(ARCHSCRIPT)
+EXTRA_LIBS ?=
+LINKLIBS ?=
 
-LINKLIBS	=
-LDPATHES	= $(addprefix -L$(TOPDIR)/,$(dir $(LINKLIBS)))
-LDLIBS		= $(patsubst lib%,-l%,$(basename $(notdir $(LINKLIBS))))
+ifeq ($(WINTOOL),y)
+  LIBPATHS += -L"${shell cygpath -w "$(TOPDIR)/lib"}"
+  LIBPATHS += -L"${shell cygpath -w $(BOARDDIR)}"
+else
+  LIBPATHS += -L"(TOPDIR)/lib"
+  LIBPATHS += -L"$(BOARDDIR)"
+endif
 
-BOARDDIR	= $(TOPDIR)/arch/$(CONFIG_ARCH)/src/board
+LDLIBS = $(patsubst %.a,%,$(patsubst lib%,-l%,$(LINKLIBS)))
 
-LIBGCC		= ${shell $(CC) $(ARCHCPUFLAGS) -print-libgcc-file-name}
+BOARDDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/src/board
 
-VPATH		= chip:common
+LIBGCC = ${shell $(CC) $(ARCHCPUFLAGS) -print-libgcc-file-name}
+
+VPATH = chip:common
 
 all: $(HEAD_OBJ) libarch$(LIBEXT)
 
@@ -83,7 +90,7 @@ board/libboard$(LIBEXT):
 
 nuttx: $(HEAD_OBJ) board/libboard$(LIBEXT)
 	@echo "LD: nuttx"
-	@$(LD) --entry=__start $(LDFLAGS) $(LDPATHES) -L$(BOARDDIR) -o $(TOPDIR)/$@ $(HEAD_OBJ) \
+	@$(LD) --entry=__start $(LDFLAGS) $(LDPATHS) -L$(BOARDDIR) -o $(TOPDIR)/$@ $(HEAD_OBJ) \
 		--start-group $(LDLIBS) -lboard $(EXTRA_LIBS) $(LIBGCC) --end-group
 	@$(NM) $(TOPDIR)/$@ | \
 	grep -v '\(compiled\)\|\(\$(OBJEXT)$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
diff --git a/arch/sim/src/Makefile b/arch/sim/src/Makefile
index 1e4d08736b..3719465b37 100644
--- a/arch/sim/src/Makefile
+++ b/arch/sim/src/Makefile
@@ -40,11 +40,11 @@ CFLAGS += -I$(TOPDIR)/sched
 ASRCS = up_setjmp.S
 AOBJS = $(ASRCS:.S=$(OBJEXT))
 CSRCS = up_initialize.c up_idle.c up_interruptcontext.c \
-		  up_initialstate.c up_createstack.c up_usestack.c \
-		  up_releasestack.c  up_unblocktask.c up_blocktask.c \
-		  up_releasepending.c up_reprioritizertr.c \
-		  up_exit.c up_schedulesigaction.c up_allocateheap.c \
-		  up_devconsole.c
+		up_initialstate.c up_createstack.c up_usestack.c \
+		up_releasestack.c  up_unblocktask.c up_blocktask.c \
+		up_releasepending.c up_reprioritizertr.c \
+		up_exit.c up_schedulesigaction.c up_allocateheap.c \
+		up_devconsole.c
 HOSTSRCS = up_stdio.c up_hostusleep.c
 
 ifeq ($(CONFIG_NX_LCDDRIVER),y)
@@ -126,9 +126,10 @@ endif
 # Determine which NuttX libraries will need to be linked in
 # Most are provided by LINKLIBS on the MAKE command line
 
-LINKLIBS =
-LDPATHS = $(addprefix -L$(TOPDIR)/,$(dir $(LINKLIBS)))
-LDLIBS = $(patsubst lib%,-l%,$(basename $(notdir $(LINKLIBS))))
+LINKLIBS ?=
+LIBPATHS += -L"(TOPDIR)/lib"
+LIBPATHS += -L"$(BOARDDIR)"
+LDLIBS = $(patsubst %.a,%,$(patsubst lib%,-l%,$(LINKLIBS)))
 
 # Add the board-specific library and directory
 
diff --git a/arch/x86/src/Makefile b/arch/x86/src/Makefile
index 7225f31cf0..b4aa02fb15 100644
--- a/arch/x86/src/Makefile
+++ b/arch/x86/src/Makefile
@@ -36,60 +36,61 @@
 -include $(TOPDIR)/Make.defs
 -include chip/Make.defs
 
-ARCH_SRCDIR	= $(TOPDIR)/arch/$(CONFIG_ARCH)/src
+ARCH_SRCDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/src
 ifeq ($(CONFIG_ARCH_I486),y)
-ARCH_SUBDIR	= i486
+ARCH_SUBDIR = i486
 endif
 
 ifeq ($(WINTOOL),y)
-  NUTTX		= "${shell cygpath -w $(TOPDIR)/nuttx}"
-  CFLAGS	+= -I "${shell cygpath -w $(ARCH_SRCDIR)/chip}" \
-  		   -I "${shell cygpath -w $(ARCH_SRCDIR)/common}" \
-		   -I "${shell cygpath -w $(ARCH_SRCDIR)/$(ARCH_SUBDIR)}" \
-		   -I "${shell cygpath -w $(TOPDIR)/sched}"
+  NUTTX = "${shell cygpath -w $(TOPDIR)/nuttx}"
+  CFLAGS += -I "${shell cygpath -w $(ARCH_SRCDIR)/chip}" \
+		-I "${shell cygpath -w $(ARCH_SRCDIR)/common}" \
+		-I "${shell cygpath -w $(ARCH_SRCDIR)/$(ARCH_SUBDIR)}" \
+		-I "${shell cygpath -w $(TOPDIR)/sched}"
 else
-  NUTTX		= $(TOPDIR)/nuttx
-  CFLAGS	+= -I$(ARCH_SRCDIR)/chip -I$(ARCH_SRCDIR)/common \
-		   -I$(ARCH_SRCDIR)/$(ARCH_SUBDIR) -I$(TOPDIR)/sched
+  NUTTX = $(TOPDIR)/nuttx
+  CFLAGS += -I$(ARCH_SRCDIR)/chip -I$(ARCH_SRCDIR)/common \
+		-I$(ARCH_SRCDIR)/$(ARCH_SUBDIR) -I$(TOPDIR)/sched
 endif
 
-HEAD_OBJ	= $(HEAD_ASRC:.S=$(OBJEXT))
+HEAD_OBJ = $(HEAD_ASRC:.S=$(OBJEXT))
 
-ASRCS		= $(CHIP_ASRCS) $(CMN_ASRCS)
-AOBJS		= $(ASRCS:.S=$(OBJEXT))
+ASRCS = $(CHIP_ASRCS) $(CMN_ASRCS)
+AOBJS = $(ASRCS:.S=$(OBJEXT))
 
-CSRCS		= $(CHIP_CSRCS) $(CMN_CSRCS)
-COBJS		= $(CSRCS:.c=$(OBJEXT))
+CSRCS = $(CHIP_CSRCS) $(CMN_CSRCS)
+COBJS = $(CSRCS:.c=$(OBJEXT))
 
-SRCS		= $(ASRCS) $(CSRCS)
-OBJS		= $(AOBJS) $(COBJS)
+SRCS = $(ASRCS) $(CSRCS)
+OBJS = $(AOBJS) $(COBJS)
 
-LDFLAGS		+= $(ARCHSCRIPT)
-EXTRA_LIBS	?=
+LDFLAGS += $(ARCHSCRIPT)
+EXTRA_LIBS ?=
+LINKLIBS ?=
 
-LINKLIBS	=
 ifeq ($(WINTOOL),y)
-  LIBPATHS	= ${shell for path in $(LINKLIBS); do dir=`dirname $(TOPDIR)/$$path`;echo "-L\"`cygpath -w $$dir`\"";done}
-  LIBPATHS	+= -L"${shell cygpath -w $(BOARDDIR)}"
+  LIBPATHS += -L"${shell cygpath -w "$(TOPDIR)/lib"}"
+  LIBPATHS += -L"${shell cygpath -w $(BOARDDIR)}"
 else
-  LIBPATHS	= $(addprefix -L$(TOPDIR)/,$(dir $(LINKLIBS)))
-  LIBPATHS	+= -L"$(BOARDDIR)"
+  LIBPATHS += -L"(TOPDIR)/lib"
+  LIBPATHS += -L"$(BOARDDIR)"
 endif
-LDLIBS		= $(patsubst lib%,-l%,$(basename $(notdir $(LINKLIBS))))
 
-BOARDDIR	= $(TOPDIR)/arch/$(CONFIG_ARCH)/src/board
+LDLIBS = $(patsubst %.a,%,$(patsubst lib%,-l%,$(LINKLIBS)))
 
-LIBGCC		= "${shell $(CC) $(ARCHCPUFLAGS) -print-libgcc-file-name}"
+BOARDDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/src/board
+
+LIBGCC = "${shell $(CC) $(ARCHCPUFLAGS) -print-libgcc-file-name}"
 
 ifeq ($(HOSTOS),FreeBSD)
-  HOST_ARCH	= ${shell uname -m 2>/dev/null || echo "Other"}
+  HOST_ARCH = ${shell uname -m 2>/dev/null || echo "Other"}
   ifeq ($(HOST_ARCH),amd64)
-    LDFLAGS	+= -melf_i386
-    LIBGCC	= "/usr/lib32/libgcc.a"
+    LDFLAGS += -melf_i386
+    LIBGCC = "/usr/lib32/libgcc.a"
   endif
 endif
 
-VPATH		= chip:common:$(ARCH_SUBDIR)
+VPATH = chip:common:$(ARCH_SUBDIR)
 
 all: $(HEAD_OBJ) libarch$(LIBEXT)
 
diff --git a/arch/z16/src/Makefile b/arch/z16/src/Makefile
index 088aeebd2e..3da8c2d676 100644
--- a/arch/z16/src/Makefile
+++ b/arch/z16/src/Makefile
@@ -36,38 +36,38 @@
 -include $(TOPDIR)/Make.defs
 -include chip/Make.defs
 
-COMPILER	= ${shell basename $(CC)}
-ARCHSRCDIR	= $(TOPDIR)/arch/$(CONFIG_ARCH)/src
+COMPILER = ${shell basename $(CC)}
+ARCHSRCDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/src
 ifeq ($(COMPILER),zneocc.exe)
-WARCHSRCDIR	:= ${shell cygpath -w $(ARCHSRCDIR)}
-USRINCLUDES	= -usrinc:'.;$(WTOPDIR)\sched;$(WARCHSRCDIR);$(WARCHSRCDIR)\common'
+WARCHSRCDIR := ${shell cygpath -w $(ARCHSRCDIR)}
+USRINCLUDES = -usrinc:'.;$(WTOPDIR)\sched;$(WARCHSRCDIR);$(WARCHSRCDIR)\common'
 else
-WARCHSRCDIR	= $(ARCHSRCDIR)
-USRINCLUDES	= -I$(TOPDIR)/sched -I$(ARCHSRCDIR) -I$(ARCHSRCDIR)/common
+WARCHSRCDIR = $(ARCHSRCDIR)
+USRINCLUDES = -I$(TOPDIR)/sched -I$(ARCHSRCDIR) -I$(ARCHSRCDIR)/common
 endif
-INCLUDES	= $(ARCHSTDINCLUDES) $(USRINCLUDES)
-CFLAGS		= $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(INCLUDES) $(ARCHDEFINES) $(EXTRADEFINES)
-CPPFLAGS	+= -I$(ARCHSRCDIR)
+INCLUDES = $(ARCHSTDINCLUDES) $(USRINCLUDES)
+CFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(INCLUDES) $(ARCHDEFINES) $(EXTRADEFINES)
+CPPFLAGS += -I$(ARCHSRCDIR)
 ifeq ($(COMPILER),zneocc.exe)
-LDFLAGS 	+= @"${shell cygpath -w $(ARCHSRCDIR)/nuttx.linkcmd}"
+LDFLAGS  += @"${shell cygpath -w $(ARCHSRCDIR)/nuttx.linkcmd}"
 endif
 
-HEAD_ASRC	= $(HEAD_SSRC:.S=$(ASMEXT))
-HEAD_OBJ	= $(HEAD_SSRC:.S=$(OBJEXT))
+HEAD_ASRC = $(HEAD_SSRC:.S=$(ASMEXT))
+HEAD_OBJ = $(HEAD_SSRC:.S=$(OBJEXT))
 
-SSRCS		= $(CHIP_SSRCS) $(CMN_SSRCS)
-ASRCS		= $(SSRCS:.S=$(ASMEXT))
-AOBJS		= $(SSRCS:.S=$(OBJEXT))
+SSRCS = $(CHIP_SSRCS) $(CMN_SSRCS)
+ASRCS = $(SSRCS:.S=$(ASMEXT))
+AOBJS = $(SSRCS:.S=$(OBJEXT))
 
-CSRCS		= $(CHIP_CSRCS) $(CMN_CSRCS)
-COBJS		= $(CSRCS:.c=$(OBJEXT))
+CSRCS = $(CHIP_CSRCS) $(CMN_CSRCS)
+COBJS = $(CSRCS:.c=$(OBJEXT))
 
-DEPSRCS 	= $(SSRCS) $(CSRCS)
-OBJS		= $(AOBJS) $(COBJS)
+DEPSRCS = $(SSRCS) $(CSRCS)
+OBJS = $(AOBJS) $(COBJS)
 
-BOARDDIR	= $(TOPDIR)/arch/$(CONFIG_ARCH)/src/board
+BOARDDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/src/board
 
-VPATH		= chip:common
+VPATH = chip:common
 
 all: $(HEAD_OBJ) libarch$(LIBEXT)
 
@@ -103,7 +103,7 @@ nuttx.linkcmd: $(LINKCMDTEMPLATE)
 	@echo "\"${shell cygpath -w $(TOPDIR)/nuttx}\"= \\" >>nuttx.linkcmd
 	@echo "  \"${shell cygpath -w $(ARCHSRCDIR)/$(HEAD_OBJ)}\", \\" >>nuttx.linkcmd
 	@( for lib in $(LINKLIBS); do \
-		echo "  \"`cygpath -w $(TOPDIR)/$${lib}`\", \\" >>nuttx.linkcmd; \
+		echo "  \"`cygpath -w $(TOPDIR)/lib/$${lib}`\", \\" >>nuttx.linkcmd; \
 	done ; )
 	@echo "  \"${shell cygpath -w $(ARCHSRCDIR)/board/libboard$(LIBEXT)}\", \\"  >>nuttx.linkcmd
 	@echo "  \"${shell cygpath -w $(ZDSSTDLIBDIR)/chelpld$(LIBEXT)}\", \\"  >>nuttx.linkcmd
diff --git a/arch/z80/src/Makefile.sdcc b/arch/z80/src/Makefile.sdcc
index 522c8d6f90..32169d4420 100644
--- a/arch/z80/src/Makefile.sdcc
+++ b/arch/z80/src/Makefile.sdcc
@@ -37,49 +37,49 @@
 # Tools
 # CFLAGS, CPPFLAGS, ASFLAGS, LDFLAGS are set in $(TOPDIR)/Make.defs
 
-CFLAGS		+= -I$(ARCH_SRCDIR)/chip -I$(ARCH_SRCDIR)/common -I$(TOPDIR)/sched
-CPPFLAGS	+= -D__ASSEMBLY__
+CFLAGS += -I$(ARCH_SRCDIR)/chip -I$(ARCH_SRCDIR)/common -I$(TOPDIR)/sched
+CPPFLAGS += -D__ASSEMBLY__
 
 ############################################################################
 # Files and directories
 
 # There should be one head source (.asm file)
 
-HEAD_OBJ	= $(HEAD_ASRC:$(ASMEXT)=$(OBJEXT))
+HEAD_OBJ = $(HEAD_ASRC:$(ASMEXT)=$(OBJEXT))
 
 # Assembly sources and objects
 
-ASRCS		= $(CHIP_ASRCS) $(CMN_ASRCS)
-AOBJS		= $(ASRCS:$(ASMEXT)=$(OBJEXT))
+ASRCS = $(CHIP_ASRCS) $(CMN_ASRCS)
+AOBJS = $(ASRCS:$(ASMEXT)=$(OBJEXT))
 
 # C sources and objects
 
-CSRCS		= $(CHIP_CSRCS) $(CMN_CSRCS)
-COBJS		= $(CSRCS:.c=$(OBJEXT))
+CSRCS = $(CHIP_CSRCS) $(CMN_CSRCS)
+COBJS = $(CSRCS:.c=$(OBJEXT))
 
 # All sources and objcts
 
-SRCS		= $(ASRCS) $(CSRCS)
-OBJS		= $(AOBJS) $(COBJS)
+SRCS = $(ASRCS) $(CSRCS)
+OBJS = $(AOBJS) $(COBJS)
 
 # Sources that can have dependencies (no .asm files)
 
-DEPSRCS		= $(CSRCS)
+DEPSRCS = $(CSRCS)
 
 # Directories
 
-ARCH_SRCDIR	= $(TOPDIR)/arch/$(CONFIG_ARCH)/src
-BOARDDIR	= $(TOPDIR)/arch/$(CONFIG_ARCH)/src/board
+ARCH_SRCDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/src
+BOARDDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/src/board
 
-VPATH		= chip:common:board
+VPATH = chip:common:board
 
 # Libraries
 
-LIBGCC		= ${shell $(CC) $(ARCHCPUFLAGS) -print-libgcc-file-name}
+LIBGCC = ${shell $(CC) $(ARCHCPUFLAGS) -print-libgcc-file-name}
 
 # Supports dynamic sizing of HEAP.
 #
-HEAP_BASE	= ${shell ./mkhpbase.sh}
+HEAP_BASE = ${shell ./mkhpbase.sh}
 
 ############################################################################
 # Targets
@@ -152,7 +152,7 @@ pass1.hex: up_mem.h asm_mem.h $(SDCCLIBDIR)/myz80.lib $(HEAD_OBJ) board/libboard
 	@echo "-k $(SDCCLIBDIR)" >>pass1.lnk		# Path to SDCC z80 library
 	@echo "-l libboard$(LIBEXT)" >>pass1.lnk	# Name of board library
 	@for LIB in $(LINKLIBS); do \
-		echo "-l $(TOPDIR)/$$LIB" >> pass1.lnk ;\
+		echo "-l $(TOPDIR)/lib/$$LIB" >> pass1.lnk ;\
 	done
 	@echo "-l myz80.lib" >>pass1.lnk		# Name of SDCC z80 library
 ifneq ($(CONFIG_LINKER_START_AREA),)
@@ -185,7 +185,7 @@ nuttx.hex: up_mem.h asm_mem.h $(SDCCLIBDIR)/myz80.lib $(HEAD_OBJ) board/libboard
 	@echo "-k $(SDCCLIBDIR)" >>nuttx.lnk		# Path to SDCC z80 library
 	@echo "-l libboard$(LIBEXT)" >>nuttx.lnk	# Name of board library
 	@for LIB in $(LINKLIBS); do \
-		echo "-l $(TOPDIR)/$$LIB" >> nuttx.lnk ;\
+		echo "-l $(TOPDIR)/lib/$$LIB" >> nuttx.lnk ;\
 	done
 	@echo "-l myz80.lib" >>nuttx.lnk		# Name of SDCC z80 library
 ifneq ($(CONFIG_LINKER_START_AREA),)