mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 13:13:44 +01:00
123 lines
3.7 KiB
Plaintext
123 lines
3.7 KiB
Plaintext
Building Tor with MSVC.
|
|
=======================
|
|
|
|
NOTE: This is not the preferred method for building Tor on windows: we use
|
|
mingw for our packages.
|
|
|
|
Last updated 9 September 2014.
|
|
|
|
|
|
Requirements:
|
|
-------------
|
|
|
|
* Visual Studio 2010
|
|
https://go.microsoft.com/fwlink/?LinkId=323467
|
|
* CMake 2.8.12.2
|
|
https://www.cmake.org/download/
|
|
* Perl 5.16
|
|
https://www.activestate.com/activeperl/downloads
|
|
* Latest stable OpenSSL tarball
|
|
https://www.openssl.org/source/
|
|
* Latest stable zlib tarball
|
|
https://zlib.net/
|
|
* Latest stable libevent Libevent tarball
|
|
https://github.com/libevent/libevent/releases
|
|
|
|
Make sure you check signatures for all these packages.
|
|
|
|
Steps:
|
|
------
|
|
|
|
Building OpenSSL from source as a shared library:
|
|
|
|
cd <openssl source dir>
|
|
perl Configure VC-WIN32
|
|
perl util\mkfiles.pl >MINFO
|
|
perl util\mk1mf.pl no-asm dll VC-WIN32 >32dll.mak
|
|
perl util\mkdef.pl 32 libeay > ms\libeay32.def
|
|
perl util\mkdef.pl 32 ssleay > ms\ssleay32.def
|
|
nmake -f 32dll.mak
|
|
|
|
Making OpenSSL final package:
|
|
|
|
Create <openssl final package dir>, I'd recommend using a name like <openssl
|
|
source dir>-vc10.
|
|
|
|
Copy the following directories and files to their respective locations
|
|
<openssl source dir>\inc32\openssl => <openssl final package dir>\include\openssl
|
|
<openssl source dir>\out32dll\libeay32.lib => <openssl final package dir>\lib\libeay32.lib
|
|
<openssl source dir>\out32dll\ssleay32.lib => <openssl final package dir>\lib\ssleay32.lib
|
|
<openssl source dir>\out32dll\libeay32.dll => <openssl final package dir>\bin\libeay32.dll
|
|
<openssl source dir>\out32dll\openssl.exe => <openssl final package dir>\bin\openssl.exe
|
|
<openssl source dir>\out32dll\ssleay32.dll => <openssl final package dir>\bin\ssleay32.dll
|
|
|
|
Building Zlib from source:
|
|
|
|
cd <zlib source dir>
|
|
nmake -f win32/Makefile.msc
|
|
|
|
Building libevent:
|
|
|
|
cd <libevent source dir>
|
|
mkdir build && cd build
|
|
SET OPENSSL_ROOT_DIR=<openssl final package dir>
|
|
cmake -G "NMake Makefiles" .. -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING="/MT /Zi /O2 /Ob1 /D NDEBUG" -DZLIB_LIBRARY:FILEPATH="<zlib source dir>\zdll.lib" -DZLIB_INCLUDE_DIR:PATH="<zlib source dir>"
|
|
nmake event
|
|
|
|
Building Tor:
|
|
|
|
Create a dir above tor source dir named build-alpha and two subdirs include
|
|
and lib.
|
|
|
|
Your build tree should now be similar to this one:
|
|
* build-alpha
|
|
- include
|
|
- lib
|
|
* <libevent source dir>
|
|
- build
|
|
- cmake
|
|
- ...
|
|
* <openssl source dir>
|
|
- ...
|
|
- ms
|
|
- util
|
|
- ...
|
|
* <openssl final package dir>
|
|
- bin
|
|
- include
|
|
- lib
|
|
* <tor source dir>
|
|
- ...
|
|
- src
|
|
- ...
|
|
* <zlib source dir>
|
|
- ...
|
|
- win32
|
|
- ...
|
|
|
|
Copy the following dirs and files to the following locations:
|
|
<openssl final package dir>\include\openssl => build-alpha\include\openssl
|
|
<libevent source dir>\include => build-alpha\include
|
|
<libevent source dir>\WIN32-Code\nmake\event2 => build-alpha\include\event2
|
|
<zlib source dir>\z*.h => build-alpha\include\z*.h
|
|
|
|
Now copy the following files to the following locations and rename them
|
|
according new names:
|
|
|
|
<libevent source dir>\build\lib\event.lib => build-alpha\lib\libevent.lib
|
|
<openssl final package dir>\lib\libeay32.lib => build-alpha\lib\libcrypto.lib
|
|
<openssl final package dir>\lib\ssleay32.lib => build-alpha\lib\libssl.lib
|
|
<zlib source dir>\zdll.lib => build-alpha\lib\libz.lib
|
|
|
|
And we are now ready for the build process:
|
|
|
|
cd <tor source dir>
|
|
nmake -f Makefile.nmake
|
|
|
|
After the above process is completed there should be a tor.exe in <tor
|
|
source dir>\src\or
|
|
|
|
Copy tor.exe to desired location and also copy zlib1.dll, libeay32.dll and
|
|
ssleay32.dll from built zlib and openssl packages
|
|
|