From f1b04a20dcf6baedbd0f06a38d8748586d48dbb7 Mon Sep 17 00:00:00 2001 From: Paul Fertser Date: Sun, 11 May 2014 22:15:55 +0400 Subject: [PATCH] Provide od+sed replacement for the bin2char helper MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Using custom build-time tools is always more problematic, especially for cross-compiling. This alternative implementation assumes "od" (IEEE Std 1003.1-2001) and sed are available which should be the case for any reasonably modern system. Change-Id: I0208f475648c78e7dca127ff4bab60d314b2bf53 Signed-off-by: Paul Fertser Reviewed-on: http://openocd.zylin.com/2139 Tested-by: jenkins Reviewed-by: Fatih Aşıcı Reviewed-by: Andreas Fritiofson --- configure.ac | 41 ----------------------------- src/Makefile.am | 2 +- src/helper/Makefile.am | 11 +------- src/helper/bin2char.c | 58 ------------------------------------------ src/helper/bin2char.sh | 14 ++++++++++ src/target/Makefile.am | 2 +- 6 files changed, 17 insertions(+), 111 deletions(-) delete mode 100644 src/helper/bin2char.c create mode 100755 src/helper/bin2char.sh diff --git a/configure.ac b/configure.ac index 13d25591f..6b61b1b25 100644 --- a/configure.ac +++ b/configure.ac @@ -1248,47 +1248,6 @@ if test $gcc_warnings = yes; then CFLAGS="$CFLAGS $GCC_WARNINGS" fi -# Setup for compiling build tools -AC_MSG_CHECKING([for a C compiler for build tools]) -if test $cross_compiling = yes; then - AC_CHECK_PROGS(CC_FOR_BUILD, gcc cc) - CFLAGS_FOR_BUILD="-g -O2 $GCC_WARNINGS" -else - CC_FOR_BUILD=$CC - CFLAGS_FOR_BUILD=$CFLAGS -fi - -AC_MSG_RESULT([$CC_FOR_BUILD]) -AC_SUBST([CC_FOR_BUILD]) -AC_SUBST([CFLAGS_FOR_BUILD]) - -AC_MSG_CHECKING([for suffix of executable build tools]) -if test $cross_compiling = yes; then - cat >conftest.c <<\_______EOF -int main () -{ - exit (0); -} -_______EOF - for i in .exe ""; do - compile="$CC_FOR_BUILD conftest.c -o conftest$i" - if AC_TRY_EVAL(compile); then - if (./conftest) 2>&AC_FD_CC; then - EXEEXT_FOR_BUILD=$i - break - fi - fi - done - rm -f conftest* - if test "${EXEEXT_FOR_BUILD+set}" != set; then - AC_MSG_ERROR([Cannot determine suffix of executable build tools]) - fi -else - EXEEXT_FOR_BUILD=$EXEEXT -fi -AC_MSG_RESULT([$EXEEXT_FOR_BUILD]) -AC_SUBST([EXEEXT_FOR_BUILD]) - AC_CONFIG_FILES([ Makefile src/Makefile diff --git a/src/Makefile.am b/src/Makefile.am index d630bd623..b539ec433 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -91,7 +91,7 @@ BUILT_SOURCES = startup.tcl startup.tcl: $(STARTUP_TCL_SRCS) cat $^ > $@ -BIN2C = $(top_builddir)/src/helper/bin2char$(EXEEXT_FOR_BUILD) +BIN2C = $(top_srcdir)/src/helper/bin2char.sh # Convert .tcl to cfile startup_tcl.c: startup.tcl $(BIN2C) diff --git a/src/helper/Makefile.am b/src/helper/Makefile.am index 215bbaed5..9477267f6 100644 --- a/src/helper/Makefile.am +++ b/src/helper/Makefile.am @@ -44,18 +44,9 @@ noinst_HEADERS = \ replacements.h \ fileio.h \ system.h \ - bin2char.c \ + bin2char.sh \ jim-nvp.h EXTRA_DIST = startup.tcl -BIN2C = bin2char$(EXEEXT_FOR_BUILD) - -BUILT_SOURCES = $(BIN2C) - -$(BIN2C): bin2char.c - ${CC_FOR_BUILD} ${CFLAGS_FOR_BUILD} $(srcdir)/bin2char.c -o $@ - -CLEANFILES = bin2char$(EXEEXT_FOR_BUILD) - MAINTAINERCLEANFILES = $(srcdir)/Makefile.in diff --git a/src/helper/bin2char.c b/src/helper/bin2char.c deleted file mode 100644 index d5fe7f308..000000000 --- a/src/helper/bin2char.c +++ /dev/null @@ -1,58 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2005 by Dominic Rath * - * Dominic.Rath@gmx.de * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * 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. * - ***************************************************************************/ - -#include -#include - -#ifdef _WIN32 - #include -#endif - -int main(int argc, char **argv) -{ - int c; - unsigned int n; - const char *name; - - if (argc == 1) { - fprintf(stderr, "bin2char \n"); - fprintf(stderr, "read from standard input and write a char" - " array out to standard output\n"); - exit(1); - } - -#ifdef _WIN32 - /* for win32 set stdin/stdout to binary mode */ - _setmode(_fileno(stdin), _O_BINARY); - _setmode(_fileno(stdout), _O_BINARY); -#endif - - n = 0; - name = argv[1]; - fprintf(stdout, "/* autogenerated from %s */\n", argv[0]); - fprintf(stdout, "unsigned const char %s[] = {\n", name); - while ((c = getc(stdin)) != EOF) { - fprintf(stdout, "0x%02x,", c & 0xff); - if ((++n % 16) == 0) - fprintf(stdout, "\n"); - } - fprintf(stdout, "0 /* terminate with a null */};\n"); - return 0; -} diff --git a/src/helper/bin2char.sh b/src/helper/bin2char.sh new file mode 100755 index 000000000..f9da30944 --- /dev/null +++ b/src/helper/bin2char.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +[ $# = 0 ] && { + echo "Usage: $0 " + echo + echo "Read binary data from standard input and write it as a C character" + echo "array to standard output. Add a final NULL for terminating." + exit 1 +} + +echo "/* Autogenerated with $0 */" +echo "unsigned const char $1[] = {" +od -v -A n -t x1 | sed 's/ *\(..\) */0x\1,/g' +echo "0 /* NULL-terminated */ };" diff --git a/src/target/Makefile.am b/src/target/Makefile.am index 08d0db48e..efbeb33af 100644 --- a/src/target/Makefile.am +++ b/src/target/Makefile.am @@ -9,7 +9,7 @@ endif SUBDIRS = openrisc libtarget_la_LIBADD = $(top_builddir)/src/target/openrisc/libopenrisc.la -BIN2C = $(top_builddir)/src/helper/bin2char$(EXEEXT_FOR_BUILD) +BIN2C = $(top_srcdir)/src/helper/bin2char.sh DEBUG_HANDLER = $(srcdir)/xscale/debug_handler.bin EXTRA_DIST = \