diff --git a/src/flash/Makefile.am b/src/flash/Makefile.am
index d448197a978d80b925d19a64edf4d322042917d6..e1224519b24a7eda2efe92fe9487f1607eeb66ef 100644
--- a/src/flash/Makefile.am
+++ b/src/flash/Makefile.am
@@ -6,65 +6,78 @@ AM_CPPFLAGS = \
 METASOURCES = AUTO
 noinst_LTLIBRARIES = libflash.la
 libflash_la_SOURCES = \
-	arm_nandio.c \
-	flash.c \
-	lpc2000.c \
-	lpc288x.c \
-	lpc2900.c \
+	$(FLASH_SRCS) \
+	$(NAND_SRCS) \
+	mflash.c
+
+FLASH_SRCS = \
 	cfi.c \
 	non_cfi.c \
-	at91sam7.c \
+	faux.c \
+	$(FLASH_DEVICES_SRCS) \
+	flash.c
+
+FLASH_DEVICES_SRCS = \
+	aduc702x.c \
 	at91sam3.c \
-	davinci_nand.c \
+	at91sam7.c \
+	avrf.c \
+	ecos.c \
+	lpc2000.c \
+	lpc288x.c \
+	lpc2900.c \
+	ocl.c \
+	pic32mx.c \
+	stellaris.c \
+	stm32x.c \
 	str7x.c \
 	str9x.c \
-	aduc702x.c \
-	nand.c \
+	str9xpec.c \
+	tms470.c
+
+NAND_SRCS = \
+	arm_nandio.c \
 	nand_ecc.c \
 	nand_ecc_kw.c \
+	$(NAND_DEVICES_SRCS) \
+	nand.c
+
+NAND_DEVICES_SRCS = \
+	davinci_nand.c \
 	lpc3180_nand_controller.c \
-	stellaris.c \
-	str9xpec.c \
-	stm32x.c \
-	tms470.c \
-	ecos.c \
+	mx3_nand.c \
 	orion_nand.c \
 	s3c24xx_nand.c \
 	s3c2410_nand.c \
 	s3c2412_nand.c \
 	s3c2440_nand.c \
-	s3c2443_nand.c \
-	ocl.c \
-	mflash.c \
-	pic32mx.c \
-	avrf.c \
-	faux.c \
-	mx3_nand.c
+	s3c2443_nand.c
+
 
 noinst_HEADERS = \
 	arm_nandio.h \
+	at91sam7.h \
+	at91sam3.h \
+	avrf.h \
+	cfi.h \
 	flash.h \
 	lpc2000.h \
 	lpc288x.h \
 	lpc2900.h \
-	cfi.h \
+	lpc3180_nand_controller.h \
+	mflash.h \
+	mx3_nand.h \
 	non_cfi.h \
-	at91sam7.h \
-	at91sam3.h \
-	str7x.h \
-	str9x.h \
 	nand.h \
-	lpc3180_nand_controller.h \
+	ocl.h \
+	pic32mx.h \
 	stellaris.h \
-	str9xpec.h \
 	stm32x.h \
+	str7x.h \
+	str9x.h \
+	str9xpec.h \
 	tms470.h \
 	s3c24xx_nand.h \
-	s3c24xx_regs_nand.h \
-	mflash.h \
-	ocl.h \
-	pic32mx.h \
-	avrf.h \
-	mx3_nand.h
+	s3c24xx_regs_nand.h
 
 MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
diff --git a/src/target/Makefile.am b/src/target/Makefile.am
index f62ba1d878dd87b43a565dc1db5a10bc5a5eef73..9dd0bdc91b7b4cc5999ea9806f809a839b6bf152 100644
--- a/src/target/Makefile.am
+++ b/src/target/Makefile.am
@@ -25,90 +25,115 @@ $(DEBUG_HEADER): $(BIN2C) $(DEBUG_HANDLER)
 METASOURCES = AUTO
 noinst_LTLIBRARIES = libtarget.la
 libtarget_la_SOURCES = \
-	target.c \
+	$(TARGET_CORE_SRC) \
+	$(ARM_DEBUG_SRC) \
+	$(ARMV4_5_SRC) \
+	$(ARMV6_SRC) \
+	$(ARMV7_SRC) \
+	$(ARM_MISC_SRC) \
+	$(MIPS32_SRC) \
+	avrt.c
+
+TARGET_CORE_SRC = \
+	algorithm.c \
 	register.c \
+	image.c \
 	breakpoints.c \
+	target.c \
+	target_request.c
+
+ARMV4_5_SRC = \
 	armv4_5.c \
-	embeddedice.c \
-	etm.c \
+	armv4_5_mmu.c \
+	armv4_5_cache.c \
+	$(ARM7_9_SRC)
+
+ARM7_9_SRC = \
+	arm7_9_common.c \
 	arm7tdmi.c \
+	arm720t.c \
 	arm9tdmi.c \
-	arm_jtag.c \
-	arm7_9_common.c \
-	algorithm.c \
 	arm920t.c \
-	arm720t.c \
-	armv4_5_mmu.c \
-	armv4_5_cache.c \
-	arm_disassembler.c \
 	arm966e.c \
-	arm926ejs.c \
+	arm926ejs.c
+
+ARM_MISC_SRC = \
 	fa526.c \
 	feroceon.c \
-	etb.c \
-	xscale.c \
-	arm_simulator.c \
-	image.c \
+	xscale.c
+
+ARMV6_SRC = \
+	arm11.c \
+	arm11_dbgtap.c
+
+ARMV7_SRC = \
 	armv7m.c \
-	armv7a.c \
 	cortex_m3.c \
-	cortex_a8.c \
+	armv7a.c \
+	cortex_a8.c
+
+ARM_DEBUG_SRC = \
+	arm_jtag.c \
+	arm_disassembler.c \
+	arm_simulator.c \
 	arm_adi_v5.c \
-	etm_dummy.c \
-	$(OOCD_TRACE_FILES) \
-	target_request.c \
+	embeddedice.c \
 	trace.c \
-	arm11.c \
-	arm11_dbgtap.c \
+	etb.c \
+	etm.c \
+	$(OOCD_TRACE_FILES) \
+	etm_dummy.c
+
+MIPS32_SRC = \
 	mips32.c \
 	mips_m4k.c \
 	mips32_pracc.c \
 	mips32_dmaacc.c \
-	mips_ejtag.c \
-	avrt.c
+	mips_ejtag.c
+
 
 noinst_HEADERS = \
-	target.h \
-	target_type.h \
-	trace.h \
-	register.h \
-	armv4_5.h \
-	embeddedice.h \
-	etm.h \
-	arm7tdmi.h \
-	arm9tdmi.h \
+	algorithm.h \
 	arm_jtag.h \
+	arm_adi_v5.h \
+	arm_disassembler.h \
+	arm_simulator.h \
 	arm7_9_common.h \
-	arm920t.h \
+	arm7tdmi.h \
 	arm720t.h \
+	arm9tdmi.h \
+	arm920t.h \
+	arm926ejs.h \
+	arm966e.h \
+	arm11.h \
+	armv4_5.h \
 	armv4_5_mmu.h \
 	armv4_5_cache.h \
-	breakpoints.h \
-	algorithm.h \
-	arm_disassembler.h \
-	arm966e.h \
-	arm926ejs.h \
-	etb.h \
-	xscale.h \
-	xscale_debug.h \
-	arm_simulator.h \
-	image.h \
-	armv7m.h \
 	armv7a.h \
+	armv7m.h \
+	avrt.h \
+	breakpoints.h \
 	cortex_m3.h \
 	cortex_a8.h \
-	arm_adi_v5.h \
+	embeddedice.h \
+	etb.h \
+	etm.h \
 	etm_dummy.h \
-	oocd_trace.h \
-	target_request.h \
-	trace.h \
-	arm11.h \
+	image.h \
 	mips32.h \
 	mips_m4k.h \
 	mips_ejtag.h \
 	mips32_pracc.h \
 	mips32_dmaacc.h \
-	avrt.h
+	oocd_trace.h \
+	register.h \
+	target.h \
+	target_type.h \
+	trace.h \
+	target_request.h \
+	trace.h \
+	xscale.h \
+	xscale_debug.h
 
 nobase_dist_pkglib_DATA =
 nobase_dist_pkglib_DATA += ecos/at91eb40a.elf