## Instructions for building Tor with MinGW (http://www.mingw.org/) ## Stage One: Download and Install MinGW. --------------------------------------- Download mingw: http://prdownloads.sf.net/mingw/MinGW-5.0.3.exe?download Download msys: http://prdownloads.sf.net/mingw/MSYS-1.0.10.exe?download Download the mingw developer tool kit: http://prdownloads.sf.net/mingw/msysDTK-1.0.1.exe?download Download the mingw win32api: http://prdownloads.sf.net/mingw/w32api-3.6.tar.gz?download Install mingw, msys and mingw-dtk. Stage Two: Download, extract, compile openssl ---------------------------------------------- Download openssl: http://www.openssl.org/source/openssl-0.9.8c.tar.gz Extract openssl: cp openssl-0.9.8c.tar.gz tor-mingw/ cd tor-mingw/ tar zxf openssl-0.9.8c.tar.gz Make openssl.dll: cd tor-mingw/openssl-0.9.8c/ ./Configure mingw cp crypto/*.h ./include/openssl/ cp e_os2.h ./include/openssl/ cp ssl/*.h ./include/openssl/ make Note: this fails in test due to: make[1]: *** No rule to make target `sha256t.o', needed by `sha256t.exe'. Stop. --need to research this - phobos Alternatively: Download the pre-compiled openssl for win32. Install and proceed. Stage Three: Download, extract, compile zlib --------------------------------------------- Download zlib source: http://www.zlib.net/zlib-1.2.3.tar.gz Extract zlib: cp zlib-1.2.3.tar.gz tor-mingw/ cd tor-mingw/ tar zxf zlib-1.2.3.tar.gz Make zlib1.dll: cd tor-mingw/zlib-1.2.3/ make -f win32/Makefile.gcc Done. Stage Four: Download, extract, and patch libevent-1.1b. ------------------------------------------------------ Download libevent-1.1b: http://www.monkey.org/~provos/libevent/ Start up MSYS: Start -> Programs -> MinGW -> MSYS -> msys Create a directory to work within, for example, /c/tor-mingw. Copy libevent and tor tarballs into this working dir: cp /path/to/libevent-1.1b.tar.gz /c/tor-mingw/ cp /patch/to/tor-alpha.tar.gz /c/tor-mingw/ cd /c/tor-mingw/ Extract libevent: tar zxf libevent-1.1b.tar.gz Extract tor: tar zxf tor-alpha.tar.gz Copy the libevent-1.1b diff into libevent-1.1b: cp /c/tor-mingw/tor/Win32Build/mingw/libevent-1.1b-mingw-custom.diff /c/tor-mingw/libevent-1.1b/ patch -i libevent-1.1b-mingw-custom.diff Your output of the "patch" command should be similar to: "patch -i libevent-1.1b-mingw-custom.diff patching file `Makefile.am' can't find file to patch at input line 49 Perhaps you should have used the -p or --strip option? The text leading up to this was: -------------------------- |Only in libevent-1.1b: Makefile.in |diff -uwr libevent-1.1b-old/WIN32-Code/misc.c libevent-1.1b/WIN32-Code/misc.c |--- libevent-1.1b-old/WIN32-Code/misc.c Wed Aug 9 21:01:14 2006 |+++ libevent-1.1b/WIN32-Code/misc.c Fri Sep 1 22:21:31 2006 -------------------------- File to patch: WIN32-Code/misc.c patching file `WIN32-Code/misc.c' can't find file to patch at input line 65 Perhaps you should have used the -p or --strip option? The text leading up to this was: -------------------------- |diff -uwr libevent-1.1b-old/WIN32-Code/misc.h libevent-1.1b/WIN32-Code/misc.h |--- libevent-1.1b-old/WIN32-Code/misc.h Wed Aug 9 21:01:14 2006 |+++ libevent-1.1b/WIN32-Code/misc.h Fri Sep 1 18:47:09 2006 -------------------------- File to patch: WIN32-Code/misc.h patching file `WIN32-Code/misc.h' can't find file to patch at input line 78 Perhaps you should have used the -p or --strip option? The text leading up to this was: -------------------------- |diff -uwr libevent-1.1b-old/WIN32-Code/win32.c libevent-1.1b/WIN32-Code/win32.c |--- libevent-1.1b-old/WIN32-Code/win32.c Wed Aug 9 21:25:48 2006 |+++ libevent-1.1b/WIN32-Code/win32.c Sat Sep 2 00:45:55 2006 -------------------------- File to patch: WIN32-Code/win32.c patching file `WIN32-Code/win32.c' patching file `buffer.c' patching file `config.h.in' patching file `configure.in' patching file `evbuffer.c' patching file `event.c' patching file `log.c' " --This is a complete hack right now: remove from event.c and log.c: #ifdef __GNUC__ #include "WIN32-Code/misc.h" #else #include "misc.h" #endif Run "aclocal && autoheader && automake && autoconf". There may be WARNING messages. There will be no output if all runs successfuly. Run "./configure" Run "make" Run "make install" Stage Five: Build Tor ---------------------- Extract the latest tor from svn in tor-mingw dir: tar zxf latest-tor-alpha.tar.gz cd tor-alpha ./autogen.sh ./configure (less magic happens here and a complete tor-alpha.exe is created)