From 8391c96091e8e86c43954302df0b188ec1e5490d Mon Sep 17 00:00:00 2001
From: Nick Mathewson <nickm@torproject.org>
Date: Tue, 9 Sep 2014 10:27:05 -0400
Subject: [PATCH] Clean up the MVSC nmake files so they work again.

Fixes bug 13081; bugfix on 0.2.5.1-alpha. Patch from "NewEraCracker."
---
 Makefile.nmake            |  4 ++++
 changes/bug13081          |  3 +++
 src/common/Makefile.nmake |  9 +++++----
 src/ext/Makefile.nmake    | 12 ++++++++++++
 src/or/Makefile.nmake     |  8 +++++---
 src/win32/orconfig.h      |  8 ++++++++
 6 files changed, 37 insertions(+), 7 deletions(-)
 create mode 100644 changes/bug13081
 create mode 100644 src/ext/Makefile.nmake

diff --git a/Makefile.nmake b/Makefile.nmake
index a0a11ebdb9..32401b50b7 100644
--- a/Makefile.nmake
+++ b/Makefile.nmake
@@ -1,6 +1,8 @@
 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
@@ -9,6 +11,8 @@ all:
 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
diff --git a/changes/bug13081 b/changes/bug13081
new file mode 100644
index 0000000000..154f73fb0a
--- /dev/null
+++ b/changes/bug13081
@@ -0,0 +1,3 @@
+  o Compilation fixes:
+    - Make the nmake make files work again. Fixes bug 13081. Bugfix on 0.2.5.1-alpha. Patch
+      from "NewEraCracker".
diff --git a/src/common/Makefile.nmake b/src/common/Makefile.nmake
index 0ebeaaaf71..b8c5dd4fea 100644
--- a/src/common/Makefile.nmake
+++ b/src/common/Makefile.nmake
@@ -1,12 +1,13 @@
 all: libor.lib libor-crypto.lib libor-event.lib
 
-CFLAGS = /I ..\win32 /I ..\..\..\build-alpha\include /I ..\ext
+CFLAGS = /O2 /MT /I ..\win32 /I ..\..\..\build-alpha\include /I ..\common \
+    /I ..\ext
 
-LIBOR_OBJECTS = address.obj compat.obj container.obj di_ops.obj \
-	log.obj memarea.obj mempool.obj procmon.obj util.obj \
+LIBOR_OBJECTS = address.obj backtrace.obj compat.obj container.obj di_ops.obj \
+	log.obj memarea.obj mempool.obj procmon.obj sandbox.obj util.obj \
 	util_codedigest.obj
 
-LIBOR_CRYPTO_OBJECTS = aes.obj crypto.obj torgzip.obj tortls.obj \
+LIBOR_CRYPTO_OBJECTS = aes.obj crypto.obj crypto_format.obj torgzip.obj tortls.obj \
 	crypto_curve25519.obj curve25519-donna.obj
 
 LIBOR_EVENT_OBJECTS = compat_libevent.obj
diff --git a/src/ext/Makefile.nmake b/src/ext/Makefile.nmake
new file mode 100644
index 0000000000..d02d03bf41
--- /dev/null
+++ b/src/ext/Makefile.nmake
@@ -0,0 +1,12 @@
+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
diff --git a/src/or/Makefile.nmake b/src/or/Makefile.nmake
index 3b627b1d06..523bf3306b 100644
--- a/src/or/Makefile.nmake
+++ b/src/or/Makefile.nmake
@@ -1,6 +1,6 @@
 all: tor.exe
 
-CFLAGS = /I ..\win32 /I ..\..\..\build-alpha\include /I ..\common \
+CFLAGS = /O2 /MT /I ..\win32 /I ..\..\..\build-alpha\include /I ..\common \
     /I ..\ext
 
 LIBS = ..\..\..\build-alpha\lib\libevent.lib \
@@ -15,6 +15,7 @@ LIBTOR_OBJECTS = \
   buffers.obj \
   channel.obj \
   channeltls.obj \
+  circpathbias.obj \
   circuitbuild.obj \
   circuitlist.obj \
   circuitmux.obj \
@@ -35,6 +36,7 @@ LIBTOR_OBJECTS = \
   dirvote.obj \
   dns.obj \
   dnsserv.obj \
+  ext_orport.obj \
   fp_pair.obj \
   entrynodes.obj \
   geoip.obj \
@@ -69,7 +71,7 @@ libtor.lib: $(LIBTOR_OBJECTS)
 	lib $(LIBTOR_OBJECTS) /out:$@
 
 tor.exe: libtor.lib tor_main.obj
-	$(CC) $(CFLAGS) $(LIBS) libtor.lib ..\common\*.lib tor_main.obj /Fe$@
+	$(CC) $(CFLAGS) $(LIBS) libtor.lib ..\common\*.lib ..\ext\*.lib tor_main.obj /Fe$@
 
 clean:
-	del $(LIBTOR_OBJECTS) *.lib tor.exe
+	del $(LIBTOR_OBJECTS) tor_main.obj *.lib tor.exe
diff --git a/src/win32/orconfig.h b/src/win32/orconfig.h
index 8c2472c323..9873955a31 100644
--- a/src/win32/orconfig.h
+++ b/src/win32/orconfig.h
@@ -257,3 +257,11 @@
 #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
-- 
GitLab