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