########################################################################################## # # Win32 nmake Makefile # Matt Edman # ########################################################################################## #### EDIT ME #### OPENSSL_DIR = C:\OpenSSL #### EDIT ME #### LIBEVENT_DIR = C:\libevent ########################################################### #### Lines below this point do NOT need to be edited #### ########################################################### CL = cl.exe LINK = link.exe TOR_TARGET = tor.exe TOR_RESOLVE_TARGET = tor_resolve.exe SRC_DIR = .\src ZLIB_DIR = $(SRC_DIR)\..\contrib\zlib ############################ #### COMPILER OPTIONS #### ############################ CL_OPT = /Od /EHsc /MTd /W3 /nologo /c /TC /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" # Define the various paths to include files COMMON_INCLUDE = /I "$(SRC_DIR)\Common" /I "$(SRC_DIR)\or" /I "$(SRC_DIR)\win32" LIBEVENT_INCLUDE = /I "$(LIBEVENT_DIR)" /I "$(LIBEVENT_DIR)\WIN32-Code" /I "$(LIBEVENT_DIR)\compat" ZLIB_INCLUDE = /I "$(ZLIB_DIR)" OPENSSL_INCLUDE = /I $(OPENSSL_DIR) /I "$(OPENSSL_DIR)\include" TOR_INCLUDE = $(COMMON_INCLUDE) $(OPENSSL_INCLUDE) $(LIBEVENT_INCLUDE) # Linker Options LINK_OPT = /NOLOGO /DEBUG /SUBSYSTEM:CONSOLE /MACHINE:IX86 \ wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib \ shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib \ $(OPENSSL_DIR)\lib\VC\ssleay32.lib $(OPENSSL_DIR)\lib\VC\libeay32.lib \ delayimp.lib advapi32.lib ######################## #### SOURCE FILES #### ######################## COMMON_DIR = $(SRC_DIR)\common COMMON_C = $(COMMON_DIR)\aes.c \ $(COMMON_DIR)\compat.c \ $(COMMON_DIR)\container.c \ $(COMMON_DIR)\crypto.c \ $(COMMON_DIR)\log.c \ $(COMMON_DIR)\torgzip.c \ $(COMMON_DIR)\tortls.c \ $(COMMON_DIR)\util.c OR_DIR = $(SRC_DIR)\or OR_C = $(OR_DIR)\buffers.c \ $(OR_DIR)\circuitbuild.c \ $(OR_DIR)\circuitlist.c \ $(OR_DIR)\circuituse.c \ $(OR_DIR)\command.c \ $(OR_DIR)\config.c \ $(OR_DIR)\connection.c \ $(OR_DIR)\connection_edge.c \ $(OR_DIR)\connection_or.c \ $(OR_DIR)\control.c \ $(OR_DIR)\cpuworker.c \ $(OR_DIR)\directory.c \ $(OR_DIR)\dirserv.c \ $(OR_DIR)\dns.c \ $(OR_DIR)\hibernate.c \ $(OR_DIR)\main.c \ $(OR_DIR)\onion.c \ $(OR_DIR)\or.h \ $(OR_DIR)\relay.c \ $(OR_DIR)\rendclient.c \ $(OR_DIR)\rendcommon.c \ $(OR_DIR)\rendmid.c \ $(OR_DIR)\rendservice.c \ $(OR_DIR)\rephist.c \ $(OR_DIR)\router.c \ $(OR_DIR)\routerlist.c \ $(OR_DIR)\routerparse.c \ $(OR_DIR)\tor_main.c ZLIB_C = $(ZLIB_DIR)\adler32.c \ $(ZLIB_DIR)\compress.c \ $(ZLIB_DIR)\crc32.c \ $(ZLIB_DIR)\deflate.c \ $(ZLIB_DIR)\gzio.c \ $(ZLIB_DIR)\infback.c \ $(ZLIB_DIR)\inffast.c \ $(ZLIB_DIR)\inflate.c \ $(ZLIB_DIR)\inftrees.c \ $(ZLIB_DIR)\trees.c \ $(ZLIB_DIR)\uncompr.c \ $(ZLIB_DIR)\zutil.c LIBEVENT_C = $(LIBEVENT_DIR)\event.c \ $(LIBEVENT_DIR)\log.c \ $(LIBEVENT_DIR)\WIN32-Code\win32.c \ $(LIBEVENT_DIR)\WIN32-Code\misc.c OBJ_DIR = torobj TOR_OBJ = $(OBJ_DIR)\aes.obj \ $(OBJ_DIR)\compat.obj \ $(OBJ_DIR)\container.obj \ $(OBJ_DIR)\crypto.obj \ $(OBJ_DIR)\log.obj \ $(OBJ_DIR)\torgzip.obj \ $(OBJ_DIR)\tortls.obj \ $(OBJ_DIR)\util.obj \ $(OBJ_DIR)\buffers.obj \ $(OBJ_DIR)\circuitbuild.obj \ $(OBJ_DIR)\circuitlist.obj \ $(OBJ_DIR)\circuituse.obj \ $(OBJ_DIR)\command.obj \ $(OBJ_DIR)\config.obj \ $(OBJ_DIR)\connection.obj \ $(OBJ_DIR)\connection_edge.obj \ $(OBJ_DIR)\connection_or.obj \ $(OBJ_DIR)\control.obj \ $(OBJ_DIR)\cpuworker.obj \ $(OBJ_DIR)\directory.obj \ $(OBJ_DIR)\dirserv.obj \ $(OBJ_DIR)\dns.obj \ $(OBJ_DIR)\hibernate.obj \ $(OBJ_DIR)\main.obj \ $(OBJ_DIR)\onion.obj \ $(OBJ_DIR)\relay.obj \ $(OBJ_DIR)\rendclient.obj \ $(OBJ_DIR)\rendcommon.obj \ $(OBJ_DIR)\rendmid.obj \ $(OBJ_DIR)\rendservice.obj \ $(OBJ_DIR)\rephist.obj \ $(OBJ_DIR)\router.obj \ $(OBJ_DIR)\routerlist.obj \ $(OBJ_DIR)\routerparse.obj \ $(OBJ_DIR)\tor_main.obj \ $(OBJ_DIR)\zlib\adler32.obj \ $(OBJ_DIR)\zlib\compress.obj \ $(OBJ_DIR)\zlib\crc32.obj \ $(OBJ_DIR)\zlib\deflate.obj \ $(OBJ_DIR)\zlib\gzio.obj \ $(OBJ_DIR)\zlib\infback.obj \ $(OBJ_DIR)\zlib\inffast.obj \ $(OBJ_DIR)\zlib\inflate.obj \ $(OBJ_DIR)\zlib\inftrees.obj \ $(OBJ_DIR)\zlib\trees.obj \ $(OBJ_DIR)\zlib\uncompr.obj \ $(OBJ_DIR)\zlib\zutil.obj \ $(OBJ_DIR)\libevent\event.obj \ $(OBJ_DIR)\libevent\win32.obj \ $(OBJ_DIR)\libevent\log.obj \ $(OBJ_DIR)\libevent\misc.obj # # tor_resolve # TOR_RESOLVE_SRC = $(COMMON_DIR)\compat.c \ $(COMMON_DIR)\log.c \ $(COMMON_DIR)\util.c \ $(SRC_DIR)\tools\tor-resolve.c \ OBJ_DIR = torresobj TOR_RESOLVE_OBJ = $(OBJ_DIR)\compat.obj \ $(OBJ_DIR)\log.obj \ $(OBJ_DIR)\util.obj \ $(OBJ_DIR)\tor-resolve.obj \ $(OBJ_DIR)\libevent\event.obj \ $(OBJ_DIR)\libevent\win32.obj \ $(OBJ_DIR)\libevent\log.obj \ $(OBJ_DIR)\libevent\misc.obj ######################### #### BUILD TARGETS #### ######################### # Build Tor & tor_resolve all : tor tor_resolve # # Build Tor # OBJ_DIR = torobj tor : @echo * Compiling Tor Source Files... -@mkdir $(OBJ_DIR) -@mkdir $(OBJ_DIR)\zlib -@mkdir $(OBJ_DIR)\libevent @$(CL) $(COMMON_C) $(OR_C) $(CL_OPT) $(TOR_INCLUDE) /Fo"$(OBJ_DIR)/" /Fd"$(OBJ_DIR)/" @$(CL) $(ZLIB_C) $(CL_OPT) $(ZLIB_INCLUDE) /Fo"$(OBJ_DIR)/zlib/" /Fd"$(OBJ_DIR)/zlib/" @$(CL) $(LIBEVENT_C) $(CL_OPT) $(LIBEVENT_INCLUDE) /Fo"$(OBJ_DIR)/libevent/" /Fd"$(OBJ_DIR)/libevent/" @echo Linking... @$(LINK) $(LINK_OPT) /OUT:$(TOR_TARGET) $(TOR_OBJ) # # Build tor_resolve # OBJ_DIR = torresobj tor_resolve : @echo * Compiling tor_resolve Source Files... -@mkdir $(OBJ_DIR) -@mkdir $(OBJ_DIR)\libevent @$(CL) $(TOR_RESOLVE_SRC) $(CL_OPT) $(TOR_INCLUDE) /Fo"$(OBJ_DIR)/" /Fd"$(OBJ_DIR)/" @$(CL) $(LIBEVENT_C) $(CL_OPT) $(LIBEVENT_INCLUDE) /Fo"$(OBJ_DIR)/libevent/" /Fd"$(OBJ_DIR)/libevent/" @echo Linking... @$(LINK) $(LINK_OPT) /OUT:$(TOR_RESOLVE_TARGET) $(TOR_RESOLVE_OBJ)