1
0
mirror of https://github.com/HEYAHONG/cc-tool.git synced 2025-05-08 19:51:05 +08:00

更新m4文件,使其能在boot1.65.1下编译

This commit is contained in:
HEYAHONG 2018-10-11 20:50:39 +08:00
parent f33dfca410
commit 6d19cec94b
53 changed files with 29037 additions and 5747 deletions

View File

@ -19,3 +19,24 @@
* fixed wrong CC111x identification
* added reference in linux man pages format
09/26/2012 version 0.20
* added CC2541 target signature
* fixed mac addresses reading for CC254x and CC253x units
* added options --write-mac-address and --preserve-mac-address
* fixed lock bit writing
* fixed mac address byte order
10/26/2012 version 0.22
* added support for SmartRF04EB V1.1 programmer board (experemental)
* added command line option --flash-size
* fixed mac address writing for CC243x
11/24/2012 version 0.24
* updated autoconf scripts to support Mac OS
* lock type for --lock option now may be specifed by string like like debug, boot etc
* added support for CC2543, CC2544, CC2545 targets (experemental)
* bug fixing
03/01/1013 version 0.26
* fixed bug with -d option
* handle programmer devices those have no iProduct string descriptor

View File

@ -1,3 +1,33 @@
SUBDIRS = src
ACLOCAL_AMFLAGS = -I m4
man_MANS = man/cc-tool.1
AM_CPPFLAGS = $(LIBUSB_CFLAGS) $(BOOST_CPPFLAGS) -O3 -Isrc/programmer -Isrc/common -Isrc/usb -Isrc -Isrc/application
AM_LDFLAGS = \
$(BOOST_FILESYSTEM_LDFLAGS) \
$(BOOST_REGEX_LDFLAGS) \
$(BOOST_SYSTEM_LDFLAGS) \
$(BOOST_PROGRAM_OPTIONS_LDFLAGS)
# $(BOOST_THREADS_LDFLAGS)
LDADD = $(LIBUSB_LIBS)
LIBS = -s \
$(BOOST_FILESYSTEM_LIBS) \
$(BOOST_REGEX_LIBS) \
$(BOOST_SYSTEM_LIBS) \
$(BOOST_PROGRAM_OPTIONS_LIBS)
# $(BOOST_THREADS_LIBS)
bin_PROGRAMS=cc-tool
cc_tool_SOURCES=src/main.cpp src/application/cc_flasher.cpp src/application/cc_base.cpp \
src/common/log.cpp src/common/common.cpp src/common/timer.cpp \
src/usb/usb_device.cpp \
src/data/binary_file.cpp src/data/data_section.cpp src/data/data_section_store.cpp \
src/data/file.cpp src/data/hex_file.cpp src/data/read_target.cpp \
src/data/progress_watcher.cpp \
src/programmer/cc_253x_254x.cpp src/programmer/cc_251x_111x.cpp \
src/programmer/cc_243x.cpp src/programmer/cc_programmer.cpp \
src/programmer/cc_unit_driver.cpp src/programmer/cc_unit_info.cpp

View File

@ -1,9 +1,9 @@
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
# Inc.
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@ -14,7 +14,25 @@
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__make_dryrun = \
{ \
am__dry=no; \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
*) \
for am__flg in $$MAKEFLAGS; do \
case $$am__flg in \
*=*|--*) ;; \
*n*) am__dry=yes; break;; \
esac; \
done;; \
esac; \
test $$am__dry = yes; \
}
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@ -33,11 +51,12 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
bin_PROGRAMS = cc-tool$(EXEEXT)
subdir = .
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(top_srcdir)/configure AUTHORS COPYING \
ChangeLog INSTALL NEWS config.guess config.sub depcomp \
install-sh ltmain.sh missing
ChangeLog NEWS config.guess config.sub install-sh ltmain.sh \
missing
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/boost.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
@ -50,15 +69,63 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-dvi-recursive install-exec-recursive \
install-html-recursive install-info-recursive \
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"
PROGRAMS = $(bin_PROGRAMS)
am__dirstamp = $(am__leading_dot)dirstamp
am_cc_tool_OBJECTS = src/main.$(OBJEXT) \
src/application/cc_flasher.$(OBJEXT) \
src/application/cc_base.$(OBJEXT) src/common/log.$(OBJEXT) \
src/common/common.$(OBJEXT) src/common/timer.$(OBJEXT) \
src/usb/usb_device.$(OBJEXT) src/data/binary_file.$(OBJEXT) \
src/data/data_section.$(OBJEXT) \
src/data/data_section_store.$(OBJEXT) src/data/file.$(OBJEXT) \
src/data/hex_file.$(OBJEXT) src/data/read_target.$(OBJEXT) \
src/data/progress_watcher.$(OBJEXT) \
src/programmer/cc_253x_254x.$(OBJEXT) \
src/programmer/cc_251x_111x.$(OBJEXT) \
src/programmer/cc_243x.$(OBJEXT) \
src/programmer/cc_programmer.$(OBJEXT) \
src/programmer/cc_unit_driver.$(OBJEXT) \
src/programmer/cc_unit_info.$(OBJEXT)
cc_tool_OBJECTS = $(am_cc_tool_OBJECTS)
cc_tool_LDADD = $(LDADD)
am__DEPENDENCIES_1 =
cc_tool_DEPENDENCIES = $(am__DEPENDENCIES_1)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
DEFAULT_INCLUDES = -I.@am__isrc@
depcomp =
am__depfiles_maybe =
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CXXFLAGS) $(CXXFLAGS)
AM_V_CXX = $(am__v_CXX_@AM_V@)
am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
am__v_CXX_0 = @echo " CXX " $@;
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
CXXLD = $(CXX)
CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
am__v_CXXLD_0 = @echo " CXXLD " $@;
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
SOURCES = $(cc_tool_SOURCES)
DIST_SOURCES = $(cc_tool_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@ -80,56 +147,35 @@ am__nobase_list = $(am__nobase_strip_setup); \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
test -z "$$files" \
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
man1dir = $(mandir)/man1
am__installdirs = "$(DESTDIR)$(man1dir)"
NROFF = nroff
MANS = $(man_MANS)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
distdir dist dist-all distcheck
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
{ test ! -d "$(distdir)" \
|| { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -fr "$(distdir)"; }; }
am__relativize = \
dir0=`pwd`; \
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
sed_rest='s,^[^/]*/*,,'; \
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
sed_butlast='s,/*[^/]*$$,,'; \
while test -n "$$dir1"; do \
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
if test "$$first" != "."; then \
if test "$$first" = ".."; then \
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
else \
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
if test "$$first2" = "$$first"; then \
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
else \
dir2="../$$dir2"; \
fi; \
dir0="$$dir0"/"$$first"; \
fi; \
fi; \
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
done; \
reldir="$$dir2"
if test -d "$(distdir)"; then \
find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -rf "$(distdir)" \
|| { sleep 5 && rm -rf "$(distdir)"; }; \
else :; fi
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
@ -150,24 +196,17 @@ BOOST_ROOT = @BOOST_ROOT@
BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DEPS_CFLAGS = @DEPS_CFLAGS@
DEPS_LIBS = @DEPS_LIBS@
DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
@ -185,12 +224,20 @@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBS = -s \
$(BOOST_FILESYSTEM_LIBS) \
$(BOOST_REGEX_LIBS) \
$(BOOST_SYSTEM_LIBS) \
$(BOOST_PROGRAM_OPTIONS_LIBS)
LIBTOOL = @LIBTOOL@
LIBUSB_CFLAGS = @LIBUSB_CFLAGS@
LIBUSB_LIBS = @LIBUSB_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
@ -219,12 +266,11 @@ abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
@ -267,27 +313,47 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
SUBDIRS = src
ACLOCAL_AMFLAGS = -I m4
man_MANS = man/cc-tool.1
all: all-recursive
AM_CPPFLAGS = $(LIBUSB_CFLAGS) $(BOOST_CPPFLAGS) -O3 -Isrc/programmer -Isrc/common -Isrc/usb -Isrc -Isrc/application
AM_LDFLAGS = \
$(BOOST_FILESYSTEM_LDFLAGS) \
$(BOOST_REGEX_LDFLAGS) \
$(BOOST_SYSTEM_LDFLAGS) \
$(BOOST_PROGRAM_OPTIONS_LDFLAGS)
# $(BOOST_THREADS_LDFLAGS)
LDADD = $(LIBUSB_LIBS)
cc_tool_SOURCES = src/main.cpp src/application/cc_flasher.cpp src/application/cc_base.cpp \
src/common/log.cpp src/common/common.cpp src/common/timer.cpp \
src/usb/usb_device.cpp \
src/data/binary_file.cpp src/data/data_section.cpp src/data/data_section_store.cpp \
src/data/file.cpp src/data/hex_file.cpp src/data/read_target.cpp \
src/data/progress_watcher.cpp \
src/programmer/cc_253x_254x.cpp src/programmer/cc_251x_111x.cpp \
src/programmer/cc_243x.cpp src/programmer/cc_programmer.cpp \
src/programmer/cc_unit_driver.cpp src/programmer/cc_unit_info.cpp
all: all-am
.SUFFIXES:
am--refresh:
.SUFFIXES: .cpp .lo .o .obj
am--refresh: Makefile
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
$(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
echo ' cd $(srcdir) && $(AUTOMAKE) --foreign --ignore-deps'; \
$(am__cd) $(srcdir) && $(AUTOMAKE) --foreign --ignore-deps \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu Makefile
$(AUTOMAKE) --foreign --ignore-deps Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
@ -307,6 +373,130 @@ $(top_srcdir)/configure: $(am__configure_deps)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
$(am__aclocal_m4_deps):
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
$(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
fi; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
while read p p1; do if test -f $$p || test -f $$p1; \
then echo "$$p"; echo "$$p"; else :; fi; \
done | \
sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
if ($$2 == $$4) files[d] = files[d] " " $$1; \
else { print "f", $$3 "/" $$4, $$1; } } \
END { for (d in files) print "f", d, files[d] }' | \
while read type dir files; do \
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
test -z "$$files" || { \
echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
} \
; done
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-e 's/$$/$(EXEEXT)/' `; \
test -n "$$list" || exit 0; \
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(bindir)" && rm -f $$files
clean-binPROGRAMS:
@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
echo " rm -f" $$list; \
rm -f $$list || exit $$?; \
test -n "$(EXEEXT)" || exit 0; \
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
echo " rm -f" $$list; \
rm -f $$list
src/$(am__dirstamp):
@$(MKDIR_P) src
@: > src/$(am__dirstamp)
src/main.$(OBJEXT): src/$(am__dirstamp)
src/application/$(am__dirstamp):
@$(MKDIR_P) src/application
@: > src/application/$(am__dirstamp)
src/application/cc_flasher.$(OBJEXT): src/application/$(am__dirstamp)
src/application/cc_base.$(OBJEXT): src/application/$(am__dirstamp)
src/common/$(am__dirstamp):
@$(MKDIR_P) src/common
@: > src/common/$(am__dirstamp)
src/common/log.$(OBJEXT): src/common/$(am__dirstamp)
src/common/common.$(OBJEXT): src/common/$(am__dirstamp)
src/common/timer.$(OBJEXT): src/common/$(am__dirstamp)
src/usb/$(am__dirstamp):
@$(MKDIR_P) src/usb
@: > src/usb/$(am__dirstamp)
src/usb/usb_device.$(OBJEXT): src/usb/$(am__dirstamp)
src/data/$(am__dirstamp):
@$(MKDIR_P) src/data
@: > src/data/$(am__dirstamp)
src/data/binary_file.$(OBJEXT): src/data/$(am__dirstamp)
src/data/data_section.$(OBJEXT): src/data/$(am__dirstamp)
src/data/data_section_store.$(OBJEXT): src/data/$(am__dirstamp)
src/data/file.$(OBJEXT): src/data/$(am__dirstamp)
src/data/hex_file.$(OBJEXT): src/data/$(am__dirstamp)
src/data/read_target.$(OBJEXT): src/data/$(am__dirstamp)
src/data/progress_watcher.$(OBJEXT): src/data/$(am__dirstamp)
src/programmer/$(am__dirstamp):
@$(MKDIR_P) src/programmer
@: > src/programmer/$(am__dirstamp)
src/programmer/cc_253x_254x.$(OBJEXT): src/programmer/$(am__dirstamp)
src/programmer/cc_251x_111x.$(OBJEXT): src/programmer/$(am__dirstamp)
src/programmer/cc_243x.$(OBJEXT): src/programmer/$(am__dirstamp)
src/programmer/cc_programmer.$(OBJEXT): \
src/programmer/$(am__dirstamp)
src/programmer/cc_unit_driver.$(OBJEXT): \
src/programmer/$(am__dirstamp)
src/programmer/cc_unit_info.$(OBJEXT): src/programmer/$(am__dirstamp)
cc-tool$(EXEEXT): $(cc_tool_OBJECTS) $(cc_tool_DEPENDENCIES) $(EXTRA_cc_tool_DEPENDENCIES)
@rm -f cc-tool$(EXEEXT)
$(AM_V_CXXLD)$(CXXLINK) $(cc_tool_OBJECTS) $(cc_tool_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
-rm -f src/application/cc_base.$(OBJEXT)
-rm -f src/application/cc_flasher.$(OBJEXT)
-rm -f src/common/common.$(OBJEXT)
-rm -f src/common/log.$(OBJEXT)
-rm -f src/common/timer.$(OBJEXT)
-rm -f src/data/binary_file.$(OBJEXT)
-rm -f src/data/data_section.$(OBJEXT)
-rm -f src/data/data_section_store.$(OBJEXT)
-rm -f src/data/file.$(OBJEXT)
-rm -f src/data/hex_file.$(OBJEXT)
-rm -f src/data/progress_watcher.$(OBJEXT)
-rm -f src/data/read_target.$(OBJEXT)
-rm -f src/main.$(OBJEXT)
-rm -f src/programmer/cc_243x.$(OBJEXT)
-rm -f src/programmer/cc_251x_111x.$(OBJEXT)
-rm -f src/programmer/cc_253x_254x.$(OBJEXT)
-rm -f src/programmer/cc_programmer.$(OBJEXT)
-rm -f src/programmer/cc_unit_driver.$(OBJEXT)
-rm -f src/programmer/cc_unit_info.$(OBJEXT)
-rm -f src/usb/usb_device.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
.cpp.o:
$(AM_V_CXX)$(CXXCOMPILE) -c -o $@ $<
.cpp.obj:
$(AM_V_CXX)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.cpp.lo:
$(AM_V_CXX)$(LTCXXCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
@ -318,11 +508,18 @@ distclean-libtool:
-rm -f libtool config.lt
install-man1: $(man_MANS)
@$(NORMAL_INSTALL)
test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
@list=''; test -n "$(man1dir)" || exit 0; \
{ for i in $$list; do echo "$$i"; done; \
l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
sed -n '/\.1[a-z]*$$/p'; \
@list1=''; \
list2='$(man_MANS)'; \
test -n "$(man1dir)" \
&& test -n "`echo $$list1$$list2`" \
|| exit 0; \
echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
$(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
{ for i in $$list1; do echo "$$i"; done; \
if test -n "$$list2"; then \
for i in $$list2; do echo "$$i"; done \
| sed -n '/\.1[a-z]*$$/p'; \
fi; \
} | while read p; do \
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; echo "$$p"; \
@ -351,79 +548,7 @@ uninstall-man1:
sed -n '/\.1[a-z]*$$/p'; \
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
test -z "$$files" || { \
echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@ -435,23 +560,10 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
set x; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
@ -470,7 +582,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
fi; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
@ -535,34 +647,6 @@ distdir: $(DISTFILES)
|| exit 1; \
fi; \
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
fi; \
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
dir1=$$subdir; dir2="$(top_distdir)"; \
$(am__relativize); \
new_top_distdir=$$reldir; \
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
($(am__cd) $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$new_top_distdir" \
distdir="$$new_distdir" \
am__remove_distdir=: \
am__skip_length_check=: \
am__skip_mode_fix=: \
distdir) \
|| exit 1; \
fi; \
done
-test -n "$(am__skip_mode_fix)" \
|| find "$(distdir)" -type d ! -perm -755 \
-exec chmod u+rwx,go+rx {} \; -o \
@ -575,7 +659,11 @@ dist-gzip: distdir
$(am__remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
$(am__remove_distdir)
dist-lzip: distdir
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
$(am__remove_distdir)
dist-lzma: distdir
@ -583,7 +671,7 @@ dist-lzma: distdir
$(am__remove_distdir)
dist-xz: distdir
tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
$(am__remove_distdir)
dist-tarZ: distdir
@ -614,6 +702,8 @@ distcheck: dist
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lzma*) \
lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
*.tar.lz*) \
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
*.tar.xz*) \
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
*.tar.Z*) \
@ -623,7 +713,7 @@ distcheck: dist
*.zip*) \
unzip $(distdir).zip ;;\
esac
chmod -R a-w $(distdir); chmod a+w $(distdir)
chmod -R a-w $(distdir); chmod u+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
chmod a-w $(distdir)
@ -633,6 +723,7 @@ distcheck: dist
&& am__cwd=`pwd` \
&& $(am__cd) $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
@ -661,8 +752,16 @@ distcheck: dist
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
distuninstallcheck:
@$(am__cd) '$(distuninstallcheck_dir)' \
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
@test -n '$(distuninstallcheck_dir)' || { \
echo 'ERROR: trying to run $@ with an empty' \
'$$(distuninstallcheck_dir)' >&2; \
exit 1; \
}; \
$(am__cd) '$(distuninstallcheck_dir)' || { \
echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
exit 1; \
}; \
test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
@ -679,27 +778,31 @@ distcleancheck: distclean
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
check: check-recursive
all-am: Makefile $(MANS)
installdirs: installdirs-recursive
installdirs-am:
for dir in "$(DESTDIR)$(man1dir)"; do \
check: check-am
all-am: Makefile $(PROGRAMS) $(MANS)
installdirs:
for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
@ -707,101 +810,108 @@ clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-rm -f src/$(am__dirstamp)
-rm -f src/application/$(am__dirstamp)
-rm -f src/common/$(am__dirstamp)
-rm -f src/data/$(am__dirstamp)
-rm -f src/programmer/$(am__dirstamp)
-rm -f src/usb/$(am__dirstamp)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
clean: clean-am
clean-am: clean-generic clean-libtool mostlyclean-am
clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
distclean: distclean-recursive
distclean: distclean-am
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-libtool \
distclean-tags
distclean-am: clean-am distclean-compile distclean-generic \
distclean-libtool distclean-tags
dvi: dvi-recursive
dvi: dvi-am
dvi-am:
html: html-recursive
html: html-am
html-am:
info: info-recursive
info: info-am
info-am:
install-data-am: install-man
install-dvi: install-dvi-recursive
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-exec-am: install-binPROGRAMS
install-html: install-html-recursive
install-html: install-html-am
install-html-am:
install-info: install-info-recursive
install-info: install-info-am
install-info-am:
install-man: install-man1
install-pdf: install-pdf-recursive
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-recursive
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
maintainer-clean: maintainer-clean-am
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-recursive
pdf: pdf-am
pdf-am:
ps: ps-recursive
ps: ps-am
ps-am:
uninstall-am: uninstall-man
uninstall-am: uninstall-binPROGRAMS uninstall-man
uninstall-man: uninstall-man1
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
install-am install-strip tags-recursive
.MAKE: install-am install-strip
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
all all-am am--refresh check check-am clean clean-generic \
clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
distcheck distclean distclean-generic distclean-libtool \
.PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \
clean-binPROGRAMS clean-generic clean-libtool ctags dist \
dist-all dist-bzip2 dist-gzip dist-lzip dist-lzma dist-shar \
dist-tarZ dist-xz dist-zip distcheck distclean \
distclean-compile distclean-generic distclean-libtool \
distclean-tags distcleancheck distdir distuninstallcheck dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-man1 \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
installdirs-am maintainer-clean maintainer-clean-generic \
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
ps ps-am tags tags-recursive uninstall uninstall-am \
uninstall-man uninstall-man1
install-binPROGRAMS install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-man1 install-pdf install-pdf-am install-ps \
install-ps-am install-strip installcheck installcheck-am \
installdirs maintainer-clean maintainer-clean-generic \
mostlyclean mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
uninstall-am uninstall-binPROGRAMS uninstall-man \
uninstall-man1
# Tell versions [3.59,3.63) of GNU make to not export all variables.

16
README
View File

@ -1,12 +1,13 @@
#### cc-tool version 0.18
#### cc-tool version 0.26
cc-tool provides support for Texas Instruments CC Debugger
#### Project home:
http://sourceforge.net/projects/cctool/
#### Building from source, dependencies:
Ubuntu 11.10: libusb-1.0, libboost-all-dev,
Fedora 13-16: boost-devel, libusb1-devel
Ubuntu: libusb-1.0, libboost-all-dev,
Fedora: boost-devel, libusb1-devel
Mac OS 10.6.7, from ports: libusb boost pkgconfig
#### User guide:
man cc-tool
@ -16,6 +17,9 @@ File udev/90-cc-debugger.rules cotains udev rules changing permissions
for TI CC Debugger device and TI evolution boards so they can be used
from non-privileged accounts. Copy it to /etc/udev/rules.d
#### Bug reports:
If you found a bug try to reproduce it added command line option --log and
send the log file along with problem description to george-u@yandex.com
#### Support:
Send bug/build problem reports, new feature or new chip support suggestions
to george-u@yandex.com
If you found a bug try to reproduce it with command line option --log and
send the log file along with problem description

431
aclocal.m4 vendored
View File

@ -1,7 +1,8 @@
# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
# generated automatically by aclocal 1.11.6 -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
# Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@ -13,8 +14,8 @@
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.66],,
[m4_warning([this file was generated for autoconf 2.66.
m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],,
[m4_warning([this file was generated for autoconf 2.68.
You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically `autoreconf'.])])
@ -177,12 +178,15 @@ else
fi[]dnl
])# PKG_CHECK_MODULES
# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software
# Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 1
# AM_AUTOMAKE_VERSION(VERSION)
# ----------------------------
# Automake X.Y traces this macro to ensure aclocal.m4 has been
@ -192,7 +196,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
[am__api_version='1.11'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
m4_if([$1], [1.11.1], [],
m4_if([$1], [1.11.6], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@ -208,19 +212,21 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
[AM_AUTOMAKE_VERSION([1.11.1])dnl
[AM_AUTOMAKE_VERSION([1.11.6])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 1
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
@ -302,268 +308,6 @@ AC_CONFIG_COMMANDS_PRE(
Usually this means the macro was only invoked conditionally.]])
fi])])
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 10
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
# written in clear, in which case automake, when reading aclocal.m4,
# will think it sees a *use*, and therefore will trigger all it's
# C support machinery. Also note that it means that autoscan, seeing
# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
# _AM_DEPENDENCIES(NAME)
# ----------------------
# See how the compiler implements dependency checking.
# NAME is "CC", "CXX", "GCJ", or "OBJC".
# We try a few techniques and use that to set a single cache variable.
#
# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
# dependency, and given that the user is not expected to run this macro,
# just rely on AC_PROG_CC.
AC_DEFUN([_AM_DEPENDENCIES],
[AC_REQUIRE([AM_SET_DEPDIR])dnl
AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
AC_REQUIRE([AM_MAKE_INCLUDE])dnl
AC_REQUIRE([AM_DEP_TRACK])dnl
ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
[$1], CXX, [depcc="$CXX" am_compiler_list=],
[$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
[$1], UPC, [depcc="$UPC" am_compiler_list=],
[$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
[depcc="$$1" am_compiler_list=])
AC_CACHE_CHECK([dependency style of $depcc],
[am_cv_$1_dependencies_compiler_type],
[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
# We make a subdir and do the tests there. Otherwise we can end up
# making bogus files that we don't know about and never remove. For
# instance it was reported that on HP-UX the gcc test will end up
# making a dummy file named `D' -- because `-MD' means `put the output
# in D'.
mkdir conftest.dir
# Copy depcomp to subdir because otherwise we won't find it if we're
# using a relative directory.
cp "$am_depcomp" conftest.dir
cd conftest.dir
# We will build objects and dependencies in a subdirectory because
# it helps to detect inapplicable dependency modes. For instance
# both Tru64's cc and ICC support -MD to output dependencies as a
# side effect of compilation, but ICC will put the dependencies in
# the current directory while Tru64 will put them in the object
# directory.
mkdir sub
am_cv_$1_dependencies_compiler_type=none
if test "$am_compiler_list" = ""; then
am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
fi
am__universal=false
m4_case([$1], [CC],
[case " $depcc " in #(
*\ -arch\ *\ -arch\ *) am__universal=true ;;
esac],
[CXX],
[case " $depcc " in #(
*\ -arch\ *\ -arch\ *) am__universal=true ;;
esac])
for depmode in $am_compiler_list; do
# Setup a source with many dependencies, because some compilers
# like to wrap large dependency lists on column 80 (with \), and
# we should not choose a depcomp mode which is confused by this.
#
# We need to recreate these files for each test, as the compiler may
# overwrite some of them when testing with obscure command lines.
# This happens at least with the AIX C compiler.
: > sub/conftest.c
for i in 1 2 3 4 5 6; do
echo '#include "conftst'$i'.h"' >> sub/conftest.c
# Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
# Solaris 8's {/usr,}/bin/sh.
touch sub/conftst$i.h
done
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
# We check with `-c' and `-o' for the sake of the "dashmstdout"
# mode. It turns out that the SunPro C++ compiler does not properly
# handle `-M -o', and we need to detect this. Also, some Intel
# versions had trouble with output in subdirs
am__obj=sub/conftest.${OBJEXT-o}
am__minus_obj="-o $am__obj"
case $depmode in
gcc)
# This depmode causes a compiler race in universal mode.
test "$am__universal" = false || continue
;;
nosideeffect)
# after this tag, mechanisms are not by side-effect, so they'll
# only be used when explicitly requested
if test "x$enable_dependency_tracking" = xyes; then
continue
else
break
fi
;;
msvisualcpp | msvcmsys)
# This compiler won't grok `-c -o', but also, the minuso test has
# not run yet. These depmodes are late enough in the game, and
# so weak that their functioning should not be impacted.
am__obj=conftest.${OBJEXT-o}
am__minus_obj=
;;
none) break ;;
esac
if depmode=$depmode \
source=sub/conftest.c object=$am__obj \
depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
$SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
>/dev/null 2>conftest.err &&
grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
# icc doesn't choke on unknown options, it will just issue warnings
# or remarks (even with -Werror). So we grep stderr for any message
# that says an option was ignored or not supported.
# When given -MP, icc 7.0 and 7.1 complain thusly:
# icc: Command line warning: ignoring option '-M'; no argument required
# The diagnosis changed in icc 8.0:
# icc: Command line remark: option '-MP' not supported
if (grep 'ignoring option' conftest.err ||
grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
am_cv_$1_dependencies_compiler_type=$depmode
break
fi
fi
done
cd ..
rm -rf conftest.dir
else
am_cv_$1_dependencies_compiler_type=none
fi
])
AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
AM_CONDITIONAL([am__fastdep$1], [
test "x$enable_dependency_tracking" != xno \
&& test "$am_cv_$1_dependencies_compiler_type" = gcc3])
])
# AM_SET_DEPDIR
# -------------
# Choose a directory name for dependency files.
# This macro is AC_REQUIREd in _AM_DEPENDENCIES
AC_DEFUN([AM_SET_DEPDIR],
[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
])
# AM_DEP_TRACK
# ------------
AC_DEFUN([AM_DEP_TRACK],
[AC_ARG_ENABLE(dependency-tracking,
[ --disable-dependency-tracking speeds up one-time build
--enable-dependency-tracking do not reject slow dependency extractors])
if test "x$enable_dependency_tracking" != xno; then
am_depcomp="$ac_aux_dir/depcomp"
AMDEPBACKSLASH='\'
fi
AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
AC_SUBST([AMDEPBACKSLASH])dnl
_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
])
# Generate code to set up dependency tracking. -*- Autoconf -*-
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
#serial 5
# _AM_OUTPUT_DEPENDENCY_COMMANDS
# ------------------------------
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
[{
# Autoconf 2.62 quotes --file arguments for eval, but not when files
# are listed without --file. Let's play safe and only enable the eval
# if we detect the quoting.
case $CONFIG_FILES in
*\'*) eval set x "$CONFIG_FILES" ;;
*) set x $CONFIG_FILES ;;
esac
shift
for mf
do
# Strip MF so we end up with the name of the file.
mf=`echo "$mf" | sed -e 's/:.*$//'`
# Check whether this is an Automake generated Makefile or not.
# We used to match only the files named `Makefile.in', but
# some people rename them; so instead we look at the file content.
# Grep'ing the first line is not enough: some people post-process
# each Makefile.in and add a new line on top of each file to say so.
# Grep'ing the whole file is not good either: AIX grep has a line
# limit of 2048, but all sed's we know have understand at least 4000.
if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
dirpart=`AS_DIRNAME("$mf")`
else
continue
fi
# Extract the definition of DEPDIR, am__include, and am__quote
# from the Makefile without running `make'.
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
test -z "am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# When using ansi2knr, U may be empty or an underscore; expand it
U=`sed -n 's/^U = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
# simplest approach to changing $(DEPDIR) to its actual value in the
# expansion.
for file in `sed -n "
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
fdir=`AS_DIRNAME(["$file"])`
AS_MKDIR_P([$dirpart/$fdir])
# echo "creating $dirpart/$file"
echo '# dummy' > "$dirpart/$file"
done
done
}
])# _AM_OUTPUT_DEPENDENCY_COMMANDS
# AM_OUTPUT_DEPENDENCY_COMMANDS
# -----------------------------
# This macro should only be invoked once -- use via AC_REQUIRE.
#
# This code is only required when automatic dependency tracking
# is enabled. FIXME. This creates each `.P' file that we will
# need in order to bootstrap the dependency handling code.
AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
[AC_CONFIG_COMMANDS([depfiles],
[test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
])
# Do all the work for Automake. -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
@ -703,12 +447,15 @@ for _am_header in $config_headers :; do
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation,
# Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 1
# AM_PROG_INSTALL_SH
# ------------------
# Define $install_sh.
@ -745,58 +492,6 @@ fi
rmdir .tst 2>/dev/null
AC_SUBST([am__leading_dot])])
# Check to see how 'make' treats includes. -*- Autoconf -*-
# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 4
# AM_MAKE_INCLUDE()
# -----------------
# Check to see how make treats includes.
AC_DEFUN([AM_MAKE_INCLUDE],
[am_make=${MAKE-make}
cat > confinc << 'END'
am__doit:
@echo this is the am__doit target
.PHONY: am__doit
END
# If we don't find an include directive, just comment out the code.
AC_MSG_CHECKING([for style of include used by $am_make])
am__include="#"
am__quote=
_am_result=none
# First try GNU make style include.
echo "include confinc" > confmf
# Ignore all kinds of additional output from `make'.
case `$am_make -s -f confmf 2> /dev/null` in #(
*the\ am__doit\ target*)
am__include=include
am__quote=
_am_result=GNU
;;
esac
# Now try BSD make style include.
if test "$am__include" = "#"; then
echo '.include "confinc"' > confmf
case `$am_make -s -f confmf 2> /dev/null` in #(
*the\ am__doit\ target*)
am__include=.include
am__quote="\""
_am_result=BSD
;;
esac
fi
AC_SUBST([am__include])
AC_SUBST([am__quote])
AC_MSG_RESULT([$_am_result])
rm -f confinc confmf
])
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
@ -840,12 +535,15 @@ else
fi
])
# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation,
# Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 1
# AM_PROG_MKDIR_P
# ---------------
# Check for `mkdir -p'.
@ -868,13 +566,14 @@ esac
# Helper functions for option handling. -*- Autoconf -*-
# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc.
# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software
# Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 4
# serial 5
# _AM_MANGLE_OPTION(NAME)
# -----------------------
@ -882,13 +581,13 @@ AC_DEFUN([_AM_MANGLE_OPTION],
[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
# _AM_SET_OPTION(NAME)
# ------------------------------
# --------------------
# Set option NAME. Presently that only means defining a flag for this option.
AC_DEFUN([_AM_SET_OPTION],
[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
# _AM_SET_OPTIONS(OPTIONS)
# ----------------------------------
# ------------------------
# OPTIONS is a space-separated list of Automake options.
AC_DEFUN([_AM_SET_OPTIONS],
[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
@ -964,12 +663,71 @@ Check your system clock])
fi
AC_MSG_RESULT(yes)])
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
# Copyright (C) 2009, 2011 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 2
# AM_SILENT_RULES([DEFAULT])
# --------------------------
# Enable less verbose build rules; with the default set to DEFAULT
# (`yes' being less verbose, `no' or empty being verbose).
AC_DEFUN([AM_SILENT_RULES],
[AC_ARG_ENABLE([silent-rules],
[ --enable-silent-rules less verbose build output (undo: `make V=1')
--disable-silent-rules verbose build output (undo: `make V=0')])
case $enable_silent_rules in
yes) AM_DEFAULT_VERBOSITY=0;;
no) AM_DEFAULT_VERBOSITY=1;;
*) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
esac
dnl
dnl A few `make' implementations (e.g., NonStop OS and NextStep)
dnl do not support nested variable expansions.
dnl See automake bug#9928 and bug#10237.
am_make=${MAKE-make}
AC_CACHE_CHECK([whether $am_make supports nested variables],
[am_cv_make_support_nested_variables],
[if AS_ECHO([['TRUE=$(BAR$(V))
BAR0=false
BAR1=true
V=1
am__doit:
@$(TRUE)
.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
am_cv_make_support_nested_variables=yes
else
am_cv_make_support_nested_variables=no
fi])
if test $am_cv_make_support_nested_variables = yes; then
dnl Using `$V' instead of `$(V)' breaks IRIX make.
AM_V='$(V)'
AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
else
AM_V=$AM_DEFAULT_VERBOSITY
AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
fi
AC_SUBST([AM_V])dnl
AM_SUBST_NOTMAKE([AM_V])dnl
AC_SUBST([AM_DEFAULT_V])dnl
AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
AM_BACKSLASH='\'
AC_SUBST([AM_BACKSLASH])dnl
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
])
# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 1
# AM_PROG_INSTALL_STRIP
# ---------------------
# One issue with vendor `install' (even GNU) is that you can't
@ -992,13 +750,13 @@ fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
# Copyright (C) 2006, 2008 Free Software Foundation, Inc.
# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 2
# serial 3
# _AM_SUBST_NOTMAKE(VARIABLE)
# ---------------------------
@ -1007,13 +765,13 @@ AC_SUBST([INSTALL_STRIP_PROGRAM])])
AC_DEFUN([_AM_SUBST_NOTMAKE])
# AM_SUBST_NOTMAKE(VARIABLE)
# ---------------------------
# --------------------------
# Public sister of _AM_SUBST_NOTMAKE.
AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Check how to create a tarball. -*- Autoconf -*-
# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -1035,10 +793,11 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# a tarball read from stdin.
# $(am__untar) < result.tar
AC_DEFUN([_AM_PROG_TAR],
[# Always define AMTAR for backward compatibility.
AM_MISSING_PROG([AMTAR], [tar])
[# Always define AMTAR for backward compatibility. Yes, it's still used
# in the wild :-( We should find a proper way to deprecate it ...
AC_SUBST([AMTAR], ['$${TAR-tar}'])
m4_if([$1], [v7],
[am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
[am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
[m4_case([$1], [ustar],, [pax],,
[m4_fatal([Unknown tar format])])
AC_MSG_CHECKING([how to create a $1 tar archive])

19462
autom4te.cache/output.0 Normal file

File diff suppressed because it is too large Load Diff

81
autom4te.cache/requests Normal file
View File

@ -0,0 +1,81 @@
# This file was generated by Autom4te Sun Aug 20 23:09:08 UTC 2017.
# It contains the lists of macros which have been traced.
# It can be safely removed.
@request = (
bless( [
'0',
1,
[
'/usr/share/autoconf'
],
[
'/usr/share/autoconf/autoconf/autoconf.m4f',
'aclocal.m4',
'configure.ac'
],
{
'AC_DEFINE_TRACE_LITERAL' => 1,
'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'_AM_COND_ENDIF' => 1,
'AC_CONFIG_LINKS' => 1,
'_LT_AC_TAGCONFIG' => 1,
'AM_EXTRA_RECURSIVE_TARGETS' => 1,
'include' => 1,
'AC_CONFIG_FILES' => 1,
'AC_FC_PP_DEFINE' => 1,
'AM_PROG_CC_C_O' => 1,
'AM_PROG_FC_C_O' => 1,
'LT_CONFIG_LTDL_DIR' => 1,
'AM_SILENT_RULES' => 1,
'AM_PATH_GUILE' => 1,
'AC_SUBST' => 1,
'AC_CONFIG_HEADERS' => 1,
'AM_MAKEFILE_INCLUDE' => 1,
'AC_FC_PP_SRCEXT' => 1,
'AC_FC_SRCEXT' => 1,
'AM_PROG_MOC' => 1,
'AC_FC_FREEFORM' => 1,
'LT_INIT' => 1,
'_AM_MAKEFILE_INCLUDE' => 1,
'AM_XGETTEXT_OPTION' => 1,
'AM_PROG_CXX_C_O' => 1,
'AC_LIBSOURCE' => 1,
'AC_SUBST_TRACE' => 1,
'AC_REQUIRE_AUX_FILE' => 1,
'AC_CANONICAL_BUILD' => 1,
'_m4_warn' => 1,
'sinclude' => 1,
'AC_CANONICAL_HOST' => 1,
'AM_POT_TOOLS' => 1,
'm4_sinclude' => 1,
'AC_CONFIG_LIBOBJ_DIR' => 1,
'AH_OUTPUT' => 1,
'm4_pattern_allow' => 1,
'AM_NLS' => 1,
'AM_CONDITIONAL' => 1,
'AM_PROG_AR' => 1,
'AM_ENABLE_MULTILIB' => 1,
'AM_PROG_F77_C_O' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'AM_PROG_MKDIR_P' => 1,
'AM_MAINTAINER_MODE' => 1,
'AC_CONFIG_AUX_DIR' => 1,
'_AM_SUBST_NOTMAKE' => 1,
'm4_include' => 1,
'LT_SUPPORTED_TAG' => 1,
'AM_PROG_LIBTOOL' => 1,
'AC_CANONICAL_TARGET' => 1,
'AC_INIT' => 1,
'AM_INIT_AUTOMAKE' => 1,
'_AM_COND_ELSE' => 1,
'AM_GNU_GETTEXT' => 1,
'_AM_COND_IF' => 1,
'AC_PROG_LIBTOOL' => 1,
'AC_CONFIG_SUBDIRS' => 1,
'm4_pattern_forbid' => 1
}
], 'Autom4te::Request' )
);

673
autom4te.cache/traces.0 Normal file
View File

@ -0,0 +1,673 @@
m4trace:aclocal.m4:869: -1- m4_include([m4/boost.m4])
m4trace:m4/boost.m4:48: -1- m4_pattern_forbid([^_?(BOOST|Boost)_])
m4trace:aclocal.m4:870: -1- m4_include([m4/libtool.m4])
m4trace:aclocal.m4:871: -1- m4_include([m4/ltoptions.m4])
m4trace:aclocal.m4:872: -1- m4_include([m4/ltsugar.m4])
m4trace:aclocal.m4:873: -1- m4_include([m4/ltversion.m4])
m4trace:aclocal.m4:874: -1- m4_include([m4/lt~obsolete.m4])
m4trace:configure.ac:4: -1- AC_INIT([cc-tool], [0.26], [george-u@yandex.com])
m4trace:configure.ac:4: -1- m4_pattern_forbid([^_?A[CHUM]_])
m4trace:configure.ac:4: -1- m4_pattern_forbid([_AC_])
m4trace:configure.ac:4: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
m4trace:configure.ac:4: -1- m4_pattern_allow([^AS_FLAGS$])
m4trace:configure.ac:4: -1- m4_pattern_forbid([^_?m4_])
m4trace:configure.ac:4: -1- m4_pattern_forbid([^dnl$])
m4trace:configure.ac:4: -1- m4_pattern_forbid([^_?AS_])
m4trace:configure.ac:4: -1- AC_SUBST([SHELL])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([SHELL])
m4trace:configure.ac:4: -1- m4_pattern_allow([^SHELL$])
m4trace:configure.ac:4: -1- AC_SUBST([PATH_SEPARATOR])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
m4trace:configure.ac:4: -1- m4_pattern_allow([^PATH_SEPARATOR$])
m4trace:configure.ac:4: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([PACKAGE_NAME])
m4trace:configure.ac:4: -1- m4_pattern_allow([^PACKAGE_NAME$])
m4trace:configure.ac:4: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
m4trace:configure.ac:4: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
m4trace:configure.ac:4: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
m4trace:configure.ac:4: -1- m4_pattern_allow([^PACKAGE_VERSION$])
m4trace:configure.ac:4: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([PACKAGE_STRING])
m4trace:configure.ac:4: -1- m4_pattern_allow([^PACKAGE_STRING$])
m4trace:configure.ac:4: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
m4trace:configure.ac:4: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
m4trace:configure.ac:4: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([PACKAGE_URL])
m4trace:configure.ac:4: -1- m4_pattern_allow([^PACKAGE_URL$])
m4trace:configure.ac:4: -1- AC_SUBST([exec_prefix], [NONE])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([exec_prefix])
m4trace:configure.ac:4: -1- m4_pattern_allow([^exec_prefix$])
m4trace:configure.ac:4: -1- AC_SUBST([prefix], [NONE])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([prefix])
m4trace:configure.ac:4: -1- m4_pattern_allow([^prefix$])
m4trace:configure.ac:4: -1- AC_SUBST([program_transform_name], [s,x,x,])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([program_transform_name])
m4trace:configure.ac:4: -1- m4_pattern_allow([^program_transform_name$])
m4trace:configure.ac:4: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([bindir])
m4trace:configure.ac:4: -1- m4_pattern_allow([^bindir$])
m4trace:configure.ac:4: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([sbindir])
m4trace:configure.ac:4: -1- m4_pattern_allow([^sbindir$])
m4trace:configure.ac:4: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([libexecdir])
m4trace:configure.ac:4: -1- m4_pattern_allow([^libexecdir$])
m4trace:configure.ac:4: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([datarootdir])
m4trace:configure.ac:4: -1- m4_pattern_allow([^datarootdir$])
m4trace:configure.ac:4: -1- AC_SUBST([datadir], ['${datarootdir}'])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([datadir])
m4trace:configure.ac:4: -1- m4_pattern_allow([^datadir$])
m4trace:configure.ac:4: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([sysconfdir])
m4trace:configure.ac:4: -1- m4_pattern_allow([^sysconfdir$])
m4trace:configure.ac:4: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([sharedstatedir])
m4trace:configure.ac:4: -1- m4_pattern_allow([^sharedstatedir$])
m4trace:configure.ac:4: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([localstatedir])
m4trace:configure.ac:4: -1- m4_pattern_allow([^localstatedir$])
m4trace:configure.ac:4: -1- AC_SUBST([runstatedir], ['${localstatedir}/run'])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([runstatedir])
m4trace:configure.ac:4: -1- m4_pattern_allow([^runstatedir$])
m4trace:configure.ac:4: -1- AC_SUBST([includedir], ['${prefix}/include'])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([includedir])
m4trace:configure.ac:4: -1- m4_pattern_allow([^includedir$])
m4trace:configure.ac:4: -1- AC_SUBST([oldincludedir], ['/usr/include'])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([oldincludedir])
m4trace:configure.ac:4: -1- m4_pattern_allow([^oldincludedir$])
m4trace:configure.ac:4: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
['${datarootdir}/doc/${PACKAGE_TARNAME}'],
['${datarootdir}/doc/${PACKAGE}'])])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([docdir])
m4trace:configure.ac:4: -1- m4_pattern_allow([^docdir$])
m4trace:configure.ac:4: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([infodir])
m4trace:configure.ac:4: -1- m4_pattern_allow([^infodir$])
m4trace:configure.ac:4: -1- AC_SUBST([htmldir], ['${docdir}'])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([htmldir])
m4trace:configure.ac:4: -1- m4_pattern_allow([^htmldir$])
m4trace:configure.ac:4: -1- AC_SUBST([dvidir], ['${docdir}'])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([dvidir])
m4trace:configure.ac:4: -1- m4_pattern_allow([^dvidir$])
m4trace:configure.ac:4: -1- AC_SUBST([pdfdir], ['${docdir}'])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([pdfdir])
m4trace:configure.ac:4: -1- m4_pattern_allow([^pdfdir$])
m4trace:configure.ac:4: -1- AC_SUBST([psdir], ['${docdir}'])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([psdir])
m4trace:configure.ac:4: -1- m4_pattern_allow([^psdir$])
m4trace:configure.ac:4: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([libdir])
m4trace:configure.ac:4: -1- m4_pattern_allow([^libdir$])
m4trace:configure.ac:4: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([localedir])
m4trace:configure.ac:4: -1- m4_pattern_allow([^localedir$])
m4trace:configure.ac:4: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([mandir])
m4trace:configure.ac:4: -1- m4_pattern_allow([^mandir$])
m4trace:configure.ac:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
m4trace:configure.ac:4: -1- m4_pattern_allow([^PACKAGE_NAME$])
m4trace:configure.ac:4: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
@%:@undef PACKAGE_NAME])
m4trace:configure.ac:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
m4trace:configure.ac:4: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
m4trace:configure.ac:4: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
@%:@undef PACKAGE_TARNAME])
m4trace:configure.ac:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
m4trace:configure.ac:4: -1- m4_pattern_allow([^PACKAGE_VERSION$])
m4trace:configure.ac:4: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
@%:@undef PACKAGE_VERSION])
m4trace:configure.ac:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
m4trace:configure.ac:4: -1- m4_pattern_allow([^PACKAGE_STRING$])
m4trace:configure.ac:4: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
@%:@undef PACKAGE_STRING])
m4trace:configure.ac:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
m4trace:configure.ac:4: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
m4trace:configure.ac:4: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
@%:@undef PACKAGE_BUGREPORT])
m4trace:configure.ac:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL])
m4trace:configure.ac:4: -1- m4_pattern_allow([^PACKAGE_URL$])
m4trace:configure.ac:4: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */
@%:@undef PACKAGE_URL])
m4trace:configure.ac:4: -1- AC_SUBST([DEFS])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([DEFS])
m4trace:configure.ac:4: -1- m4_pattern_allow([^DEFS$])
m4trace:configure.ac:4: -1- AC_SUBST([ECHO_C])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([ECHO_C])
m4trace:configure.ac:4: -1- m4_pattern_allow([^ECHO_C$])
m4trace:configure.ac:4: -1- AC_SUBST([ECHO_N])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([ECHO_N])
m4trace:configure.ac:4: -1- m4_pattern_allow([^ECHO_N$])
m4trace:configure.ac:4: -1- AC_SUBST([ECHO_T])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([ECHO_T])
m4trace:configure.ac:4: -1- m4_pattern_allow([^ECHO_T$])
m4trace:configure.ac:4: -1- AC_SUBST([LIBS])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([LIBS])
m4trace:configure.ac:4: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.ac:4: -1- AC_SUBST([build_alias])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([build_alias])
m4trace:configure.ac:4: -1- m4_pattern_allow([^build_alias$])
m4trace:configure.ac:4: -1- AC_SUBST([host_alias])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([host_alias])
m4trace:configure.ac:4: -1- m4_pattern_allow([^host_alias$])
m4trace:configure.ac:4: -1- AC_SUBST([target_alias])
m4trace:configure.ac:4: -1- AC_SUBST_TRACE([target_alias])
m4trace:configure.ac:4: -1- m4_pattern_allow([^target_alias$])
m4trace:configure.ac:5: -1- AM_INIT_AUTOMAKE([no-dependencies foreign subdir-objects])
m4trace:configure.ac:5: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
m4trace:configure.ac:5: -1- AM_AUTOMAKE_VERSION([1.11.6])
m4trace:configure.ac:5: -1- AC_REQUIRE_AUX_FILE([install-sh])
m4trace:configure.ac:5: -1- AC_SUBST([INSTALL_PROGRAM])
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([INSTALL_PROGRAM])
m4trace:configure.ac:5: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
m4trace:configure.ac:5: -1- AC_SUBST([INSTALL_SCRIPT])
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([INSTALL_SCRIPT])
m4trace:configure.ac:5: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
m4trace:configure.ac:5: -1- AC_SUBST([INSTALL_DATA])
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([INSTALL_DATA])
m4trace:configure.ac:5: -1- m4_pattern_allow([^INSTALL_DATA$])
m4trace:configure.ac:5: -1- AC_SUBST([am__isrc], [' -I$(srcdir)'])
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([am__isrc])
m4trace:configure.ac:5: -1- m4_pattern_allow([^am__isrc$])
m4trace:configure.ac:5: -1- _AM_SUBST_NOTMAKE([am__isrc])
m4trace:configure.ac:5: -1- AC_SUBST([CYGPATH_W])
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([CYGPATH_W])
m4trace:configure.ac:5: -1- m4_pattern_allow([^CYGPATH_W$])
m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE])
m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE$])
m4trace:configure.ac:5: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([VERSION])
m4trace:configure.ac:5: -1- m4_pattern_allow([^VERSION$])
m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE])
m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE$])
m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE], [/* Name of package */
@%:@undef PACKAGE])
m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([VERSION])
m4trace:configure.ac:5: -1- m4_pattern_allow([^VERSION$])
m4trace:configure.ac:5: -1- AH_OUTPUT([VERSION], [/* Version number of package */
@%:@undef VERSION])
m4trace:configure.ac:5: -1- AC_REQUIRE_AUX_FILE([missing])
m4trace:configure.ac:5: -1- AC_SUBST([ACLOCAL])
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ACLOCAL])
m4trace:configure.ac:5: -1- m4_pattern_allow([^ACLOCAL$])
m4trace:configure.ac:5: -1- AC_SUBST([AUTOCONF])
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([AUTOCONF])
m4trace:configure.ac:5: -1- m4_pattern_allow([^AUTOCONF$])
m4trace:configure.ac:5: -1- AC_SUBST([AUTOMAKE])
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([AUTOMAKE])
m4trace:configure.ac:5: -1- m4_pattern_allow([^AUTOMAKE$])
m4trace:configure.ac:5: -1- AC_SUBST([AUTOHEADER])
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([AUTOHEADER])
m4trace:configure.ac:5: -1- m4_pattern_allow([^AUTOHEADER$])
m4trace:configure.ac:5: -1- AC_SUBST([MAKEINFO])
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([MAKEINFO])
m4trace:configure.ac:5: -1- m4_pattern_allow([^MAKEINFO$])
m4trace:configure.ac:5: -1- AC_SUBST([install_sh])
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([install_sh])
m4trace:configure.ac:5: -1- m4_pattern_allow([^install_sh$])
m4trace:configure.ac:5: -1- AC_SUBST([STRIP])
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([STRIP])
m4trace:configure.ac:5: -1- m4_pattern_allow([^STRIP$])
m4trace:configure.ac:5: -1- AC_SUBST([INSTALL_STRIP_PROGRAM])
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM])
m4trace:configure.ac:5: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
m4trace:configure.ac:5: -1- AM_PROG_MKDIR_P
m4trace:configure.ac:5: -1- AC_REQUIRE_AUX_FILE([install-sh])
m4trace:configure.ac:5: -1- AC_SUBST([MKDIR_P])
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([MKDIR_P])
m4trace:configure.ac:5: -1- m4_pattern_allow([^MKDIR_P$])
m4trace:configure.ac:5: -1- AC_SUBST([mkdir_p], ["$MKDIR_P"])
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([mkdir_p])
m4trace:configure.ac:5: -1- m4_pattern_allow([^mkdir_p$])
m4trace:configure.ac:5: -1- AC_SUBST([AWK])
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([AWK])
m4trace:configure.ac:5: -1- m4_pattern_allow([^AWK$])
m4trace:configure.ac:5: -1- AC_SUBST([SET_MAKE])
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([SET_MAKE])
m4trace:configure.ac:5: -1- m4_pattern_allow([^SET_MAKE$])
m4trace:configure.ac:5: -1- AC_SUBST([am__leading_dot])
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([am__leading_dot])
m4trace:configure.ac:5: -1- m4_pattern_allow([^am__leading_dot$])
m4trace:configure.ac:5: -1- AC_SUBST([AMTAR], ['$${TAR-tar}'])
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([AMTAR])
m4trace:configure.ac:5: -1- m4_pattern_allow([^AMTAR$])
m4trace:configure.ac:5: -1- AC_SUBST([am__tar])
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([am__tar])
m4trace:configure.ac:5: -1- m4_pattern_allow([^am__tar$])
m4trace:configure.ac:5: -1- AC_SUBST([am__untar])
m4trace:configure.ac:5: -1- AC_SUBST_TRACE([am__untar])
m4trace:configure.ac:5: -1- m4_pattern_allow([^am__untar$])
m4trace:configure.ac:6: -1- AM_SILENT_RULES([yes])
m4trace:configure.ac:6: -1- AC_SUBST([AM_V])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([AM_V])
m4trace:configure.ac:6: -1- m4_pattern_allow([^AM_V$])
m4trace:configure.ac:6: -1- _AM_SUBST_NOTMAKE([AM_V])
m4trace:configure.ac:6: -1- AC_SUBST([AM_DEFAULT_V])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([AM_DEFAULT_V])
m4trace:configure.ac:6: -1- m4_pattern_allow([^AM_DEFAULT_V$])
m4trace:configure.ac:6: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V])
m4trace:configure.ac:6: -1- AC_SUBST([AM_DEFAULT_VERBOSITY])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([AM_DEFAULT_VERBOSITY])
m4trace:configure.ac:6: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$])
m4trace:configure.ac:6: -1- AC_SUBST([AM_BACKSLASH])
m4trace:configure.ac:6: -1- AC_SUBST_TRACE([AM_BACKSLASH])
m4trace:configure.ac:6: -1- m4_pattern_allow([^AM_BACKSLASH$])
m4trace:configure.ac:6: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH])
m4trace:configure.ac:8: -1- AC_PROG_LIBTOOL
m4trace:configure.ac:8: -1- _m4_warn([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete.
You should run autoupdate.], [m4/libtool.m4:107: AC_PROG_LIBTOOL is expanded from...
configure.ac:8: the top level])
m4trace:configure.ac:8: -1- LT_INIT
m4trace:configure.ac:8: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
m4trace:configure.ac:8: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
m4trace:configure.ac:8: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
m4trace:configure.ac:8: -1- AC_SUBST([LIBTOOL])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([LIBTOOL])
m4trace:configure.ac:8: -1- m4_pattern_allow([^LIBTOOL$])
m4trace:configure.ac:8: -1- AC_CANONICAL_HOST
m4trace:configure.ac:8: -1- AC_CANONICAL_BUILD
m4trace:configure.ac:8: -1- AC_REQUIRE_AUX_FILE([config.sub])
m4trace:configure.ac:8: -1- AC_REQUIRE_AUX_FILE([config.guess])
m4trace:configure.ac:8: -1- AC_SUBST([build], [$ac_cv_build])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([build])
m4trace:configure.ac:8: -1- m4_pattern_allow([^build$])
m4trace:configure.ac:8: -1- AC_SUBST([build_cpu], [$[1]])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([build_cpu])
m4trace:configure.ac:8: -1- m4_pattern_allow([^build_cpu$])
m4trace:configure.ac:8: -1- AC_SUBST([build_vendor], [$[2]])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([build_vendor])
m4trace:configure.ac:8: -1- m4_pattern_allow([^build_vendor$])
m4trace:configure.ac:8: -1- AC_SUBST([build_os])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([build_os])
m4trace:configure.ac:8: -1- m4_pattern_allow([^build_os$])
m4trace:configure.ac:8: -1- AC_SUBST([host], [$ac_cv_host])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([host])
m4trace:configure.ac:8: -1- m4_pattern_allow([^host$])
m4trace:configure.ac:8: -1- AC_SUBST([host_cpu], [$[1]])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([host_cpu])
m4trace:configure.ac:8: -1- m4_pattern_allow([^host_cpu$])
m4trace:configure.ac:8: -1- AC_SUBST([host_vendor], [$[2]])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([host_vendor])
m4trace:configure.ac:8: -1- m4_pattern_allow([^host_vendor$])
m4trace:configure.ac:8: -1- AC_SUBST([host_os])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([host_os])
m4trace:configure.ac:8: -1- m4_pattern_allow([^host_os$])
m4trace:configure.ac:8: -1- AC_SUBST([CC])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:8: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:8: -1- AC_SUBST([CFLAGS])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([CFLAGS])
m4trace:configure.ac:8: -1- m4_pattern_allow([^CFLAGS$])
m4trace:configure.ac:8: -1- AC_SUBST([LDFLAGS])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([LDFLAGS])
m4trace:configure.ac:8: -1- m4_pattern_allow([^LDFLAGS$])
m4trace:configure.ac:8: -1- AC_SUBST([LIBS])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([LIBS])
m4trace:configure.ac:8: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.ac:8: -1- AC_SUBST([CPPFLAGS])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([CPPFLAGS])
m4trace:configure.ac:8: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:8: -1- AC_SUBST([CC])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:8: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:8: -1- AC_SUBST([CC])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:8: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:8: -1- AC_SUBST([CC])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:8: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:8: -1- AC_SUBST([CC])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:8: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:8: -1- AC_SUBST([ac_ct_CC])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([ac_ct_CC])
m4trace:configure.ac:8: -1- m4_pattern_allow([^ac_ct_CC$])
m4trace:configure.ac:8: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([EXEEXT])
m4trace:configure.ac:8: -1- m4_pattern_allow([^EXEEXT$])
m4trace:configure.ac:8: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([OBJEXT])
m4trace:configure.ac:8: -1- m4_pattern_allow([^OBJEXT$])
m4trace:configure.ac:8: -1- AC_SUBST([SED])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([SED])
m4trace:configure.ac:8: -1- m4_pattern_allow([^SED$])
m4trace:configure.ac:8: -1- AC_SUBST([GREP])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([GREP])
m4trace:configure.ac:8: -1- m4_pattern_allow([^GREP$])
m4trace:configure.ac:8: -1- AC_SUBST([EGREP])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([EGREP])
m4trace:configure.ac:8: -1- m4_pattern_allow([^EGREP$])
m4trace:configure.ac:8: -1- AC_SUBST([FGREP])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([FGREP])
m4trace:configure.ac:8: -1- m4_pattern_allow([^FGREP$])
m4trace:configure.ac:8: -1- AC_SUBST([GREP])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([GREP])
m4trace:configure.ac:8: -1- m4_pattern_allow([^GREP$])
m4trace:configure.ac:8: -1- AC_SUBST([LD])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([LD])
m4trace:configure.ac:8: -1- m4_pattern_allow([^LD$])
m4trace:configure.ac:8: -1- AC_SUBST([DUMPBIN])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([DUMPBIN])
m4trace:configure.ac:8: -1- m4_pattern_allow([^DUMPBIN$])
m4trace:configure.ac:8: -1- AC_SUBST([ac_ct_DUMPBIN])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([ac_ct_DUMPBIN])
m4trace:configure.ac:8: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
m4trace:configure.ac:8: -1- AC_SUBST([DUMPBIN])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([DUMPBIN])
m4trace:configure.ac:8: -1- m4_pattern_allow([^DUMPBIN$])
m4trace:configure.ac:8: -1- AC_SUBST([NM])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([NM])
m4trace:configure.ac:8: -1- m4_pattern_allow([^NM$])
m4trace:configure.ac:8: -1- AC_SUBST([LN_S], [$as_ln_s])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([LN_S])
m4trace:configure.ac:8: -1- m4_pattern_allow([^LN_S$])
m4trace:configure.ac:8: -1- AC_SUBST([OBJDUMP])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([OBJDUMP])
m4trace:configure.ac:8: -1- m4_pattern_allow([^OBJDUMP$])
m4trace:configure.ac:8: -1- AC_SUBST([OBJDUMP])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([OBJDUMP])
m4trace:configure.ac:8: -1- m4_pattern_allow([^OBJDUMP$])
m4trace:configure.ac:8: -1- AC_SUBST([DLLTOOL])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([DLLTOOL])
m4trace:configure.ac:8: -1- m4_pattern_allow([^DLLTOOL$])
m4trace:configure.ac:8: -1- AC_SUBST([DLLTOOL])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([DLLTOOL])
m4trace:configure.ac:8: -1- m4_pattern_allow([^DLLTOOL$])
m4trace:configure.ac:8: -1- AC_SUBST([AR])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([AR])
m4trace:configure.ac:8: -1- m4_pattern_allow([^AR$])
m4trace:configure.ac:8: -1- AC_SUBST([ac_ct_AR])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([ac_ct_AR])
m4trace:configure.ac:8: -1- m4_pattern_allow([^ac_ct_AR$])
m4trace:configure.ac:8: -1- AC_SUBST([STRIP])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([STRIP])
m4trace:configure.ac:8: -1- m4_pattern_allow([^STRIP$])
m4trace:configure.ac:8: -1- AC_SUBST([RANLIB])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([RANLIB])
m4trace:configure.ac:8: -1- m4_pattern_allow([^RANLIB$])
m4trace:configure.ac:8: -1- m4_pattern_allow([LT_OBJDIR])
m4trace:configure.ac:8: -1- AC_DEFINE_TRACE_LITERAL([LT_OBJDIR])
m4trace:configure.ac:8: -1- m4_pattern_allow([^LT_OBJDIR$])
m4trace:configure.ac:8: -1- AH_OUTPUT([LT_OBJDIR], [/* Define to the sub-directory in which libtool stores uninstalled libraries.
*/
@%:@undef LT_OBJDIR])
m4trace:configure.ac:8: -1- LT_SUPPORTED_TAG([CC])
m4trace:configure.ac:8: -1- AC_SUBST([MANIFEST_TOOL])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([MANIFEST_TOOL])
m4trace:configure.ac:8: -1- m4_pattern_allow([^MANIFEST_TOOL$])
m4trace:configure.ac:8: -1- AC_SUBST([DSYMUTIL])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([DSYMUTIL])
m4trace:configure.ac:8: -1- m4_pattern_allow([^DSYMUTIL$])
m4trace:configure.ac:8: -1- AC_SUBST([NMEDIT])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([NMEDIT])
m4trace:configure.ac:8: -1- m4_pattern_allow([^NMEDIT$])
m4trace:configure.ac:8: -1- AC_SUBST([LIPO])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([LIPO])
m4trace:configure.ac:8: -1- m4_pattern_allow([^LIPO$])
m4trace:configure.ac:8: -1- AC_SUBST([OTOOL])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([OTOOL])
m4trace:configure.ac:8: -1- m4_pattern_allow([^OTOOL$])
m4trace:configure.ac:8: -1- AC_SUBST([OTOOL64])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([OTOOL64])
m4trace:configure.ac:8: -1- m4_pattern_allow([^OTOOL64$])
m4trace:configure.ac:8: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
@%:@undef HAVE_DLFCN_H])
m4trace:configure.ac:8: -1- AC_SUBST([CPP])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([CPP])
m4trace:configure.ac:8: -1- m4_pattern_allow([^CPP$])
m4trace:configure.ac:8: -1- AC_SUBST([CPPFLAGS])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([CPPFLAGS])
m4trace:configure.ac:8: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:8: -1- AC_SUBST([CPP])
m4trace:configure.ac:8: -1- AC_SUBST_TRACE([CPP])
m4trace:configure.ac:8: -1- m4_pattern_allow([^CPP$])
m4trace:configure.ac:8: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
m4trace:configure.ac:8: -1- m4_pattern_allow([^STDC_HEADERS$])
m4trace:configure.ac:8: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
@%:@undef STDC_HEADERS])
m4trace:configure.ac:8: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
@%:@undef HAVE_SYS_TYPES_H])
m4trace:configure.ac:8: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
@%:@undef HAVE_SYS_STAT_H])
m4trace:configure.ac:8: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
@%:@undef HAVE_STDLIB_H])
m4trace:configure.ac:8: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
@%:@undef HAVE_STRING_H])
m4trace:configure.ac:8: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
@%:@undef HAVE_MEMORY_H])
m4trace:configure.ac:8: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
@%:@undef HAVE_STRINGS_H])
m4trace:configure.ac:8: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
@%:@undef HAVE_INTTYPES_H])
m4trace:configure.ac:8: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
@%:@undef HAVE_STDINT_H])
m4trace:configure.ac:8: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
@%:@undef HAVE_UNISTD_H])
m4trace:configure.ac:8: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DLFCN_H])
m4trace:configure.ac:8: -1- m4_pattern_allow([^HAVE_DLFCN_H$])
m4trace:configure.ac:9: -1- AC_SUBST([CXX])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([CXX])
m4trace:configure.ac:9: -1- m4_pattern_allow([^CXX$])
m4trace:configure.ac:9: -1- AC_SUBST([CXXFLAGS])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([CXXFLAGS])
m4trace:configure.ac:9: -1- m4_pattern_allow([^CXXFLAGS$])
m4trace:configure.ac:9: -1- AC_SUBST([LDFLAGS])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([LDFLAGS])
m4trace:configure.ac:9: -1- m4_pattern_allow([^LDFLAGS$])
m4trace:configure.ac:9: -1- AC_SUBST([LIBS])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([LIBS])
m4trace:configure.ac:9: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.ac:9: -1- AC_SUBST([CPPFLAGS])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([CPPFLAGS])
m4trace:configure.ac:9: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:9: -1- AC_SUBST([CXX])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([CXX])
m4trace:configure.ac:9: -1- m4_pattern_allow([^CXX$])
m4trace:configure.ac:9: -1- AC_SUBST([ac_ct_CXX])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([ac_ct_CXX])
m4trace:configure.ac:9: -1- m4_pattern_allow([^ac_ct_CXX$])
m4trace:configure.ac:9: -1- LT_SUPPORTED_TAG([CXX])
m4trace:configure.ac:9: -1- AC_SUBST([CXXCPP])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([CXXCPP])
m4trace:configure.ac:9: -1- m4_pattern_allow([^CXXCPP$])
m4trace:configure.ac:9: -1- AC_SUBST([CPPFLAGS])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([CPPFLAGS])
m4trace:configure.ac:9: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:9: -1- AC_SUBST([CXXCPP])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([CXXCPP])
m4trace:configure.ac:9: -1- m4_pattern_allow([^CXXCPP$])
m4trace:configure.ac:9: -1- AC_SUBST([LD])
m4trace:configure.ac:9: -1- AC_SUBST_TRACE([LD])
m4trace:configure.ac:9: -1- m4_pattern_allow([^LD$])
m4trace:configure.ac:11: -1- AC_SUBST([BOOST_ROOT])
m4trace:configure.ac:11: -1- AC_SUBST_TRACE([BOOST_ROOT])
m4trace:configure.ac:11: -1- m4_pattern_allow([^BOOST_ROOT$])
m4trace:configure.ac:11: -1- AC_SUBST([DISTCHECK_CONFIGURE_FLAGS], ["$DISTCHECK_CONFIGURE_FLAGS '--with-boost=$with_boost'"])
m4trace:configure.ac:11: -1- AC_SUBST_TRACE([DISTCHECK_CONFIGURE_FLAGS])
m4trace:configure.ac:11: -1- m4_pattern_allow([^DISTCHECK_CONFIGURE_FLAGS$])
m4trace:configure.ac:11: -1- m4_pattern_allow([^BOOST_VERSION$])
m4trace:configure.ac:11: -1- AC_SUBST([BOOST_CPPFLAGS], ["-I$boost_cv_inc_path"])
m4trace:configure.ac:11: -1- AC_SUBST_TRACE([BOOST_CPPFLAGS])
m4trace:configure.ac:11: -1- m4_pattern_allow([^BOOST_CPPFLAGS$])
m4trace:configure.ac:11: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BOOST])
m4trace:configure.ac:11: -1- m4_pattern_allow([^HAVE_BOOST$])
m4trace:configure.ac:11: -1- AH_OUTPUT([HAVE_BOOST], [/* Defined if the requested minimum BOOST version is satisfied */
@%:@undef HAVE_BOOST])
m4trace:configure.ac:11: -1- m4_pattern_allow([^BOOST_LIB_VERSION$])
m4trace:configure.ac:12: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BOOST_PROGRAM_OPTIONS_HPP])
m4trace:configure.ac:12: -1- m4_pattern_allow([^HAVE_BOOST_PROGRAM_OPTIONS_HPP$])
m4trace:configure.ac:12: -1- AH_OUTPUT([HAVE_BOOST_PROGRAM_OPTIONS_HPP], [/* Define to 1 if you have <boost/program_options.hpp> */
@%:@undef HAVE_BOOST_PROGRAM_OPTIONS_HPP])
m4trace:configure.ac:12: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BOOST_PROGRAM_OPTIONS])
m4trace:configure.ac:12: -1- m4_pattern_allow([^HAVE_BOOST_PROGRAM_OPTIONS$])
m4trace:configure.ac:12: -1- AH_OUTPUT([HAVE_BOOST_PROGRAM_OPTIONS], [/* Defined if the Boost program_options library is available */
@%:@undef HAVE_BOOST_PROGRAM_OPTIONS])
m4trace:configure.ac:12: -1- AC_SUBST([BOOST_PROGRAM_OPTIONS_LDFLAGS], [$Boost_lib_LDFLAGS])
m4trace:configure.ac:12: -1- AC_SUBST_TRACE([BOOST_PROGRAM_OPTIONS_LDFLAGS])
m4trace:configure.ac:12: -1- m4_pattern_allow([^BOOST_PROGRAM_OPTIONS_LDFLAGS$])
m4trace:configure.ac:12: -1- AC_SUBST([BOOST_PROGRAM_OPTIONS_LDPATH], [$Boost_lib_LDPATH])
m4trace:configure.ac:12: -1- AC_SUBST_TRACE([BOOST_PROGRAM_OPTIONS_LDPATH])
m4trace:configure.ac:12: -1- m4_pattern_allow([^BOOST_PROGRAM_OPTIONS_LDPATH$])
m4trace:configure.ac:12: -1- AC_SUBST([BOOST_LDPATH], [$Boost_lib_LDPATH])
m4trace:configure.ac:12: -1- AC_SUBST_TRACE([BOOST_LDPATH])
m4trace:configure.ac:12: -1- m4_pattern_allow([^BOOST_LDPATH$])
m4trace:configure.ac:12: -1- AC_SUBST([BOOST_PROGRAM_OPTIONS_LIBS], [$Boost_lib_LIBS])
m4trace:configure.ac:12: -1- AC_SUBST_TRACE([BOOST_PROGRAM_OPTIONS_LIBS])
m4trace:configure.ac:12: -1- m4_pattern_allow([^BOOST_PROGRAM_OPTIONS_LIBS$])
m4trace:configure.ac:13: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BOOST_SYSTEM_ERROR_CODE_HPP])
m4trace:configure.ac:13: -1- m4_pattern_allow([^HAVE_BOOST_SYSTEM_ERROR_CODE_HPP$])
m4trace:configure.ac:13: -1- AH_OUTPUT([HAVE_BOOST_SYSTEM_ERROR_CODE_HPP], [/* Define to 1 if you have <boost/system/error_code.hpp> */
@%:@undef HAVE_BOOST_SYSTEM_ERROR_CODE_HPP])
m4trace:configure.ac:13: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BOOST_SYSTEM])
m4trace:configure.ac:13: -1- m4_pattern_allow([^HAVE_BOOST_SYSTEM$])
m4trace:configure.ac:13: -1- AH_OUTPUT([HAVE_BOOST_SYSTEM], [/* Defined if the Boost system library is available */
@%:@undef HAVE_BOOST_SYSTEM])
m4trace:configure.ac:13: -1- AC_SUBST([BOOST_SYSTEM_LDFLAGS], [$Boost_lib_LDFLAGS])
m4trace:configure.ac:13: -1- AC_SUBST_TRACE([BOOST_SYSTEM_LDFLAGS])
m4trace:configure.ac:13: -1- m4_pattern_allow([^BOOST_SYSTEM_LDFLAGS$])
m4trace:configure.ac:13: -1- AC_SUBST([BOOST_SYSTEM_LDPATH], [$Boost_lib_LDPATH])
m4trace:configure.ac:13: -1- AC_SUBST_TRACE([BOOST_SYSTEM_LDPATH])
m4trace:configure.ac:13: -1- m4_pattern_allow([^BOOST_SYSTEM_LDPATH$])
m4trace:configure.ac:13: -1- AC_SUBST([BOOST_LDPATH], [$Boost_lib_LDPATH])
m4trace:configure.ac:13: -1- AC_SUBST_TRACE([BOOST_LDPATH])
m4trace:configure.ac:13: -1- m4_pattern_allow([^BOOST_LDPATH$])
m4trace:configure.ac:13: -1- AC_SUBST([BOOST_SYSTEM_LIBS], [$Boost_lib_LIBS])
m4trace:configure.ac:13: -1- AC_SUBST_TRACE([BOOST_SYSTEM_LIBS])
m4trace:configure.ac:13: -1- m4_pattern_allow([^BOOST_SYSTEM_LIBS$])
m4trace:configure.ac:14: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BOOST_REGEX_HPP])
m4trace:configure.ac:14: -1- m4_pattern_allow([^HAVE_BOOST_REGEX_HPP$])
m4trace:configure.ac:14: -1- AH_OUTPUT([HAVE_BOOST_REGEX_HPP], [/* Define to 1 if you have <boost/regex.hpp> */
@%:@undef HAVE_BOOST_REGEX_HPP])
m4trace:configure.ac:14: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BOOST_REGEX])
m4trace:configure.ac:14: -1- m4_pattern_allow([^HAVE_BOOST_REGEX$])
m4trace:configure.ac:14: -1- AH_OUTPUT([HAVE_BOOST_REGEX], [/* Defined if the Boost regex library is available */
@%:@undef HAVE_BOOST_REGEX])
m4trace:configure.ac:14: -1- AC_SUBST([BOOST_REGEX_LDFLAGS], [$Boost_lib_LDFLAGS])
m4trace:configure.ac:14: -1- AC_SUBST_TRACE([BOOST_REGEX_LDFLAGS])
m4trace:configure.ac:14: -1- m4_pattern_allow([^BOOST_REGEX_LDFLAGS$])
m4trace:configure.ac:14: -1- AC_SUBST([BOOST_REGEX_LDPATH], [$Boost_lib_LDPATH])
m4trace:configure.ac:14: -1- AC_SUBST_TRACE([BOOST_REGEX_LDPATH])
m4trace:configure.ac:14: -1- m4_pattern_allow([^BOOST_REGEX_LDPATH$])
m4trace:configure.ac:14: -1- AC_SUBST([BOOST_LDPATH], [$Boost_lib_LDPATH])
m4trace:configure.ac:14: -1- AC_SUBST_TRACE([BOOST_LDPATH])
m4trace:configure.ac:14: -1- m4_pattern_allow([^BOOST_LDPATH$])
m4trace:configure.ac:14: -1- AC_SUBST([BOOST_REGEX_LIBS], [$Boost_lib_LIBS])
m4trace:configure.ac:14: -1- AC_SUBST_TRACE([BOOST_REGEX_LIBS])
m4trace:configure.ac:14: -1- m4_pattern_allow([^BOOST_REGEX_LIBS$])
m4trace:configure.ac:15: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BOOST_SYSTEM_ERROR_CODE_HPP])
m4trace:configure.ac:15: -1- m4_pattern_allow([^HAVE_BOOST_SYSTEM_ERROR_CODE_HPP$])
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_BOOST_SYSTEM_ERROR_CODE_HPP], [/* Define to 1 if you have <boost/system/error_code.hpp> */
@%:@undef HAVE_BOOST_SYSTEM_ERROR_CODE_HPP])
m4trace:configure.ac:15: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BOOST_SYSTEM])
m4trace:configure.ac:15: -1- m4_pattern_allow([^HAVE_BOOST_SYSTEM$])
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_BOOST_SYSTEM], [/* Defined if the Boost system library is available */
@%:@undef HAVE_BOOST_SYSTEM])
m4trace:configure.ac:15: -1- AC_SUBST([BOOST_SYSTEM_LDFLAGS], [$Boost_lib_LDFLAGS])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([BOOST_SYSTEM_LDFLAGS])
m4trace:configure.ac:15: -1- m4_pattern_allow([^BOOST_SYSTEM_LDFLAGS$])
m4trace:configure.ac:15: -1- AC_SUBST([BOOST_SYSTEM_LDPATH], [$Boost_lib_LDPATH])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([BOOST_SYSTEM_LDPATH])
m4trace:configure.ac:15: -1- m4_pattern_allow([^BOOST_SYSTEM_LDPATH$])
m4trace:configure.ac:15: -1- AC_SUBST([BOOST_LDPATH], [$Boost_lib_LDPATH])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([BOOST_LDPATH])
m4trace:configure.ac:15: -1- m4_pattern_allow([^BOOST_LDPATH$])
m4trace:configure.ac:15: -1- AC_SUBST([BOOST_SYSTEM_LIBS], [$Boost_lib_LIBS])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([BOOST_SYSTEM_LIBS])
m4trace:configure.ac:15: -1- m4_pattern_allow([^BOOST_SYSTEM_LIBS$])
m4trace:configure.ac:15: -1- m4_pattern_allow([^BOOST_SYSTEM_(LIBS|LDFLAGS)$])
m4trace:configure.ac:15: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BOOST_FILESYSTEM_PATH_HPP])
m4trace:configure.ac:15: -1- m4_pattern_allow([^HAVE_BOOST_FILESYSTEM_PATH_HPP$])
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_BOOST_FILESYSTEM_PATH_HPP], [/* Define to 1 if you have <boost/filesystem/path.hpp> */
@%:@undef HAVE_BOOST_FILESYSTEM_PATH_HPP])
m4trace:configure.ac:15: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BOOST_FILESYSTEM])
m4trace:configure.ac:15: -1- m4_pattern_allow([^HAVE_BOOST_FILESYSTEM$])
m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_BOOST_FILESYSTEM], [/* Defined if the Boost filesystem library is available */
@%:@undef HAVE_BOOST_FILESYSTEM])
m4trace:configure.ac:15: -1- AC_SUBST([BOOST_FILESYSTEM_LDFLAGS], [$Boost_lib_LDFLAGS])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([BOOST_FILESYSTEM_LDFLAGS])
m4trace:configure.ac:15: -1- m4_pattern_allow([^BOOST_FILESYSTEM_LDFLAGS$])
m4trace:configure.ac:15: -1- AC_SUBST([BOOST_FILESYSTEM_LDPATH], [$Boost_lib_LDPATH])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([BOOST_FILESYSTEM_LDPATH])
m4trace:configure.ac:15: -1- m4_pattern_allow([^BOOST_FILESYSTEM_LDPATH$])
m4trace:configure.ac:15: -1- AC_SUBST([BOOST_LDPATH], [$Boost_lib_LDPATH])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([BOOST_LDPATH])
m4trace:configure.ac:15: -1- m4_pattern_allow([^BOOST_LDPATH$])
m4trace:configure.ac:15: -1- AC_SUBST([BOOST_FILESYSTEM_LIBS], [$Boost_lib_LIBS])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([BOOST_FILESYSTEM_LIBS])
m4trace:configure.ac:15: -1- m4_pattern_allow([^BOOST_FILESYSTEM_LIBS$])
m4trace:configure.ac:16: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BOOST_FOREACH_HPP])
m4trace:configure.ac:16: -1- m4_pattern_allow([^HAVE_BOOST_FOREACH_HPP$])
m4trace:configure.ac:16: -1- AH_OUTPUT([HAVE_BOOST_FOREACH_HPP], [/* Define to 1 if you have <boost/foreach.hpp> */
@%:@undef HAVE_BOOST_FOREACH_HPP])
m4trace:configure.ac:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BOOST_SCOPED_PTR_HPP])
m4trace:configure.ac:17: -1- m4_pattern_allow([^HAVE_BOOST_SCOPED_PTR_HPP$])
m4trace:configure.ac:17: -1- AH_OUTPUT([HAVE_BOOST_SCOPED_PTR_HPP], [/* Define to 1 if you have <boost/scoped_ptr.hpp> */
@%:@undef HAVE_BOOST_SCOPED_PTR_HPP])
m4trace:configure.ac:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BOOST_SHARED_PTR_HPP])
m4trace:configure.ac:17: -1- m4_pattern_allow([^HAVE_BOOST_SHARED_PTR_HPP$])
m4trace:configure.ac:17: -1- AH_OUTPUT([HAVE_BOOST_SHARED_PTR_HPP], [/* Define to 1 if you have <boost/shared_ptr.hpp> */
@%:@undef HAVE_BOOST_SHARED_PTR_HPP])
m4trace:configure.ac:18: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BOOST_ALGORITHM_STRING_HPP])
m4trace:configure.ac:18: -1- m4_pattern_allow([^HAVE_BOOST_ALGORITHM_STRING_HPP$])
m4trace:configure.ac:18: -1- AH_OUTPUT([HAVE_BOOST_ALGORITHM_STRING_HPP], [/* Define to 1 if you have <boost/algorithm/string.hpp> */
@%:@undef HAVE_BOOST_ALGORITHM_STRING_HPP])
m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BOOST_SIGNALS2_HPP])
m4trace:configure.ac:19: -1- m4_pattern_allow([^HAVE_BOOST_SIGNALS2_HPP$])
m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_BOOST_SIGNALS2_HPP], [/* Define to 1 if you have <boost/signals2.hpp> */
@%:@undef HAVE_BOOST_SIGNALS2_HPP])
m4trace:configure.ac:20: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BOOST_CRC_HPP])
m4trace:configure.ac:20: -1- m4_pattern_allow([^HAVE_BOOST_CRC_HPP$])
m4trace:configure.ac:20: -1- AH_OUTPUT([HAVE_BOOST_CRC_HPP], [/* Define to 1 if you have <boost/crc.hpp> */
@%:@undef HAVE_BOOST_CRC_HPP])
m4trace:configure.ac:22: -1- m4_pattern_forbid([^_?PKG_[A-Z_]+$])
m4trace:configure.ac:22: -1- m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
m4trace:configure.ac:22: -1- AC_SUBST([PKG_CONFIG])
m4trace:configure.ac:22: -1- AC_SUBST_TRACE([PKG_CONFIG])
m4trace:configure.ac:22: -1- m4_pattern_allow([^PKG_CONFIG$])
m4trace:configure.ac:22: -1- AC_SUBST([PKG_CONFIG_PATH])
m4trace:configure.ac:22: -1- AC_SUBST_TRACE([PKG_CONFIG_PATH])
m4trace:configure.ac:22: -1- m4_pattern_allow([^PKG_CONFIG_PATH$])
m4trace:configure.ac:22: -1- AC_SUBST([PKG_CONFIG_LIBDIR])
m4trace:configure.ac:22: -1- AC_SUBST_TRACE([PKG_CONFIG_LIBDIR])
m4trace:configure.ac:22: -1- m4_pattern_allow([^PKG_CONFIG_LIBDIR$])
m4trace:configure.ac:22: -1- AC_SUBST([PKG_CONFIG])
m4trace:configure.ac:22: -1- AC_SUBST_TRACE([PKG_CONFIG])
m4trace:configure.ac:22: -1- m4_pattern_allow([^PKG_CONFIG$])
m4trace:configure.ac:22: -1- AC_SUBST([LIBUSB_CFLAGS])
m4trace:configure.ac:22: -1- AC_SUBST_TRACE([LIBUSB_CFLAGS])
m4trace:configure.ac:22: -1- m4_pattern_allow([^LIBUSB_CFLAGS$])
m4trace:configure.ac:22: -1- AC_SUBST([LIBUSB_LIBS])
m4trace:configure.ac:22: -1- AC_SUBST_TRACE([LIBUSB_LIBS])
m4trace:configure.ac:22: -1- m4_pattern_allow([^LIBUSB_LIBS$])
m4trace:configure.ac:24: -1- AC_CONFIG_FILES([Makefile])
m4trace:configure.ac:25: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
m4trace:configure.ac:25: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
m4trace:configure.ac:25: -1- m4_pattern_allow([^LIB@&t@OBJS$])
m4trace:configure.ac:25: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
m4trace:configure.ac:25: -1- AC_SUBST_TRACE([LTLIBOBJS])
m4trace:configure.ac:25: -1- m4_pattern_allow([^LTLIBOBJS$])
m4trace:configure.ac:25: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
m4trace:configure.ac:25: -1- AC_SUBST([am__EXEEXT_TRUE])
m4trace:configure.ac:25: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE])
m4trace:configure.ac:25: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
m4trace:configure.ac:25: -1- AC_SUBST([am__EXEEXT_FALSE])
m4trace:configure.ac:25: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE])
m4trace:configure.ac:25: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
m4trace:configure.ac:25: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
m4trace:configure.ac:25: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
m4trace:configure.ac:25: -1- AC_SUBST_TRACE([top_builddir])
m4trace:configure.ac:25: -1- AC_SUBST_TRACE([top_build_prefix])
m4trace:configure.ac:25: -1- AC_SUBST_TRACE([srcdir])
m4trace:configure.ac:25: -1- AC_SUBST_TRACE([abs_srcdir])
m4trace:configure.ac:25: -1- AC_SUBST_TRACE([top_srcdir])
m4trace:configure.ac:25: -1- AC_SUBST_TRACE([abs_top_srcdir])
m4trace:configure.ac:25: -1- AC_SUBST_TRACE([builddir])
m4trace:configure.ac:25: -1- AC_SUBST_TRACE([abs_builddir])
m4trace:configure.ac:25: -1- AC_SUBST_TRACE([abs_top_builddir])
m4trace:configure.ac:25: -1- AC_SUBST_TRACE([INSTALL])
m4trace:configure.ac:25: -1- AC_SUBST_TRACE([MKDIR_P])
m4trace:configure.ac:25: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])

259
config.guess vendored
View File

@ -1,10 +1,10 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
# Free Software Foundation, Inc.
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
# 2011, 2012 Free Software Foundation, Inc.
timestamp='2009-11-20'
timestamp='2012-02-10'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@ -17,9 +17,7 @@ timestamp='2009-11-20'
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
# 02110-1301, USA.
# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@ -56,8 +54,9 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@ -144,7 +143,7 @@ UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or
# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
# *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
# switched to ELF, *-*-netbsd* would select the old
# object file format. This provides both forward
@ -180,7 +179,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
fi
;;
*)
os=netbsd
os=netbsd
;;
esac
# The OS release
@ -223,7 +222,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
;;
*5.*)
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
;;
esac
# According to Compaq, /usr/sbin/psrinfo has been available on
@ -269,7 +268,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
exit ;;
# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
exitcode=$?
trap '' 0
exit $exitcode ;;
Alpha\ *:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# Should we change UNAME_MACHINE based on the output of uname instead
@ -295,7 +297,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
echo s390-ibm-zvmoe
exit ;;
*:OS400:*:*)
echo powerpc-ibm-os400
echo powerpc-ibm-os400
exit ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
@ -394,23 +396,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# MiNT. But MiNT is downward compatible to TOS, so this should
# be no problem.
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
echo m68k-atari-mint${UNAME_RELEASE}
exit ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
exit ;;
exit ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
echo m68k-atari-mint${UNAME_RELEASE}
exit ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
echo m68k-milan-mint${UNAME_RELEASE}
exit ;;
echo m68k-milan-mint${UNAME_RELEASE}
exit ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
echo m68k-hades-mint${UNAME_RELEASE}
exit ;;
echo m68k-hades-mint${UNAME_RELEASE}
exit ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
echo m68k-unknown-mint${UNAME_RELEASE}
exit ;;
echo m68k-unknown-mint${UNAME_RELEASE}
exit ;;
m68k:machten:*:*)
echo m68k-apple-machten${UNAME_RELEASE}
exit ;;
@ -480,8 +482,8 @@ EOF
echo m88k-motorola-sysv3
exit ;;
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
then
if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
@ -494,7 +496,7 @@ EOF
else
echo i586-dg-dgux${UNAME_RELEASE}
fi
exit ;;
exit ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
echo m88k-dolphin-sysv3
exit ;;
@ -551,7 +553,7 @@ EOF
echo rs6000-ibm-aix3.2
fi
exit ;;
*:AIX:*:[456])
*:AIX:*:[4567])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
@ -594,52 +596,52 @@ EOF
9000/[678][0-9][0-9])
if [ -x /usr/bin/getconf ]; then
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
case "${sc_cpu_version}" in
523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
532) # CPU_PA_RISC2_0
case "${sc_kernel_bits}" in
32) HP_ARCH="hppa2.0n" ;;
64) HP_ARCH="hppa2.0w" ;;
sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
case "${sc_cpu_version}" in
523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
532) # CPU_PA_RISC2_0
case "${sc_kernel_bits}" in
32) HP_ARCH="hppa2.0n" ;;
64) HP_ARCH="hppa2.0w" ;;
'') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
esac ;;
esac
esac ;;
esac
fi
if [ "${HP_ARCH}" = "" ]; then
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
sed 's/^ //' << EOF >$dummy.c
#define _HPUX_SOURCE
#include <stdlib.h>
#include <unistd.h>
#define _HPUX_SOURCE
#include <stdlib.h>
#include <unistd.h>
int main ()
{
#if defined(_SC_KERNEL_BITS)
long bits = sysconf(_SC_KERNEL_BITS);
#endif
long cpu = sysconf (_SC_CPU_VERSION);
int main ()
{
#if defined(_SC_KERNEL_BITS)
long bits = sysconf(_SC_KERNEL_BITS);
#endif
long cpu = sysconf (_SC_CPU_VERSION);
switch (cpu)
{
case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
case CPU_PA_RISC2_0:
#if defined(_SC_KERNEL_BITS)
switch (bits)
{
case 64: puts ("hppa2.0w"); break;
case 32: puts ("hppa2.0n"); break;
default: puts ("hppa2.0"); break;
} break;
#else /* !defined(_SC_KERNEL_BITS) */
puts ("hppa2.0"); break;
#endif
default: puts ("hppa1.0"); break;
}
exit (0);
}
switch (cpu)
{
case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
case CPU_PA_RISC2_0:
#if defined(_SC_KERNEL_BITS)
switch (bits)
{
case 64: puts ("hppa2.0w"); break;
case 32: puts ("hppa2.0n"); break;
default: puts ("hppa2.0"); break;
} break;
#else /* !defined(_SC_KERNEL_BITS) */
puts ("hppa2.0"); break;
#endif
default: puts ("hppa1.0"); break;
}
exit (0);
}
EOF
(CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
test -z "$HP_ARCH" && HP_ARCH=hppa
@ -730,22 +732,22 @@ EOF
exit ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
echo c1-convex-bsd
exit ;;
exit ;;
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
exit ;;
exit ;;
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
echo c34-convex-bsd
exit ;;
exit ;;
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
echo c38-convex-bsd
exit ;;
exit ;;
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
echo c4-convex-bsd
exit ;;
exit ;;
CRAY*Y-MP:*:*:*)
echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit ;;
@ -769,14 +771,14 @@ EOF
exit ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
5000:UNIX_System_V:4.*:*)
FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
@ -788,13 +790,12 @@ EOF
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
exit ;;
*:FreeBSD:*:*)
case ${UNAME_MACHINE} in
pc98)
echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
UNAME_PROCESSOR=`/usr/bin/uname -p`
case ${UNAME_PROCESSOR} in
amd64)
echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
*)
echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
esac
exit ;;
i*:CYGWIN*:*)
@ -803,15 +804,18 @@ EOF
*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
i*:MSYS*:*)
echo ${UNAME_MACHINE}-pc-msys
exit ;;
i*:windows32*:*)
# uname -m includes "-pc" on this system.
echo ${UNAME_MACHINE}-mingw32
# uname -m includes "-pc" on this system.
echo ${UNAME_MACHINE}-mingw32
exit ;;
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
exit ;;
*:Interix*:*)
case ${UNAME_MACHINE} in
case ${UNAME_MACHINE} in
x86)
echo i586-pc-interix${UNAME_RELEASE}
exit ;;
@ -857,6 +861,13 @@ EOF
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit ;;
aarch64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
aarch64_be:Linux:*:*)
UNAME_MACHINE=aarch64_be
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
EV5) UNAME_MACHINE=alphaev5 ;;
@ -866,7 +877,7 @@ EOF
EV6) UNAME_MACHINE=alphaev6 ;;
EV67) UNAME_MACHINE=alphaev67 ;;
EV68*) UNAME_MACHINE=alphaev68 ;;
esac
esac
objdump --private-headers /bin/sh | grep -q ld.so.1
if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
@ -878,20 +889,29 @@ EOF
then
echo ${UNAME_MACHINE}-unknown-linux-gnu
else
echo ${UNAME_MACHINE}-unknown-linux-gnueabi
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
echo ${UNAME_MACHINE}-unknown-linux-gnueabi
else
echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
fi
fi
exit ;;
avr32*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
cris:Linux:*:*)
echo cris-axis-linux-gnu
echo ${UNAME_MACHINE}-axis-linux-gnu
exit ;;
crisv32:Linux:*:*)
echo crisv32-axis-linux-gnu
echo ${UNAME_MACHINE}-axis-linux-gnu
exit ;;
frv:Linux:*:*)
echo frv-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
hexagon:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
i*86:Linux:*:*)
LIBC=gnu
@ -933,7 +953,7 @@ EOF
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
;;
or32:Linux:*:*)
echo or32-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
padre:Linux:*:*)
echo sparc-unknown-linux-gnu
@ -959,7 +979,7 @@ EOF
echo ${UNAME_MACHINE}-ibm-linux
exit ;;
sh64*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
sh*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
@ -967,14 +987,17 @@ EOF
sparc:Linux:*:* | sparc64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
tile*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
vax:Linux:*:*)
echo ${UNAME_MACHINE}-dec-linux-gnu
exit ;;
x86_64:Linux:*:*)
echo x86_64-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
xtensa*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@ -983,11 +1006,11 @@ EOF
echo i386-sequent-sysv4
exit ;;
i*86:UNIX_SV:4.2MP:2.*)
# Unixware is an offshoot of SVR4, but it has its own version
# number series starting with 2...
# I am not positive that other SVR4 systems won't match this,
# Unixware is an offshoot of SVR4, but it has its own version
# number series starting with 2...
# I am not positive that other SVR4 systems won't match this,
# I just have to hope. -- rms.
# Use sysv4.2uw... so that sysv4* matches it.
# Use sysv4.2uw... so that sysv4* matches it.
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
exit ;;
i*86:OS/2:*:*)
@ -1019,7 +1042,7 @@ EOF
fi
exit ;;
i*86:*:5:[678]*)
# UnixWare 7.x, OpenUNIX and OpenServer 6.
# UnixWare 7.x, OpenUNIX and OpenServer 6.
case `/bin/uname -X | grep "^Machine"` in
*486*) UNAME_MACHINE=i486 ;;
*Pentium) UNAME_MACHINE=i586 ;;
@ -1047,13 +1070,13 @@ EOF
exit ;;
pc:*:*:*)
# Left here for compatibility:
# uname -m prints for DJGPP always 'pc', but it prints nothing about
# the processor, so we play safe by assuming i586.
# uname -m prints for DJGPP always 'pc', but it prints nothing about
# the processor, so we play safe by assuming i586.
# Note: whatever this is, it MUST be the same as what config.sub
# prints for the "djgpp" host, or else GDB configury will decide that
# this is a cross-build.
echo i586-pc-msdosdjgpp
exit ;;
exit ;;
Intel:Mach:3*:*)
echo i386-pc-mach3
exit ;;
@ -1088,8 +1111,8 @@ EOF
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
&& { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4; exit; } ;;
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4; exit; } ;;
NCR*:*:4.2:* | MPRAS*:*:4.2:*)
OS_REL='.3'
test -r /etc/.relid \
@ -1132,10 +1155,10 @@ EOF
echo ns32k-sni-sysv
fi
exit ;;
PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
# says <Richard.M.Bartel@ccMail.Census.GOV>
echo i586-unisys-sysv4
exit ;;
PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
# says <Richard.M.Bartel@ccMail.Census.GOV>
echo i586-unisys-sysv4
exit ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# How about differentiating between stratus architectures? -djm
@ -1161,11 +1184,11 @@ EOF
exit ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
if [ -d /usr/nec ]; then
echo mips-nec-sysv${UNAME_RELEASE}
echo mips-nec-sysv${UNAME_RELEASE}
else
echo mips-unknown-sysv${UNAME_RELEASE}
echo mips-unknown-sysv${UNAME_RELEASE}
fi
exit ;;
exit ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
echo powerpc-be-beos
exit ;;
@ -1230,6 +1253,9 @@ EOF
*:QNX:*:4*)
echo i386-pc-qnx
exit ;;
NEO-?:NONSTOP_KERNEL:*:*)
echo neo-tandem-nsk${UNAME_RELEASE}
exit ;;
NSE-?:NONSTOP_KERNEL:*:*)
echo nse-tandem-nsk${UNAME_RELEASE}
exit ;;
@ -1275,13 +1301,13 @@ EOF
echo pdp10-unknown-its
exit ;;
SEI:*:*:SEIUX)
echo mips-sei-seiux${UNAME_RELEASE}
echo mips-sei-seiux${UNAME_RELEASE}
exit ;;
*:DragonFly:*:*)
echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
exit ;;
*:*VMS:*:*)
UNAME_MACHINE=`(uname -p) 2>/dev/null`
UNAME_MACHINE=`(uname -p) 2>/dev/null`
case "${UNAME_MACHINE}" in
A*) echo alpha-dec-vms ; exit ;;
I*) echo ia64-dec-vms ; exit ;;
@ -1299,6 +1325,9 @@ EOF
i*86:AROS:*:*)
echo ${UNAME_MACHINE}-pc-aros
exit ;;
x86_64:VMkernel:*:*)
echo ${UNAME_MACHINE}-unknown-esx
exit ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
@ -1321,11 +1350,11 @@ main ()
#include <sys/param.h>
printf ("m68k-sony-newsos%s\n",
#ifdef NEWSOS4
"4"
"4"
#else
""
""
#endif
); exit (0);
); exit (0);
#endif
#endif

204
config.sub vendored
View File

@ -1,10 +1,10 @@
#! /bin/sh
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
# Free Software Foundation, Inc.
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
# 2011, 2012 Free Software Foundation, Inc.
timestamp='2009-11-20'
timestamp='2012-02-10'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@ -21,9 +21,7 @@ timestamp='2009-11-20'
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
# 02110-1301, USA.
# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@ -75,8 +73,9 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@ -123,13 +122,18 @@ esac
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
knetbsd*-gnu* | netbsd*-gnu* | \
kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
android-linux)
os=-linux-android
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
;;
*)
basic_machine=`echo $1 | sed 's/-[^-]*$//'`
if [ $basic_machine != $1 ]
@ -156,8 +160,8 @@ case $os in
os=
basic_machine=$1
;;
-bluegene*)
os=-cnk
-bluegene*)
os=-cnk
;;
-sim | -cisco | -oki | -wec | -winbond)
os=
@ -173,10 +177,10 @@ case $os in
os=-chorusos
basic_machine=$1
;;
-chorusrdb)
os=-chorusrdb
-chorusrdb)
os=-chorusrdb
basic_machine=$1
;;
;;
-hiux*)
os=-hiuxwe2
;;
@ -245,17 +249,22 @@ case $basic_machine in
# Some are omitted here because they have special meanings below.
1750a | 580 \
| a29k \
| aarch64 | aarch64_be \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
| be32 | be64 \
| bfin \
| c4x | clipper \
| d10v | d30v | dlx | dsp16xx \
| epiphany \
| fido | fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| hexagon \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
| le32 | le64 \
| lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
| maxq | mb | microblaze | mcore | mep | metag \
@ -281,29 +290,39 @@ case $basic_machine in
| moxie \
| mt \
| msp430 \
| nds32 | nds32le | nds32be \
| nios | nios2 \
| ns16k | ns32k \
| open8 \
| or32 \
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
| powerpc | powerpc64 | powerpc64le | powerpcle \
| pyramid \
| rx \
| rl78 | rx \
| score \
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
| spu | strongarm \
| tahoe | thumb | tic4x | tic80 | tron \
| spu \
| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
| ubicom32 \
| v850 | v850e \
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
| we32k \
| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
| x86 | xc16x | xstormy16 | xtensa \
| z8k | z80)
basic_machine=$basic_machine-unknown
;;
m6811 | m68hc11 | m6812 | m68hc12 | picochip)
# Motorola 68HC11/12.
c54x)
basic_machine=tic54x-unknown
;;
c55x)
basic_machine=tic55x-unknown
;;
c6x)
basic_machine=tic6x-unknown
;;
m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
basic_machine=$basic_machine-unknown
os=-none
;;
@ -313,6 +332,21 @@ case $basic_machine in
basic_machine=mt-unknown
;;
strongarm | thumb | xscale)
basic_machine=arm-unknown
;;
xgate)
basic_machine=$basic_machine-unknown
os=-none
;;
xscaleeb)
basic_machine=armeb-unknown
;;
xscaleel)
basic_machine=armel-unknown
;;
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users.
@ -327,21 +361,25 @@ case $basic_machine in
# Recognize the basic CPU types with company name.
580-* \
| a29k-* \
| aarch64-* | aarch64_be-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* | avr32-* \
| be32-* | be64-* \
| bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* \
| clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| hexagon-* \
| i*86-* | i860-* | i960-* | ia64-* \
| ip2k-* | iq2000-* \
| le32-* | le64-* \
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
@ -367,25 +405,29 @@ case $basic_machine in
| mmix-* \
| mt-* \
| msp430-* \
| nds32-* | nds32le-* | nds32be-* \
| nios-* | nios2-* \
| none-* | np1-* | ns16k-* | ns32k-* \
| open8-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
| pyramid-* \
| romp-* | rs6000-* | rx-* \
| rl78-* | romp-* | rs6000-* | rx-* \
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
| sparclite-* \
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
| tahoe-* | thumb-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
| tahoe-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
| tile*-* \
| tron-* \
| ubicom32-* \
| v850-* | v850e-* | vax-* \
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
| vax-* \
| we32k-* \
| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
| x86-* | x86_64-* | xc16x-* | xps100-* \
| xstormy16-* | xtensa*-* \
| ymp-* \
| z8k-* | z80-*)
@ -410,7 +452,7 @@ case $basic_machine in
basic_machine=a29k-amd
os=-udi
;;
abacus)
abacus)
basic_machine=abacus-unknown
;;
adobe68k)
@ -480,11 +522,20 @@ case $basic_machine in
basic_machine=powerpc-ibm
os=-cnk
;;
c54x-*)
basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
c55x-*)
basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
c6x-*)
basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
c90)
basic_machine=c90-cray
os=-unicos
;;
cegcc)
cegcc)
basic_machine=arm-unknown
os=-cegcc
;;
@ -516,7 +567,7 @@ case $basic_machine in
basic_machine=craynv-cray
os=-unicosmp
;;
cr16)
cr16 | cr16-*)
basic_machine=cr16-unknown
os=-elf
;;
@ -674,7 +725,6 @@ case $basic_machine in
i370-ibm* | ibm*)
basic_machine=i370-ibm
;;
# I'm not sure what "Sysv32" means. Should this be sysv3.2?
i*86v32)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv32
@ -732,7 +782,7 @@ case $basic_machine in
basic_machine=ns32k-utek
os=-sysv
;;
microblaze)
microblaze)
basic_machine=microblaze-xilinx
;;
mingw32)
@ -771,10 +821,18 @@ case $basic_machine in
ms1-*)
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
;;
msys)
basic_machine=i386-pc
os=-msys
;;
mvs)
basic_machine=i370-ibm
os=-mvs
;;
nacl)
basic_machine=le32-unknown
os=-nacl
;;
ncr3000)
basic_machine=i486-ncr
os=-sysv4
@ -839,6 +897,12 @@ case $basic_machine in
np1)
basic_machine=np1-gould
;;
neo-tandem)
basic_machine=neo-tandem
;;
nse-tandem)
basic_machine=nse-tandem
;;
nsr-tandem)
basic_machine=nsr-tandem
;;
@ -921,9 +985,10 @@ case $basic_machine in
;;
power) basic_machine=power-ibm
;;
ppc) basic_machine=powerpc-unknown
ppc | ppcbe) basic_machine=powerpc-unknown
;;
ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
ppc-* | ppcbe-*)
basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppcle | powerpclittle | ppc-le | powerpc-little)
basic_machine=powerpcle-unknown
@ -1017,6 +1082,9 @@ case $basic_machine in
basic_machine=i860-stratus
os=-sysv4
;;
strongarm-* | thumb-*)
basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
sun2)
basic_machine=m68000-sun
;;
@ -1073,20 +1141,8 @@ case $basic_machine in
basic_machine=t90-cray
os=-unicos
;;
tic54x | c54x*)
basic_machine=tic54x-unknown
os=-coff
;;
tic55x | c55x*)
basic_machine=tic55x-unknown
os=-coff
;;
tic6x | c6x*)
basic_machine=tic6x-unknown
os=-coff
;;
tile*)
basic_machine=tile-unknown
basic_machine=$basic_machine-unknown
os=-linux-gnu
;;
tx39)
@ -1156,6 +1212,9 @@ case $basic_machine in
xps | xps100)
basic_machine=xps100-honeywell
;;
xscale-* | xscalee[bl]-*)
basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
;;
ymp)
basic_machine=ymp-cray
os=-unicos
@ -1253,11 +1312,11 @@ esac
if [ x"$os" != x"" ]
then
case $os in
# First match some system type aliases
# that might get confused with valid system types.
# First match some system type aliases
# that might get confused with valid system types.
# -solaris* is a basic system type, with this one exception.
-auroraux)
os=-auroraux
-auroraux)
os=-auroraux
;;
-solaris1 | -solaris1.*)
os=`echo $os | sed -e 's|solaris1|sunos4|'`
@ -1293,8 +1352,9 @@ case $os in
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* | -cegcc* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -mingw32* | -linux-gnu* | -linux-android* \
| -linux-newlib* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
@ -1341,7 +1401,7 @@ case $os in
-opened*)
os=-openedition
;;
-os400*)
-os400*)
os=-os400
;;
-wince*)
@ -1390,7 +1450,7 @@ case $os in
-sinix*)
os=-sysv4
;;
-tpf*)
-tpf*)
os=-tpf
;;
-triton*)
@ -1435,6 +1495,8 @@ case $os in
-dicos*)
os=-dicos
;;
-nacl*)
;;
-none)
;;
*)
@ -1457,10 +1519,10 @@ else
# system, and we'll never get to this point.
case $basic_machine in
score-*)
score-*)
os=-elf
;;
spu-*)
spu-*)
os=-elf
;;
*-acorn)
@ -1472,8 +1534,17 @@ case $basic_machine in
arm*-semi)
os=-aout
;;
c4x-* | tic4x-*)
os=-coff
c4x-* | tic4x-*)
os=-coff
;;
tic54x-*)
os=-coff
;;
tic55x-*)
os=-coff
;;
tic6x-*)
os=-coff
;;
# This must come before the *-dec entry.
pdp10-*)
@ -1493,14 +1564,11 @@ case $basic_machine in
;;
m68000-sun)
os=-sunos3
# This also exists in the configure program, but was not the
# default.
# os=-sunos4
;;
m68*-cisco)
os=-aout
;;
mep-*)
mep-*)
os=-elf
;;
mips*-cisco)
@ -1527,7 +1595,7 @@ case $basic_machine in
*-ibm)
os=-aix
;;
*-knuth)
*-knuth)
os=-mmixware
;;
*-wec)

5395
configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -1,36 +1,26 @@
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
AC_INIT(cc-tool, 0.18, george-u@yandex.com)
# AC_CANONICAL_SYSTEM
AM_INIT_AUTOMAKE(cc-tool, 0.18)
AC_INIT(cc-tool, 0.26, george-u@yandex.com)
AM_INIT_AUTOMAKE([no-dependencies foreign subdir-objects])
AM_SILENT_RULES([yes])
AC_CONFIG_MACRO_DIR([m4])
AC_PROG_LIBTOOL
AC_PROG_CXX
BOOST_REQUIRE([1.34])
BOOST_FILESYSTEM([mt])
BOOST_REQUIRE([1.39])
BOOST_PROGRAM_OPTIONS([mt])
BOOST_SYSTEM([mt])
BOOST_REGEX([mt])
BOOST_THREADS([mt])
BOOST_FILESYSTEM([mt])
BOOST_FOREACH
BOOST_SMART_PTR
BOOST_STRING_ALGO
BOOST_SIGNALS2
BOOST_CRC
PKG_CHECK_MODULES([DEPS], [libusb-1.0 >= 1.0.0])
PKG_CHECK_MODULES([LIBUSB], [libusb-1.0 >= 1.0.0])
AC_LANG_PUSH([C++])
AC_CHECK_HEADERS( \
boost/regex.hpp \
boost/foreach.hpp \
boost/filesystem.hpp \
boost/shared_ptr.hpp \
boost/signals2.hpp \
boost/crc.hpp \
boost/algorithm/string.hpp,
[],[AC_MSG_ERROR(You need the Boost libraries.)])
AC_LANG_POP([C++])
AC_CONFIG_FILES(Makefile src/Makefile)
AC_CONFIG_FILES(Makefile)
AC_OUTPUT

Binary file not shown.

View File

@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
scriptversion=2009-04-28.21; # UTC
scriptversion=2011-01-19.21; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
@ -156,6 +156,10 @@ while test $# -ne 0; do
-s) stripcmd=$stripprog;;
-t) dst_arg=$2
# Protect names problematic for `test' and other utilities.
case $dst_arg in
-* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
shift;;
-T) no_target_directory=true;;
@ -186,6 +190,10 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
fi
shift # arg
dst_arg=$arg
# Protect names problematic for `test' and other utilities.
case $dst_arg in
-* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
done
fi
@ -200,7 +208,11 @@ if test $# -eq 0; then
fi
if test -z "$dir_arg"; then
trap '(exit $?); exit' 1 2 13 15
do_exit='(exit $ret); exit $ret'
trap "ret=129; $do_exit" 1
trap "ret=130; $do_exit" 2
trap "ret=141; $do_exit" 13
trap "ret=143; $do_exit" 15
# Set umask so as not to create temps with too-generous modes.
# However, 'strip' requires both read and write access to temps.
@ -228,9 +240,9 @@ fi
for src
do
# Protect names starting with `-'.
# Protect names problematic for `test' and other utilities.
case $src in
-*) src=./$src;;
-* | [=\(\)!]) src=./$src;;
esac
if test -n "$dir_arg"; then
@ -252,12 +264,7 @@ do
echo "$0: no destination specified." >&2
exit 1
fi
dst=$dst_arg
# Protect names starting with `-'.
case $dst in
-*) dst=./$dst;;
esac
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
@ -385,7 +392,7 @@ do
case $dstdir in
/*) prefix='/';;
-*) prefix='./';;
[-=\(\)!]*) prefix='./';;
*) prefix='';;
esac
@ -403,7 +410,7 @@ do
for d
do
test -z "$d" && continue
test X"$d" = X && continue
prefix=$prefix$d
if test -d "$prefix"; then

2456
ltmain.sh Executable file → Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1335
m4/libtool.m4 vendored

File diff suppressed because it is too large Load Diff

19
m4/ltoptions.m4 vendored
View File

@ -326,9 +326,24 @@ dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
m4_define([_LT_WITH_PIC],
[AC_ARG_WITH([pic],
[AS_HELP_STRING([--with-pic],
[AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
[pic_mode="$withval"],
[lt_p=${PACKAGE-default}
case $withval in
yes|no) pic_mode=$withval ;;
*)
pic_mode=default
# Look at the argument we got. We use all the common list separators.
lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
for lt_pkg in $withval; do
IFS="$lt_save_ifs"
if test "X$lt_pkg" = "X$lt_p"; then
pic_mode=yes
fi
done
IFS="$lt_save_ifs"
;;
esac],
[pic_mode=default])
test -z "$pic_mode" && pic_mode=m4_default([$1], [default])

12
m4/ltversion.m4 vendored
View File

@ -7,17 +7,17 @@
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
# Generated from ltversion.in.
# @configure_input@
# serial 3175 ltversion.m4
# serial 3337 ltversion.m4
# This file is part of GNU Libtool
m4_define([LT_PACKAGE_VERSION], [2.2.10])
m4_define([LT_PACKAGE_REVISION], [1.3175])
m4_define([LT_PACKAGE_VERSION], [2.4.2])
m4_define([LT_PACKAGE_REVISION], [1.3337])
AC_DEFUN([LTVERSION_VERSION],
[macro_version='2.2.10'
macro_revision='1.3175'
[macro_version='2.4.2'
macro_revision='1.3337'
_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
_LT_DECL(, macro_revision, 0)
])

View File

@ -2,7 +2,7 @@
.\" groff -man -Tascii foo.1
.\"
.
.TH cc-tool 1 "June 06 2012" "cc-tool 0.18" "USER COMMANDS"
.TH cc-tool 1 "March 01 2013" "cc-tool 0.26" "USER COMMANDS"
.
.SH NAME
cc-tool \- control Texas Instruments CC Debugger
@ -13,7 +13,7 @@ cc-tool \- control Texas Instruments CC Debugger
.
.SH DESCRIPTION
.B cc-tool
provides support of Texas Instruments CC Debugger and several evaluation boards in order to program TI 8051-based System-On-Chip devices
provides support of Texas Instruments CC Debugger and several evaluation boards to program TI 8051-based System-On-Chip devices
.
.SH SUPPORTED DEVICES
.B CC Debugger
@ -22,11 +22,14 @@ provides support of Texas Instruments CC Debugger and several evaluation boards
.B SmartRF04 Evaluation Board
(VID: 0x11a0 PID: 0xdb20)
.br
.B SmartRF04 Evaluation Board (Chinese)
(VID: 0x11a0 PID: 0xeb20)
.br
.B SmartRF05 Evaluation Board
(VID: 0x0451 PID: 0x16a0)
.
.SH SUPPORTED TARGETS
CC2540 CC2530 CC2531 CC2533 CC2430 CC2431 CC2510 CC2511 CC1110 CC1111
CC2540 CC2541 CC2543 CC2544 CC2545 CC2530 CC2531 CC2533 CC2430 CC2431 CC2510 CC2511 CC1110 CC1111
.
.SH OPTIONS
.TP
@ -48,12 +51,21 @@ set fast debug interface speed (by default: slow)
read target info page (if target supports any). If no file-name specified data will be send to standard output.
.
.TP
.B \-r, \-\-read file_name
read flash memory and save to the specified file
.
.TP
.B \-a, \-\-read-mac-address
read target's mac address(es) (if target supports any).
.
.TP
.B \-r, \-\-read file_name
read flash memory and save to the specified file
.B \-b, \-\-write-mac-address xx:xx:xx:xx:xx:xx[:xx:xx]
write target's secondary mac address (if target supports any).
mac address should be specified in hex notation, MSB first. The length of the address must be 6 or 8 bytes depending on target.
.
.TP
.B \-p, \-\-preserve-mac-address
before erasing target (secondary) mac address is read out and will be written back after flash programming.
.
.TP
.B \-e, \-\-erase
@ -88,8 +100,30 @@ search for programmer and target and print various information of them.
.
.TP
.B \-l, \-\-lock lock_data
specify lock data in hex numbers. Lock data size must be exactly 1 byte (2 hex digits) or 16 bytes (32 hex digits) depending on target.
For several targets lock data can be placed into flash image file either
specify lock data as hex string or list of lock qualifiers.
Hex data must be exactly 1 byte (2 hex digits) or 16 bytes (32 hex digits), LSB first, depending on target.
Lock qualifiers correspond to lock bit of target (see target datasheet). Not all targets support all qualifiers.
Qualifiers are:
.RS 10
.I debug
- debug lock bit
.RE
.RS 10
.I boot
- boot lock bit
(for targets CC111x, CC243x, CC251x)
.RE
.RS 10
.I pages[:n[,k[,x-y]]]
- specify what pages to lock (starting with 0), if target support per-page lock.
(for targets CC253x, CC254x)
.RE
.RS 10
.I flash[:a]
- specify the size in KB of the upper flash area to lock if target support per-flash-area-size lock
(for targets CC111x, CC243x, CC251x)
.RE
Qualifier list is delimited by semicolon (See example section).
.TP
.B \-\-log [log_file]
create log file with all operations performed. Useful for debugging cc-tool itself.
@ -104,6 +138,10 @@ perform target reset. There's no need to use this option along with others becau
specify target name e.g. CC2530 etc. If specified target does not match
detected one no further actions are performed. This option is not required.
.
.TP
.B \-s, \-\-flash-size specify target flash size
specify target flash size in kilobytes. This option is required for any actions with MAC address when target is CC2430
.
.SH SUPPORTED FILE FORMATS
Supported image file formats are Intel hex or binary. Format will be determined automatically by file extention (hex or bin)
or my be specified explicitly by adding
@ -115,16 +153,28 @@ after file name. See EXAMPLES section.
.SH EXAMPLES
.TP
Read entire flash into binary file image.xxx
.B cc_tool
.B cc-tool
-r image.xxx,bin
.TP
Erase flash, write intel hex file image.hex and verify flash using default method
.B cc_tool
.B cc-tool
-v -e -w image.hex
.TP
Merge file image.hex and patch.bin (at offset 80), write resulting image, verify flash using read method
.B cc_tool
.B cc-tool
-v read -w image.hex --write patch.bin,80
.TP
Set debug lock bit
.B cc-tool
--lock debug
.TP
Set debug lock bit and lock pages 0,1,2,3,4
.B cc-tool
--lock debug;pages:0-4
.TP
Set debug lock bit, boot lock bit, and set lock size 8K
.B cc-tool
--lock debug;boot;flash:8
.
.SH EXIT STATUS
.B cc-tool

53
missing
View File

@ -1,10 +1,10 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
scriptversion=2009-04-28.21; # UTC
scriptversion=2012-01-06.13; # UTC
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
# 2008, 2009 Free Software Foundation, Inc.
# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
@ -84,7 +84,6 @@ Supported PROGRAM values:
help2man touch the output file
lex create \`lex.yy.c', if possible, from existing .c
makeinfo touch the output file
tar try tar, gnutar, gtar, then tar without non-portable flags
yacc create \`y.tab.[ch]', if possible, from existing .[ch]
Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
@ -122,15 +121,6 @@ case $1 in
# Not GNU programs, they don't have --version.
;;
tar*)
if test -n "$run"; then
echo 1>&2 "ERROR: \`tar' requires --run"
exit 1
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
exit 1
fi
;;
*)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
@ -226,7 +216,7 @@ WARNING: \`$1' $msg. You should only need it if
\`Bison' from any GNU archive site."
rm -f y.tab.c y.tab.h
if test $# -ne 1; then
eval LASTARG="\${$#}"
eval LASTARG=\${$#}
case $LASTARG in
*.y)
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
@ -256,7 +246,7 @@ WARNING: \`$1' is $msg. You should only need it if
\`Flex' from any GNU archive site."
rm -f lex.yy.c
if test $# -ne 1; then
eval LASTARG="\${$#}"
eval LASTARG=\${$#}
case $LASTARG in
*.l)
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
@ -318,41 +308,6 @@ WARNING: \`$1' is $msg. You should only need it if
touch $file
;;
tar*)
shift
# We have already tried tar in the generic part.
# Look for gnutar/gtar before invocation to avoid ugly error
# messages.
if (gnutar --version > /dev/null 2>&1); then
gnutar "$@" && exit 0
fi
if (gtar --version > /dev/null 2>&1); then
gtar "$@" && exit 0
fi
firstarg="$1"
if shift; then
case $firstarg in
*o*)
firstarg=`echo "$firstarg" | sed s/o//`
tar "$firstarg" "$@" && exit 0
;;
esac
case $firstarg in
*h*)
firstarg=`echo "$firstarg" | sed s/h//`
tar "$firstarg" "$@" && exit 0
;;
esac
fi
echo 1>&2 "\
WARNING: I can't seem to be able to run \`tar' with the given arguments.
You may want to install GNU tar or Free paxutils, or check the
command line arguments."
exit 1
;;
*)
echo 1>&2 "\
WARNING: \`$1' is needed, and is $msg.

View File

@ -1,31 +0,0 @@
AUTOMAKE_OPTIONS = subdir-objects
AM_CPPFLAGS = $(DEPS_CFLAGS) -O3 -Iprogrammer -Icommon -Iusb -Idata -Iapplication
AM_LDFLAGS = \
$(BOOST_FILESYSTEM_LDFLAGS) \
$(BOOST_REGEX_LDFLAGS) \
$(BOOST_SYSTEM_LDFLAGS) \
$(BOOST_PROGRAM_OPTIONS_LDFLAGS)
# $(BOOST_THREADS_LDFLAGS)
LDADD = $(DEPS_LIBS)
LIBS = -s \
$(BOOST_FILESYSTEM_LIBS) \
$(BOOST_REGEX_LIBS) \
$(BOOST_SYSTEM_LIBS) \
$(BOOST_PROGRAM_OPTIONS_LIBS)
# $(BOOST_THREADS_LIBS)
bin_PROGRAMS=cc-tool
cc_tool_SOURCES=main.cpp application/cc_flasher.cpp application/cc_base.cpp \
common/log.cpp common/common.cpp common/timer.cpp \
usb/usb_device.cpp \
data/binary_file.cpp data/data_section.cpp data/data_section_store.cpp \
data/file.cpp data/hex_file.cpp data/read_target.cpp \
data/progress_watcher.cpp \
programmer/cc_253x_2540.cpp programmer/cc_251x_111x.cpp \
programmer/cc_243x.cpp programmer/cc_programmer.cpp \
programmer/cc_unit_driver.cpp programmer/cc_unit_info.cpp

View File

@ -1,690 +0,0 @@
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
# Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
bin_PROGRAMS = cc-tool$(EXEEXT)
subdir = src
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/boost.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(bindir)"
PROGRAMS = $(bin_PROGRAMS)
am__dirstamp = $(am__leading_dot)dirstamp
am_cc_tool_OBJECTS = main.$(OBJEXT) application/cc_flasher.$(OBJEXT) \
application/cc_base.$(OBJEXT) common/log.$(OBJEXT) \
common/common.$(OBJEXT) common/timer.$(OBJEXT) \
usb/usb_device.$(OBJEXT) data/binary_file.$(OBJEXT) \
data/data_section.$(OBJEXT) data/data_section_store.$(OBJEXT) \
data/file.$(OBJEXT) data/hex_file.$(OBJEXT) \
data/read_target.$(OBJEXT) data/progress_watcher.$(OBJEXT) \
programmer/cc_253x_2540.$(OBJEXT) \
programmer/cc_251x_111x.$(OBJEXT) programmer/cc_243x.$(OBJEXT) \
programmer/cc_programmer.$(OBJEXT) \
programmer/cc_unit_driver.$(OBJEXT) \
programmer/cc_unit_info.$(OBJEXT)
cc_tool_OBJECTS = $(am_cc_tool_OBJECTS)
cc_tool_LDADD = $(LDADD)
am__DEPENDENCIES_1 =
cc_tool_DEPENDENCIES = $(am__DEPENDENCIES_1)
DEFAULT_INCLUDES = -I.@am__isrc@
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
CXXLD = $(CXX)
CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
$(LDFLAGS) -o $@
SOURCES = $(cc_tool_SOURCES)
DIST_SOURCES = $(cc_tool_SOURCES)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
BOOST_FILESYSTEM_LDFLAGS = @BOOST_FILESYSTEM_LDFLAGS@
BOOST_FILESYSTEM_LDPATH = @BOOST_FILESYSTEM_LDPATH@
BOOST_FILESYSTEM_LIBS = @BOOST_FILESYSTEM_LIBS@
BOOST_LDPATH = @BOOST_LDPATH@
BOOST_PROGRAM_OPTIONS_LDFLAGS = @BOOST_PROGRAM_OPTIONS_LDFLAGS@
BOOST_PROGRAM_OPTIONS_LDPATH = @BOOST_PROGRAM_OPTIONS_LDPATH@
BOOST_PROGRAM_OPTIONS_LIBS = @BOOST_PROGRAM_OPTIONS_LIBS@
BOOST_REGEX_LDFLAGS = @BOOST_REGEX_LDFLAGS@
BOOST_REGEX_LDPATH = @BOOST_REGEX_LDPATH@
BOOST_REGEX_LIBS = @BOOST_REGEX_LIBS@
BOOST_ROOT = @BOOST_ROOT@
BOOST_SYSTEM_LDFLAGS = @BOOST_SYSTEM_LDFLAGS@
BOOST_SYSTEM_LDPATH = @BOOST_SYSTEM_LDPATH@
BOOST_SYSTEM_LIBS = @BOOST_SYSTEM_LIBS@
BOOST_THREAD_LDFLAGS = @BOOST_THREAD_LDFLAGS@
BOOST_THREAD_LDPATH = @BOOST_THREAD_LDPATH@
BOOST_THREAD_LIBS = @BOOST_THREAD_LIBS@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DEPS_CFLAGS = @DEPS_CFLAGS@
DEPS_LIBS = @DEPS_LIBS@
DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = -s \
$(BOOST_FILESYSTEM_LIBS) \
$(BOOST_REGEX_LIBS) \
$(BOOST_SYSTEM_LIBS) \
$(BOOST_PROGRAM_OPTIONS_LIBS)
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AUTOMAKE_OPTIONS = subdir-objects
AM_CPPFLAGS = $(DEPS_CFLAGS) -O3 -Iprogrammer -Icommon -Iusb -Idata -Iapplication
AM_LDFLAGS = \
$(BOOST_FILESYSTEM_LDFLAGS) \
$(BOOST_REGEX_LDFLAGS) \
$(BOOST_SYSTEM_LDFLAGS) \
$(BOOST_PROGRAM_OPTIONS_LDFLAGS)
# $(BOOST_THREADS_LDFLAGS)
LDADD = $(DEPS_LIBS)
cc_tool_SOURCES = main.cpp application/cc_flasher.cpp application/cc_base.cpp \
common/log.cpp common/common.cpp common/timer.cpp \
usb/usb_device.cpp \
data/binary_file.cpp data/data_section.cpp data/data_section_store.cpp \
data/file.cpp data/hex_file.cpp data/read_target.cpp \
data/progress_watcher.cpp \
programmer/cc_253x_2540.cpp programmer/cc_251x_111x.cpp \
programmer/cc_243x.cpp programmer/cc_programmer.cpp \
programmer/cc_unit_driver.cpp programmer/cc_unit_info.cpp
all: all-am
.SUFFIXES:
.SUFFIXES: .cpp .lo .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu src/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
while read p p1; do if test -f $$p || test -f $$p1; \
then echo "$$p"; echo "$$p"; else :; fi; \
done | \
sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
if ($$2 == $$4) files[d] = files[d] " " $$1; \
else { print "f", $$3 "/" $$4, $$1; } } \
END { for (d in files) print "f", d, files[d] }' | \
while read type dir files; do \
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
test -z "$$files" || { \
echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
} \
; done
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-e 's/$$/$(EXEEXT)/' `; \
test -n "$$list" || exit 0; \
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(bindir)" && rm -f $$files
clean-binPROGRAMS:
@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
echo " rm -f" $$list; \
rm -f $$list || exit $$?; \
test -n "$(EXEEXT)" || exit 0; \
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
echo " rm -f" $$list; \
rm -f $$list
application/$(am__dirstamp):
@$(MKDIR_P) application
@: > application/$(am__dirstamp)
application/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) application/$(DEPDIR)
@: > application/$(DEPDIR)/$(am__dirstamp)
application/cc_flasher.$(OBJEXT): application/$(am__dirstamp) \
application/$(DEPDIR)/$(am__dirstamp)
application/cc_base.$(OBJEXT): application/$(am__dirstamp) \
application/$(DEPDIR)/$(am__dirstamp)
common/$(am__dirstamp):
@$(MKDIR_P) common
@: > common/$(am__dirstamp)
common/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) common/$(DEPDIR)
@: > common/$(DEPDIR)/$(am__dirstamp)
common/log.$(OBJEXT): common/$(am__dirstamp) \
common/$(DEPDIR)/$(am__dirstamp)
common/common.$(OBJEXT): common/$(am__dirstamp) \
common/$(DEPDIR)/$(am__dirstamp)
common/timer.$(OBJEXT): common/$(am__dirstamp) \
common/$(DEPDIR)/$(am__dirstamp)
usb/$(am__dirstamp):
@$(MKDIR_P) usb
@: > usb/$(am__dirstamp)
usb/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) usb/$(DEPDIR)
@: > usb/$(DEPDIR)/$(am__dirstamp)
usb/usb_device.$(OBJEXT): usb/$(am__dirstamp) \
usb/$(DEPDIR)/$(am__dirstamp)
data/$(am__dirstamp):
@$(MKDIR_P) data
@: > data/$(am__dirstamp)
data/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) data/$(DEPDIR)
@: > data/$(DEPDIR)/$(am__dirstamp)
data/binary_file.$(OBJEXT): data/$(am__dirstamp) \
data/$(DEPDIR)/$(am__dirstamp)
data/data_section.$(OBJEXT): data/$(am__dirstamp) \
data/$(DEPDIR)/$(am__dirstamp)
data/data_section_store.$(OBJEXT): data/$(am__dirstamp) \
data/$(DEPDIR)/$(am__dirstamp)
data/file.$(OBJEXT): data/$(am__dirstamp) \
data/$(DEPDIR)/$(am__dirstamp)
data/hex_file.$(OBJEXT): data/$(am__dirstamp) \
data/$(DEPDIR)/$(am__dirstamp)
data/read_target.$(OBJEXT): data/$(am__dirstamp) \
data/$(DEPDIR)/$(am__dirstamp)
data/progress_watcher.$(OBJEXT): data/$(am__dirstamp) \
data/$(DEPDIR)/$(am__dirstamp)
programmer/$(am__dirstamp):
@$(MKDIR_P) programmer
@: > programmer/$(am__dirstamp)
programmer/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) programmer/$(DEPDIR)
@: > programmer/$(DEPDIR)/$(am__dirstamp)
programmer/cc_253x_2540.$(OBJEXT): programmer/$(am__dirstamp) \
programmer/$(DEPDIR)/$(am__dirstamp)
programmer/cc_251x_111x.$(OBJEXT): programmer/$(am__dirstamp) \
programmer/$(DEPDIR)/$(am__dirstamp)
programmer/cc_243x.$(OBJEXT): programmer/$(am__dirstamp) \
programmer/$(DEPDIR)/$(am__dirstamp)
programmer/cc_programmer.$(OBJEXT): programmer/$(am__dirstamp) \
programmer/$(DEPDIR)/$(am__dirstamp)
programmer/cc_unit_driver.$(OBJEXT): programmer/$(am__dirstamp) \
programmer/$(DEPDIR)/$(am__dirstamp)
programmer/cc_unit_info.$(OBJEXT): programmer/$(am__dirstamp) \
programmer/$(DEPDIR)/$(am__dirstamp)
cc-tool$(EXEEXT): $(cc_tool_OBJECTS) $(cc_tool_DEPENDENCIES)
@rm -f cc-tool$(EXEEXT)
$(CXXLINK) $(cc_tool_OBJECTS) $(cc_tool_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
-rm -f application/cc_base.$(OBJEXT)
-rm -f application/cc_flasher.$(OBJEXT)
-rm -f common/common.$(OBJEXT)
-rm -f common/log.$(OBJEXT)
-rm -f common/timer.$(OBJEXT)
-rm -f data/binary_file.$(OBJEXT)
-rm -f data/data_section.$(OBJEXT)
-rm -f data/data_section_store.$(OBJEXT)
-rm -f data/file.$(OBJEXT)
-rm -f data/hex_file.$(OBJEXT)
-rm -f data/progress_watcher.$(OBJEXT)
-rm -f data/read_target.$(OBJEXT)
-rm -f programmer/cc_243x.$(OBJEXT)
-rm -f programmer/cc_251x_111x.$(OBJEXT)
-rm -f programmer/cc_253x_2540.$(OBJEXT)
-rm -f programmer/cc_programmer.$(OBJEXT)
-rm -f programmer/cc_unit_driver.$(OBJEXT)
-rm -f programmer/cc_unit_info.$(OBJEXT)
-rm -f usb/usb_device.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@application/$(DEPDIR)/cc_base.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@application/$(DEPDIR)/cc_flasher.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@common/$(DEPDIR)/common.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@common/$(DEPDIR)/log.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@common/$(DEPDIR)/timer.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@data/$(DEPDIR)/binary_file.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@data/$(DEPDIR)/data_section.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@data/$(DEPDIR)/data_section_store.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@data/$(DEPDIR)/file.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@data/$(DEPDIR)/hex_file.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@data/$(DEPDIR)/progress_watcher.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@data/$(DEPDIR)/read_target.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@programmer/$(DEPDIR)/cc_243x.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@programmer/$(DEPDIR)/cc_251x_111x.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@programmer/$(DEPDIR)/cc_253x_2540.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@programmer/$(DEPDIR)/cc_programmer.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@programmer/$(DEPDIR)/cc_unit_driver.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@programmer/$(DEPDIR)/cc_unit_info.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@usb/$(DEPDIR)/usb_device.Po@am__quote@
.cpp.o:
@am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
.cpp.obj:
@am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.cpp.lo:
@am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
set x; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS)
installdirs:
for dir in "$(DESTDIR)$(bindir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-rm -f application/$(DEPDIR)/$(am__dirstamp)
-rm -f application/$(am__dirstamp)
-rm -f common/$(DEPDIR)/$(am__dirstamp)
-rm -f common/$(am__dirstamp)
-rm -f data/$(DEPDIR)/$(am__dirstamp)
-rm -f data/$(am__dirstamp)
-rm -f programmer/$(DEPDIR)/$(am__dirstamp)
-rm -f programmer/$(am__dirstamp)
-rm -f usb/$(DEPDIR)/$(am__dirstamp)
-rm -f usb/$(am__dirstamp)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR) application/$(DEPDIR) common/$(DEPDIR) data/$(DEPDIR) programmer/$(DEPDIR) usb/$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am: install-binPROGRAMS
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR) application/$(DEPDIR) common/$(DEPDIR) data/$(DEPDIR) programmer/$(DEPDIR) usb/$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-binPROGRAMS
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
clean-generic clean-libtool ctags distclean distclean-compile \
distclean-generic distclean-libtool distclean-tags distdir dvi \
dvi-am html html-am info info-am install install-am \
install-binPROGRAMS install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
pdf pdf-am ps ps-am tags uninstall uninstall-am \
uninstall-binPROGRAMS
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -78,7 +78,7 @@ void CC_Base::init_options(po::options_description &desc)
"set programmer deivce usb address 'bus:device'");
desc.add_options()
("fast,f", "set fast debug interface speed (by default: slow)"); //TODO made fast by default
("fast,f", "set fast debug interface speed (by default: slow)");
desc.add_options()
("name,n", po::value<String>(&option_unit_name_),
@ -229,7 +229,7 @@ bool CC_Base::execute(int argc, char *argv[])
}
std::cout << "\n";
}
catch (po::error& e) //command line error
catch (po::error& e) // command line error
{
std::cout << " Bad command line options";
if (strlen(e.what()))

View File

@ -26,6 +26,8 @@ public:
protected:
virtual void init_options(po::options_description &);
/// @return false if application should exit
virtual bool read_options(const po::options_description &, const po::variables_map &);
virtual void process_tasks();

View File

@ -17,19 +17,30 @@
#include "cc_flasher.h"
enum Task {
T_RESET = 0x0001,
T_ERASE = 0x0002,
T_WRITE_FLASH = 0x0004,
T_READ_FLASH = 0x0008,
T_VERIFY = 0x0010,
T_LOCK = 0x0020,
T_READ_MAC = 0x0040,
T_READ_INFO_PAGE = 0x0080,
T_TEST = 0x0100,
T_RESET = 0x0001,
T_ERASE = 0x0002,
T_WRITE_FLASH = 0x0004,
T_READ_FLASH = 0x0008,
T_VERIFY = 0x0010,
T_LOCK = 0x0020,
T_READ_MAC = 0x0040,
T_WRITE_MAC = 0x0080,
T_PRESERVE_MAC = 0x0100,
T_READ_INFO_PAGE= 0x0200,
T_TEST = 0x0400,
};
//==============================================================================
bool extract_mac_address(const String &mac, size_t length, ByteVector &data)
static String mac_address_to_string(const ByteVector &mac)
{
ByteVector data(mac.size(), 0);
std::reverse_copy(mac.begin(), mac.end(), data.begin());
return binary_to_hex(&data[0], data.size(), ":");
}
//==============================================================================
static bool extract_mac_address(const String &mac, size_t length, ByteVector &data)
{
String exp;
for (size_t i = 0; i < length; i++)
@ -42,8 +53,8 @@ bool extract_mac_address(const String &mac, size_t length, ByteVector &data)
if (!boost::regex_match(mac.c_str(), what, regex))
return false;
for (size_t i = 0; i < length; i++)
data.push_back(std::strtoul(what[i + 1].str().c_str(), NULL, 16));
for (size_t i = length; i > 0; i--)
data.push_back(std::strtoul(what[i].str().c_str(), NULL, 16));
return true;
}
@ -118,14 +129,13 @@ static std::ostream& operator <<(std::ostream &os, const UnitInfo &o)
os << "n/a" << "\n";
else
os << o.flash_size << " KB" << "\n";
os << " Flash page size: " << o.flash_page_size << "\n";
os << " RAM size: ";
if (!o.ram_size)
os << "n/a" << "\n";
else
os << o.ram_size << " KB" << "\n";
os << std::dec;
os << " Lock data size: " << o.lock_size << " B" << "\n";
return os;
}
@ -136,6 +146,30 @@ static void on_progress(size_t done_read, size_t total_read)
<< "%\r" << std::flush;
}
//==============================================================================
static void print_result(bool result)
{
// clear out progress message
std::cout << String(18, ' ') << "\r" << std::flush;
if (result)
std::cout << " Completed" << "\n";
else
std::cout << " Failed" << "\n";
}
//==============================================================================
static void print_result(bool result, const Timer& timer)
{
// clear out progress message
std::cout << String(18, ' ') << "\r" << std::flush;
if (result)
std::cout << " Completed (" << timer.elapsed_time() << ")" << "\n";
else
std::cout << " Failed" << "\n";
}
//==============================================================================
void CC_Flasher::init_options(po::options_description &desc)
{
@ -148,6 +182,12 @@ void CC_Flasher::init_options(po::options_description &desc)
desc.add_options()
("read-mac-address,a", "read mac address(es)");
desc.add_options()
("write-mac-address,b", po::value<String>(), "write (secondary) mac address");
desc.add_options()
("preserve-mac-address,p", "preserve (secondary) mac address across writing");
desc.add_options()
("read,r", po::value<String>(), "read flash memory");
@ -159,7 +199,7 @@ void CC_Flasher::init_options(po::options_description &desc)
"write flash memory.");
desc.add_options()
("verify,v", po::value<String>(&option_verify_type_)->implicit_value(""),
("verify,v", po::value<String>()->implicit_value(""),
"verify flash after write, method '(r)ead' or '(c)cr' (used by default)");
desc.add_options()
@ -170,7 +210,11 @@ void CC_Flasher::init_options(po::options_description &desc)
desc.add_options()
("lock,l", po::value<String>(&option_lock_data_),
"specify lock data in hex numbers");
"specify lock data in hex numbers or by string: debug[;pages:xx]");
desc.add_options()
("flash-size,s", po::value<String>(&option_flash_size_),
"specify target flash size in KB");
}
//==============================================================================
@ -182,23 +226,42 @@ bool CC_Flasher::read_options(const po::options_description &desc, const po::var
if (vm.count("read-mac-address"))
task_set_ |= T_READ_MAC;
if (vm.count("preserve-mac-address"))
task_set_ |= T_PRESERVE_MAC;
if (vm.count("write-mac-address"))
{
task_set_ |= T_WRITE_MAC;
String value = vm["write-mac-address"].as<String>();
if (!extract_mac_address(value, 6, mac_addr_) &&
!extract_mac_address(value, 8, mac_addr_))
throw po::error("bad mac address format - " + value);
if (task_set_ & T_PRESERVE_MAC)
throw po::error("incompatible options write-mac-address and preserve-mac-address");
}
if (vm.count("read-info-page"))
{
task_set_ |= T_READ_INFO_PAGE;
info_page_read_target_.set_source(option_info_page_);
}
if (vm.count("verify"))
{
task_set_ |= T_VERIFY;
if (!option_verify_type_.empty())
{
if (option_verify_type_ == "r" || option_verify_type_ == "read")
String value = vm["verify"].as<String>();
if (value == "r" || value == "read")
verify_method_ = CC_Programmer::VM_BY_READ;
else
if ((option_verify_type_ == "c" || option_verify_type_ == "crc"))
if ((value == "c" || value == "crc"))
verify_method_ = CC_Programmer::VM_BY_CRC;
else
throw po::error("bad verify method - " + option_verify_type_);
if (!value.empty())
throw po::error("invalid verify method - " + value);
}
if (vm.count("reset"))
@ -216,6 +279,12 @@ bool CC_Flasher::read_options(const po::options_description &desc, const po::var
if (vm.count("write"))
{
if (!(task_set_ & T_ERASE))
{
std::cout << " Writing flash is not supported without erase" << "\n";
return false;
}
task_set_ |= T_WRITE_FLASH;
StringVector list = vm["write"].as<StringVector>();
foreach (String &item, list)
@ -230,32 +299,189 @@ bool CC_Flasher::read_options(const po::options_description &desc, const po::var
task_set_ |= T_LOCK;
if ((task_set_ & T_VERIFY) && !(task_set_ & T_WRITE_FLASH))
throw po::error("verify option is used without write");
throw po::error("'verify' option is used without write");
if (!option_flash_size_.empty())
{
char *error = NULL;
if (strtoull(option_flash_size_.c_str(), &error, 10) == 0 ||
*error != '\0')
throw po::error("invalid flash size value " + option_flash_size_);
}
return true;
}
//==============================================================================
bool CC_Flasher::validate_mac_options()
{
if (!(unit_info_.flags & UnitInfo::SUPPORT_MAC_ADDRESS) &&
(task_set_ & (T_WRITE_MAC | T_READ_MAC | T_PRESERVE_MAC)))
{
std::cout << " Target does not support MAC address" << "\n";
return false;
}
if (target_locked_ && (task_set_ & T_PRESERVE_MAC))
{
std::cout << " Target is locked. Unable to preserve mac address" << "\n";
return false;
}
if ((task_set_ & T_WRITE_MAC) && mac_addr_.size() != unit_info_.mac_address_size)
{
std::cout << " Wrong MAC address length specified, must be "
<< unit_info_.mac_address_size << "\n";
return false;
}
if (task_set_ & (T_WRITE_MAC | T_READ_MAC | T_PRESERVE_MAC) &&
!unit_info_.max_flash_size)
{
std::cout << " Mac adddress operations are disabled because "
"target flash size is unavailable." << "\n";
std::cout << " See --flash-size option" << "\n";
return false;
}
return true;
}
//==============================================================================
StringVector split_string(const String& input)
{
StringVector list;
String s = boost::to_lower_copy(input);
boost::split(list, s, boost::is_any_of(";"));
StringVector::iterator it = list.begin();
while (it != list.end())
{
boost::trim(*it);
if (it->empty())
it = list.erase(it);
else
it++;
}
return list;
}
//==============================================================================
bool CC_Flasher::validate_lock_options()
{
if (!(task_set_ & T_LOCK))
return true;
if (!hex_to_binary(option_lock_data_, lock_data_, ""))
{
// check if conversion failed due to odd number of hex digits:
bool hex_data = true;
foreach(char c, option_lock_data_)
if (!std::isxdigit(c))
hex_data = false;
if (hex_data)
{
std::cout << " Incorrect lock data" << "\n";
return false;
}
try
{
programmer_.unit_convert_lock_data(split_string(option_lock_data_), lock_data_);
std::cout << " Lock data: " << binary_to_hex(lock_data_, "") << "\n";
}
catch (std::exception &e)
{
std::cout << " Error reading lock data: " << e.what() << "\n";
return false;
}
}
if (lock_data_.size() != programmer_.unit_lock_data_size())
{
std::cout << " Lock data size must be "
<< programmer_.unit_lock_data_size()
<< "B, provided: " << lock_data_.size() << "\n";
return false;
}
return true;
}
//==============================================================================
bool CC_Flasher::validate_flash_size_options()
{
if (option_flash_size_.empty())
return true;
if (unit_info_.flash_size)
std::cout << " Specified flash size is ignored (read from target instead) " << "\n";
else
{
uint_t flash_size = 0;
string_to_number(option_flash_size_, flash_size);
bool found = std::find(
unit_info_.flash_sizes.begin(),
unit_info_.flash_sizes.end(),
flash_size) != unit_info_.flash_sizes.end();
if (!found)
{
String list;
foreach (uint_t size, unit_info_.flash_sizes)
string_append(list, number_to_string(size), ", ");
std::cout << " Specified flash size is wrong";
if (list.size())
std::cout << "; valid values are " << list;
std::cout << "\n";
return false;
}
programmer_.unit_set_flash_size(flash_size);
}
return true;
}
//==============================================================================
void CC_Flasher::task_write_config()
{
String status;
if (task_set_ & T_LOCK)
status += " lock data";
if (task_set_ & T_WRITE_MAC)
{
if (!status.empty())
status += ", ";
status += " mac address";
}
std::cout << " Writing " << status << "..." << "\n";
print_result(programmer_.unit_config_write(mac_addr_, lock_data_));
}
//==============================================================================
void CC_Flasher::process_tasks()
{
target_locked_ = programmer_.unit_locked();
if (target_locked_)
{
std::cout << " Target is locked. ";
std::cout << "No operations allowed without erase\n";
}
if (!task_set_)
{
std::cout << " No actions specified" << "\n";
return;
}
if (!validate_lock_options())
return;
target_locked_ = programmer_.unit_locked();
if (target_locked_)
std::cout << " Target is locked." << "\n";
if (task_set_ & T_TEST)
task_test();
if (target_locked_ && !(task_set_ & T_ERASE))
if (target_locked_ && !(task_set_ & T_ERASE))
{
std::cout << " No operations allowed on locked target without erasing\n";
return;
}
if (target_locked_)
{
@ -263,11 +489,26 @@ void CC_Flasher::process_tasks()
task_set_ &= ~T_ERASE;
if (target_locked_)
{
std::cout << "still locked" << "\n";//
std::cout << " Unit is still locked after erasing" << "\n";
return;
}
}
// Order of checking matters
if (!validate_flash_size_options() || !validate_mac_options())
return;
if (task_set_ & T_PRESERVE_MAC)
{
programmer_.unit_mac_address_read(unit_info_.mac_address_count - 1,
mac_addr_);
std::cout << " MAC address to preserve: "
<< mac_address_to_string(mac_addr_) << "\n";
task_set_ |= T_WRITE_MAC;
}
if (task_set_ & T_READ_MAC)
task_read_mac_address();
@ -287,19 +528,32 @@ void CC_Flasher::process_tasks()
task_erase();
if (task_set_ & T_WRITE_FLASH)
{
if (task_set_ & T_LOCK)
{
if (programmer_.flash_image_embed_lock_data(flash_write_data_, lock_data_))
task_set_ &= ~T_LOCK;
}
if (task_set_ & T_WRITE_MAC)
{
if (programmer_.flash_image_embed_mac_address(flash_write_data_, mac_addr_))
task_set_ &= ~T_WRITE_MAC;
}
task_write_flash();
}
if (task_set_ & T_VERIFY)
task_verify_flash();
if (task_set_ & T_LOCK)
task_lock();
if (task_set_ & (T_WRITE_MAC | T_LOCK))
task_write_config();
}
//==============================================================================
void CC_Flasher::task_test()
{
std::cout << "\n" << " Device info: " << "\n";
std::cout << " Device info: " << "\n";
CC_ProgrammerInfo info;
programmer_.programmer_info(info);
@ -308,46 +562,29 @@ void CC_Flasher::task_test()
if (target_locked_)
return;
std::cout << "\n" << " Target info: " << "\n";
std::cout << "\n";
std::cout << " Target info: " << "\n";
std::cout << unit_info_;
std::cout << " Lock data size: " << programmer_.unit_lock_data_size()
<< " B" << "\n";
}
//==============================================================================
void CC_Flasher::task_read_mac_address()
{
if (!(unit_info_.flags & UnitInfo::SUPPORT_MAC_ADDRESS))
{
std::cout << " Target does not support MAC address" << "\n";
return;
}
ByteVector mac0;
programmer_.unit_mac_address_read(0, mac0);
if (unit_info_.mac_address_count == 1)
{
std::cout << " MAC address: "
<< binary_to_hex(&mac0[0], mac0.size(), ":") << "\n";
}
std::cout << " MAC address: " << mac_address_to_string(mac0) << "\n";
else
{
ByteVector mac1;
programmer_.unit_mac_address_read(1, mac1);
std::cout << " MAC addresses, primary: ";
for(char x = mac0.size() - 1; x >= 0; --x) {
std::cout << binary_to_hex(&mac0[x], 1, ":");
if (x > 0)
std::cout << ":";
}
std::cout << ", secondary: ";
for(char x = mac1.size() - 1; x >= 0; --x) {
std::cout << binary_to_hex(&mac1[x], 1, ":");
if (x > 0)
std::cout << ":";
}
std::cout << "\n";
std::cout << " MAC addresses, primary: "
<< mac_address_to_string(mac0) << ", secondary: "
<< mac_address_to_string(mac1) << "\n";
}
}
@ -365,8 +602,7 @@ void CC_Flasher::task_read_info_page()
Timer timer;
ByteVector info_page;
programmer_.unit_read_info_page(info_page);
std::cout << " Reading completed (" << timer.elapsed_time() << ")" << "\n";
print_result(true, timer);
if (info_page_read_target_.source_type() == ReadTarget::ST_CONSOLE)
{
@ -382,9 +618,7 @@ void CC_Flasher::task_erase()
{
std::cout << " Erasing flash..." << "\n";
if (!programmer_.unit_erase())
std::cout << "Flash erasing failed, timeout" << "\n";
std::cout << " Erasing completed" << "\n";
print_result(programmer_.unit_erase());
programmer_.unit_connect(unit_info_);
target_locked_ = programmer_.unit_locked();
@ -397,26 +631,20 @@ void CC_Flasher::task_verify_flash()
Timer timer;
bool result = programmer_.unit_flash_verify(flash_write_data_, verify_method_);
if (result)
std::cout << " Verification completed (" << timer.elapsed_time() << ")" << "\n";
else
std::cout << " Verification failed" << "\n";
print_result(result, timer);
}
//==============================================================================
void CC_Flasher::task_read_flash()
{
std::cout
<< " Reading flash ("
<< unit_info_.actual_flash_size() / 1024 << " KB)..." << "\n";
size_t size = unit_info_.actual_flash_size() / 1024;
std::cout << " Reading flash (" << size << " KB)..." << "\n";
Timer timer;
ByteVector flash_data;
programmer_.unit_flash_read(flash_data);
flash_read_target_.on_read(flash_data);
std::cout << " Reading completed (" << timer.elapsed_time() << ")" << "\n";
print_result(true, timer);
}
//==============================================================================
@ -433,38 +661,12 @@ void CC_Flasher::task_write_flash()
return;
}
std::cout << " Writing flash... ("
<< convinient_storage_size(flash_write_data_.actual_size())
<< ")..." << "\n";
String size = convinient_storage_size(flash_write_data_.actual_size());
std::cout << " Writing flash (" << size << ")..." << "\n";
Timer timer;
programmer_.unit_flash_write(flash_write_data_);
std::cout << " Writing completed (" << timer.elapsed_time() << ")" << "\n";
}
//==============================================================================
void CC_Flasher::task_lock()
{
ByteVector data;
if (!hex_to_binary(option_lock_data_, data, ""))
{
std::cout << " Incorrect lock data format" << "\n";
return;
}
if (data.size() != unit_info_.lock_size)
{
std::cout << " Lock data size must be " << unit_info_.lock_size
<< "B, provided: " << data.size() << "\n";
return;
}
std::cout << " Writing lock data... " << "\n";
bool result = programmer_.unit_lock_write(data);
if (result)
std::cout << " Lock completed" << "\n";
else
std::cout << " Lock failed" << "\n";
print_result(true, timer);
}
//==============================================================================

View File

@ -25,15 +25,19 @@ public:
CC_Flasher();
private:
void task_lock();
void task_test();
void task_erase();
void task_read_flash();
void task_write_flash();
void task_verify_flash();
void task_read_mac_address();
void task_write_config();
void task_read_info_page();
bool validate_mac_options();
bool validate_lock_options();
bool validate_flash_size_options();
virtual void init_options(po::options_description &);
virtual bool read_options(const po::options_description &, const po::variables_map &);
virtual void process_tasks();
@ -41,10 +45,13 @@ private:
String option_lock_data_;
String option_info_page_;
String option_verify_type_;
String option_flash_size_;
uint_t task_set_;
CC_Programmer::VerifyMethod verify_method_;
DataSectionStore flash_write_data_;
ByteVector mac_addr_;
ByteVector lock_data_;
ReadTarget flash_read_target_;
ReadTarget info_page_read_target_;

View File

@ -11,6 +11,12 @@
#include <sys/time.h>
#include "common.h"
//==============================================================================
uint_t align_up(uint_t value, uint_t aligment)
{
return ((value + aligment - 1) / aligment) * aligment;
}
//==============================================================================
bool hex_to_binary(const String &hex, ByteVector &out, const char delimiter[])
{
@ -81,3 +87,12 @@ String binary_to_hex(const ByteVector &data, const char delimiter[])
//==============================================================================
void vector_append(ByteVector &vector, const uint8_t data[], size_t size)
{ vector.insert(vector.end(), data, data + size); }
//==============================================================================
String &string_append(String &string, const String &item, const char *delimiter)
{
if (!string.empty())
string.append(delimiter);
return string;
}

View File

@ -29,20 +29,27 @@
#include <boost/foreach.hpp>
#include <boost/shared_ptr.hpp>
#define foreach BOOST_FOREACH
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
#define foreach BOOST_FOREACH
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
#define ALIGN_UP(value, aligment) (((value + (aligment) - 1) / (aligment)) * (aligment))
#define LOBYTE(w) ((uint8_t)(w))
#define HIBYTE(w) ((uint8_t)(((uint16_t)(w) >> 8) & 0xFF))
typedef unsigned int uint_t;
typedef std::string String;
typedef std::vector<String> StringVector;
typedef std::vector<uint8_t> ByteVector;
typedef std::string String;
typedef std::vector<String> StringVector;
typedef std::vector<uint8_t> ByteVector;
typedef std::vector<bool> BoolVector;
typedef std::vector<uint_t> UintVector;
String convinient_storage_size(off_t size);
uint_t get_tick_count();
String binary_to_hex(const uint8_t data[], size_t size, const char delimiter[] = "");
String binary_to_hex(const ByteVector &data, const char delimiter[] = "");
void vector_append(ByteVector &vector, const uint8_t data[], size_t size);
String& string_append(String &string, const String &item, const char *delimiter);
bool hex_to_binary(const String &hex, ByteVector &out, const char delimiter[] = "");
uint_t align_up(uint_t value, uint_t aligment);
namespace common_impl
{

View File

@ -21,15 +21,15 @@ Timer::Timer()
//==============================================================================
void Timer::start()
{
start_time_ = get_tick_count(); elapsed_time_ = 0;
start_time_ = get_tick_count();
}
//==============================================================================
String Timer::elapsed_time()
String Timer::elapsed_time() const
{
elapsed_time_ = get_tick_count() - start_time_;
uint_t elapsed_time = get_tick_count() - start_time_;
char buf[16];
sprintf(buf, "%.02f s.", (float)elapsed_time_ / 1000);
sprintf(buf, "%.02f s.", (float)elapsed_time / 1000);
return buf;
}

View File

@ -16,14 +16,13 @@
class Timer : boost::noncopyable
{
public:
String elapsed_time();
String elapsed_time() const;
Timer();
private:
void start();
uint_t start_time_;
uint_t elapsed_time_;
};
#endif // !_TIMER_H_

View File

@ -274,14 +274,14 @@ void hex_file_load(const String &file_name,
static void write_eof_record(std::ostream &out)
{
out << ":00000001FF";
out << "\n";
out << "\r\n";
}
//==============================================================================
static void write_data_record(std::ostream &out, uint_t address,
const uint8_t data[], size_t size)
{
const uint8_t buffer[] = { size, address >> 8, address, 0x00 };
const uint8_t buffer[] = { LOBYTE(size), HIBYTE(address), LOBYTE(address), 0x00 };
uint8_t crc = 0;
crc = std::accumulate(buffer, buffer + ARRAY_SIZE(buffer), crc);
@ -298,7 +298,7 @@ static void write_data_record(std::ostream &out, uint_t address,
//==============================================================================
static void write_segment_record(std::ostream &out, uint16_t address)
{
const uint8_t buffer[] = { 0x02, 0x00, 0x00, 0x02, address >> 8, address };
const uint8_t buffer[] = { 0x02, 0x00, 0x00, 0x02, HIBYTE(address), LOBYTE(address) };
uint8_t crc = 0;
crc = 0x100 - std::accumulate(buffer, buffer + ARRAY_SIZE(buffer), crc);

View File

@ -22,8 +22,8 @@ public:
void do_on_read_progress(const OnProgress::slot_type &slot);
void do_on_write_progress(const OnProgress::slot_type &slot);
void read_progress(uint_t done_chunk);
void write_progress(uint_t done_chunk);
void read_progress(uint_t done_chunk_size);
void write_progress(uint_t done_chunk_size);
void read_start(size_t total_size);
void read_finish();

View File

@ -16,6 +16,16 @@
#include "read_target.h"
#include "common/common.h"
//==============================================================================
static String file_extention(const String path)
{
#if BOOST_FILESYSTEM_VERSION >= 3
return boost::filesystem::path(path).extension().string();
#else
return boost::filesystem::extension(path);
#endif
}
//==============================================================================
ReadTarget::ReadTarget() :
source_type_(ST_CONSOLE)
@ -71,7 +81,7 @@ void option_extract_file_info(const String &input, OptionFileInfo &file_info,
file_info.type = strs[1];
if (file_info.type.empty())
{
file_info.type = boost::filesystem::extension(file_info.name);
file_info.type = file_extention(file_info.name);
if (file_info.type[0] == '.')
file_info.type.erase(0, 1);
}

View File

@ -20,6 +20,7 @@ CC_243x::CC_243x(USB_Device &programmer, ProgressWatcher &pw) :
{
UnitCoreInfo reg_info;
reg_info.lock_size = 1;
reg_info.flash_word_size = 4;
reg_info.write_block_size = 1024;
reg_info.verify_block_size = 1024;
@ -57,10 +58,14 @@ void CC_243x::supported_units(Unit_ID_List &units)
void CC_243x::find_unit_info(UnitInfo &unit_info)
{
unit_info.flags = UnitInfo::SUPPORT_MAC_ADDRESS;
unit_info.lock_size = 1;
unit_info.max_flash_size = 128;
unit_info.flash_page_size = 2;
unit_info.mac_address_count = 1;
unit_info.mac_address_size = 8;
unit_info.flash_sizes.push_back(32);
unit_info.flash_sizes.push_back(64);
unit_info.flash_sizes.push_back(128);
ByteVector sfr;
@ -69,7 +74,7 @@ void CC_243x::find_unit_info(UnitInfo &unit_info)
unit_info.internal_ID = sfr[1];
// Possible flash sizes: 32, 64, 128
log_info("! getting flash size");///
/* log_info("! getting flash size begin");///
unit_info.flash_size = 32;
for (uint8_t i = 1; i < 3; i++)
@ -84,6 +89,9 @@ void CC_243x::find_unit_info(UnitInfo &unit_info)
unit_info.flash_size = 32 << i;
}
log_info("! getting flash size end, result: %u", unit_info.flash_size);///
*/
unit_info_ = unit_info;
}
@ -98,11 +106,7 @@ bool CC_243x::erase_check_comleted()
//==============================================================================
void CC_243x::mac_address_read(size_t index, ByteVector &mac_address)
{ read_xdata_memory(0xDF43, 8, mac_address); }
//==============================================================================
void CC_243x::mac_address_write(ByteVector &mac_address)
{ }
{ read_xdata_memory(0xDF43, unit_info_.mac_address_size, mac_address); }
//==============================================================================
void CC_243x::flash_write(const DataSectionStore &sections)
@ -110,11 +114,74 @@ void CC_243x::flash_write(const DataSectionStore &sections)
//==============================================================================
void CC_243x::flash_read_block(size_t offset, size_t size, ByteVector &data)
{ flash_large_read_block(offset, size, data); }
{ flash_read(offset, size, data); }
//==============================================================================
bool CC_243x::lock_write(const ByteVector &data)
bool CC_243x::flash_image_embed_mac_address(DataSectionStore &sections,
const ByteVector &mac_address)
{
write_lock_to_info_page(data[0]);
if (!unit_info_.flash_size)
return false;
const uint_t mac_offset = unit_info_.flash_size * 1024 -
unit_info_.mac_address_size;
DataSection section(mac_offset, mac_address);
sections.add_section(section, true);
return true;
}
//==============================================================================
void CC_243x::convert_lock_data(const StringVector& qualifiers,
ByteVector& lock_data)
{
uint8_t lock_size[] = { 0, 2, 4, 8, 16, 32, 64, 128 };
convert_lock_data_std_set(
qualifiers,
ByteVector(lock_size, lock_size + ARRAY_SIZE(lock_size)),
lock_data);
}
//==============================================================================
bool CC_243x::config_write(const ByteVector &mac_address, const ByteVector &lock_data)
{
if (!lock_data.empty())
write_lock_to_info_page(lock_data[0]);
if (!mac_address.empty())
{
if (!unit_info_.flash_size)
{
std::cout << " unable to determine flash size. Writing mac is unsupported" << "\n";
return true;
}
CHECK_PARAM(mac_address.size() == unit_info_.mac_address_size);
const uint_t page_size = unit_info_.flash_page_size * 1024;
const uint_t page_offset = unit_info_.flash_size * 1024 - page_size;
ByteVector block;
flash_read_start();
flash_read(page_offset, page_size, block);
flash_read_end();
if (!empty_block(&block[0], block.size()))
erase_page(page_offset / page_size);
const uint_t mac_offset = unit_info_.flash_size * 1024 - mac_address.size();
memcpy(&block[mac_offset - page_offset], &mac_address[0], mac_address.size());
DataSectionStore store;
store.add_section(DataSection(page_offset, block), true);
write_flash_slow(store);
ByteVector check_block;
flash_read_start();
flash_read(page_offset, page_size, check_block);
flash_read_end();
return memcmp(&check_block[0], &block[0], block.size()) == 0;
}
return true;
}

View File

@ -22,12 +22,17 @@ public:
virtual bool erase_check_comleted();
virtual void mac_address_read(size_t index, ByteVector &mac_address);
virtual void mac_address_write(ByteVector &mac_address);
virtual void flash_write(const DataSectionStore &sections);
virtual void flash_read_block(size_t offset, size_t size, ByteVector &data);
virtual bool lock_write(const ByteVector &data);
virtual bool flash_image_embed_mac_address(DataSectionStore &sections,
const ByteVector &mac_address);
virtual void convert_lock_data(const StringVector& qualifiers,
ByteVector& lock_data);
virtual bool config_write(const ByteVector &mac_address, const ByteVector &lock_data);
CC_243x(USB_Device &programmer, ProgressWatcher &pw);
};

View File

@ -20,6 +20,7 @@ CC_251x_111x::CC_251x_111x(USB_Device &programmer, ProgressWatcher &pw) :
{
UnitCoreInfo reg_info;
reg_info.lock_size = 1;
reg_info.flash_word_size = 2;
reg_info.verify_block_size = 512;
reg_info.write_block_size = 512;
@ -57,10 +58,8 @@ void CC_251x_111x::supported_units(Unit_ID_List &units)
//==============================================================================
void CC_251x_111x::find_unit_info(UnitInfo &unit_info)
{
unit_info.lock_size = 1;
unit_info.max_flash_size = 32;
unit_info.flash_page_size = 1;
unit_info.mac_address_count = 1;
unit_info.flags = UnitInfo::SUPPORT_INFO_PAGE;
ByteVector sfr;
@ -69,6 +68,10 @@ void CC_251x_111x::find_unit_info(UnitInfo &unit_info)
unit_info.revision = sfr[0];
unit_info.internal_ID = sfr[1];
unit_info.flash_sizes.push_back(8);
unit_info.flash_sizes.push_back(16);
unit_info.flash_sizes.push_back(32);
unit_info_ = unit_info;
}
@ -83,15 +86,30 @@ bool CC_251x_111x::erase_check_comleted()
//==============================================================================
void CC_251x_111x::flash_read_block(size_t offset, size_t size, ByteVector &data)
{ flash_read_32k(offset, size, data); }
{ flash_read_near(offset, size, data); }
//==============================================================================
void CC_251x_111x::flash_write(const DataSectionStore &sections)
{ write_flash_slow(sections); }
//==============================================================================
bool CC_251x_111x::lock_write(const ByteVector &data)
bool CC_251x_111x::config_write(const ByteVector &mac_address,
const ByteVector &lock_data)
{
write_lock_to_info_page(data[0]);
if (!lock_data.empty())
write_lock_to_info_page(lock_data[0]);
return true;
}
//==============================================================================
void CC_251x_111x::convert_lock_data(const StringVector& qualifiers,
ByteVector& lock_data)
{
uint8_t lock_size[] = { 0, 1, 2, 4, 8, 16, 24, 32 };
convert_lock_data_std_set(
qualifiers,
ByteVector(lock_size, lock_size + ARRAY_SIZE(lock_size)),
lock_data);
}

View File

@ -24,7 +24,10 @@ public:
virtual void flash_write(const DataSectionStore &sections);
virtual void flash_read_block(size_t offset, size_t size, ByteVector &data);
virtual bool lock_write(const ByteVector &data);
virtual bool config_write(const ByteVector &mac_address, const ByteVector &lock_data);
virtual void convert_lock_data(const StringVector& qualifiers,
ByteVector& lock_data);
CC_251x_111x(USB_Device &programmer, ProgressWatcher &pw);
};

View File

@ -1,324 +0,0 @@
/*
* cc_253x_2540.cpp
*
* Created on: Aug 4, 2011
* Author: George Stark <george-u@yandex.com>
*
* License: GNU GPL v2
*
*/
#include "log.h"
#include "cc_253x_2540.h"
const size_t LOCK_DATA_SIZE = 16;
const size_t INFO_PAGE_OFFSET = 0x7800;
const size_t INFO_PAGE_SIZE = 0x800;
const uint16_t XREG_DBGDATA = 0x6260;
const uint16_t XREG_FWDATA = 0x6273;
const uint16_t XREG_FCTL = 0x6270;
const uint16_t XREG_FADDRL = 0x6271;
const uint16_t XREG_FADDRH = 0x6272;
const uint16_t XREG_DMA1CFGL = 0x70D2;
const uint16_t XREG_DMA1CFGH = 0x70D3;
const uint16_t XREG_DMAARM = 0x70D6;
const uint16_t XREG_DMAREQ = 0x70D7;
const uint16_t XREG_DMAIRQ = 0x70D1;
const uint16_t XREG_MEMCTR = 0x70C7;
const uint16_t XREG_FMAP = 0x709F;
//==============================================================================
CC_253x_2540::CC_253x_2540(USB_Device &usb_device, ProgressWatcher &pw) :
CC_UnitDriver(usb_device, pw)
{
UnitCoreInfo reg_info;
reg_info.flash_word_size = 4;
reg_info.write_block_size = 1024;
reg_info.verify_block_size = 1024;
reg_info.xbank_offset = 0x8000;
reg_info.dma0_cfg_offset = 0x0800;
reg_info.dma_data_offset = 0x0000;
reg_info.memctr = XREG_MEMCTR;
reg_info.fmap = XREG_FMAP;
reg_info.faddrh = XREG_FADDRH;
reg_info.faddrl = XREG_FADDRL;
reg_info.fctl = XREG_FCTL;
reg_info.fwdata = XREG_FWDATA;
reg_info.rndh = 0x70BD;
reg_info.rndl = 0x70BC;
reg_info.dma0_cfgh = 0x70D5;
reg_info.dma0_cfgl = 0x70D4;
reg_info.dma_arm = XREG_DMAARM;
reg_info.dma_req = XREG_DMAREQ;
reg_info.dma_irq = XREG_DMAIRQ;
reg_info.fctl_write = 0x06;
set_reg_info(reg_info);
}
//==============================================================================
void CC_253x_2540::supported_units(Unit_ID_List &units)
{
units.push_back(Unit_ID(0x2540, "CC2540"));
units.push_back(Unit_ID(0x2530, "CC2530"));
units.push_back(Unit_ID(0x2531, "CC2531"));
units.push_back(Unit_ID(0x2533, "CC2533"));
}
//==============================================================================
void CC_253x_2540::find_unit_info(UnitInfo &unit_info)
{
ByteVector sfr;
read_xdata_memory(0x6276, 2, sfr);
unit_info.flags = UnitInfo::SUPPORT_MAC_ADDRESS | UnitInfo::SUPPORT_INFO_PAGE;
if (sfr[0] & 0x08)
unit_info.flags |= UnitInfo::SUPPORT_USB;
unit_info.ram_size = (sfr[1] & 0x07) + 1;
switch ((sfr[0] >> 4) & 0x07)
{
case 0x01:
unit_info.flash_size = 32;
break;
case 0x02:
unit_info.flash_size = 64;
break;
case 0x03:
unit_info.flash_size = (unit_info.ID == 0x2533) ? 96 : 128;
break;
case 0x04:
unit_info.flash_size = 256;
break;
}
///unit_info.flash_size = 64;////
unit_info.lock_size = 16;
unit_info.flash_page_size = (unit_info.ID == 0x2533) ? 1 : 2;
unit_info.max_flash_size = (unit_info.ID == 0x2533) ? 96 : 256;
unit_info_.mac_address_count = 2;
read_xdata_memory(0x6249, 1, sfr);
unit_info.revision = sfr[0];
read_xdata_memory(0x624A, 1, sfr);
unit_info.internal_ID = sfr[0];
unit_info_ = unit_info;
}
//==============================================================================
void CC_253x_2540::read_info_page(ByteVector &info_page)
{
log_info("programmer, read info page");
size_t address = INFO_PAGE_OFFSET;
size_t total_size = INFO_PAGE_SIZE;
ByteVector data;
while (total_size)
{
size_t count = std::min(XDATA_READ_CHUNK_SIZE, total_size);
read_xdata_memory(address, count, data);
info_page.insert(info_page.end(), data.begin(), data.end());
total_size -= count;
address += count;
}
}
//==============================================================================
void CC_253x_2540::mac_address_read(size_t index, ByteVector &mac_address)
{
log_info("programmer, read mac address %u", index);
if (index == 0)
{
if (unit_info_.ID != 0x2540)
read_xdata_memory(0x780E, 8, mac_address);
else
read_xdata_memory(0x780E, 6, mac_address);
mac_address_write(mac_address);
}
if (index == 1)
{
size_t size = unit_info_.ID == 0x2540 ? 6 : 8;
size_t offset = unit_info_.flash_size * 1024 - LOCK_DATA_SIZE - size;
flash_read_start();
flash_read_block(offset, size, mac_address);
flash_read_end();
}
}
//==============================================================================
void CC_253x_2540::mac_address_write(ByteVector &mac_address)
{
size_t size = unit_info_.ID == 0x2540 ? 6 : 8;
size_t offset = unit_info_.flash_size * 1024 - LOCK_DATA_SIZE - size;
DataSection section(offset, mac_address);
DataSectionStore store;
store.add_section(section, true);
write_flash_slow(store);
}
//==============================================================================
bool CC_253x_2540::erase_check_comleted()
{
log_info("programmer, check erase is completed");
uint8_t status = 0;
read_debug_status(status);
return !(status & DEBUG_STATUS_CHIP_ERASE_BUSY);
}
//==============================================================================
void CC_253x_2540::flash_select_bank(uint_t bank)
{
log_info("programmer, set flash bank %u", bank);
uint8_t command[] = { 0xBE, 0x57, 0x75, 0x9F, bank };
usb_device_.bulk_write(ENDPOINT_OUT, sizeof(command), &command[0]);
}
//==============================================================================
void CC_253x_2540::flash_read_block(size_t offset, size_t size, ByteVector &data)
{ flash_large_read_block(offset, size, data); }
//==============================================================================
bool CC_253x_2540::lock_write(const ByteVector &lock_data)
{
pw_.enable(false);
DataSection section(unit_info_.flash_size * 1024 - lock_data.size(), lock_data);
DataSectionStore store;
store.add_section(section, true);
write_flash_slow(store);
ByteVector read_data;
flash_read_start();
flash_read_block(section.address, section.size(), read_data);
bool result = !memcmp(&read_data[0], &section.data[0], section.size());
flash_read_end();
return result;
}
//==============================================================================
void CC_253x_2540::flash_write(const DataSectionStore &sections)
{
// write_flash_slow(sections);
// return;
// Buffers
const uint16_t ADDR_BUF0 = 0x0000; // 1K
const uint16_t ADDR_BUF1 = 0x0400; // 1K
const uint16_t ADDR_DMA_DESC = 0x0800; // 32 bytes
// DMA Channels
const uint8_t CH_DBG_TO_BUF0 = 0x02;
const uint8_t CH_DBG_TO_BUF1 = 0x04;
const uint8_t CH_BUF0_TO_FLASH = 0x08;
const uint8_t CH_BUF1_TO_FLASH = 0x10;
const uint16_t PROG_BLOCK_SIZE = 1024;
const uint8_t dma_desc[32] = {
// Debug Interface -> Buffer 0 (Channel 1)
HIBYTE(XREG_DBGDATA), // src[15:8]
LOBYTE(XREG_DBGDATA), // src[7:0]
HIBYTE(ADDR_BUF0), // dest[15:8]
LOBYTE(ADDR_BUF0), // dest[7:0]
HIBYTE(PROG_BLOCK_SIZE), LOBYTE(PROG_BLOCK_SIZE), 31, // trigger DBG_BW
0x11, // increment destination
// Debug Interface -> Buffer 1 (Channel 2)
HIBYTE(XREG_DBGDATA), // src[15:8]
LOBYTE(XREG_DBGDATA), // src[7:0]
HIBYTE(ADDR_BUF1), // dest[15:8]
LOBYTE(ADDR_BUF1), // dest[7:0]
HIBYTE(PROG_BLOCK_SIZE), LOBYTE(PROG_BLOCK_SIZE), 31, // trigger DBG_BW
0x11, // increment destination
// Buffer 0 -> Flash controller (Channel 3)
HIBYTE(ADDR_BUF0), // src[15:8]
LOBYTE(ADDR_BUF0), // src[7:0]
HIBYTE(XREG_FWDATA), // dest[15:8]
LOBYTE(XREG_FWDATA), // dest[7:0]
HIBYTE(PROG_BLOCK_SIZE), LOBYTE(PROG_BLOCK_SIZE), 18, // trigger FLASH
0x42, // increment source
// Buffer 1 -> Flash controller (Channel 4)
HIBYTE(ADDR_BUF1), // src[15:8]
LOBYTE(ADDR_BUF1), // src[7:0]
HIBYTE(XREG_FWDATA), // dest[15:8]
LOBYTE(XREG_FWDATA), // dest[7:0]
HIBYTE(PROG_BLOCK_SIZE), LOBYTE(PROG_BLOCK_SIZE), 18, // trigger FLASH
0x42 // increment source
};
ByteVector xsfr;
// Load dma descriptors
write_xdata_memory(ADDR_DMA_DESC, dma_desc, sizeof(dma_desc));
// Set the pointer to the DMA descriptors
write_xdata_memory(XREG_DMA1CFGL, LOBYTE(ADDR_DMA_DESC));
write_xdata_memory(XREG_DMA1CFGH, HIBYTE(ADDR_DMA_DESC));
write_xdata_memory(XREG_FADDRL, 0);
write_xdata_memory(XREG_FADDRH, 0);
ByteVector data;
sections.create_image(0xFF, data);
data.resize((sections.upper_address() + (PROG_BLOCK_SIZE - 1)) &
~(PROG_BLOCK_SIZE - 1), 0xFF);
pw_.write_start(data.size());
uint8_t dbg_arm, flash_arm;
for (size_t i = 0; i < (data .size() / PROG_BLOCK_SIZE); i++)
{
if ((i & 0x0001) == 0)
{
dbg_arm = CH_DBG_TO_BUF0;
flash_arm = CH_BUF0_TO_FLASH;
}
else
{
dbg_arm = CH_DBG_TO_BUF1;
flash_arm = CH_BUF1_TO_FLASH;
}
// transfer next buffer (first buffer when i == 0)
write_xdata_memory(XREG_DMAARM, dbg_arm);
ByteVector command;
command.push_back(0xEE);
command.push_back(0x84);
command.push_back(0x00);
command.insert(command.end(), &data[i * PROG_BLOCK_SIZE],
&data[i * PROG_BLOCK_SIZE] + PROG_BLOCK_SIZE);
usb_device_.bulk_write(ENDPOINT_OUT, command.size(), &command[0]);
// wait for write to finish
while (read_xdata_memory(XREG_FCTL) & 0x80);
write_xdata_memory(XREG_DMAARM, flash_arm);
write_xdata_memory(XREG_FCTL, 0x06);
pw_.write_progress(PROG_BLOCK_SIZE);
}
while (read_xdata_memory(XREG_FCTL) & 0x80); // wait for the last buffer
pw_.write_finish();
}

View File

@ -1,49 +0,0 @@
/*
* cc_253x_2540.h
*
* Created on: Aug 4, 2011
* Author: George Stark <george-u@yandex.com>
*
* License: GNU GPL v2
*
*/
#ifndef _CC_253X_2540_H_
#define _CC_253X_2540_H_
#include "cc_debug_interface.h"
#include "cc_unit_driver.h"
class CC_253x_2540 : public CC_UnitDriver
{
public:
virtual void supported_units(Unit_ID_List &units);
virtual void find_unit_info(UnitInfo &info);
virtual void read_info_page(ByteVector &info_page);
virtual bool erase_check_comleted();
virtual void mac_address_read(size_t index, ByteVector &mac_address);
virtual void mac_address_write(ByteVector &mac_address);
virtual void flash_write(const DataSectionStore &sections);
virtual bool lock_write(const ByteVector &data);
CC_253x_2540(USB_Device &programmer, ProgressWatcher &pw);
private:
// virtual bool read_info_page(ByteVector &info_page);
// virtual bool flash_write(uint_t offset, const ByteVector &flash_data);
//virtual void flash_read(ByteVector &flash_data);
// uint16_t calc_block_crc();
//void flash_lock_bits_read(ByteVector &lock_data);
virtual void flash_read_block(size_t offset, size_t size, ByteVector &flash_data);
// void flash_read_page(uint16_t address, ByteVector &flash_data);
void flash_select_bank(uint_t bank);
// void flash_read_start();
// void flash_read_end();
};
#endif // !_CC_253X_2540_H_

View File

@ -0,0 +1,497 @@
/*
* cc_253x_254x.cpp
*
* Created on: Aug 4, 2011
* Author: George Stark <george-u@yandex.com>
*
* License: GNU GPL v2
*
*/
#include <boost/regex.hpp>
#include "log.h"
#include "cc_253x_254x.h"
#include "data/hex_file.h"
#include "data/binary_file.h"
const size_t LOCK_DATA_SIZE = 16;
const size_t MAX_PAGE_COUNT = LOCK_DATA_SIZE * 8;
const size_t INFO_PAGE_OFFSET = 0x7800;
const size_t INFO_PAGE_SIZE = 0x800;
const uint16_t XREG_DBGDATA = 0x6260;
const uint16_t XREG_FWDATA = 0x6273;
const uint16_t XREG_FCTL = 0x6270;
const uint16_t XREG_FADDRL = 0x6271;
const uint16_t XREG_FADDRH = 0x6272;
const uint16_t XREG_DMA1CFGL = 0x70D2;
const uint16_t XREG_DMA1CFGH = 0x70D3;
const uint16_t XREG_DMAARM = 0x70D6;
const uint16_t XREG_DMAREQ = 0x70D7;
const uint16_t XREG_DMAIRQ = 0x70D1;
const uint16_t XREG_MEMCTR = 0x70C7;
const uint16_t XREG_FMAP = 0x709F;
//==============================================================================
static void read_range(const String& input, BoolVector& range,
uint_t min_value, uint_t max_value)
{
boost::cmatch what;
boost::regex exp("(\\d{1,})-(\\d{1,})");
StringVector list;
boost::split(list, input, boost::is_any_of(","));
foreach(const String& item, list)
{
uint_t n = 0;
uint_t r1, r2;
if (string_to_number(item, n))
r1 = r2 = n;
else
{
if (!boost::regex_match(item.c_str(), what, exp))
throw std::runtime_error("read_range: incorrect input");
string_to_number(what[1].str(), r1);
string_to_number(what[2].str(), r2);
if (r1 > r2)
std::swap(r1, r2);
}
if (r2 > max_value || r1 < min_value)
throw std::runtime_error("read_range: value is out of range");
if (range.size() <= r2)
range.resize(r2 + 1, false);
for (; r1 <= r2; r1++)
range[r1] = true;
}
}
//==============================================================================
CC_253x_254x::CC_253x_254x(USB_Device &usb_device, ProgressWatcher &pw) :
CC_UnitDriver(usb_device, pw)
{
UnitCoreInfo reg_info;
reg_info.lock_size = 16;
reg_info.flash_word_size = 4;
reg_info.write_block_size = 1024;
reg_info.verify_block_size = 1024;
reg_info.xbank_offset = 0x8000;
reg_info.dma0_cfg_offset = 0x0800;
reg_info.dma_data_offset = 0x0000;
reg_info.memctr = XREG_MEMCTR;
reg_info.fmap = XREG_FMAP;
reg_info.faddrh = XREG_FADDRH;
reg_info.faddrl = XREG_FADDRL;
reg_info.fctl = XREG_FCTL;
reg_info.fwdata = XREG_FWDATA;
reg_info.rndh = 0x70BD;
reg_info.rndl = 0x70BC;
reg_info.dma0_cfgh = 0x70D5;
reg_info.dma0_cfgl = 0x70D4;
reg_info.dma_arm = XREG_DMAARM;
reg_info.dma_req = XREG_DMAREQ;
reg_info.dma_irq = XREG_DMAIRQ;
reg_info.fctl_write = 0x06;
set_reg_info(reg_info);
}
//==============================================================================
void CC_253x_254x::supported_units(Unit_ID_List &units)
{
units.push_back(Unit_ID(0x2530, "CC2530"));
units.push_back(Unit_ID(0x2531, "CC2531"));
units.push_back(Unit_ID(0x2533, "CC2533"));
units.push_back(Unit_ID(0x2540, "CC2540"));
units.push_back(Unit_ID(0x2541, "CC2541"));
units.push_back(Unit_ID(0x2543, "CC2543"));
units.push_back(Unit_ID(0x2544, "CC2544"));
units.push_back(Unit_ID(0x2545, "CC2545"));
}
//==============================================================================
void CC_253x_254x::find_unit_info(UnitInfo &unit_info)
{
bool small_unit =
unit_info.ID == 0x2543 ||
unit_info.ID == 0x2544 ||
unit_info.ID == 0x2545;
unit_info.flags = UnitInfo::SUPPORT_INFO_PAGE;
ByteVector sfr;
read_xdata_memory(0x6276, 2, sfr);
if (sfr[0] & 0x08)
unit_info.flags |= UnitInfo::SUPPORT_USB;
unit_info.ram_size = (sfr[1] & 0x07) + 1;
uint8_t flash_size_id = (sfr[0] >> 4) & 0x07;
switch (flash_size_id)
{
case 0x01:
unit_info.flash_size = 32;
break;
case 0x02:
unit_info.flash_size = 64;
break;
case 0x03:
unit_info.flash_size = (unit_info.ID == 0x2533) ? 96 : 128;
break;
case 0x04:
unit_info.flash_size = 256;
break;
}
if (small_unit)
{
if (flash_size_id == 0x01)
unit_info.flash_size = 18;
if (flash_size_id == 0x07)
unit_info.flash_size = 32;
}
unit_info.flash_sizes.push_back(16);//
unit_info.flash_sizes.push_back(32);
unit_info.flash_sizes.push_back(64);
unit_info.flash_sizes.push_back(96);
unit_info.flash_sizes.push_back(128);
unit_info.flash_sizes.push_back(256);
///unit_info.flash_size = 64;////
if (!small_unit)
{
unit_info.flash_page_size = (unit_info.ID == 0x2533) ? 1 : 2;
unit_info.max_flash_size = (unit_info.ID == 0x2533) ? 96 : 256;
unit_info.flags |= UnitInfo::SUPPORT_MAC_ADDRESS;
unit_info.mac_address_count = 2;
unit_info.mac_address_size =
(unit_info.ID == 0x2540 || unit_info.ID == 0x2541) ? 6 : 8;
}
else
{
unit_info.flash_page_size = 1;
unit_info.max_flash_size = 32;
UnitCoreInfo reg_info(get_reg_info());
reg_info.write_block_size = 512;
reg_info.verify_block_size = 512;
reg_info.dma0_cfg_offset = 0x0200;
set_reg_info(reg_info);
}
read_xdata_memory(0x6249, 1, sfr);
unit_info.revision = sfr[0];
read_xdata_memory(0x624A, 1, sfr);
unit_info.internal_ID = sfr[0];
unit_info_ = unit_info;
}
//==============================================================================
void CC_253x_254x::read_info_page(ByteVector &info_page)
{
log_info("programmer, read info page");
size_t address = INFO_PAGE_OFFSET;
size_t total_size = INFO_PAGE_SIZE;
ByteVector data;
while (total_size)
{
size_t count = std::min(XDATA_READ_CHUNK_SIZE, total_size);
read_xdata_memory(address, count, data);
info_page.insert(info_page.end(), data.begin(), data.end());
total_size -= count;
address += count;
}
}
//==============================================================================
void CC_253x_254x::mac_address_read(size_t index, ByteVector &mac_address)
{
CHECK_PARAM(unit_info_.flags & UnitInfo::SUPPORT_MAC_ADDRESS);
log_info("programmer, read mac address %u", index);
if (index == 0)
{
size_t offset = (unit_info_.ID == 0x2540 || unit_info_.ID == 0x2541) ?
0x780E : 0x780C;
read_xdata_memory(offset, unit_info_.mac_address_size, mac_address);
}
if (index == 1)
{
size_t offset = unit_info_.flash_size * 1024 - LOCK_DATA_SIZE -
unit_info_.mac_address_size;
flash_read_start();
flash_read_block(offset, unit_info_.mac_address_size, mac_address);
flash_read_end();
}
}
//==============================================================================
bool CC_253x_254x::erase_check_comleted()
{
log_info("programmer, check erase is completed");
uint8_t status = 0;
read_debug_status(status);
return !(status & DEBUG_STATUS_CHIP_ERASE_BUSY);
}
//==============================================================================
void CC_253x_254x::flash_select_bank(uint_t bank)
{
log_info("programmer, set flash bank %u", bank);
uint8_t command[] = { 0xBE, 0x57, 0x75, 0x9F, LOBYTE(bank) };
usb_device_.bulk_write(endpoint_out_, sizeof(command), &command[0]);
}
//==============================================================================
void CC_253x_254x::flash_read_block(size_t offset, size_t size, ByteVector &data)
{
flash_read(offset, size, data);
}
//==============================================================================
void CC_253x_254x::convert_lock_data(const StringVector& qualifiers,
ByteVector& lock_data)
{
ByteVector data(LOCK_DATA_SIZE, 0xFF);
foreach (const String &s, qualifiers)
{
if (s == "debug")
data[LOCK_DATA_SIZE - 1] &= ~0x80;
else
if (s == "pages" || s == "flash")
{
uint8_t bit = (data[LOCK_DATA_SIZE - 1] & 0x80); // save debug bit
std::fill(data.begin(), data.end(), 0xFF);
data[LOCK_DATA_SIZE - 1] &= (~0x80 | bit); // restore debug bit
}
else
if (s.find("pages:") == 0)
{
BoolVector pages;
read_range(s.substr(ARRAY_SIZE("pages:") - 1), pages,
0, MAX_PAGE_COUNT - 1);
uint_t count = std::min(pages.size(), MAX_PAGE_COUNT);
for (uint_t i = 0; i < count; i++)
if (pages[i])
data[i / 8] &= ~(1 << (i % 8));
}
else
throw std::runtime_error("unknown lock qualifyer: " + s);
}
lock_data = data;
}
//==============================================================================
bool CC_253x_254x::flash_image_embed_mac_address(DataSectionStore &sections,
const ByteVector &mac_address)
{
if (!(unit_info_.flags & UnitInfo::SUPPORT_MAC_ADDRESS))
return false;
DataSection section(mac_address_offset(), mac_address);
sections.add_section(section, true);
return true;
}
//==============================================================================
bool CC_253x_254x::flash_image_embed_lock_data(DataSectionStore &sections,
const ByteVector &lock_data)
{
DataSection section(lock_data_offset(), lock_data);
sections.add_section(section, true);
return true;
}
//==============================================================================
uint_t CC_253x_254x::mac_address_offset() const
{
return unit_info_.flash_size * 1024 - LOCK_DATA_SIZE -
unit_info_.mac_address_size;
}
//==============================================================================
uint_t CC_253x_254x::lock_data_offset() const
{
return unit_info_.flash_size * 1024 - LOCK_DATA_SIZE;
}
//==============================================================================
bool CC_253x_254x::config_write(const ByteVector &mac_address,
const ByteVector &lock_data)
{
if (mac_address.empty() && lock_data.empty())
return true;
const uint_t page_size = unit_info_.flash_page_size * 1024;
const uint_t page_offset = unit_info_.flash_size * 1024 - page_size;
ByteVector block;
flash_read(page_offset, page_size, block);
if (!empty_block(&block[0], block.size()))
erase_page(page_offset);
if (!mac_address.empty())
{
CHECK_PARAM(mac_address.size() == unit_info_.mac_address_size);
CHECK_PARAM(unit_info_.flags & UnitInfo::SUPPORT_MAC_ADDRESS);
memcpy(&block[mac_address_offset() - page_offset], &mac_address[0],
unit_info_.mac_address_size);
}
if (!lock_data.empty())
{
CHECK_PARAM(lock_data.size() == LOCK_DATA_SIZE);
memcpy(&block[lock_data_offset() - page_offset], &lock_data[0],
LOCK_DATA_SIZE);
}
DataSectionStore store;
store.add_section(DataSection(page_offset, block), true);
write_flash_slow(store);
ByteVector check_block;
flash_read(page_offset, page_size, check_block);
return memcmp(&check_block[0], &block[0], block.size()) == 0;
}
//==============================================================================
void CC_253x_254x::flash_write(const DataSectionStore &sections)
{
if (unit_info_.ID == 0x2543 ||
unit_info_.ID == 0x2544 ||
unit_info_.ID == 0x2545)
{
write_flash_slow(sections);
return;
}
// Buffers
const uint16_t ADDR_BUF0 = 0x0000; // 1K
const uint16_t ADDR_BUF1 = 0x0400; // 1K
const uint16_t ADDR_DMA_DESC = 0x0800; // 32 bytes
// DMA Channels
const uint8_t CH_DBG_TO_BUF0 = 0x02;
const uint8_t CH_DBG_TO_BUF1 = 0x04;
const uint8_t CH_BUF0_TO_FLASH = 0x08;
const uint8_t CH_BUF1_TO_FLASH = 0x10;
const uint16_t PROG_BLOCK_SIZE = 1024;
const uint8_t dma_desc[32] = {
// Debug Interface -> Buffer 0 (Channel 1)
HIBYTE(XREG_DBGDATA), // src[15:8]
LOBYTE(XREG_DBGDATA), // src[7:0]
HIBYTE(ADDR_BUF0), // dest[15:8]
LOBYTE(ADDR_BUF0), // dest[7:0]
HIBYTE(PROG_BLOCK_SIZE), LOBYTE(PROG_BLOCK_SIZE), 31, // trigger DBG_BW
0x11, // increment destination
// Debug Interface -> Buffer 1 (Channel 2)
HIBYTE(XREG_DBGDATA), // src[15:8]
LOBYTE(XREG_DBGDATA), // src[7:0]
HIBYTE(ADDR_BUF1), // dest[15:8]
LOBYTE(ADDR_BUF1), // dest[7:0]
HIBYTE(PROG_BLOCK_SIZE), LOBYTE(PROG_BLOCK_SIZE), 31, // trigger DBG_BW
0x11, // increment destination
// Buffer 0 -> Flash controller (Channel 3)
HIBYTE(ADDR_BUF0), // src[15:8]
LOBYTE(ADDR_BUF0), // src[7:0]
HIBYTE(XREG_FWDATA), // dest[15:8]
LOBYTE(XREG_FWDATA), // dest[7:0]
HIBYTE(PROG_BLOCK_SIZE), LOBYTE(PROG_BLOCK_SIZE), 18, // trigger FLASH
0x42, // increment source
// Buffer 1 -> Flash controller (Channel 4)
HIBYTE(ADDR_BUF1), // src[15:8]
LOBYTE(ADDR_BUF1), // src[7:0]
HIBYTE(XREG_FWDATA), // dest[15:8]
LOBYTE(XREG_FWDATA), // dest[7:0]
HIBYTE(PROG_BLOCK_SIZE), LOBYTE(PROG_BLOCK_SIZE), 18, // trigger FLASH
0x42 // increment source
};
ByteVector xsfr;
// Load dma descriptors
write_xdata_memory(ADDR_DMA_DESC, dma_desc, sizeof(dma_desc));
// Set the pointer to the DMA descriptors
write_xdata_memory(XREG_DMA1CFGL, LOBYTE(ADDR_DMA_DESC));
write_xdata_memory(XREG_DMA1CFGH, HIBYTE(ADDR_DMA_DESC));
write_xdata_memory(XREG_FADDRL, 0);
write_xdata_memory(XREG_FADDRH, 0);
ByteVector data;
sections.create_image(FLASH_EMPTY_BYTE, data);
data.resize(align_up(sections.upper_address(), PROG_BLOCK_SIZE), FLASH_EMPTY_BYTE);
pw_.write_start(data.size());
uint8_t dbg_arm, flash_arm;
for (size_t i = 0; i < (data .size() / PROG_BLOCK_SIZE); i++)
{
if ((i & 0x0001) == 0)
{
dbg_arm = CH_DBG_TO_BUF0;
flash_arm = CH_BUF0_TO_FLASH;
}
else
{
dbg_arm = CH_DBG_TO_BUF1;
flash_arm = CH_BUF1_TO_FLASH;
}
// transfer next buffer (first buffer when i == 0)
write_xdata_memory(XREG_DMAARM, dbg_arm);
ByteVector command;
command.push_back(0xEE);
command.push_back(0x84);
command.push_back(0x00);
command.insert(command.end(), &data[i * PROG_BLOCK_SIZE],
&data[i * PROG_BLOCK_SIZE] + PROG_BLOCK_SIZE);
usb_device_.bulk_write(endpoint_out_, command.size(), &command[0]);
// wait for write to finish
while (read_xdata_memory(XREG_FCTL) & 0x80);
write_xdata_memory(XREG_DMAARM, flash_arm);
write_xdata_memory(XREG_FCTL, 0x06);
pw_.write_progress(PROG_BLOCK_SIZE);
}
while (read_xdata_memory(XREG_FCTL) & FCTL_BUSY); // wait for the last buffer
pw_.write_finish();
}

View File

@ -0,0 +1,55 @@
/*
* cc_253x_254x.h
*
* Created on: Aug 4, 2011
* Author: George Stark <george-u@yandex.com>
*
* License: GNU GPL v2
*
*/
#ifndef _CC_253X_254X_H_
#define _CC_253X_254X_H_
#include "cc_debug_interface.h"
#include "cc_unit_driver.h"
class CC_253x_254x : public CC_UnitDriver
{
public:
virtual void supported_units(Unit_ID_List &units);
virtual void find_unit_info(UnitInfo &info);
virtual void read_info_page(ByteVector &info_page);
virtual bool erase_check_comleted();
/// @param offset must be at page boundaries
virtual void mac_address_read(size_t index, ByteVector &mac_address);
virtual void flash_write(const DataSectionStore &sections);
virtual bool config_write(const ByteVector &mac_address,
const ByteVector &lock_data);
virtual bool flash_image_embed_mac_address(DataSectionStore &sections,
const ByteVector &mac_address);
virtual bool flash_image_embed_lock_data(DataSectionStore &sections,
const ByteVector &lock_data);
virtual void convert_lock_data(const StringVector& qualifiers,
ByteVector& lock_data);
CC_253x_254x(USB_Device &programmer, ProgressWatcher &pw);
private:
virtual void flash_read_block(size_t offset, size_t size, ByteVector &flash_data);
// void flash_read_page(uint16_t address, ByteVector &flash_data);
void flash_select_bank(uint_t bank);
// void flash_read_start();
// void flash_read_end();
/// Return absolute flash offset where secondary mac address is stored
uint_t mac_address_offset() const;
/// Return absolute flash offset where lock data is stored
uint_t lock_data_offset() const;
};
#endif // !_CC_253X_2540_H_

View File

@ -13,8 +13,7 @@
#include "common.h"
const uint8_t ENDPOINT_IN = 0x84;
const uint8_t ENDPOINT_OUT = 0x04;
const size_t CC_BREAKPOINT_COUNT = 4;
const uint8_t
DEBUG_STATUS_STACK_OVERFLOW = 0x01,
@ -48,7 +47,4 @@ const uint8_t
DEBUG_COMMAND_GET_CHIP_ID = 0x68,
DEBUG_COMMAND_BURST_WRITE = 0x80;
#define LOBYTE(w) ((uint8_t)(w))
#define HIBYTE(w) ((uint8_t)(((uint16_t)(w) >> 8) & 0xFF))
#endif // !_CC_DEBUG_INTERFACE_H_

View File

@ -11,7 +11,7 @@
#include <stdio.h>
#include "cc_programmer.h"
#include "cc_251x_111x.h"
#include "cc_253x_2540.h"
#include "cc_253x_254x.h"
#include "cc_243x.h"
#include "log.h"
@ -19,9 +19,14 @@ const uint_t DEFAULT_TIMEOUT = 3000;
const uint_t MAX_ERASE_TIME = 8000;
const static USB_DeviceID DeviceTable[] = {
{ 0x0451, 0x16A2, "CC Debugger" },
{ 0x11A0, 0xDB20, "SmartRF04 Evaluation Board" },
{ 0x0451, 0x16A0, "SmartRF05 Evaluation Board" },
{ 0x0451, 0x16A2, 0x84, 0x04, "CC Debugger",
USB_DeviceID::PROTOCOL_TI },
{ 0x11A0, 0xDB20, 0x84, 0x04, "SmartRF04 Evaluation Board",
USB_DeviceID::PROTOCOL_TI },
{ 0x11A0, 0xEB20, 0x82, 0x02, "SmartRF04 Evaluation Board (Chinese)",
USB_DeviceID::PROTOCOL_CHIPCON },
{ 0x0451, 0x16A0, 0x84, 0x04, "SmartRF05 Evaluation Board",
USB_DeviceID::PROTOCOL_TI },
};
//==============================================================================
@ -51,7 +56,7 @@ CC_Programmer::CC_Programmer()
{
usb_device_.set_transfer_timeout(DEFAULT_TIMEOUT);
unit_drviers_.push_back(CC_UnitDriverPtr(new CC_253x_2540(usb_device_, pw_)));
unit_drviers_.push_back(CC_UnitDriverPtr(new CC_253x_254x(usb_device_, pw_)));
unit_drviers_.push_back(CC_UnitDriverPtr(new CC_251x_111x(usb_device_, pw_)));
unit_drviers_.push_back(CC_UnitDriverPtr(new CC_243x(usb_device_, pw_)));
}
@ -99,6 +104,12 @@ bool CC_Programmer::set_debug_interface_speed(CC_Programmer::InterfaceSpeed spee
return true;
}
//==============================================================================
bool CC_Programmer::unit_set_flash_size(uint_t flash_size)
{
return driver_->set_flash_size(flash_size);
}
//==============================================================================
bool CC_Programmer::programmer_info(CC_ProgrammerInfo &info)
{
@ -113,6 +124,9 @@ bool CC_Programmer::programmer_info(CC_ProgrammerInfo &info)
//==============================================================================
void CC_Programmer::init_device()
{
if (programmer_info_.usb_device.protocol == USB_DeviceID::PROTOCOL_CHIPCON)
usb_device_.reset_device();
usb_device_.set_configuration(1);
usb_device_.claim_interface(0);
request_device_info();
@ -132,6 +146,7 @@ CC_Programmer::OpenResult CC_Programmer::open(uint_t bus, uint_t device)
if (descriptor.idProduct == item.product_id &&
descriptor.idVendor == item.vendor_id)
{
programmer_info_.usb_device = item;
init_device();
return OR_OK;
}
@ -146,7 +161,7 @@ CC_Programmer::OpenResult CC_Programmer::open()
{
if (usb_device_.open_by_vid_pid(item.vendor_id, item.product_id))
{
programmer_info_.descripton = item.description;
programmer_info_.usb_device = item;
break;
}
}
@ -177,7 +192,20 @@ void CC_Programmer::request_device_info()
device_descriptor.bcdDevice & 0xFF);
programmer_info_.debugger_id = DID;
usb_device_.string_descriptor_ascii(device_descriptor.iProduct, programmer_info_.name);
if (device_descriptor.iProduct > 0)
usb_device_.string_descriptor_ascii(device_descriptor.iProduct, programmer_info_.name);
else
{
foreach (const USB_DeviceID &item, DeviceTable)
{
if (device_descriptor.idProduct == item.product_id &&
device_descriptor.idVendor == item.vendor_id)
{
programmer_info_.name = item.description;
break;
}
}
}
const uint8_t USB_REQUEST_GET_STATE = 0xC0;
@ -206,12 +234,15 @@ void CC_Programmer::request_device_info()
}
}
if (!driver_ && unit_info_.ID)
if (!driver_ && unit_info_.ID > 0)
{
std::swap(info[0], info[1]);
unit_info_.name = "CC" + binary_to_hex(info, 2, "");
}
if (driver_)
driver_->set_programmer_ID(programmer_info_.usb_device);
log_add_programmer_info(programmer_info_);
}
@ -232,12 +263,16 @@ void CC_Programmer::enter_debug_mode()
log_info("programmer, enter debug mode");
const uint8_t USB_PREPARE_DEBUG_MODE = 0xC5;
const uint8_t USB_SET_CHIP_INFO = 0xC8;
usb_device_.control_write(LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_ENDPOINT_OUT,
USB_PREPARE_DEBUG_MODE, 0, 0, NULL, 0);
ByteVector command(0x30, ' ');
const uint8_t USB_SET_CHIP_INFO = 0xC8;
const size_t command_size =
programmer_info_.usb_device.protocol == USB_DeviceID::PROTOCOL_TI ?
0x30 : 0x20;
ByteVector command(command_size, ' ');
memcpy(&command[0x00], unit_info_.name.c_str(), unit_info_.name.size());
memcpy(&command[0x10], "DID:", 4);
memcpy(&command[0x15], programmer_info_.debugger_id.c_str(), programmer_info_.debugger_id.size());
@ -298,7 +333,7 @@ bool CC_Programmer::unit_reset()
//==============================================================================
bool CC_Programmer::unit_erase()
{
driver_->erase_start();
driver_->erase();
uint_t erase_timer = get_tick_count();
do
@ -327,8 +362,38 @@ void CC_Programmer::unit_mac_address_read(size_t index, ByteVector &mac_address)
}
//==============================================================================
void CC_Programmer::unit_mac_address_write(ByteVector &mac_address)
{ }
bool CC_Programmer::unit_config_write(ByteVector &mac_address, ByteVector &lock_data)
{
pw_.enable(false);
return driver_->config_write(mac_address, lock_data);
}
//==============================================================================
bool CC_Programmer::flash_image_embed_mac_address(DataSectionStore &sections,
const ByteVector &mac_address)
{
return driver_->flash_image_embed_mac_address(sections, mac_address);
}
//==============================================================================
bool CC_Programmer::flash_image_embed_lock_data(DataSectionStore &sections,
const ByteVector &lock_data)
{
return driver_->flash_image_embed_lock_data(sections, lock_data);
}
//==============================================================================
uint_t CC_Programmer::unit_lock_data_size() const
{
return driver_->lock_data_size();
}
//==============================================================================
void CC_Programmer::unit_convert_lock_data(const StringVector& qualifiers,
ByteVector& lock_data)
{
driver_->convert_lock_data(qualifiers, lock_data);
}
//==============================================================================
void CC_Programmer::unit_flash_read(ByteVector &flash_data)
@ -363,13 +428,6 @@ void CC_Programmer::unit_flash_write(const DataSectionStore &sections)
driver_->flash_write(sections);
}
//==============================================================================
bool CC_Programmer::unit_lock_write(const ByteVector &lock_data)
{
pw_.enable(false);
return driver_->lock_write(lock_data);
}
//==============================================================================
void CC_Programmer::do_on_flash_read_progress(
const ProgressWatcher::OnProgress::slot_type &slot)

View File

@ -15,22 +15,27 @@
#include "usb/usb_device.h"
#include "data/data_section_store.h"
const size_t CC_BREAKPOINT_COUNT = 4;
struct USB_DeviceID
{
enum { PROTOCOL_TI, PROTOCOL_CHIPCON };
uint16_t vendor_id;
uint16_t product_id;
uint8_t endpoint_in;
uint8_t endpoint_out;
char description[256];
uint_t protocol;
};
struct CC_ProgrammerInfo
{
String name;
String descripton;
String debugger_id; // 4 unique digits
uint16_t fw_version;
uint16_t fw_revision;
};
struct USB_DeviceID
{
uint16_t vendor_id;
uint16_t product_id;
char description[256];
String name;
String debugger_id; // 4 unique digits
uint16_t fw_version;
uint16_t fw_revision;
USB_DeviceID usb_device;
};
struct CC_Breakpoint
@ -61,6 +66,8 @@ public:
enum InterfaceSpeed { IS_SLOW, IS_FAST };
bool set_debug_interface_speed(InterfaceSpeed speed);
bool unit_set_flash_size(uint_t flash_size);
void unit_status(String &name, bool &supported) const;
bool unit_connect(UnitInfo &info);
void unit_close();
@ -72,14 +79,26 @@ public:
void unit_read_info_page(ByteVector &info_page);
void unit_mac_address_read(size_t index, ByteVector &mac_address);
void unit_mac_address_write(ByteVector &mac_address);
void unit_flash_read(ByteVector &flash_data);
void unit_flash_write(const DataSectionStore &sections);
enum VerifyMethod { VM_BY_CRC, VM_BY_READ };
bool unit_flash_verify(const DataSectionStore &sections, VerifyMethod method);
bool unit_lock_write(const ByteVector &lock_data);
bool unit_config_write(ByteVector &mac_address, ByteVector &lock_data);
void unit_convert_lock_data(const StringVector& qualifiers,
ByteVector& lock_data);
uint_t unit_lock_data_size() const;
bool flash_image_embed_mac_address(DataSectionStore &sections,
const ByteVector &mac_address);
bool flash_image_embed_lock_data(DataSectionStore &sections,
const ByteVector &lock_data);
void do_on_flash_read_progress(const ProgressWatcher::OnProgress::slot_type&);
void do_on_flash_write_progress(const ProgressWatcher::OnProgress::slot_type&);
@ -97,7 +116,7 @@ private:
CC_UnitDriverPtrList unit_drviers_;
CC_UnitDriverPtr driver_;
ProgressWatcher pw_;
CC_Breakpoint bps_[CC_BREAKPOINT_COUNT];
//CC_Breakpoint bps_[CC_BREAKPOINT_COUNT];
};
#endif // !_CC_PROGRAMMER_H_

View File

@ -19,11 +19,42 @@
typedef boost::crc_optimal<16, 0x8005, 0xFFFF, 0, false, false> CrcCalculator;
const size_t MAX_EMPTY_BLOCK_SIZE = FLASH_BANK_SIZE;
static uint8_t empty_block_[MAX_EMPTY_BLOCK_SIZE];
//==============================================================================
CC_UnitDriver::CC_UnitDriver(USB_Device &programmer, ProgressWatcher &pw) :
usb_device_(programmer),
pw_(pw)
{ }
pw_(pw),
endpoint_in_(0),
endpoint_out_(0)
{
memset(empty_block_, FLASH_EMPTY_BYTE, FLASH_BANK_SIZE);
}
//==============================================================================
void CC_UnitDriver::set_programmer_ID(const USB_DeviceID& programmer_ID)
{
endpoint_in_ = programmer_ID.endpoint_in;
endpoint_out_ = programmer_ID.endpoint_out;
}
//==============================================================================
bool CC_UnitDriver::set_flash_size(uint_t flash_size)
{
bool found = std::find(
unit_info_.flash_sizes.begin(),
unit_info_.flash_sizes.end(),
flash_size) != unit_info_.flash_sizes.end();
if (!unit_info_.flash_size && found)
{
unit_info_.flash_size = flash_size;
return true;
}
return false;
}
//==============================================================================
void CC_UnitDriver::reset(bool debug_mode)
@ -46,8 +77,8 @@ void CC_UnitDriver::read_debug_status(uint8_t &status)
status = 0;
usb_device_.bulk_write(ENDPOINT_OUT, sizeof(command), command);
usb_device_.bulk_read(ENDPOINT_IN, 1, &status);
usb_device_.bulk_write(endpoint_out_, sizeof(command), command);
usb_device_.bulk_read(endpoint_in_, 1, &status);
log_info("programmer, debug status, %02Xh", status);
}
@ -59,8 +90,8 @@ void CC_UnitDriver::read_debug_config(uint8_t &config)
uint8_t command[] = { 0x1F, DEBUG_COMMAND_RD_CONFIG };
usb_device_.bulk_write(ENDPOINT_OUT, sizeof(command), command);
usb_device_.bulk_read(ENDPOINT_IN, 1, &config);
usb_device_.bulk_write(endpoint_out_, sizeof(command), command);
usb_device_.bulk_read(endpoint_in_, 1, &config);
log_info("programmer, debug config, %02Xh", config);
}
@ -72,17 +103,35 @@ void CC_UnitDriver::write_debug_config(uint8_t config)
uint8_t command[] = { 0x4C, DEBUG_COMMAND_WR_CONFIG, config };
usb_device_.bulk_write(ENDPOINT_OUT, sizeof(command), command);
usb_device_.bulk_write(endpoint_out_, sizeof(command), command);
}
//==============================================================================
void CC_UnitDriver::erase_start()
bool CC_UnitDriver::erase_page(uint_t page_offset)
{
page_offset /= reg_info_.flash_word_size;
write_xdata_memory(reg_info_.faddrl, 0);
write_xdata_memory(reg_info_.faddrh, HIBYTE(page_offset));
// erase
write_xdata_memory(reg_info_.fctl, FCTL_ERASE);
// wait for write to finish
uint8_t reg;
while ((reg = read_xdata_memory(reg_info_.fctl)) & FCTL_BUSY);
return !(reg & FCTL_ABORT);
}
//==============================================================================
void CC_UnitDriver::erase()
{
log_info("programmer, erase");
uint8_t command[] = { 0x1C, DEBUG_COMMAND_CHIP_ERASE };
usb_device_.bulk_write(ENDPOINT_OUT, sizeof(command), command);
usb_device_.bulk_write(endpoint_out_, sizeof(command), command);
}
//==============================================================================
@ -99,7 +148,7 @@ void CC_UnitDriver::write_sfr(uint8_t address, uint8_t value)
vector_append(command, mov_a_direct, sizeof(mov_a_direct));
vector_append(command, footer, sizeof(footer));
usb_device_.bulk_write(ENDPOINT_OUT, command.size(), &command[0]);
usb_device_.bulk_write(endpoint_out_, command.size(), &command[0]);
}
//==============================================================================
@ -116,8 +165,8 @@ void CC_UnitDriver::read_sfr(uint8_t address, uint8_t &value)
vector_append(command, mov_a_direct, sizeof(mov_a_direct));
vector_append(command, footer, sizeof(footer));
usb_device_.bulk_write(ENDPOINT_OUT, command.size(), &command[0]);
usb_device_.bulk_read(ENDPOINT_IN, 1, &value);
usb_device_.bulk_write(endpoint_out_, command.size(), &command[0]);
usb_device_.bulk_read(endpoint_in_, 1, &value);
log_info("programmer, sfr value: %02Xh", value);
}
@ -166,12 +215,26 @@ void CC_UnitDriver::read_xdata_memory(uint16_t address, size_t count, ByteVector
data.resize(count);
usb_device_.bulk_write(ENDPOINT_OUT, command.size(), &command[0]);
usb_device_.bulk_read(ENDPOINT_IN, count, &data[0]);
usb_device_.bulk_write(endpoint_out_, command.size(), &command[0]);
usb_device_.bulk_read(endpoint_in_, count, &data[0]);
log_info("programmer, read xdata memory, data: %s", binary_to_hex(&data[0], count, " ").c_str());
}
//==============================================================================
bool CC_UnitDriver::flash_image_embed_mac_address(DataSectionStore &sections,
const ByteVector &mac_address)
{
return false;
}
//==============================================================================
bool CC_UnitDriver::flash_image_embed_lock_data(DataSectionStore &sections,
const ByteVector &lock_data)
{
return false;
}
//==============================================================================
void CC_UnitDriver::read_info_page(ByteVector &info_page)
{ }
@ -180,10 +243,6 @@ void CC_UnitDriver::read_info_page(ByteVector &info_page)
void CC_UnitDriver::mac_address_read(size_t index, ByteVector &mac_address)
{ }
//==============================================================================
void CC_UnitDriver::mac_address_write(ByteVector &mac_address)
{ }
//==============================================================================
void CC_UnitDriver::write_xdata_memory(uint16_t address, uint8_t data)
{ write_xdata_memory(address, &data, 1); }
@ -203,7 +262,7 @@ void CC_UnitDriver::write_xdata_memory(uint16_t address, const uint8_t data[], s
uint8_t footer[] = { 0xD4, 0x57, 0x90, 0xC2, 0x57, 0x75, 0x92, 0x90, 0x56, 0x74 };
uint8_t load_dtpr[] = { 0xBE, 0x57, 0x90, address >> 8, address };
uint8_t load_dtpr[] = { 0xBE, 0x57, 0x90, HIBYTE(address), LOBYTE(address) };
uint8_t mov_a_data[] = { 0x8E, 0x56, 0x74, 0x00 };
uint8_t mov_dtpr_a[] = { 0x5E, 0x55, 0xF0 };
uint8_t inc_dtpr[] = { 0x5E, 0x55, 0xA3 };
@ -221,7 +280,7 @@ void CC_UnitDriver::write_xdata_memory(uint16_t address, const uint8_t data[], s
}
vector_append(command, footer, sizeof(footer));
usb_device_.bulk_write(ENDPOINT_OUT, command.size(), &command[0]);
usb_device_.bulk_write(endpoint_out_, command.size(), &command[0]);
}
//==============================================================================
@ -252,6 +311,7 @@ bool CC_UnitDriver::flash_verify_by_read(const DataSectionStore &section_store)
flash_read_block(item.address, item.size(), data);
if (memcmp(&data[0], &item.data[0], item.size()))
{
//binary_file_save("vr.bin", data);
result = false;
break;
}
@ -261,7 +321,7 @@ bool CC_UnitDriver::flash_verify_by_read(const DataSectionStore &section_store)
pw_.read_finish();
return true;
return result;
}
//==============================================================================
@ -368,16 +428,13 @@ static void create_read_proc(size_t count, ByteVector &proc)
}
//==============================================================================
void CC_UnitDriver::flash_read_32k(size_t address, size_t size, ByteVector &data)
void CC_UnitDriver::flash_read_near(uint16_t address, size_t size, ByteVector &data)
{
if (((address % 0x8000) + size) > 0x8000)
throw std::runtime_error("flash_read_32k, incorrect parameters");
const uint8_t load_dtpr[] = { 0xBE, 0x57, 0x90, address >> 8, address };
usb_device_.bulk_write(ENDPOINT_OUT, sizeof(load_dtpr), load_dtpr);
const uint8_t load_dtpr[] = { 0xBE, 0x57, 0x90, HIBYTE(address), LOBYTE(address) };
usb_device_.bulk_write(endpoint_out_, sizeof(load_dtpr), load_dtpr);
size_t offset = data.size();
data.resize(offset + size, 0xFF);
data.resize(offset + size, FLASH_EMPTY_BYTE);
ByteVector command;
for (size_t i = 0; i < size / FLASH_READ_CHUNK_SIZE; i++)
@ -385,8 +442,8 @@ void CC_UnitDriver::flash_read_32k(size_t address, size_t size, ByteVector &data
if (command.empty())
create_read_proc(FLASH_READ_CHUNK_SIZE, command);
usb_device_.bulk_write(ENDPOINT_OUT, command.size(), &command[0]);
usb_device_.bulk_read(ENDPOINT_IN, FLASH_READ_CHUNK_SIZE, &data[offset]);
usb_device_.bulk_write(endpoint_out_, command.size(), &command[0]);
usb_device_.bulk_read(endpoint_in_, FLASH_READ_CHUNK_SIZE, &data[offset]);
offset += FLASH_READ_CHUNK_SIZE;
pw_.read_progress(FLASH_READ_CHUNK_SIZE);
@ -396,16 +453,15 @@ void CC_UnitDriver::flash_read_32k(size_t address, size_t size, ByteVector &data
{
create_read_proc(size % FLASH_READ_CHUNK_SIZE, command);
usb_device_.bulk_write(ENDPOINT_OUT, command.size(), &command[0]);
usb_device_.bulk_read(ENDPOINT_IN, size - offset, &data[offset]);
usb_device_.bulk_write(endpoint_out_, command.size(), &command[0]);
usb_device_.bulk_read(endpoint_in_, size - offset, &data[offset]);
pw_.read_progress(size - offset);
}
}
//==============================================================================
void CC_UnitDriver::flash_large_read_block(size_t offset, size_t size,
ByteVector &flash_data)
void CC_UnitDriver::flash_read(size_t offset, size_t size, ByteVector &flash_data)
{
uint8_t flash_bank = 0xFF;
@ -426,7 +482,7 @@ void CC_UnitDriver::flash_large_read_block(size_t offset, size_t size,
bank_offset = offset % FLASH_BANK_SIZE;
}
flash_read_32k(bank_offset + reg_info_.xbank_offset, count, flash_data);
flash_read_near(bank_offset + reg_info_.xbank_offset, count, flash_data);
size -= count;
offset += count;
@ -441,7 +497,7 @@ void CC_UnitDriver::flash_read_start()
uint8_t byte = 0;
usb_device_.control_read(LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_ENDPOINT_IN,
USB_PREPARE, 0, 0, &byte, 1);
reset(true);
//reset(true); // if write and lock verifing will fail after reset
uint8_t header[] = {
0x40, 0x55, 0x00, 0x72, 0x56, 0xE5, 0xD0, 0x74, 0x56, 0xE5, 0x92, 0xBE,
@ -449,7 +505,7 @@ void CC_UnitDriver::flash_read_start()
0x7A, 0x56, 0xE5, 0x9F
};
usb_device_.bulk_write(ENDPOINT_OUT, sizeof(header), header);
usb_device_.bulk_write(endpoint_out_, sizeof(header), header);
}
//==============================================================================
@ -459,7 +515,7 @@ void CC_UnitDriver::flash_read_end()
0xCA, 0x57, 0x75, 0x9F, 0xD6, 0x57, 0x90, 0xC4, 0x57,
0x75, 0x92, 0xC2, 0x57, 0x75, 0xD0, 0x90, 0x56, 0x74
};
usb_device_.bulk_write(ENDPOINT_OUT, sizeof(command), command);
usb_device_.bulk_write(endpoint_out_, sizeof(command), command);
}
//==============================================================================
@ -478,10 +534,76 @@ void CC_UnitDriver::write_lock_to_info_page(uint8_t lock_byte)
select_info_page_flash(false);
}
//==============================================================================
uint_t CC_UnitDriver::lock_data_size() const
{
return reg_info_.lock_size;
}
//==============================================================================
UnitCoreInfo CC_UnitDriver::get_reg_info()
{ return reg_info_; }
//==============================================================================
void CC_UnitDriver::set_reg_info(const UnitCoreInfo &reg_info)
{ reg_info_ = reg_info; }
//==============================================================================
bool CC_UnitDriver::empty_block(const uint8_t* data, size_t size)
{
if (size <= MAX_EMPTY_BLOCK_SIZE)
return memcmp(data, empty_block_, size) == 0;
ByteVector empty_block;
empty_block.resize(size, FLASH_EMPTY_BYTE);
return memcmp(data, &empty_block[0], size) == 0;
}
//==============================================================================
void CC_UnitDriver::convert_lock_data_std_set(
const StringVector& qualifiers,
const ByteVector& lock_sizes,
ByteVector& lock_data)
{
ByteVector data(1, 0x1F);
foreach (const String &item, qualifiers)
{
if (item == "debug")
data[0] &= ~1;
else
if (item == "boot")
data[0] &= ~0x10;
else
if (item == "flash" || item == "pages")
data[0] &= ~0x0E;
else
if (item.find("flash:") == 0)
{
uint_t size = 0;
String arg = item.substr(ARRAY_SIZE("flash:") - 1);
if (!string_to_number(arg, size))
throw std::runtime_error("incorrect flash size value");
ByteVector::const_iterator it = std::find(
lock_sizes.begin(),
lock_sizes.end(),
size);
if (it == lock_sizes.end())
throw std::runtime_error("target unsupport flash size " + arg);
uint8_t index = (uint8_t)(it - lock_sizes.begin());
data[0] &= ~(7 << 1); // clear out prev lock size data
data[0] |= (~index & 0x07) << 1;
}
else
throw std::runtime_error("unknown lock qualifyer: " + item);
}
lock_data = data;
}
//==============================================================================
void CC_UnitDriver::write_flash_slow(const DataSectionStore &section_store)
{
@ -506,40 +628,36 @@ void CC_UnitDriver::write_flash_slow(const DataSectionStore &section_store)
write_xdata_memory(reg_info_.dma0_cfgl, LOBYTE(reg_info_.dma0_cfg_offset));
write_xdata_memory(reg_info_.dma0_cfgh, HIBYTE(reg_info_.dma0_cfg_offset));
size_t faddr = 0xFFFF;
size_t faddr = (size_t)-1;
ByteVector data;
section_store.create_image(0xFF, data);
data.resize((section_store.upper_address() + (WRITE_BLOCK_SIZE - 1)) &
~(WRITE_BLOCK_SIZE - 1), 0xFF);
section_store.create_image(FLASH_EMPTY_BYTE, data);
data.resize(align_up(section_store.upper_address(), WRITE_BLOCK_SIZE),
FLASH_EMPTY_BYTE);
pw_.write_start(data.size());
ByteVector empty_block;
empty_block.resize(WRITE_BLOCK_SIZE, 0xFF);
for (size_t i = 0; i < (data.size() / WRITE_BLOCK_SIZE); i++)
{
pw_.write_progress(WRITE_BLOCK_SIZE);
size_t offset = WRITE_BLOCK_SIZE * i;
if (!memcmp(&data[offset], &empty_block[0], WRITE_BLOCK_SIZE))
if (empty_block(&data[offset], WRITE_BLOCK_SIZE))
continue;
size_t new_faddr = WRITE_BLOCK_SIZE * i / reg_info_.flash_word_size;
if (new_faddr != faddr)
size_t next_faddr = offset / reg_info_.flash_word_size;
if (next_faddr != faddr)
{
faddr = WRITE_BLOCK_SIZE * i / reg_info_.flash_word_size;
write_xdata_memory(reg_info_.faddrl, LOBYTE(faddr));
write_xdata_memory(reg_info_.faddrh, HIBYTE(faddr));
faddr += WRITE_BLOCK_SIZE / reg_info_.flash_word_size;
write_xdata_memory(reg_info_.faddrl, LOBYTE(next_faddr));
write_xdata_memory(reg_info_.faddrh, HIBYTE(next_faddr));
faddr = next_faddr + WRITE_BLOCK_SIZE / reg_info_.flash_word_size;
}
write_xdata_memory(reg_info_.dma_data_offset, &data[offset], WRITE_BLOCK_SIZE);
write_xdata_memory(reg_info_.dma_arm, 0x01);
write_xdata_memory(reg_info_.fctl, reg_info_.fctl_write);
while ((read_xdata_memory(reg_info_.fctl) & 0x80));
while ((read_xdata_memory(reg_info_.fctl) & FCTL_BUSY));
}
pw_.write_finish();
}

View File

@ -16,10 +16,17 @@
#include "usb/usb_device.h"
#include "cc_unit_info.h"
const size_t XDATA_READ_CHUNK_SIZE = 128;
const size_t FLASH_READ_CHUNK_SIZE = 128;
const size_t FLASH_BANK_SIZE = 1024 * 32;
const size_t FLASH_MAPPED_BANK_OFFSET = 1024 * 32;
const size_t FLASH_EMPTY_BYTE = 0xFF;
const size_t XDATA_READ_CHUNK_SIZE = 128;
const size_t FLASH_READ_CHUNK_SIZE = 128;
const size_t FLASH_BANK_SIZE = 1024 * 32;
const size_t FLASH_MAPPED_BANK_OFFSET = 1024 * 32;
const uint8_t FCTL_BUSY = 0x80;
const uint8_t FCTL_ABORT = 0x20;
const uint8_t FCTL_ERASE = 0x01;
struct USB_DeviceID;
class CC_UnitDriver : boost::noncopyable
{
@ -29,17 +36,60 @@ public:
virtual void read_info_page(ByteVector &info_page);
/// @param index 0 - primary address, 1 - secondary address
/// Read mac address
/// @param index 0 - primary address, 1 - secondary address (if any)
virtual void mac_address_read(size_t index, ByteVector &mac_address);
virtual void mac_address_write(ByteVector &mac_address);
virtual void erase_start();
/// Write and verify lock data and/or mac address. If field is empty
/// it wont be written.
/// @return false if varification after write failed
virtual bool config_write(const ByteVector &mac_address,
const ByteVector &lock_data) = 0;
/// Integrate mac address into flash image
/// @return true if target store mac address in flash
virtual bool flash_image_embed_mac_address(DataSectionStore &sections,
const ByteVector &mac_address);
/// Integrate lock data into flash image
/// @return true if target store lock data in flash
virtual bool flash_image_embed_lock_data(DataSectionStore &sections,
const ByteVector &lock_data);
/// Convert list of string qulifiers like 'debug', 'pages:xx' into lock data
virtual void convert_lock_data(const StringVector& qualifiers,
ByteVector& lock_data) = 0;
/// Erase flash completely. Operation is asynchronious,
virtual void erase();
virtual bool erase_check_comleted() = 0;
/// Erase single page. Page size depends on target
/// @param page_offset must be aligned to a page boundary.
/// @return false if erase was aborted (e.g. 'cause page is locked)
virtual bool erase_page(uint_t page_offset);
/// Write data into flash. Empty data block are skipped.
/// Modified parts of flash should be bllank.
virtual void flash_write(const DataSectionStore &sections) = 0;
/// Compare specified data to data from flash. Empty blocks are skipped.
/// @return false if verification failed
virtual bool flash_verify_by_crc(const DataSectionStore &sections);
/// Compare specified data to data from flash. Empty blocks are skipped.
/// @return false if verification failed
virtual bool flash_verify_by_read(const DataSectionStore &sections);
/// prepare reading procedure
void flash_read_start();
/// finish reading procedure
void flash_read_end();
/// read flash block (offset and size are not limited by any boundares\banks)
/// @param offset absolute flash offset
virtual void flash_read_block(size_t offset, size_t size, ByteVector &data) = 0;
virtual bool lock_write(const ByteVector &data) = 0;
void read_debug_status(uint8_t &status);
void read_debug_config(uint8_t &config);
@ -55,28 +105,51 @@ public:
void read_xdata_memory(uint16_t address, size_t count, ByteVector &out);
uint8_t read_xdata_memory(uint16_t address);
/// @param debug_mode if true after reset target will be halted
void reset(bool debug_mode);
void flash_read_start();
void flash_read_end();
uint_t lock_data_size() const;
bool set_flash_size(uint_t flash_size);
void set_programmer_ID(const USB_DeviceID& programmer_ID);
CC_UnitDriver(USB_Device &programmer, ProgressWatcher &pw);
protected:
// some procedures is valid only for subset of targets
void select_info_page_flash(bool select_info_page);
// Out data will be put in the end of data
void flash_read_32k(size_t address, size_t size, ByteVector &data);
void flash_large_read_block(size_t offset, size_t size, ByteVector &data);
/// Read data from the 16-bit address space. Bank number is not changed.
/// Result data will be appended to the end of data
void flash_read_near(uint16_t address, size_t size, ByteVector &data);
/// Read any block size
void flash_read(size_t offset, size_t size, ByteVector &data);//todo: rename!!!
void set_reg_info(const UnitCoreInfo &);
UnitCoreInfo get_reg_info();
void write_flash_slow(const DataSectionStore &sections);
//void write_flash_word(const DataSectionStore &sections);
void write_lock_to_info_page(uint8_t lock_byte);
//void
/// @return true if specified memory block contains only 1s ()
bool empty_block(const uint8_t* data, size_t size);
/// Convert list of string qulifiers 'debug', 'flash:xx', 'boot'
void convert_lock_data_std_set(
const StringVector& qualifiers,
const ByteVector& lock_sizes,
ByteVector& lock_data);
USB_Device &usb_device_;
ProgressWatcher &pw_;
UnitInfo unit_info_;
uint8_t endpoint_in_;
uint8_t endpoint_out_;
private:
uint16_t calc_block_crc();

View File

@ -17,7 +17,10 @@ UnitInfo::UnitInfo() :
revision(0),
flags(0),
flash_size(0),
max_flash_size(0),
ram_size(0),
mac_address_count(0),
mac_address_size(0),
flash_page_size(0)
{ }
@ -28,3 +31,14 @@ UnitCoreInfo::UnitCoreInfo()
//==============================================================================
size_t UnitInfo::actual_flash_size() const
{ return 1024 * (flash_size ? flash_size : max_flash_size); }
#define CHECK_PARAM(x) check_param(x, __FILE__, __LINE__)
//==============================================================================
void check_param(bool assert, const String& module, uint_t line)
{
if (assert)
return;
throw std::runtime_error("internal error at " + module + ":" + number_to_string(line));
}

View File

@ -26,8 +26,8 @@ struct Unit_ID
struct UnitInfo
{
enum Flags {
SUPPORT_USB = 0x01,
SUPPORT_MAC_ADDRESS = 0x02,
SUPPORT_USB = 0x01, // remove
SUPPORT_MAC_ADDRESS = 0x02, // remove, use mac_address_count to checck
SUPPORT_INFO_PAGE = 0x04
};
@ -36,12 +36,15 @@ struct UnitInfo
uint8_t internal_ID; // read from chip
uint8_t revision; // read from chip
uint_t flags;
uint_t flash_size; // in KB
uint_t max_flash_size; // in KB
UintVector flash_sizes; // list of possible flash sizes, in KB
uint_t ram_size; // in KB
uint_t mac_address_count;
uint_t flash_page_size; // in KB // todo: remove
uint_t lock_size; //
uint_t mac_address_size;
uint_t flash_page_size; // in KB
size_t actual_flash_size() const;
@ -50,6 +53,7 @@ struct UnitInfo
struct UnitCoreInfo
{
size_t lock_size; //
size_t flash_word_size;
size_t verify_block_size;
size_t write_block_size;
@ -57,7 +61,7 @@ struct UnitCoreInfo
uint16_t dma0_cfg_offset;
uint16_t dma_data_offset;
// Xdata registers addresses;
// Xdata register addresses;
uint16_t memctr;
uint16_t fmap;
uint16_t rndl;
@ -73,10 +77,14 @@ struct UnitCoreInfo
uint16_t dma_irq;
uint8_t fctl_write;
uint8_t fctl_erase;
UnitCoreInfo();
};
typedef std::list<Unit_ID> Unit_ID_List;
void check_param(bool assert, const String& module, uint_t line);
#define CHECK_PARAM(x) check_param(x, __FILE__, __LINE__)
#endif // !_CC_UNIT_INFO_H_

View File

@ -258,6 +258,12 @@ void USB_Device::set_debug_mode(DebugLevel level)
libusb_set_debug(context_.get(), level);
}
//==============================================================================
void USB_Device::reset_device()
{
libusb_reset_device(handle_);
}
//==============================================================================
void USB_Device::claim_interface(uint_t interface_number)
{
@ -332,7 +338,7 @@ void USB_Device::control_write(uint8_t bmRequestType, uint8_t bRequest, uint16_t
bmRequestType |= LIBUSB_ENDPOINT_OUT;
log_info("usb, control write, request_type: %02Xh, request: %02Xh, value: %04Xh, index: %04Xh, count: %u",
bmRequestType, bRequest, wIndex, wValue, count);
bmRequestType, bRequest, wValue, wIndex, count);
if (count)
log_info("usb, control write, data: %s", binary_to_hex(data, count, " ").c_str());

View File

@ -25,6 +25,8 @@ public:
void set_transfer_timeout(uint_t timeout);
void reset_device();
void set_configuration(uint_t configuration); // throw
void claim_interface(uint_t interface_number); // throw
void release_interface(uint_t interface_number); // throw

View File

@ -14,9 +14,9 @@
#include "common.h"
const uint_t VERSION_MAJOR = 0;
const uint_t VERSION_MINOR = 18;
const uint_t VERSION_MINOR = 26;
const char MODULE_NAME[] = "cc-tool";
const char MODULE_DESCRIPTION[] = "Texas Instruments 8051-based System-On-Chip devices programmer using TI CC Debugger";
const char MODULE_DESCRIPTION[] = "Texas Instruments 8051-based System-On-Chip device programmer";
#endif // !_VERSION_H_

View File

@ -3,6 +3,7 @@ ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0451", ATTRS{idProduct}=="16a
# SmartRF04 Evaluation Board
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="11a0", ATTRS{idProduct}=="db20", MODE="0666"
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="11a0", ATTRS{idProduct}=="eb20", MODE="0666"
# CC Debugger
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0451", ATTRS{idProduct}=="16a2", MODE="0666"