<html><head> <title>Building Cyrus SASL on Windows</title> </head> <body> <h1>Building Cyrus SASL on Windows</h1> Note, that Cyrus SASL on Windows is still laregely a "work in progress". So far only the main library, plugins (SASLDB using SleepyCat, no MySQL) and two applications (saslpasswd2.exe and sasldblistusers2.exe) can be built. <h2>Prerequisites</h2> <ul> <li>Visual Studio. We have tested Visual Studio 6 and Visual Studio 7 (.NET). <li>The latest Platform SDK. We've tested November 2001. <li>SleepyCat include files and libraries are required to buil SASLDB plugin, saslpasswd2.exe and sasldblistusers2.exe. We have tested SleepyCat 4.1.X. <li>If you are building directly from CVS, you'll need the <a href="http://www.cygwin.com/">Cygwin</a> Unix-compatibility environment to create the <tt>_init.c</tt> files needed for dynamic loading. Cygwin is <em>not</em> required for building from our tar distribution. </ul> <h2>Step by step</h2> These directions assume that you've untarred the library or used CVS and the sources are in <tt>C:\SASL</tt>. <h3>preparing to build (cvs only!)</h3> Start a cygwin shell and create the dynamic loading stubs: <pre> % cd /cygdrive/c/sasl/plugins % sh makeinit.sh </pre> <h3>building using NMake</h3> Open a "Windows 2000 build environment" from the SDK's Start Menu and use "<tt>nmake /f NTMakefile</tt>" to build. <p>To build a debug verison, use "<tt>nmake /f NTMakefile CFG=Debug</tt>". For a production version, "<tt>nmake /f NTMakefile CFG=Release</tt>". If you don't specify CFG parameter, production version will be built by default. <p>As Windows build requires SleepyCat, there are additional options that has to be provided to NMake on the command line. If SleepyCat sources are located in <tt>c:\packages\db\4.1.24</tt> and built library in <tt>c:\packages\db\4.1.24\build_win32\Release_static</tt>, you should add something like <tt>DB_INCLUDE=c:\packages\db\4.1.24\build_win32</tt> and <tt>DB_LIBPATH=c:\packages\db\4.1.24\build_win32\Release_static</tt>. <br>Also note, that the <tt>DB_LIB</tt> defines the name of the SleepyCat library to link against. It defaults to libdb41s.lib. <br>If you don't pass the parameters described above, NMake will pick the defaults, which is probably not what you want. <p>Another option of interest is <tt>STATIC</tt>. It specifies which version of the standard C library to use. The default is "no", meaning that the standard C library from the MSVCRT.DLL will be used. <p>Example: <pre> Targeting Windows 2000 and IE 5.0 RETAIL C:\Program Files\Microsoft SDK> cd \sasl C:\sasl> nmake /f NTMakefile DB_INCLUDE=c:\packages\db\4.1.24\build_win32 DB_LIBPATH=c:\packages\db\4.1.24\build_win32\Release_static No configuration specified. Defaulting to Release. Using MSVCRT.dll as C library by default. Defaulting SleepyCat library name to libdb41s.lib. Codegeneration defaulting to /MD. ... </pre> <p>SASL NTMakefile also understands "clean" target that you can use to clean all files generated by the compiler. <pre> C:\sasl> nmake /f NTMakefile clean Microsoft (R) Program Maintenance Utility Version 7.00.9466 Copyright (C) Microsoft Corporation. All rights reserved. cd lib && nmake /f NTMakefile clean Microsoft (R) Program Maintenance Utility Version 7.00.9466 Copyright (C) Microsoft Corporation. All rights reserved. No configuration specified. Defaulting to Release. Using MSVCRT.dll as C library by default. Defaulting SleepyCat library name to libdb41s.lib. Defaulting SleepyCat include path to c:\work\isode\db\build_win32. Defaulting SleepyCat library path to c:\work\isode\db\build_win32\Release_static. ... </pre> <h3>Building additional plugins</h3> <p>Specify "GSSAPI=<type>" parameter if you want to enable GSSAPI plugin. Currently only <type>=CyberSafe is supported and this will build the plugin that links against CyberSafe Kerberos. GSSAPI depends on <tt>GSSAPI_INCLUDE</tt> and <tt>GSSAPI_LIBPATH</tt> parameters. You can either specify them on the command line or edit the defaults in win32\common.mak <p>Specify "NTLM=1" parameter if you want to enable NTLM plugin. I.e. "<tt>nmake /f NTMakefile NTLM=1</tt>" <p>Specify "SRP=1" parameter if you want to enable SRP plugin. <p>Both NTLM and SRP plugins depend on OpenSSL. You can either specify <tt>OPENSSL_INCLUDE</tt> and <tt>OPENSSL_LIBPATH</tt> parameters on the command line or edit the defaults in win32\common.mak <h3>limitations</h3> Currently only the following plugins build: <ul> <li>ANONYMOUS, <li>LOGIN, <li>PLAIN, <li>CRAM-MD5, <li>DIGEST-MD5 <li>SASLDB (using SleepyCat), <li>NTLM, <li>GSSAPI (tested using CyberSafe), <li>SRP (not tested) </ul> The following executables were built and tested (to some extend): In sample: <ul> <li>sample-client <li>sample-server </ul> In utils: <ul> <li>sasldblistusers2 <li>saslpasswd2 <li>testsuite </ul> Yes, saslauthd is NOT in this list. <h3>testing</h3> <h3>creating an MSI</h3> </body> </html>