Commit 69e3b8bb authored by David Goulet's avatar David Goulet
Browse files

Merge branch 'tor-gitlab/mr/567'

parents 62f505ef 65ea7eed
......@@ -185,7 +185,6 @@ EXTRA_DIST+= \
CODE_OF_CONDUCT \
INSTALL \
LICENSE \
Makefile.nmake \
README.md \
ReleaseNotes \
scripts/build/combine_libs \
......
all:
cd src/common
$(MAKE) /F Makefile.nmake
cd ../../src/ext
$(MAKE) /F Makefile.nmake
cd ../../src/or
$(MAKE) /F Makefile.nmake
cd ../../src/test
$(MAKE) /F Makefile.nmake
clean:
cd src/common
$(MAKE) /F Makefile.nmake clean
cd ../../src/ext
$(MAKE) /F Makefile.nmake clean
cd ../../src/or
$(MAKE) /F Makefile.nmake clean
cd ../../src/test
$(MAKE) /F Makefile.nmake clean
......@@ -5,8 +5,8 @@
; NOTE: This file might be obsolete. Look at tor-mingw.nsi.in instead.
;-----------------------------------------
; How to make an installer:
; Step 0. If you are a Tor maintainer, make sure that tor.nsi and
; src/win32/orconfig.h all have the correct version number.
; Step 0. If you are a Tor maintainer, make sure that tor.nsi has
; the correct version number.
; Step 1. Download and install OpenSSL. Make sure that the OpenSSL
; version listed below matches the one you downloaded.
; Step 2. Download and install NSIS (http://nsis.sourceforge.net)
......
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
......@@ -129,8 +129,3 @@ update_file(P("contrib/win32build/tor-mingw.nsi.in"),
re.compile(r'!define VERSION .*'),
u'!define VERSION "{}"'.format(version),
encoding="iso-8859-1")
# In src/win32/orconfig.h, we replace the definition of VERSION.
update_file(P("src/win32/orconfig.h"),
re.compile(r'#define VERSION .*'),
u'#define VERSION "{}"'.format(version))
all: csiphash.lib
CFLAGS = /O2 /MT /I ..\win32 /I ..\..\..\build-alpha\include /I ..\common \
/I ..\ext
CSIPHASH_OBJECTS = csiphash.obj
csiphash.lib: $(CSIPHASH_OBJECTS)
lib $(CSIPHASH_OBJECTS) $(CURVE25519_DONNA_OBJECTS) /out:csiphash.lib
clean:
del *.obj *.lib
......@@ -87,6 +87,5 @@ include src/app/include.am
include src/test/include.am
include src/tools/include.am
include src/win32/include.am
include src/config/include.am
include src/test/fuzz/include.am
all: test.exe bench.exe
CFLAGS = /I ..\win32 /I ..\..\..\build-alpha\include /I ..\common /I ..\or \
/I ..\ext
LIBS = ..\..\..\build-alpha\lib\libevent.lib \
..\..\..\build-alpha\lib\libcrypto.lib \
..\..\..\build-alpha\lib\libssl.lib \
..\..\..\build-alpha\lib\libz.lib \
..\or\libtor.lib \
ws2_32.lib advapi32.lib shell32.lib \
crypt32.lib gdi32.lib user32.lib
TEST_OBJECTS = test.obj test_addr.obj test_channel.obj test_channeltls.obj \
test_consdiff.obj test_containers.obj \
test_controller_events.obj test_crypto.obj test_data.obj test_dir.obj \
test_checkdir.obj test_microdesc.obj test_pt.obj test_util.obj \
test_config.obj test_connection.obj \
test_cell_formats.obj test_relay.obj test_replay.obj \
test_channelpadding.obj \
test_circuitstats.obj \
test_circuitpadding.obj \
test_scheduler.obj test_introduce.obj test_hs.obj tinytest.obj
tinytest.obj: ..\ext\tinytest.c
$(CC) $(CFLAGS) /D snprintf=_snprintf /c ..\ext\tinytest.c
test.exe: $(TEST_OBJECTS)
$(CC) $(CFLAGS) $(LIBS) ..\common\*.lib $(TEST_OBJECTS) /Fe$@
bench.exe: bench.obj
$(CC) $(CFLAGS) bench.obj $(LIBS) ..\common\*.lib /Fe$@
clean:
del *.obj *.lib test.exe bench.exe
all: tor-resolve.exe tor-gencert.exe tor-print-ed-signing-cert.exe
CFLAGS = /I ..\win32 /I ..\..\..\build-alpha\include /I ..\common /I ..\or
LIBS = ..\..\..\build-alpha\lib\libevent.lib \
..\..\..\build-alpha\lib\libcrypto.lib \
..\..\..\build-alpha\lib\libssl.lib \
..\..\..\build-alpha\lib\libz.lib \
ws2_32.lib advapi32.lib shell32.lib \
crypt32.lib gdi32.lib user32.lib
tor-gencert.exe: tor-gencert.obj
$(CC) $(CFLAGS) $(LIBS) ..\common\*.lib tor-gencert.obj
tor-resolve.exe: tor-resolve.obj
$(CC) $(CFLAGS) $(LIBS) ..\common\*.lib tor-resolve.obj
tor-print-ed-signing-cert.exe: tor-print-ed-signing-cert.obj
$(CC) $(CFLAGS) $(LIBS) ..\common\*.lib tor-print-ed-signing-cert.obj
clean:
del *.obj *.lib *.exe
EXTRA_DIST+= src/win32/orconfig.h
/* orconfig.h for Windows -- This file is *not* generated by autoconf.
* Instead, it has to be hand-edited to keep Win32 happy.
*/
/* Windows-only defines. */
#define CONFDIR ""
/* Define to 1 if you have the <arpa/inet.h> header file. */
#undef HAVE_ARPA_INET_H
/* Define to 1 if you have the <assert.h> header file. */
#define HAVE_ASSERT_H
/* Define to 1 if you have the <ctype.h> header file. */
#define HAVE_CTYPE_H
/* Define to 1 if you have the <errno.h> header file. */
#define HAVE_ERRNO_H
/* Define to 1 if you have the <fcntl.h> header file. */
#define HAVE_FCNTL_H
/* Define to 1 if you have the `ftime' function. */
#define HAVE_FTIME
/* Define to 1 if you have the `gettimeofday' function. */
#undef HAVE_GETTIMEOFDAY
/* Define to 1 if you have the <grp.h> header file. */
#undef HAVE_GRP_H
/* Define to 1 if you have the `inet_aton' function. */
#undef HAVE_INET_ATON
/* Define to 1 if you have the <inttypes.h> header file. */
/* #define HAVE_INTTYPES_H */
/* Define to 1 if you have the <limits.h> header file. */
#define HAVE_LIMITS_H
/* Define to 1 if you have the <machine/limits.h> header file. */
#undef HAVE_MACHINE_LIMITS_H
/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H
/* Define to 1 if you have the <netdb.h> header file. */
#undef HAVE_NETDB_H
/* Define to 1 if you have the <netinet/in.h> header file. */
#undef HAVE_NETINET_IN_H
/* Define to 1 if you have the <poll.h> header file. */
#undef HAVE_POLL_H
/* Define to 1 if you have the <pwd.h> header file. */
#undef HAVE_PWD_H
/* Define to 1 if you have the <signal.h> header file. */
#define HAVE_SIGNAL_H
/* Define to 1 if you have the `socketpair' function. */
#undef HAVE_SOCKETPAIR
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H
/* Define to 1 if you have the `strlcat' function. */
#undef HAVE_STRLCAT
/* Define to 1 if you have the `strlcpy' function. */
#undef HAVE_STRLCPY
/* Define to 1 if you have the `strptime' function. */
#undef HAVE_STRPTIME
/* Define to 1 if your timeval has a tv_sec element. */
#define HAVE_STRUCT_TIMEVAL_TV_SEC
/* Change to #undef if you're using BCC */
/* Define to 1 if you have the <sys/fcntl.h> header file. */
#undef HAVE_SYS_FCNTL_H
/* Define to 1 if you have the <sys/ioctl.h> header file. */
#undef HAVE_SYS_IOCTL_H
/* Define to 1 if you have the <sys/limits.h> header file. */
#undef HAVE_SYS_LIMITS_H
/* Define to 1 if you have the <sys/poll.h> header file. */
#undef HAVE_SYS_POLL_H
/* Define to 1 if you have the <sys/socket.h> header file. */
#undef HAVE_SYS_SOCKET_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/time.h> header file. */
#undef HAVE_SYS_TIME_H
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H
/* Define to 1 if you have the <sys/utime.h> header file. */
#define HAVE_SYS_UTIME_H
/* Define to 1 if you have the <sys/wait.h> header file. */
#undef HAVE_SYS_WAIT_H
/* Define to 1 if you have the <time.h> header file. */
#define HAVE_TIME_H
/* Define to 1 if you have the `uname' function. */
#undef HAVE_UNAME
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define to 1 if you have the `_vscprintf' function. */
#define HAVE__VSCPRINTF 1
/* Define to 1 iff NULL is represented by a 0 in memory. */
#define NULL_REP_IS_ZERO_BYTES 1
/* Define to 1 iff memset(0) sets doubles to 0.0 */
#define DOUBLE_0_REP_IS_ZERO_BYTES 1
/* Name of package */
#define PACKAGE "tor"
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* The size of a `char', as computed by sizeof. */
#define SIZEOF_CHAR 1
/* The size of a `int', as computed by sizeof. */
#define SIZEOF_INT 4
/* The size of a `int16_t', as computed by sizeof. */
#undef SIZEOF_INT16_T
/* The size of a `int32_t', as computed by sizeof. */
#undef SIZEOF_INT32_T
/* The size of a `int64_t', as computed by sizeof. */
#undef SIZEOF_INT64_T
/* The size of a `int8_t', as computed by sizeof. */
#undef SIZEOF_INT8_T
/* The size of a `long', as computed by sizeof. */
#define SIZEOF_LONG 4
/* The size of a `long long', as computed by sizeof. */
#undef SIZEOF_LONG_LONG
/* The size of `pid_t', as computed by sizeof. */
#define SIZEOF_PID_T 0
/* The size of a `short', as computed by sizeof. */
#define SIZEOF_SHORT 2
/* The size of a `time_t', as computed by sizeof. */
#define SIZEOF_TIME_T 4
/* The size of a `uint16_t', as computed by sizeof. */
#undef SIZEOF_UINT16_T
/* The size of a `uint32_t', as computed by sizeof. */
#undef SIZEOF_UINT32_T
/* The size of a `uint64_t', as computed by sizeof. */
#undef SIZEOF_UINT64_T
/* The size of a `uint8_t', as computed by sizeof. */
#undef SIZEOF_UINT8_T
/* The size of a `void *', as computed by sizeof. */
#define SIZEOF_VOID_P 4
/* The size of a `__int64', as computed by sizeof. */
#define SIZEOF___INT64 8
/* The sizeof a size_t, as computed by sizeof. */
#define SIZEOF_SIZE_T 4
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS
/* Define to 1 iff unaligned int access is allowed */
#define UNALIGNED_INT_ACCESS_OK
/* Define to 1 iff we represent negative integers with two's complement */
#define USING_TWOS_COMPLEMENT
/* Version number of package */
#define VERSION "0.4.8.0-alpha-dev"
#define HAVE_STRUCT_SOCKADDR_IN6
#define HAVE_STRUCT_IN6_ADDR
#define RSHIFT_DOES_SIGN_EXTEND
#define FLEXIBLE_ARRAY_MEMBER 0
#define SHARE_DATADIR ""
#define USE_CURVE25519_DONNA
#define ENUM_VALS_ARE_SIGNED 1
#ifndef STDOUT_FILENO
#define STDOUT_FILENO 1
#endif
#ifndef STDERR_FILENO
#define STDERR_FILENO 2
#endif
#define WINVER 0x0501
#define _WIN32_WINNT 0x0501
#define WIN32_LEAN_AND_MEAN 1
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment