GSS_S_PROMPTING_NEEDED is a bit
[cyrus-sasl.git] / plugins / NTMakefile
1 !INCLUDE ..\win32\common.mak
2
3 !IF "$(NTLM)" == "1"
4 PLUGINS_EXT=saslNTLM.dll
5 !ELSE 
6 PLUGINS_EXT=
7 !ENDIF 
8
9 !IF "$(GSSAPI)" == "CyberSafe"
10 PLUGINS_EXT=$(PLUGINS_EXT) saslGSSAPI.dll
11 !ENDIF 
12
13 !IF "$(SRP)" == "1"
14 PLUGINS_EXT=$(PLUGINS_EXT) saslSRP.dll
15 !IF "$(DO_SRP_SETPASS)" == "1"
16 SRP_FLAGS=/DDO_SRP_SETPASS=1
17 !ENDIF 
18 !ENDIF 
19
20 !IF "$(OTP)" == "1"
21 PLUGINS_EXT=$(PLUGINS_EXT) saslOTP.dll
22 !ENDIF
23
24 !IF "$(LDAP)" == "1"
25 PLUGINS_EXT=$(PLUGINS_EXT) saslLDAPDB.dll
26
27 # NB: linking to libsasl itself!!!
28 LDAP_FLAGS = /I $(LDAP_INCLUDE)
29 LDAP_LIBS = $(LDAP_LIB_BASE)\olber32.lib $(LDAP_LIB_BASE)\oldap32.lib ..\lib\libsasl.lib
30 !ENDIF 
31
32 !IF "$(SQL)" == "SQLITE"
33 PLUGINS_EXT=$(PLUGINS_EXT) saslSQLITE.dll
34 SQL_FLAGS= $(SQLITE_INCLUDES) /DHAVE_SQLITE=1
35 SQLITE_LIBS = /libpath:$(SQLITE_LIBPATH) libsqlite.lib
36 !ENDIF
37
38 PLUGINS=saslANONYMOUS.dll \
39         saslPLAIN.dll \
40         saslCRAMMD5.dll \
41         saslDIGESTMD5.dll \
42         saslLOGIN.dll \
43         $(PLUGINS_EXT) \
44         saslSASLDB.dll
45
46 generated_rc=saslANONYMOUS.rc saslPLAIN.rc saslCRAMMD5.rc saslDIGESTMD5.rc saslLOGIN.rc saslNTLM.rc saslGSSAPI.rc saslSRP.rc saslOTP.rc saslSASLDB.rc saslSQLITE.rc saslLDAPDB.rc
47
48 # WS2tcpip.h included in Visual Studio 7 provides getaddrinfo, ...
49 # emulation on Windows, so there is no need to build getaddrinfo.c
50
51 !IF "$(VCVER)" == "6"
52 compat_sources = getaddrinfo.c getnameinfo.c
53 compat_objs = getaddrinfo.obj getnameinfo.obj
54 !ENDIF
55
56 common_sources = plugin_common.c plugin_common.h
57 common_objs = plugin_common.obj $(compat_objs)
58
59 saslANONYMOUS_sources = anonymous.c anonymous_init.c $(common_sources)
60 saslANONYMOUS_objs = anonymous.obj anonymous_init.obj $(common_objs)
61 saslANONYMOUS_out = saslANONYMOUS.dll saslANONYMOUS.exp saslANONYMOUS.lib
62
63 saslPLAIN_sources = plain.c plain_init.c $(common_sources)
64 saslPLAIN_objs = plain.obj plain_init.obj $(common_objs)
65 saslPLAIN_out = saslPLAIN.dll saslPLAIN.exp saslPLAIN.lib
66
67 saslCRAMMD5_sources = cram.c crammd5_init.c $(common_sources)
68 saslCRAMMD5_objs = cram.obj crammd5_init.obj $(common_objs)
69 saslCRAMMD5_out = saslCRAMMD5.dll saslCRAMMD5.exp saslCRAMMD5.lib
70
71 saslDIGESTMD5_sources = digestmd5.c digestmd5_init.c $(common_sources)
72 saslDIGESTMD5_objs = digestmd5.obj digestmd5_init.obj $(common_objs)
73 saslDIGESTMD5_out = saslDIGESTMD5.dll saslDIGESTMD5.exp saslDIGESTMD5.lib
74
75 saslLOGIN_sources = login.c login_init.c $(common_sources)
76 saslLOGIN_objs = login.obj login_init.obj $(common_objs)
77 saslLOGIN_out = saslLOGIN.dll saslLOGIN.exp saslLOGIN.lib
78
79 saslNTLM_sources = ntlm.c ntlm_init.c $(common_sources)
80 saslNTLM_objs = ntlm.obj ntlm_init.obj $(common_objs)
81 saslNTLM_out = saslNTLM.dll saslNTLM.exp saslNTLM.lib
82
83 saslGSSAPI_sources = gssapi.c gssapiv2_init.c $(common_sources)
84 saslGSSAPI_objs = gssapi.obj gssapiv2_init.obj $(common_objs)
85 saslGSSAPI_out = saslGSSAPI.dll saslGSSAPI.exp saslGSSAPI.lib
86
87 saslSRP_sources = srp.c srp_init.c $(common_sources)
88 saslSRP_objs = srp.obj srp_init.obj $(common_objs)
89 saslSRP_out = saslSRP.dll saslSRP.exp saslSRP.lib
90
91 saslOTP_sources = otp.c otp_init.c $(common_sources)
92 saslOTP_objs = otp.obj otp_init.obj $(common_objs)
93 saslOTP_out = saslOTP.dll saslOTP.exp saslOTP.lib
94
95 saslSQL_sources = sql.c sql_init.c $(common_sources)
96 saslSQL_objs = sql.obj sql_init.obj $(common_objs)
97 # saslSQL_out is an agregation of all generated files for all SQL plugins
98 saslSQL_out = saslSQLITE.dll saslSQLITE.exp saslSQLITE.lib
99
100 saslLDAPDB_sources = ldapdb.c $(common_sources)
101 saslLDAPDB_objs = ldapdb.obj $(common_objs)
102 saslLDAPDB_out = saslLDAPDB.dll saslLDAPDB.exp saslLDAPDB.lib
103
104 !IF "$(NTLM)" == "1" || "$(SRP)" == "1" || "$(OTP)" == "1"
105 OPENSSL_FLAGS= /I $(OPENSSL_INCLUDE)
106 !ELSE 
107 OPENSSL_FLAGS=
108 !ENDIF 
109
110 !IF "$(GSSAPI)" == "CyberSafe"
111 GSS_FLAGS= /I $(GSSAPI_INCLUDE) /D "HAVE_GSS_C_NT_HOSTBASED_SERVICE" /D "HAVE_GSS_C_NT_USER_NAME"
112 GSS_LIBS=/libpath:$(GSSAPI_LIBPATH) gssapi32.lib
113 !ELSE 
114 GSS_FLAGS=
115 GSS_LIBS=
116 !ENDIF 
117
118 DIGEST_FLAGS=/D "WITH_RC4"
119
120 # Auxprop Plugin
121 libsasldb_sources = allockey.c db_berkeley.c
122 libsasldb_objs = allockey.obj db_berkeley.obj
123
124 saslSASLDB_sources = sasldb.c sasldb_init.c $(libsasldb_sources) $(common_sources)
125 saslSASLDB_objs = sasldb.obj sasldb_init.obj $(libsasldb_objs) $(common_objs)
126 saslSASLDB_out = saslSASLDB.dll saslSASLDB.exp saslSASLDB.lib
127
128 all_objs = $(saslANONYMOUS_objs) $(saslPLAIN_objs) $(saslCRAMMD5_objs) $(saslDIGESTMD5_objs) $(saslLOGIN_objs) $(saslNTLM_objs) $(saslGSSAPI_objs) $(saslSRP_objs) $(saslOTP_objs) $(saslSASLDB_objs) $(saslSQL_objs) $(saslLDAPDB_objs)
129 all_out = $(saslANONYMOUS_out) $(saslPLAIN_out) $(saslCRAMMD5_out) $(saslDIGESTMD5_out) $(saslLOGIN_out) $(saslNTLM_out) $(saslGSSAPI_out) $(saslSRP_out) $(saslOTP_out) $(saslSASLDB_out) $(saslSQL_out) $(saslLDAPDB_out)
130
131 # LIBSASL_EXPORTS is required to export additional DB routines from sasldb
132 DB_FLAGS = /I $(DB_INCLUDE) /I "..\sasldb" /D "LIBSASL_EXPORTS" /D "KEEP_DB_OPEN"
133
134 !IF $(TARGET_WIN_SYSTEM) >= 51
135 EXTRA_FLAGS = /D TARGET_WIN_SYSTEM=$(TARGET_WIN_SYSTEM) $(EXTRA_FLAGS)
136 !ENDIF
137
138 EXTRA_FLAGS=$(EXTRA_FLAGS) $(DB_FLAGS) $(OPENSSL_FLAGS) $(GSS_FLAGS) $(SRP_FLAGS) $(SQL_FLAGS) $(DIGEST_FLAGS) $(LDAP_FLAGS)
139 CPPFLAGS = /I "..\win32\include" /I "." /I "..\include" $(EXTRA_FLAGS) /D "WIN32" /D "_WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL"
140
141 DB_LIBS=/libpath:$(DB_LIBPATH) $(DB_LIB)
142 OPENSSL_LIBS=/libpath:$(OPENSSL_LIBPATH) libeay32.lib ssleay32.lib
143
144 # Where to install files from this directory
145 libdir = $(prefix)\lib
146 bindir = $(prefix)\bin\sasl2
147
148 all : all-recursive
149
150 #
151 # /I flag to xcopy tells to treat the last parameter as directory and create all missing levels
152 #
153 # In order to force xcopy not to confirm if the second parameter is file or directory,
154 # the first parameter has to contain a wildcard character. For example, we use libsasl.l*,
155 # instead of libsasl.lib. Ugly, but works!
156 #
157 # Note, that we will copy all dlls here, not just $(PLUGINS). This is a bug, but it allows
158 # us to copy GSSAPI plugin, which might not be in $(PLUGINS).
159 #
160 install: $(PLUGINS)
161         @xcopy *.dll $(bindir) /I /F /Y
162
163 all-recursive : $(PLUGINS)
164
165 getaddrinfo.c: ..\lib\getaddrinfo.c
166         copy ..\lib\getaddrinfo.c .
167
168 getnameinfo.c: ..\lib\getnameinfo.c
169         copy ..\lib\getnameinfo.c .
170
171 allockey.c: ..\sasldb\allockey.c
172         copy ..\sasldb\allockey.c .
173
174 db_berkeley.c: ..\sasldb\db_berkeley.c
175         copy ..\sasldb\db_berkeley.c .
176
177 #Add /pdb: option?
178
179 saslANONYMOUS.dll: $(saslANONYMOUS_objs) saslANONYMOUS.res
180         $(LINK32DLL) @<< $(LINK32DLL_FLAGS) /out:"saslANONYMOUS.dll" /implib:"saslANONYMOUS.lib" $(saslANONYMOUS_objs) saslANONYMOUS.res
181 <<
182
183 saslPLAIN.dll: $(saslPLAIN_objs) saslPLAIN.res
184         $(LINK32DLL) @<< $(LINK32DLL_FLAGS) /out:"saslPLAIN.dll" /implib:"saslPLAIN.lib" $(saslPLAIN_objs) saslPLAIN.res
185 <<
186
187 saslCRAMMD5.dll: $(saslCRAMMD5_objs) saslCRAMMD5.res
188         $(LINK32DLL) @<< $(LINK32DLL_FLAGS) /out:"saslCRAMMD5.dll" /implib:"saslCRAMMD5.lib" $(saslCRAMMD5_objs) saslCRAMMD5.res
189 <<
190
191 saslDIGESTMD5.dll: $(saslDIGESTMD5_objs) saslDIGESTMD5.res
192         $(LINK32DLL) @<< $(LINK32DLL_FLAGS) /out:"saslDIGESTMD5.dll" /implib:"saslDIGESTMD5.lib" $(saslDIGESTMD5_objs) saslDIGESTMD5.res
193 <<
194
195 saslLOGIN.dll: $(saslLOGIN_objs) saslLOGIN.res
196         $(LINK32DLL) @<< $(LINK32DLL_FLAGS) /out:"saslLOGIN.dll" /implib:"saslLOGIN.lib" $(saslLOGIN_objs) saslLOGIN.res
197 <<
198
199 saslNTLM.dll: $(saslNTLM_objs) saslNTLM.res
200         $(LINK32DLL) @<< $(OPENSSL_LIBS) $(LINK32DLL_FLAGS) /out:"saslNTLM.dll" /implib:"saslNTLM.lib" $(saslNTLM_objs) saslNTLM.res
201 <<
202
203 saslGSSAPI.dll: $(saslGSSAPI_objs) saslGSSAPI.res
204         $(LINK32DLL) @<< $(GSS_LIBS) $(LINK32DLL_FLAGS) /out:"saslGSSAPI.dll" /implib:"saslGSSAPI.lib" $(saslGSSAPI_objs) saslGSSAPI.res
205 <<
206
207 saslSRP.dll: $(saslSRP_objs) saslSRP.res
208         $(LINK32DLL) @<< $(OPENSSL_LIBS) $(LINK32DLL_FLAGS) /out:"saslSRP.dll" /implib:"saslSRP.lib" $(saslSRP_objs) saslSRP.res
209 <<
210
211 saslOTP.dll: $(saslOTP_objs) saslOTP.res
212         $(LINK32DLL) @<< $(OPENSSL_LIBS) $(LINK32DLL_FLAGS) /out:"saslOTP.dll" /implib:"saslOTP.lib" $(saslOTP_objs) saslOTP.res
213 <<
214
215 saslSASLDB.dll: $(saslSASLDB_objs) saslSASLDB.res
216         $(LINK32DLL) @<< $(DB_LIBS) $(LINK32DLL_FLAGS) /out:"saslSASLDB.dll" /implib:"saslSASLDB.lib" $(saslSASLDB_objs) saslSASLDB.res
217 <<
218
219 saslSQLITE.dll: $(saslSQL_objs) saslSQLITE.res
220         $(LINK32DLL) @<< $(SQLITE_LIBS) $(LINK32DLL_FLAGS) /out:"saslSQLITE.dll" /implib:"saslSQLITE.lib" $(saslSQL_objs) saslSQLITE.res
221 <<
222
223 saslLDAPDB.dll: $(saslLDAPDB_objs) saslLDAPDB.res
224         $(LINK32DLL) @<< $(LDAP_LIBS) $(OPENSSL_LIBS) $(LINK32DLL_FLAGS) /out:"saslLDAPDB.dll" /implib:"saslLDAPDB.lib" $(saslLDAPDB_objs) saslLDAPDB.res
225 <<
226
227 CLEAN :
228         -@erase $(all_objs)
229         -@erase "*.idb"
230         -@erase "*.pdb"
231         -@erase getaddrinfo.c
232         -@erase allockey.c
233         -@erase db_berkeley.c
234         -@erase getnameinfo.c
235         -@erase $(generated_rc)
236         -@erase "*.res"
237         -@erase $(all_out)
238
239 .c.obj::
240    $(CPP) @<<
241    $(CPP_PROJ) $< 
242 <<
243
244 .cpp.obj::
245    $(CPP) @<<
246    $(CPP_PROJ) $< 
247 <<
248
249 .cxx.obj::
250    $(CPP) @<<
251    $(CPP_PROJ) $< 
252 <<
253
254 .rc.res:
255         rc $<
256
257 $(generated_rc):
258         copy <<temp.rc $@
259 #include "afxres.h"
260
261 VS_VERSION_INFO VERSIONINFO
262  FILEVERSION $(SASL_VERSION_MAJOR),$(SASL_VERSION_MINOR),$(SASL_VERSION_STEP),0
263  PRODUCTVERSION $(SASL_VERSION_MAJOR),$(SASL_VERSION_MINOR),$(SASL_VERSION_STEP),0
264  FILEFLAGSMASK 0x3fL
265 #ifdef _DEBUG
266  FILEFLAGS 0x1L
267 #else
268  FILEFLAGS 0x0L
269 #endif
270  FILEOS 0x40004L
271  FILETYPE 0x1L
272  FILESUBTYPE 0x0L
273 BEGIN
274     BLOCK "StringFileInfo"
275     BEGIN
276         BLOCK "040904b0"
277         BEGIN
278             VALUE "CompanyName", "Carnegie Mellon University\0"
279             VALUE "FileDescription", "CMU SASL $(@B) plugin\0"
280             VALUE "FileVersion", "$(SASL_VERSION_MAJOR).$(SASL_VERSION_MINOR).$(SASL_VERSION_STEP).0\0"
281             VALUE "InternalName", "$(@B)\0"
282             VALUE "LegalCopyright", "Copyright (c) Carnegie Mellon University 2005\0"
283             VALUE "OriginalFilename", "$(@B).dll\0"
284             VALUE "ProductName", "Carnegie Mellon University SASL\0"
285             VALUE "ProductVersion", "$(SASL_VERSION_MAJOR).$(SASL_VERSION_MINOR).$(SASL_VERSION_STEP)-0"
286         END
287     END
288     BLOCK "VarFileInfo"
289     BEGIN
290         VALUE "Translation", 0x409, 1200
291     END
292 END
293 <<