-if FT2232_LIBFTDI
-FTDI2232LIB = -lftdi -lusb
-else
-if USB_BLASTER_LIBFTDI
-FTDI2232LIB = -lftdi -lusb
-else
-if PRESTO_LIBFTDI
-FTDI2232LIB = -lftdi -lusb
-else
-FTDI2232LIB =
-endif
-endif
-endif
-
-if USBPROG
-LIBUSB = -lusb
-else
-if JLINK
-LIBUSB = -lusb
-else
-if RLINK
-LIBUSB = -lusb
-else
-if VSLLINK
-LIBUSB = -lusb
-else
-LIBUSB =
-endif
-endif
-endif
-endif
-
-libopenocd_la_LIBADD = \
- $(top_builddir)/src/xsvf/libxsvf.la \
- $(top_builddir)/src/svf/libsvf.la \
- $(top_builddir)/src/pld/libpld.la \
- $(top_builddir)/src/jtag/libjtag.la \
- $(top_builddir)/src/flash/libflash.la \
- $(top_builddir)/src/target/libtarget.la \
- $(top_builddir)/src/server/libserver.la \
- $(top_builddir)/src/helper/libhelper.la \
- $(FTDI2232LIB) $(MINGWLDADD) $(LIBUSB)
-
-if HTTPD
-libopenocd_la_LIBADD += -lmicrohttpd
-endif
-
-STARTUP_TCL_SRCS = \
- $(srcdir)/helper/startup.tcl \
- $(srcdir)/jtag/startup.tcl \
- $(srcdir)/target/startup.tcl \
- $(srcdir)/flash/startup.tcl \
- $(srcdir)/server/startup.tcl
-
-EXTRA_DIST = $(STARTUP_TCL_SRCS)
-
-BUILT_SOURCES = startup.tcl
-
-startup.tcl: $(STARTUP_TCL_SRCS)
- cat $^ > $@
-
-BIN2C = $(top_builddir)/src/helper/bin2char$(EXEEXT_FOR_BUILD)
-
-# Convert .tcl to cfile
-startup_tcl.c: startup.tcl $(BIN2C)
- $(BIN2C) openocd_startup_tcl < $< > $@ || rm -f $@
-
-# add startup_tcl.c to make clean list
-CLEANFILES = startup.tcl startup_tcl.c
-
-
-MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
-
-# The "quick" target builds executables & reinstalls the executables
-# Primary use: developer types to quicken the edit/compile/debug
-# cycle. by not requiring a "full build and full install". Note the
-# assumption is: You are only rebuilding the EXE.... and everything
-# else is/was previously installed.
-#
-# use at your own risk
-quick: all install-binPROGRAMS
-
+%C%_libopenocd_la_LIBADD = \
+ %D%/xsvf/libxsvf.la \
+ %D%/svf/libsvf.la \
+ %D%/pld/libpld.la \
+ %D%/jtag/libjtag.la \
+ %D%/transport/libtransport.la \
+ %D%/flash/libflash.la \
+ %D%/target/libtarget.la \
+ %D%/server/libserver.la \
+ %D%/rtos/librtos.la \
+ %D%/helper/libhelper.la \
+ %D%/rtt/librtt.la
+
+BIN2C = $(srcdir)/%D%/helper/bin2char.sh
+
+STARTUP_TCL_SRCS =
+EXTRA_DIST += $(STARTUP_TCL_SRCS)
+
+BUILT_SOURCES += %D%/startup_tcl.inc
+
+# Convert .tcl to c-array
+%D%/startup_tcl.inc: $(STARTUP_TCL_SRCS)
+ mkdir -p %D%
+ cat $^ | $(BIN2C) > $@ || { rm -f $@; false; }
+
+# add generated files to make clean list
+CLEANFILES += %D%/startup_tcl.inc
+
+# we do not want generated file in the dist
+#dist-hook:
+# rm -f $(distdir)/%D%/startup_tcl.inc
+
+include %D%/helper/Makefile.am
+include %D%/jtag/Makefile.am
+include %D%/transport/Makefile.am
+include %D%/xsvf/Makefile.am
+include %D%/svf/Makefile.am
+include %D%/target/Makefile.am
+include %D%/rtos/Makefile.am
+include %D%/server/Makefile.am
+include %D%/flash/Makefile.am
+include %D%/pld/Makefile.am
+include %D%/rtt/Makefile.am