| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 | #!/bin/bash# $Id$# Copyright 2006 Michael Mohr with modifications by Roger Dingledine# See LICENSE for licensing information.########################################################################  Tor-cross: a tool to help cross-compile Tor##  The purpose of a cross-compiler is to produce an executable for#  one system (CPU) on another.  This is useful, for example, when#  the target system does not have a native compiler available.#  You might, for example, wish to cross-compile a program on your#  host (the computer you're working on now) for a target such as#  a router or handheld computer.##  A number of environment variables must be set in order for this#  script to work:#        $PREFIX, $CROSSPATH, $ARCH_PREFIX, $HOST,#        and (optionally) $BUILD#  Please run the script for a description of each one.  If automated#  builds are desired, the above variables can be exported at the top#  of this script.##  Recent releases of Tor include test programs in configure. Normally#  this is a good thing, since it catches a number of problems.#  However, this also presents a problem when cross compiling, since#  you can't run binary images for the target system on the host.##  Tor-cross assumes that you know what you're doing and removes a#  number of checks known to cause problems with this process.#  Note that this does not guarantee that the program will run or#  even compile; it simply allows configure to generate the Makefiles.##  Stripping the binaries should almost always be done for an#  embedded environment where space is at an exacting premium.#  However, the default is NOT to strip them since they are useful for#  debugging.  If you do not plan to do any debugging and you#  don't care about the debugging symbols, set $STRIP to "yes" before#  running this script.##  Tor-cross was written by Michael Mohr.  He can be contacted at#  m(dot)mohr(at)laposte(dot)net.  Comments are appreciated, but#  flames go to /dev/null.##  The target with which this script is tested is little-endian#  MIPS Linux, built on an Athlon-based Linux desktop.######################################################################### disable the platform-specific tests in configureexport CROSS_COMPILE=yesif [ ! -f configure ]then  echo "Please run this script from the root of the Tor distribution."  exit -1fiif [ -z $PREFIX ]then  echo "You must define \$PREFIX since you are cross-compiling."  echo "Select a non-system location (i.e. /tmp/tor-cross):"  echo "	export PREFIX=/tmp/tor-cross"  exit -1fiif [ -z $CROSSPATH ]then  echo "You must define the location of your cross-compiler's"  echo "directory using \$CROSSPATH; for example,"  echo "	export CROSSPATH=/opt/cross/staging_dir_mipsel/bin"  exit -1fiif [ -z $ARCH_PREFIX ]then  echo "You must define \$ARCH_PREFIX to continue.  For example,"  echo "if you normally cross-compile applications using"  echo "mipsel-linux-uclibc-gcc, you would set \$ARCH_PREFIX like so:"  echo "	export ARCH_PREFIX=mipsel-linux-uclibc-"  exit -1fiif [ -z $HOST ]then  echo "You must specify a target processor with \$HOST; for example:"  echo "	export HOST=mipsel-unknown-elf"  exit -1fiif [ -z $BUILD ]then  echo "You should specify the host machine's type with \$BUILD; for example:"  echo "	export BUILD=i686-pc-linux-gnu"  echo "If you wish to let configure autodetect the host, set \$BUILD to 'auto':"  echo "	export BUILD=auto"  exit -1fi# clean up any existing object filesif [ -f src/or/tor ]then  make cleanfi# Set up the build environment and try to run configureexport PATH=$PATH:$CROSSPATHexport RANLIB=${ARCH_PREFIX}ranlibexport CC=${ARCH_PREFIX}gccif [ $BUILD == "auto" ]then  ./configure \	--prefix=$PREFIX \	--host=$HOSTelse  ./configure \	--prefix=$PREFIX \	--host=$HOST \	--build=$BUILDfi# has a problem occurred?if [ $? -ne 0 ]then  echo ""  echo "A problem has been detected with configure."  echo "Please check the output above and rerun cross.sh"  echo ""  exit -1fi# Now we're cookin'make# if $STRIP has length (i.e. STRIP=yes), strip the binariesif [ ! -z $STRIP ]then${ARCH_PREFIX}strip \	src/or/tor \	src/or/test \	src/tools/tor-resolvefiecho ""echo "Tor should be compiled at this point.  Now run 'make install' to"echo "install to $PREFIX"echo ""
 |