#TEXT_BASE = do-not-use-me
 
 CFLAGS_lib_generic += -O2
-CFLAGS_lzma += -O2
+CFLAGS_lib_generic/lzma += -O2
 
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS += $(LDR_FLAGS-$(CONFIG_BFIN_BOOT_MODE))
 
 #TEXT_BASE = do-not-use-me
 
 CFLAGS_lib_generic += -O2
-CFLAGS_lzma += -O2
+CFLAGS_lib_generic/lzma += -O2
 
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS += $(LDR_FLAGS-$(CONFIG_BFIN_BOOT_MODE))
 
 #TEXT_BASE = do-not-use-me
 
 CFLAGS_lib_generic += -O2
-CFLAGS_lzma += -O2
+CFLAGS_lib_generic/lzma += -O2
 
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS += $(LDR_FLAGS-$(CONFIG_BFIN_BOOT_MODE))
 
 #TEXT_BASE = do-not-use-me
 
 CFLAGS_lib_generic += -O2
-CFLAGS_lzma += -O2
+CFLAGS_lib_generic/lzma += -O2
 
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_PARA := --bits 16 --dma 8
 
 #TEXT_BASE = do-not-use-me
 
 CFLAGS_lib_generic += -O2
-CFLAGS_lzma += -O2
+CFLAGS_lib_generic/lzma += -O2
 
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_PARA := --bits 16 --dma 8
 
 #TEXT_BASE = do-not-use-me
 
 CFLAGS_lib_generic += -O2
-CFLAGS_lzma += -O2
+CFLAGS_lib_generic/lzma += -O2
 
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_PARA := --bits 16 --dma 8
 
 #TEXT_BASE = do-not-use-me
 
 CFLAGS_lib_generic += -O2
-CFLAGS_lzma += -O2
+CFLAGS_lib_generic/lzma += -O2
 
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_PARA := --bits 16 --dma 8
 
 #TEXT_BASE = do-not-use-me
 
 CFLAGS_lib_generic += -O2
-CFLAGS_lzma += -O2
+CFLAGS_lib_generic/lzma += -O2
 
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_PARA       := --dma 6
 
 #TEXT_BASE = do-not-use-me
 
 CFLAGS_lib_generic += -O2
-CFLAGS_lzma += -O2
+CFLAGS_lib_generic/lzma += -O2
 
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_PARA := --bits 16
 
 #TEXT_BASE = do-not-use-me
 
 CFLAGS_lib_generic += -O2
-CFLAGS_lzma += -O2
+CFLAGS_lib_generic/lzma += -O2
 
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_PARA := --bits 16
 
 #TEXT_BASE = do-not-use-me
 
 CFLAGS_lib_generic += -O2
-CFLAGS_lzma += -O2
+CFLAGS_lib_generic/lzma += -O2
 
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS += $(LDR_FLAGS-$(CONFIG_BFIN_BOOT_MODE))
 
 #TEXT_BASE = do-not-use-me
 
 CFLAGS_lib_generic += -O2
-CFLAGS_lzma += -O2
+CFLAGS_lib_generic/lzma += -O2
 
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_PARA := --bits 16 --dma 8
 
 #TEXT_BASE = do-not-use-me
 
 CFLAGS_lib_generic += -O2
-CFLAGS_lzma += -O2
+CFLAGS_lib_generic/lzma += -O2
 
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_PARA := --bits 16 --dma 8
 
 #TEXT_BASE = do-not-use-me
 
 CFLAGS_lib_generic += -O2
-CFLAGS_lzma += -O2
+CFLAGS_lib_generic/lzma += -O2
 
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_PARA := --bits 16 --dma 8
 
 #TEXT_BASE = do-not-use-me
 
 CFLAGS_lib_generic += -O2
-CFLAGS_lzma += -O2
+CFLAGS_lib_generic/lzma += -O2
 
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_PARA       := --dma 6
 
 #TEXT_BASE = do-not-use-me
 
 CFLAGS_lib_generic += -O2
-CFLAGS_lzma += -O2
+CFLAGS_lib_generic/lzma += -O2
 
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_PARA := --bits 16
 
 #
 
 TEXT_BASE = 0x38040000
-CFLAGS_dlmalloc.o += -Wa,--no-warn -fno-strict-aliasing
+CFLAGS_common/dlmalloc.o += -Wa,--no-warn -fno-strict-aliasing
 PLATFORM_RELFLAGS += -fvisibility=hidden
 PLATFORM_CPPFLAGS += -fno-dwarf2-cfi-asm
 PLATFORM_LDFLAGS += -pic --emit-relocs -Bsymbolic -Bsymbolic-functions
 
 #TEXT_BASE = do-not-use-me
 
 CFLAGS_lib_generic += -O2
-CFLAGS_lzma += -O2
+CFLAGS_lib_generic/lzma += -O2
 
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS += $(LDR_FLAGS-$(CONFIG_BFIN_BOOT_MODE))
 
 #TEXT_BASE = do-not-use-me
 
 CFLAGS_lib_generic += -O2
-CFLAGS_lzma += -O2
+CFLAGS_lib_generic/lzma += -O2
 
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_PARA := --bits 16 --dma 8
 
 #########################################################################
 
 # Allow boards to use custom optimize flags on a per dir/file basis
-BCURDIR := $(notdir $(CURDIR))
+BCURDIR = $(subst $(SRCTREE)/,,$(CURDIR:$(obj)%=%))
 $(obj)%.s:     %.S
-       $(CPP) $(AFLAGS) $(AFLAGS_$(@F)) $(AFLAGS_$(BCURDIR)) -o $@ $<
+       $(CPP) $(AFLAGS) $(AFLAGS_$(BCURDIR)/$(@F)) $(AFLAGS_$(BCURDIR)) \
+               -o $@ $<
 $(obj)%.o:     %.S
-       $(CC)  $(AFLAGS) $(AFLAGS_$(@F)) $(AFLAGS_$(BCURDIR)) -o $@ $< -c
+       $(CC)  $(AFLAGS) $(AFLAGS_$(BCURDIR)/$(@F)) $(AFLAGS_$(BCURDIR)) \
+               -o $@ $< -c
 $(obj)%.o:     %.c
-       $(CC)  $(CFLAGS) $(CFLAGS_$(@F)) $(CFLAGS_$(BCURDIR)) -o $@ $< -c
+       $(CC)  $(CFLAGS) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) \
+               -o $@ $< -c
 $(obj)%.i:     %.c
-       $(CPP) $(CFLAGS) $(CFLAGS_$(@F)) $(CFLAGS_$(BCURDIR)) -o $@ $< -c
+       $(CPP) $(CFLAGS) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) \
+               -o $@ $< -c
 $(obj)%.s:     %.c
-       $(CC)  $(CFLAGS) $(CFLAGS_$(@F)) $(CFLAGS_$(BCURDIR)) -o $@ $< -c -S
+       $(CC)  $(CFLAGS) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) \
+               -o $@ $< -c -S
 
 #########################################################################