neon.mak 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. #**** neon Win32 -*- Makefile -*- ********************************************
  2. #
  3. # Define DEBUG_BUILD to create a debug version of the library.
  4. !IF "$(OS)" == "Windows_NT"
  5. NULL=
  6. !ELSE
  7. NULL=nul
  8. !ENDIF
  9. !IF "$(BUILD_DLL)" == "yes"
  10. USE_DLL = 1
  11. !endif
  12. ########
  13. # Debug vs. Release build
  14. !IF "$(DEBUG_BUILD)" == ""
  15. INTDIR = Release
  16. CFLAGS = /MD /W3 /EHsc /Zi /O2 /D "NDEBUG"
  17. TARGET = .\libneon.lib
  18. !ELSE
  19. INTDIR = Debug
  20. CFLAGS = /MDd /W3 /Gm /EHsc /Zi /Od /D "_DEBUG"
  21. TARGET = .\libneonD.lib
  22. !ENDIF
  23. NE_DEP_LIBS =
  24. !IFDEF USE_DLL
  25. CFLAGS = $(CFLAGS) /D NE_DLL
  26. NE_DEP_LIBS = $(NE_DEP_LIBS) ws2_32.lib
  27. !ENDIF
  28. # Silence deprecation warnings on later Visual Studio versions, which
  29. # actually can be ignored
  30. CFLAGS = $(CFLAGS) /D _CRT_SECURE_NO_WARNINGS /D _CRT_NONSTDC_NO_WARNINGS /D _WINSOCK_DEPRECATED_NO_WARNINGS
  31. ########
  32. # Whether to build SSPI
  33. !IF "$(SSPI_BUILD)" != ""
  34. CFLAGS = $(CFLAGS) /D HAVE_SSPI
  35. !ENDIF
  36. ########
  37. # Support for Expat or libxml2 integration
  38. #
  39. # If USE_EXPAT or USE_LIBXML are set, then assume compiling against a
  40. # pre-built binary Expat or libxml2. Note that if both are set, USE_EXPAT is
  41. # assumed and USE_LIBXML is ignored. If neither of USE_EXPAT or USE_LIBXML are
  42. # set, disable WebDAV support.
  43. !IF DEFINED (USE_EXPAT) && DEFINED (USE_LIBXML)
  44. !MESSAGE Expat is preferred over LibXML2
  45. !ENDIF
  46. !IFDEF USE_EXPAT
  47. BUILD_XML_SUPPORT = 1
  48. NE_XML_FLAGS = /D HAVE_EXPAT /D NE_HAVE_DAV
  49. EXPAT_LIBS = libexpat.lib
  50. NE_DEP_LIBS = $(NE_DEP_LIBS) $(EXPAT_LIBS)
  51. !ENDIF
  52. !IF DEFINED(USE_LIBXML) && !DEFINED(USE_EXPAT)
  53. BUILD_XML_SUPPORT = 1
  54. NE_XML_FLAGS = /D HAVE_LIBXML /D NE_HAVE_DAV
  55. LIBXML_LIBS = libxml2.lib
  56. NE_DEP_LIBS = $(NE_DEP_LIBS) $(LIBXML_LIBS)
  57. !ENDIF
  58. ########
  59. # Support for OpenSSL integration
  60. !IF "$(OPENSSL_SRC)" == ""
  61. !IF DEFINED (USE_OPENSSL11) || DEFINED (USE_OPENSSL)
  62. OPENSSL_FLAGS = /D NE_HAVE_SSL /D HAVE_OPENSSL
  63. !IFDEF USE_OPENSSL11
  64. OPENSSL_FLAGS = $(OPENSSL_FLAGS) /D HAVE_OPENSSL11
  65. !ENDIF
  66. BUILD_OPENSSL = 1
  67. !ELSE
  68. OPENSSL_FLAGS =
  69. !ENDIF
  70. !ELSE
  71. OPENSSL_FLAGS = /I "$(OPENSSL_SRC)\inc32" /D NE_HAVE_SSL /D HAVE_OPENSSL
  72. BUILD_OPENSSL = 1
  73. !ENDIF
  74. ########
  75. # Support for zlib integration
  76. !IF "$(DEBUG_BUILD)" == ""
  77. ZLIB_STATICLIB = zlib.lib
  78. ZLIB_SHAREDLIB = zlib1.dll
  79. !IF "$(ZLIB_SRC)" == ""
  80. !IF "$(ZLIB_IMPLIB)" == ""
  81. ZLIB_IMPLIB = zlib1.lib
  82. !ENDIF
  83. !ELSE
  84. ZLIB_IMPLIB = zdll.lib
  85. !ENDIF
  86. ZLIB_LDFLAGS = /nologo /release
  87. !ELSE
  88. ZLIB_STATICLIB = zlib_d.lib
  89. ZLIB_SHAREDLIB = zlib1_d.dll
  90. !IF "$(ZLIB_SRC)" == ""
  91. !IF "$(ZLIB_IMPLIB)" == ""
  92. ZLIB_IMPLIB = zlib1d.lib
  93. !ENDIF
  94. !ELSE
  95. ZLIB_IMPLIB = zdll_d.lib
  96. !ENDIF
  97. ZLIB_LDFLAGS = /nologo /debug
  98. !ENDIF
  99. !IF "$(ZLIB_SRC)" == ""
  100. ZLIB_CLEAN =
  101. !IF "$(USE_ZLIB)" == ""
  102. ZLIB_FLAGS =
  103. ZLIB_LIBS =
  104. !ELSE
  105. ZLIB_FLAGS = /D NE_HAVE_ZLIB
  106. !IFNDEF ZLIB_LIBS
  107. !IF "$(ZLIB_DLL)" == ""
  108. ZLIB_LIBS = $(ZLIB_STATICLIB)
  109. !ELSE
  110. ZLIB_LIBS = $(ZLIB_IMPLIB)
  111. !ENDIF
  112. !ENDIF
  113. !ENDIF
  114. !ELSE
  115. ZLIB_CLEAN = ZLIB_CLEAN
  116. ZLIB_FLAGS = /I "$(ZLIB_SRC)" /D NE_HAVE_ZLIB
  117. !IF "$(ZLIB_DLL)" == ""
  118. ZLIB_LIBS = "$(ZLIB_SRC)\$(ZLIB_STATICLIB)"
  119. !ELSE
  120. ZLIB_FLAGS = $(ZLIB_FLAGS) /D ZLIB_DLL
  121. ZLIB_LIBS = "$(ZLIB_SRC)\$(ZLIB_IMPLIB)"
  122. !ENDIF
  123. !ENDIF
  124. ########
  125. # Support for IPv6
  126. !IF "$(ENABLE_IPV6)" == "yes"
  127. IPV6_FLAGS = /D USE_GETADDRINFO
  128. !ENDIF
  129. # Exclude stuff we don't need from the Win32 headers
  130. WIN32_DEFS = /D WIN32_LEAN_AND_MEAN /D NOUSER /D NOGDI /D NONLS /D NOCRYPT
  131. CPP=cl.exe
  132. CPP_PROJ = /c /nologo $(CFLAGS) $(WIN32_DEFS) $(NE_XML_FLAGS) $(OPENSSL_FLAGS) $(ZLIB_FLAGS) $(IPV6_FLAGS) /D "HAVE_CONFIG_H" /D BUILDING_NEON /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\"
  133. LINK=link.exe
  134. LIB32=$(LINK) -lib
  135. LIB32_FLAGS=/nologo /out:$@
  136. LINK_DLL_FLAGS=$(LIB32_FLAGS) /DLL /DEBUG /def:src\neon.def
  137. LIB32_OBJS= \
  138. "$(INTDIR)\ne_alloc.obj" \
  139. "$(INTDIR)\ne_auth.obj" \
  140. "$(INTDIR)\ne_basic.obj" \
  141. "$(INTDIR)\ne_compress.obj" \
  142. "$(INTDIR)\ne_dates.obj" \
  143. "$(INTDIR)\ne_i18n.obj" \
  144. "$(INTDIR)\ne_md5.obj" \
  145. "$(INTDIR)\ne_pkcs11.obj" \
  146. "$(INTDIR)\ne_redirect.obj" \
  147. "$(INTDIR)\ne_request.obj" \
  148. "$(INTDIR)\ne_session.obj" \
  149. "$(INTDIR)\ne_socket.obj" \
  150. "$(INTDIR)\ne_socks.obj" \
  151. "$(INTDIR)\ne_sspi.obj" \
  152. "$(INTDIR)\ne_string.obj" \
  153. "$(INTDIR)\ne_uri.obj" \
  154. "$(INTDIR)\ne_utils.obj"
  155. !IF "$(BUILD_XML_SUPPORT)" != ""
  156. LIB32_OBJS= \
  157. $(LIB32_OBJS) \
  158. "$(INTDIR)\ne_207.obj" \
  159. "$(INTDIR)\ne_xml.obj" \
  160. "$(INTDIR)\ne_xmlreq.obj" \
  161. "$(INTDIR)\ne_oldacl.obj" \
  162. "$(INTDIR)\ne_acl3744.obj" \
  163. "$(INTDIR)\ne_props.obj" \
  164. "$(INTDIR)\ne_locks.obj"
  165. !ENDIF
  166. !IFDEF BUILD_OPENSSL
  167. LIB32_OBJS = $(LIB32_OBJS) "$(INTDIR)\ne_openssl.obj"
  168. !ENDIF
  169. !IF "$(OPENSSL_SRC)" != ""
  170. !IFDEF OPENSSL_STATIC
  171. LIB32_OBJS = $(LIB32_OBJS) "$(OPENSSL_SRC)\out32\libeay32.lib" \
  172. "$(OPENSSL_SRC)\out32\ssleay32.lib"
  173. !ELSE
  174. LIB32_OBJS = $(LIB32_OBJS) "$(OPENSSL_SRC)\out32dll\libeay32.lib" \
  175. "$(OPENSSL_SRC)\out32dll\ssleay32.lib"
  176. !ENDIF
  177. !ELSE
  178. !IF DEFINED (USE_OPENSSL11) || DEFINED (USE_OPENSSL)
  179. !IFDEF USE_OPENSSL11
  180. SSL_LIBS = libssl.lib libcrypto.lib
  181. !ELSE
  182. SSL_LIBS = ssleay32.lib libeay32.lib
  183. !ENDIF
  184. NE_DEP_LIBS = $(NE_DEP_LIBS) $(SSL_LIBS)
  185. !ELSE
  186. # Provide ABI-compatibility stubs for SSL interface
  187. LIB32_OBJS = $(LIB32_OBJS) "$(INTDIR)\ne_stubssl.obj"
  188. !ENDIF
  189. !ENDIF
  190. !IF "$(ZLIB_SRC)" != ""
  191. LIB32_OBJS = $(LIB32_OBJS) $(ZLIB_LIBS)
  192. !ENDIF
  193. !IF "$(USE_ZLIB)" != ""
  194. NE_DEP_LIBS = $(NE_DEP_LIBS) $(ZLIB_LIBS)
  195. !ENDIF
  196. ALL: ".\src\config.h" "$(TARGET)"
  197. CLEAN: $(ZLIB_CLEAN)
  198. -@erase "$(INTDIR)\ne_207.obj"
  199. -@erase "$(INTDIR)\ne_alloc.obj"
  200. -@erase "$(INTDIR)\ne_oldacl.obj"
  201. -@erase "$(INTDIR)\ne_acl3744.obj"
  202. -@erase "$(INTDIR)\ne_auth.obj"
  203. -@erase "$(INTDIR)\ne_basic.obj"
  204. -@erase "$(INTDIR)\ne_compress.obj"
  205. -@erase "$(INTDIR)\ne_dates.obj"
  206. -@erase "$(INTDIR)\ne_i18n.obj"
  207. -@erase "$(INTDIR)\ne_locks.obj"
  208. -@erase "$(INTDIR)\ne_md5.obj"
  209. -@erase "$(INTDIR)\ne_props.obj"
  210. -@erase "$(INTDIR)\ne_redirect.obj"
  211. -@erase "$(INTDIR)\ne_request.obj"
  212. -@erase "$(INTDIR)\ne_session.obj"
  213. -@erase "$(INTDIR)\ne_openssl.obj"
  214. -@erase "$(INTDIR)\ne_stubssl.obj"
  215. -@erase "$(INTDIR)\ne_pkcs11.obj"
  216. -@erase "$(INTDIR)\ne_socket.obj"
  217. -@erase "$(INTDIR)\ne_socks.obj"
  218. -@erase "$(INTDIR)\ne_sspi.obj"
  219. -@erase "$(INTDIR)\ne_string.obj"
  220. -@erase "$(INTDIR)\ne_uri.obj"
  221. -@erase "$(INTDIR)\ne_utils.obj"
  222. -@erase "$(INTDIR)\ne_xml.obj"
  223. -@erase "$(INTDIR)\ne_xmlreq.obj"
  224. -@erase "$(TARGET:.lib=.dll)"
  225. -@erase "$(TARGET:.lib=.pdb)"
  226. -@erase "$(TARGET:.lib=.exp)"
  227. -@erase "$(TARGET:.lib=.ilk)"
  228. -@erase "$(TARGET)"
  229. -@erase ".\src\config.h"
  230. !IFDEF USE_DLL
  231. "$(TARGET)": "$(TARGET:.lib=.dll)"
  232. "$(TARGET:.lib=.dll)": $(LIB32_OBJS)
  233. -@if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
  234. $(LINK) @<<
  235. $(LINK_DLL_FLAGS) $(LIB32_OBJS) $(NE_DEP_LIBS)
  236. <<
  237. !ELSE
  238. "$(TARGET)": $(DEF_FILE) $(LIB32_OBJS)
  239. -@if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
  240. $(LIB32) @<<
  241. $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS) $(NE_DEP_LIBS)
  242. <<
  243. !ENDIF
  244. {src}.c{$(INTDIR)}.obj::
  245. -@if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
  246. $(CPP) @<<
  247. $(CPP_PROJ) $<
  248. <<
  249. ".\src\config.h": config.hw
  250. -@if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
  251. <<tempfile.bat
  252. @echo off
  253. copy .\config.hw .\src\config.h > nul
  254. echo Created config.h from config.hw
  255. <<
  256. "$(INTDIR)\ne_207.obj": .\src\ne_207.c
  257. "$(INTDIR)\ne_alloc.obj": .\src\ne_alloc.c
  258. "$(INTDIR)\ne_acl3744.obj": .\src\ne_acl3744.c
  259. "$(INTDIR)\ne_oldacl.obj": .\src\ne_oldacl.c
  260. "$(INTDIR)\ne_auth.obj": .\src\ne_auth.c
  261. "$(INTDIR)\ne_basic.obj": .\src\ne_basic.c
  262. "$(INTDIR)\ne_compress.obj": .\src\ne_compress.c
  263. "$(INTDIR)\ne_dates.obj": .\src\ne_dates.c
  264. "$(INTDIR)\ne_i18n.obj": .\src\ne_i18n.c
  265. "$(INTDIR)\ne_locks.obj": .\src\ne_locks.c
  266. "$(INTDIR)\ne_md5.obj": .\src\ne_md5.c
  267. "$(INTDIR)\ne_props.obj": .\src\ne_props.c
  268. "$(INTDIR)\ne_redirect.obj": .\src\ne_redirect.c
  269. "$(INTDIR)\ne_request.obj": .\src\ne_request.c
  270. "$(INTDIR)\ne_session.obj": .\src\ne_session.c
  271. "$(INTDIR)\ne_openssl.obj": .\src\ne_openssl.c
  272. "$(INTDIR)\ne_stubssl.obj": .\src\ne_stubssl.c
  273. "$(INTDIR)\ne_pkcs11.obj": .\src\ne_pkcs11.c
  274. "$(INTDIR)\ne_socket.obj": .\src\ne_socket.c
  275. "$(INTDIR)\ne_socks.obj": .\src\ne_socks.c
  276. "$(INTDIR)\ne_sspi.obj": .\src\ne_sspi.c
  277. "$(INTDIR)\ne_string.obj": .\src\ne_string.c
  278. "$(INTDIR)\ne_uri.obj": .\src\ne_uri.c
  279. "$(INTDIR)\ne_utils.obj": .\src\ne_utils.c
  280. "$(INTDIR)\ne_xml.obj": .\src\ne_xml.c
  281. "$(INTDIR)\ne_xmlreq.obj": .\src\ne_xmlreq.c
  282. "$(ZLIB_SRC)\$(ZLIB_STATICLIB)":
  283. <<tempfile.bat
  284. @echo off
  285. cd /d "$(ZLIB_SRC)"
  286. $(MAKE) /nologo /f win32\Makefile.msc CFLAGS="/nologo $(CFLAGS)" LDFLAGS="$(ZLIB_LDFLAGS)" STATICLIB=$(ZLIB_STATICLIB) $(ZLIB_STATICLIB)
  287. <<
  288. "$(ZLIB_SRC)\$(ZLIB_IMPLIB)":
  289. <<tempfile.bat
  290. @echo off
  291. cd /d "$(ZLIB_SRC)"
  292. $(MAKE) /nologo /f win32\Makefile.msc CFLAGS="/nologo $(CFLAGS)" LDFLAGS="$(ZLIB_LDFLAGS)" SHAREDLIB=$(ZLIB_SHAREDLIB) IMPLIB=$(ZLIB_IMPLIB) $(ZLIB_SHAREDLIB) $(ZLIB_IMPLIB)
  293. <<
  294. ZLIB_CLEAN:
  295. <<tempfile.bat
  296. @echo off
  297. cd /d "$(ZLIB_SRC)"
  298. $(MAKE) /nologo /f win32\Makefile.msc STATICLIB=$(ZLIB_STATICLIB) SHAREDLIB=$(ZLIB_SHAREDLIB) IMPLIB=$(ZLIB_IMPLIB) clean
  299. <<