Index: configure.in
===================================================================
--- configure.in	(revision 853)
+++ configure.in	(working copy)
@@ -291,6 +291,43 @@
 AC_PROG_CC
 AC_PROG_RANLIB
 
+# 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)
+else
+  CC_FOR_BUILD=$CC
+fi
+AC_MSG_RESULT([$CC_FOR_BUILD])
+AC_SUBST(CC_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_SUBST(WITH_FTD2XX, $with_ftd2xx)
 
 AC_OUTPUT(Makefile src/Makefile src/helper/Makefile src/jtag/Makefile src/xsvf/Makefile src/target/Makefile src/server/Makefile src/flash/Makefile src/pld/Makefile doc/Makefile)
Index: src/helper/Makefile.am
===================================================================
--- src/helper/Makefile.am	(revision 853)
+++ src/helper/Makefile.am	(working copy)
@@ -15,14 +15,12 @@
 noinst_HEADERS = binarybuffer.h configuration.h types.h log.h command.h \
 	time_support.h replacements.h fileio.h jim.h
 
+bin2char$(EXEEXT_FOR_BUILD): bin2char.c
+	${CC_FOR_BUILD} ${CFLAGS} $(srcdir)/$< -o $@
 
 # Convert .tcl to cfile
-#
-# Fix!!! how do we make this more automake friendly?
-# 
-startup_tcl.c: startup.tcl
-	gcc -o bin2char $(srcdir)/bin2char.c 
-	./bin2char startup_tcl < $(srcdir)/startup.tcl > $@
+startup_tcl.c: startup.tcl bin2char$(EXEEXT_FOR_BUILD)
+	./bin2char$(EXEEXT_FOR_BUILD) startup_tcl < $(srcdir)/$< > $@
 
 # add startup_tcl.c to make clean list
-CLEANFILES = startup_tcl.c
+CLEANFILES = startup_tcl.c bin2char$(EXEEXT_FOR_BUILD)

