+include $(top_srcdir)/common.mk
+
+SUBDIRS = \
+ jtag \
+ helper \
+ target \
+ transport \
+ flash \
+ svf \
+ xsvf \
+ pld \
+ server \
+ rtos
+
+noinst_LTLIBRARIES = libopenocd.la
bin_PROGRAMS = openocd
-if ECOSBOARD
-MAINFILE = $(ECOS_SOURCE_FILES)/ecosboard.c
-else
MAINFILE = main.c
+
+openocd_SOURCES = $(MAINFILE)
+openocd_LDADD = libopenocd.la
+
+if INTERNAL_JIMTCL
+openocd_LDADD += $(top_builddir)/jimtcl/libjim.a
+else
+openocd_LDADD += -ljim
+endif
+
+if ULINK
+openocd_LDADD += -lm
endif
-openocd_SOURCES = $(MAINFILE) openocd.c
+libopenocd_la_SOURCES = \
+ hello.c \
+ openocd.c \
+ startup_tcl.c
+
+noinst_HEADERS = \
+ hello.h \
+ openocd.h
-# set the include path found by configure
-INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/src/helper \
- -I$(top_srcdir)/src/jtag -I$(top_srcdir)/src/target -I$(top_srcdir)/src/xsvf -I$(top_srcdir)/src/server \
- -I$(top_srcdir)/src/flash -I$(top_srcdir)/src/pld $(all_includes)
+libopenocd_la_CPPFLAGS = -DPKGBLDDATE=\"`date +%F-%R`\"
-# pass path to prefix path
-openocd_CPPFLAGS = \
- -DPKGLIBDIR=\"$(pkglibdir)\" \
- -DPKGBLDDATE=\"`date +%F-%R`\" \
- -DPKGBLDREV=\"`$(top_srcdir)/guess-rev.sh`\" \
- @CPPFLAGS@
+# banner output includes RELSTR appended to $VERSION from the configure script
+# guess-rev.sh returns either a repository version ID or "-snapshot"
+if RELEASE
+libopenocd_la_CPPFLAGS += -DRELSTR=\"\"
+libopenocd_la_CPPFLAGS += -DGITVERSION=\"\"
+else
+libopenocd_la_CPPFLAGS += -DRELSTR=\"`$(top_srcdir)/guess-rev.sh $(top_srcdir)`\"
+libopenocd_la_CPPFLAGS += -DGITVERSION=\"`cd $(top_srcdir) && git describe`\"
+endif
+
+# add default CPPFLAGS
+libopenocd_la_CPPFLAGS += $(AM_CPPFLAGS) $(CPPFLAGS) $(LIBFTDI_CFLAGS)
# the library search path.
-openocd_LDFLAGS = $(all_libraries)
-SUBDIRS = helper jtag xsvf target server flash pld
+libopenocd_la_LDFLAGS = $(all_libraries)
if IS_MINGW
-MINGWLDADD = -lwsock32
+MINGWLDADD = -lws2_32
else
MINGWLDADD =
endif
-if FT2232_LIBFTDI
-FTDI2232LIB = -lftdi -lusb
-else
-if PRESTO_LIBFTDI
-FTDI2232LIB = -lftdi -lusb
-else
-FTDI2232LIB =
-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/transport/libtransport.la \
+ $(top_builddir)/src/flash/libflash.la \
+ $(top_builddir)/src/target/libtarget.la \
+ $(top_builddir)/src/server/libserver.la \
+ $(top_builddir)/src/rtos/librtos.la \
+ $(top_builddir)/src/helper/libhelper.la \
+ $(LIBFTDI_LIBS) $(MINGWLDADD) \
+ $(HIDAPI_LIBS) $(LIBUSB1_LIBS) $(LIBUSB0_LIBS)
-if USBPROG
-LIBUSB = -lusb
-else
-if JLINK
-LIBUSB = -lusb
-else
-LIBUSB =
-endif
-endif
+STARTUP_TCL_SRCS = \
+ $(srcdir)/helper/startup.tcl \
+ $(srcdir)/jtag/startup.tcl \
+ $(srcdir)/target/startup.tcl \
+ $(srcdir)/flash/startup.tcl \
+ $(srcdir)/server/startup.tcl
-if IS_WIN32
-if FTD2XXDIR
-FTD2XXLDADD = @WITH_FTD2XX@/FTD2XX.lib
-else
-FTD2XXLDADD = -lftd2xx
-endif
-else
-FTD2XXLDADD = -lftd2xx
-endif
-
-if FT2232_FTD2XX
-FTD2XXLIB = $(FTD2XXLDADD)
-else
-if PRESTO_FTD2XX
-FTD2XXLIB = $(FTD2XXLDADD)
-else
-FTD2XXLIB =
-endif
-endif
+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
+
+# we do not want generated file in the dist
+dist-hook:
+ rm -f $(distdir)/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
-openocd_LDADD = $(top_builddir)/src/xsvf/libxsvf.a \
- $(top_builddir)/src/target/libtarget.a $(top_builddir)/src/jtag/libjtag.a \
- $(top_builddir)/src/helper/libhelper.a \
- $(top_builddir)/src/server/libserver.a $(top_builddir)/src/helper/libhelper.a \
- $(top_builddir)/src/flash/libflash.a $(top_builddir)/src/target/libtarget.a \
- $(top_builddir)/src/pld/libpld.a \
- $(FTDI2232LIB) $(FTD2XXLIB) $(MINGWLDADD) $(LIBUSB)
-
-nobase_dist_pkglib_DATA = \
- tcl/bitsbytes.tcl \
- tcl/chip/atmel/at91/aic.tcl \
- tcl/chip/atmel/at91/at91sam7x128.tcl \
- tcl/chip/atmel/at91/at91sam7x256.tcl \
- tcl/chip/atmel/at91/pmc.tcl \
- tcl/chip/atmel/at91/rtt.tcl \
- tcl/chip/atmel/at91/usarts.tcl \
- tcl/chip/st/stm32/stm32.tcl \
- tcl/chip/st/stm32/stm32_rcc.tcl \
- tcl/chip/st/stm32/stm32_regs.tcl \
- tcl/cpu/arm/arm7tdmi.tcl \
- tcl/cpu/arm/arm920.tcl \
- tcl/cpu/arm/arm946.tcl \
- tcl/cpu/arm/arm966.tcl \
- tcl/cpu/arm/cortex_m3.tcl \
- tcl/memory.tcl \
- tcl/mmr_helpers.tcl \
- tcl/readable.tcl