aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorntfreak <ntfreak@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2008-07-12 16:25:17 +0000
committerntfreak <ntfreak@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2008-07-12 16:25:17 +0000
commit2e832a399a10fc00253b342f8cde9c5b1062fa63 (patch)
treeb679dc6381c72dc78e9c483c3399ae270c6dfa77 /src
parentcebfbfa661b4e53cabf23bbb32c227e0b1962c77 (diff)
- remove requirement for file2c.tcl
git-svn-id: svn://svn.berlios.de/openocd/trunk@800 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am12
-rw-r--r--src/file2c.tcl125
-rw-r--r--src/openocd.c22
3 files changed, 20 insertions, 139 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index 20b64251..2f1a2211 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -6,7 +6,7 @@ else
MAINFILE = main.c jim.c
endif
-openocd_SOURCES = $(MAINFILE) openocd.c startup.c
+openocd_SOURCES = $(MAINFILE) openocd.c
# set the include path found by configure
INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/src/helper \
@@ -70,7 +70,7 @@ FTD2XXLIB =
endif
endif
-openocd_LDADD = $(top_builddir)/src/xsvf/libxsvf.a \
+openocd_LDADD = $(top_builddir)/src/startup.o $(top_builddir)/src/xsvf/libxsvf.a \
$(top_builddir)/src/target/libtarget.a $(top_builddir)/src/jtag/libjtag.a \
$(top_builddir)/src/helper/libhelper.a \
$(top_builddir)/src/server/libserver.a $(top_builddir)/src/helper/libhelper.a \
@@ -96,9 +96,7 @@ nobase_dist_pkglib_DATA = \
tcl/mmr_helpers.tcl \
tcl/readable.tcl
-# Convert .tcl to .c file
-startup.c: $(top_srcdir)/src/startup.tcl Makefile $(top_srcdir)/src/file2c.tcl
- ${TCLSH} $(top_srcdir)/src/file2c.tcl $(top_srcdir)/src/startup.tcl startup.c
+# Convert .tcl to object
-# add startup.c to make clean list
-CLEANFILES = startup.c
+$(top_builddir)/src/startup.o: $(top_srcdir)/src/startup.tcl
+ ${OBJCOPY} -I binary -O ${OBJCOPY_FORMAT} -B ${OBJCOPY_ARCH} startup.tcl startup.o
diff --git a/src/file2c.tcl b/src/file2c.tcl
deleted file mode 100644
index 288751a1..00000000
--- a/src/file2c.tcl
+++ /dev/null
@@ -1,125 +0,0 @@
-#!/bin/bash
-# restart using a Tcl shell \
- exec sh -c 'for tclshell in tclsh tclsh83 cygtclsh80 ; do \
- ( echo | $tclshell ) 2> /dev/null && exec $tclshell "`( cygpath -w \"$0\" ) 2> /dev/null || echo $0`" "$@" ; \
- done ; \
- echo "file2c.tcl: cannot find Tcl shell" ; exit 1' "$0" "$@"
-
-#===============================================================================
-#
-# file2c.tcl
-#
-# Convert a file into a header that can be #included from C.
-#
-#===============================================================================
-#####ECOSGPLCOPYRIGHTBEGIN####
-## -------------------------------------------
-## This file is part of eCos, the Embedded Configurable Operating System.
-## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
-##
-## eCos 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 or (at your option) any later version.
-##
-## eCos 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 eCos; if not, write to the Free Software Foundation, Inc.,
-## 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
-##
-## As a special exception, if other files instantiate templates or use macros
-## or inline functions from this file, or you compile this file and link it
-## with other works to produce a work based on this file, this file does not
-## by itself cause the resulting work to be covered by the GNU General Public
-## License. However the source code for this file must still be made available
-## in accordance with section (3) of the GNU General Public License.
-##
-## This exception does not invalidate any other reasons why a work based on
-## this file might be covered by the GNU General Public License.
-##
-## Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
-## at http://sources.redhat.com/ecos/ecos-license/
-## -------------------------------------------
-#####ECOSGPLCOPYRIGHTEND####
-#===============================================================================
-######DESCRIPTIONBEGIN####
-#
-# Author(s): jlarmour,bartv
-# Contact(s):
-# Date: 2001-07-20
-# Purpose:
-# Description:
-# Usage: file2c.tcl <file to encode> <output C header file>
-#
-#####DESCRIPTIONEND####
-#===============================================================================
-
-
-
-if { $argc != 2 } {
- puts "Usage: file2c.tcl <file to encode> <output C file>"
- exit 1
-}
-set infile [lindex $argv 0]
-set outfile [lindex $argv 1]
-set label [string range $outfile [expr 1+[string last / $outfile]] [expr [string last . $outfile]-1]]
-
-set status [ catch {
- set infilefd [open $infile "r"]
- fconfigure $infilefd -translation binary
- set data [read $infilefd]
- close $infilefd
-} message]
-
-if { $status != 0 } {
- error "Unable to read file $infile: $message"
-}
-
-set result ""
-
-set status [ catch {
- set outfilefd [ open $outfile "w" ]
-} message ]
-
-if { $status != 0 } {
- error "Unable to create file $outfile: $message"
-}
-
-append result "/* This is a generated file. Do not edit. */\n\n"
-append result "const unsigned char filedata_$label\[\] = {\n"
-
-set datalength [ string length $data ]
-
-set aligned_datalength [expr $datalength - ($datalength % 8)]
-
-for { set i 0 } {$i < $aligned_datalength} {incr i 8} {
- binary scan $data "@[set i]H16" var0
- append result [format " 0x%2s, 0x%2s, 0x%2s, 0x%2s, 0x%2s, 0x%2s, 0x%2s, 0x%2s,\n" \
- [string range $var0 0 1] \
- [string range $var0 2 3] \
- [string range $var0 4 5] \
- [string range $var0 6 7] \
- [string range $var0 8 9] \
- [string range $var0 10 11] \
- [string range $var0 12 13] \
- [string range $var0 14 15]]
-}
-
-if { $aligned_datalength != $datalength } {
- append result " "
- for { set i $aligned_datalength } {$i < $datalength} {incr i} {
- binary scan $data "@[set i]H2" var0
- append result [format "0x%2s, " $var0]
- }
-}
-
-# Remove either comma+newline or comma+space from the end
-set result [string range $result 0 [expr [string length $result] - 3]]
-
-append result "\n};"
-
-puts $outfilefd $result
-close $outfilefd
diff --git a/src/openocd.c b/src/openocd.c
index 8cac5530..dcaca784 100644
--- a/src/openocd.c
+++ b/src/openocd.c
@@ -711,10 +711,14 @@ void add_jim(const char *name, int (*cmd)(Jim_Interp *interp, int argc, Jim_Obj
Jim_ListAppendElement(interp, helptext, cmd_entry);
}
-extern const unsigned char filedata_startup[];
+extern char binary_startup_tcl_start;
+extern char binary_startup_tcl_size;
void initJim(void)
{
+ char *script;
+ int script_len;
+
Jim_CreateCommand(interp, "openocd", Jim_Command_openocd, NULL, NULL);
Jim_CreateCommand(interp, "openocd_throw", Jim_Command_openocd_throw, NULL, NULL);
Jim_CreateCommand(interp, "find", Jim_Command_find, NULL, NULL);
@@ -734,23 +738,27 @@ void initJim(void)
add_default_dirs();
- if (Jim_Eval(interp, filedata_startup)==JIM_ERR)
+ script_len = (int)&binary_startup_tcl_size;
+ script = malloc(script_len + sizeof(char));
+ memcpy(script, &binary_startup_tcl_start, script_len);
+
+ /* null terminate */
+ script[script_len] = 0;
+
+ if (Jim_Eval(interp, script)==JIM_ERR)
{
LOG_ERROR("Failed to run startup.tcl (embedded into OpenOCD compile time)");
Jim_PrintErrorMessage(interp);
exit(-1);
}
+
+ free(script);
}
-
-
int handle_script_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
{
- FILE *script_file;
-
if (argc != 1)
return ERROR_COMMAND_SYNTAX_ERROR;
-
/* Run a tcl script file */
return command_run_linef(cmd_ctx, "source [find {%s}]", args[0]);