3 # Copyright 2006 Michael Mohr with modifications by Roger Dingledine
4 # See LICENSE for licensing information.
6 #######################################################################
7 # Tor-cross: a tool to help cross-compile Tor
9 # The purpose of a cross-compiler is to produce an executable for
10 # one system (CPU) on another. This is useful, for example, when
11 # the target system does not have a native compiler available.
12 # You might, for example, wish to cross-compile a program on your
13 # host (the computer you're working on now) for a target such as
14 # a router or handheld computer.
16 # A number of environment variables must be set in order for this
18 # $PREFIX, $CROSSPATH, $ARCH_PREFIX, $HOST,
19 # and (optionally) $BUILD
20 # Please run the script for a description of each one. If automated
21 # builds are desired, the above variables can be exported at the top
24 # Recent releases of Tor include test programs in configure. Normally
25 # this is a good thing, since it catches a number of problems.
26 # However, this also presents a problem when cross compiling, since
27 # you can't run binary images for the target system on the host.
29 # Tor-cross assumes that you know what you're doing and removes a
30 # number of checks known to cause problems with this process.
31 # Note that this does not guarantee that the program will run or
32 # even compile; it simply allows configure to generate the Makefiles.
34 # Stripping the binaries should almost always be done for an
35 # embedded environment where space is at an exacting premium.
36 # However, the default is NOT to strip them since they are useful for
37 # debugging. If you do not plan to do any debugging and you
38 # don't care about the debugging symbols, set $STRIP to "yes" before
39 # running this script.
41 # Tor-cross was written by Michael Mohr. He can be contacted at
42 # m(dot)mohr(at)laposte(dot)net. Comments are appreciated, but
43 # flames go to /dev/null.
45 # The target with which this script is tested is little-endian
46 # MIPS Linux, built on an Athlon-based Linux desktop.
48 #######################################################################
50 # disable the platform-specific tests in configure
51 export CROSS_COMPILE
=yes
53 # for error conditions
58 echo "Please run this script from the root of the Tor distribution"
59 echo "and ensure that autogen.sh has been run."
65 echo "You must define \$PREFIX since you are cross-compiling."
66 echo "Select a non-system location (i.e. /tmp/tor-cross):"
67 echo " export PREFIX=/tmp/tor-cross"
73 echo "You must define the location of your cross-compiler's"
74 echo "directory using \$CROSSPATH; for example,"
75 echo " export CROSSPATH=/opt/cross/staging_dir_mipsel/bin"
79 if [ -z $ARCH_PREFIX ]
81 echo "You must define \$ARCH_PREFIX to continue. For example,"
82 echo "if you normally cross-compile applications using"
83 echo "mipsel-linux-uclibc-gcc, you would set \$ARCH_PREFIX like so:"
84 echo " export ARCH_PREFIX=mipsel-linux-uclibc-"
90 echo "You must specify a target processor with \$HOST; for example:"
91 echo " export HOST=mipsel-unknown-elf"
97 echo "You should specify the host machine's type with \$BUILD; for example:"
98 echo " export BUILD=i686-pc-linux-gnu"
99 echo "If you wish to let configure autodetect the host, set \$BUILD to 'auto':"
100 echo " export BUILD=auto"
104 if [ $EXITVAL -ne 0 ]
106 echo "Remember, you can hard-code these values in cross.sh if needed."
110 # clean up any existing object files
116 # Set up the build environment and try to run configure
117 export PATH
=$PATH:$CROSSPATH
118 export RANLIB
=${ARCH_PREFIX}ranlib
119 export CC
=${ARCH_PREFIX}gcc
121 if [ $BUILD == "auto" ]
137 # has a problem occurred?
141 echo "A problem has been detected with configure."
142 echo "Please check the output above and rerun cross.sh"
151 # has a problem occurred?
155 echo "A problem has been detected with make."
156 echo "Please check the output above and rerun make."
161 # if $STRIP has length (i.e. STRIP=yes), strip the binaries
164 ${ARCH_PREFIX}strip \
167 src
/tools
/tor-resolve
171 echo "Tor should be compiled at this point. Now run 'make install' to"
172 echo "install to $PREFIX"