On Friday, October 19, 2012 9:39:09 AM UTC-5, Mathias Fricke wrote:
> hi,
> 
> 
> 
> i include my notes from the same procedure. it's been a while since i did  
> 
> it and i am happy to say that in the foreseeable future there's no need to  
> 
> do it again -- building MOZLDAP for Windows is one of the worst nightmares  
> 
> i've encountered ... (yes, i am spoiled linux user)
> 
> i certainly hope that either someone creates reliable binaries to be  
> 
> downloaded or that this preposterous way to build is replaced by something  
> 
> less sick and better documented.
> 
> 
> 
> - VS 2010 was used
> 
> - check paths
> 
> 
> 
> <notes>
> 
> 
> 
> ftp://ftp.mozilla.org/pub/mozilla.org/directory/c-sdk/releases/v6.0.4/ldapcsdk-6.0.3-WINNT5.2_DBG.OBJ.zip
> 
> 
> 
> more recent:
> 
> 
> 
> http://www.devsource.com/c/a/Using-VS/Working-at-the-Visual-Studio-Command-Line/
> 
> 
> 
> !!!MAKE SURE TO HAVE NO SPACES IN FOLDER OR FILE NAMES!!!
> 
> unpack all mozilla stuff into the same structure (mozilla/directory) --  
> 
> that way everything will end up in mozilla/dist/:x
> 
> 
> 
> NSS/NSPR:
> 
> - get and install  
> 
> http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/MozillaBuildSetup-Latest.exe
> 
> - get and unpack latest NSS/NSPR sources from  
> 
> https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_<VERSION>_RTM/src/nss-<VERSION>-with-nspr-<VERSION>.tar.gz
> 
> - in Windows go to MozillaBuildSetup's install dir and start with  
> 
> start-msvcXX.bat where XX equals the msvcr dll from the installed VS  
> 
> (80=VS2005, 90=VS2008, 10=VS2010, ...) - a shell will open up
> 
> - cd to the folder you unpacked the NSS into
> 
> - cd to folder nsprpub/ and do configure && make -- .dlls and .libs should  
> 
> be created
> 
> !!!64BIT:
> 
> * export BUILD_OPT=1 USE_64=1
> 
> * ./configure --enable-64bit
> 
> !!!
> 
> - cd to folder ../security/dbm/ and do
> 
> $  
> 
> INCLUDES+="-I/c/Users/username/Desktop/SW_Development/nss-3.13.3/mozilla/nsprpub/dist/include/nspr/
>   
> 
> -I/c/Users/username/Desktop/SW_Development/nss-3.13.3/mozilla/security/dbm/include"
>   
> 
> \
> 
> make
> 
> - .dll and .lib should be created (? neither nor -- is it an .obj and  
> 
> linked in statically into NSS?)
> 
> - make sure the path of NSPR_LIB_DIR is a dos style path! it becomes  
> 
> argument for VS' linker which only understands dos style paths (LNK1104  
> 
> may occure otherwise)
> 
> - cd to folder ../nss and do
> 
> 
> 
> $  
> 
> NSPR_LIB_DIR="c:/Users/username/Desktop/SW_Development/nss-3.13.3/mozilla/nsprpub/dist/lib"
>   
> 
> \
> 
> INCLUDES+="-I/c/Users/username/Desktop/SW_Development/nss-3.13.3/mozilla/nsprpub/dist/include/nspr/
>   
> 
> -I/c/Users/username/Desktop/SW_Development/nss-3.13.3/mozilla/security/dbm/include"
>   
> 
> \
> 
> make
> 
> 
> 
> 
> 
> - use absolute paths for includes -- you'll never know how deep the  
> 
> calling folder/file will be in the hierarchy (there's probably a  
> 
> configuration option somewehere -- but documentation is bad)
> 
> 
> 
> - use
> 
> 
> 
> $ RELEASE_TREE="<somefolder>"  
> 
> NSPR_LIB_DIR="c:/Users/username/Desktop/SW_Development/nss-3.13.3/mozilla/nsprpub/dist/lib"
>   
> 
> \
> 
> INCLUDES+="-I/c/Users/username/Desktop/SW_Development/nss-3.13.3/mozilla/nsprpub/dist/include/nspr/
>   
> 
> -I/c/Users/username/Desktop/SW_Development/nss-3.13.3/mozilla/security/dbm/include"
>   
> 
> \
> 
> make release
> 
> 
> 
> to export headers as one jar and exe/lib/dll as another in  
> 
> <somefolder>/nss/
> 
> 
> 
> - true to style, it's not that simple with NSPR (internal paths hardcoded,  
> 
> no checks for external and so on) -- so, simply do
> 
> 
> 
> BUILD_NUMBER=<whatever> make relase
> 
> 
> 
> it will finish with an error, but create a folder  
> 
> dist/release/nspr20/<whatever>/ containing everything and more. just zip  
> 
> that
> 
> 
> 
> 
> 
> OpenSSL:
> 
> 
> 
> necessary only for SASL SCARM plugin -- if you disable that, we don't go  
> 
> through all the hassle (which doesn't work in 64bit so far anyway)
> 
> 
> 
> * for MingW on Linux see below! *
> 
> http://www.timvw.be/2008/04/21/build-openssl-with-visual-studio-2008/ (no  
> 
> idea what file he changed)
> 
> http://wiki.apache.org/httpd/Win64Compilation
> 
> * WIN64A does not work, use MingW/Linux *
> 
> - get and unpack from http://www.openssl.org/source/
> 
> - you may need to install NASM from  
> 
> http://www.nasm.us/pub/nasm/releasebuilds/<VERSION>/win32/ and add it to  
> 
> the path of the VS console below
> 
> - open VS shell, this will set all necessary variables: Start -> VS -> VS  
> 
> Tools -> VS Command Prompt (make sure to use the 32bit for now) and add  
> 
> MozillaBuild's perl to the PATH
> 
> PATH=<pathtoperl>;%PATH%
> 
> - do
> 
> perl Configure VC-WIN32 --prefix=../ossl
> 
> - and then either
> 
> ms\do_nt.bat OR ms\do_nasm.bat
> 
> OR (WIN64A does not work apparently, errors over errors)
> 
> perl Configure VC-WIN64A --prefix=../ossl
> 
> ms\dowin64a.bat
> 
> 
> 
> - if there's an error you may need to patch util/mk1mf.pl (see  
> 
> http://stackoverflow.com/questions/7680189/openssl-cant-build-in-vc-2010):
> 
> <quote>
> 
> The problem seems to be related to eol (end of lines). The solution is to  
> 
> patch mk1mf.pl to make it remove the carriage-return:
> 
> Index: mk1mf.pl
> 
> ===================================================================
> 
> --- mk1mf.pl    (revision 88908)
> 
> +++ mk1mf.pl    (working copy)
> 
> @@ -315,7 +315,7 @@
> 
>   for (;;)
> 
>          {
> 
>          chop;
> 
> 
> 
> +       s/\r$//; #remove carriage return too!
> 
>          ($key,$val)=/^([^=]+)=(.*)/;
> 
>          if ($key eq "RELATIVE_DIRECTORY")
> 
>                  {
> 
> 
> 
> Found the solution in openssl users mailing:
> 
> 
> 
> http://groups.google.com/group/mailing.openssl.users/browse_thread/thread/42a8f226f1fc279f)
> 
> </quote>
> 
> 
> 
> - next
> 
> nmake -f ms\ntdll.mak
> 
> - when assembler (ml) fails in x86cpuid.asm, maybe type of  
> 
> _OPENSSL_ia32cap_P has to be changed from QWORD to DWORD? problem does not  
> 
> occure with NASM
> 
> - when build hangs while trying to write >tmp32dll\sha1-586.asm -- cancel  
> 
> and call manually. all those processor/compiler flags confuse perl ...
> 
> 
> 
> perl crypto\sha\asm\sha1-586.pl win32n /MD /Ox /O2 /Ob2   
> 
> >tmp32dll\sha1-586.asm
> 
> 
> 
> - do again
> 
> 
> 
> nmake -f ms\ntdll.mak
> 
> nmake -f ms\ntdll.mak test
> 
> nmake -f ms\ntdll.mak install
> 
> 
> 
> 
> 
> *** MingW/Linux ***
> 
> http://marc.waeckerlin.org/computer/blog/openssl_fuer_windows_mingw_unter_linux_crosscomilieren
> 
> http://www.blogcompiler.com/2011/12/21/openssl-for-windows/
> 
> - install
> 
> binutils-mingw-w64-i686
> 
> binutils-mingw-w64
> 
> binutils-mingw-w64-x86-64
> 
> gcc-mingw-w64
> 
> mingw-w64-dev
> 
> mingw-w64
> 
> mingw-w64-tools
> 
> 
> 
> - go to unpacked sources and do
> 
> ./Configure --prefix=/tmp/ossl64  
> 
> --cross-compile-prefix="x86_64-w64-mingw32-" mingw64 shared
> 
> - "mingw64" to compile in mingw environment 64bit dlls
> 
> - "shared" to get dlls
> 
> - --cross-compile-prefix="x86_64-w64-mingw32-" so that gcc, ld, ... are  
> 
> prefixed and thus the mingw ones are used
> 
> 
> 
> 
> 
> SASL:
> 
> - get und unpack latest  
> 
> http://asg3.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-<VERSION>.tar.gz
> 
> - patch NTMakefile in plugins/ and utils/ to make SASLDB optional (not  
> 
> needed in client anyway) with SASL_[plugins|utils]_NTMakefile.patch --  
> 
> work with 2.1.25, based on  
> 
> ftp://ftp.mozilla.org/pub/mozilla.org/directory/c-sdk/patches/
> 
> 
> 
> patch --dry-run -p0 < SASL_..._NTMakefile.patch (test, if ok remove  
> 
> --dry-run)
> 
> 
> 
> - open VS shell, this will set all necessary variables: Start -> VS -> VS  
> 
> Tools -> VS Command Prompt (make sure to use the 32bit for now)
> 
> - add OpenSSL includes to path:
> 
> 
> 
> set  
> 
> INCLUDES=%INCLUDES%;c:\Users\username\Desktop\SW_Development\ossl\include\  
> 
> (same path as in --prefix from OpenSSL compilation!)
> 
> set OPENSSL_INCLUDE=c:\Users\username\Desktop\SW_Development\ossl\include\  
> 
> (same path as in --prefix from OpenSSL compilation!)
> 
> 
> 
> - add OpenSSL libs to path:
> 
> 
> 
> set LIB=%LIB%;c:\Users\username\Desktop\SW_Development\ossl\lib\ (same  
> 
> path as in --prefix from OpenSSL compilation!)
> 
> set OPENSSL_LIBPATHc:\Users\username\Desktop\SW_Development\ossl\lib\  
> 
> (same path as in --prefix from OpenSSL compilation!)
> 
> 
> 
> - do
> 
> 
> 
> nmake -f NTMakefile
> 
> 
> 
> - if that's ok, do
> 
> 
> 
> nmake -f NTMakefile install
> 
> 
> 
> this will install into C:\CMU! apparently even developers of OSS don't  
> 
> really believe in the user when it comes to Windows ... to change that one  
> 
> would need to change several lines in several config files, no single  
> 
> option
> 
> !!! WIN64: i disabled SCRAM since the OpenSSL did not provide .lib files  
> 
> to link against: !!!
> 
> plguins/NTMakefile:
> 
> line 2: set from =1 to SCRAM=0
> 
> line 54: removed saslSCRAM.dll
> 
> 
> 
> SRVCORE???
> 
> 
> 
> LDAP C SDK:
> 
> - configure
> 
> 
> 
> export  
> 
> SASL_LIBS=c:/Users/username/Desktop/SW_Development/CMU_2.1.25/lib/libsasl.lib 
>  
> 
> (MS linker needs this -- else it fails b/c libsasl.lib not found)
> 
> ./configure  
> 
> --with-nss-inc=/c/Users/username/Desktop/SW_Development/nss-3.13.3/mozilla/dist/release/no-policy/include/
>   
> 
> --with-nss-lib=/c/Users/username/Desktop/SW_Development/nss-3.13.3/mozilla/dist/release/no-policy/WINNT6.1_DBG.OBJ/lib/
>   
> 
> --with-nspr-inc=/c/Users//username//Desktop/SW_Development/nss-3.13.3/mozilla/nsprpub/dist/release/nspr20/4.9_20120320/include/
>   
> 
> --with-nspr-lib=/c/Users/username/Desktop/SW_Development/nss-3.13.3/mozilla/nsprpub/dist/release/nspr20/4.9_20120320/lib/
>   
> 
> --with-sasl-inc=/c/Users/username/Desktop/SW_Development/cyrus-sasl-2.1.25/include/
> 
> 
> 
> - make
> 
> 
> 
> make
> 
> make install
> 
> 
> 
> - results will be in
> 
> C:\Users\username\Desktop\SW_Development\mozldap-6.0.7\mozilla\dist\
> 
> 
> 
> </notes>
> 
> 
> 
> HTH a little
> 
> 
> 
> > Trying to upgrade our isapi filter that uses an old 32 bit openldap50  
> 
> > library.  Everything needs to be 64 bit and therefore including the open  
> 
> > ldap sdk.  I downloaded the latest version which is mozldap-6.0.7 and  
> 
> > the MozillaBuild 1.3.  I installed VC2012.  I fixed some syntax problem  
> 
> > in the ldapsdk.mak file.  I started the MozillaBuild and issue the make  
> 
> > command "make -f ldapsdk.mak build_all".  The MozillaBuild complaint  
> 
> > that the nsldap.mak file does not exist.  The ldapsdk.mak make file is  
> 
> > looking for the nsldap.mak file within the folder  
> 
> > c-sdk/ldap/libraries/msdos/winsock and indeed the file does not exist.   
> 
> > Am I doing the right thing or this is not the way to build the sdk.  Am  
> 
> > I missing some steps prior to this build such as needing to download  
> 
> > other modules and configure those first?  I appreciate if someone can  
> 
> > help.
> 
> >
> 
> > C:\mozilla\directory>c:\mozilla-build\start-msvc11-x64.bat
> 
> > "Mozilla tools directory: c:\mozilla-build\"
> 
> > Visual C++ 6 directory:
> 
> > Visual C++ 7.1 directory:
> 
> > Visual C++ 8 directory:
> 
> > Visual C++ 8 Express directory:
> 
> > Visual C++ 9 directory:
> 
> > Visual C++ 9 Express directory:
> 
> > Platform SDK directory:
> 
> > Platform SDK version:
> 
> > Using VC 2012 built-in SDK
> 
> > The system cannot find the path specified.
> 
> > Mozilla build environment: MSVC version 11.
> 
> >
> 
> > andrewy@11C-1040 ~
> 
> > $ cd ../../mozilla/directory/
> 
> >
> 
> > andrewy@11C-1040 /c/mozilla/directory
> 
> > $ make -f ldapsdk.mak build_all
> 
> > +++ ldapsdk.mak: building ldap
> 
> > cd c-sdk/ldap/libraries/msdos/winsock
> 
> > +++ ldapsdk.mak: depend step
> 
> > NMAKE : fatal error U1052: file 'nsldap.mak' not found
> 
> > Stop.
> 
> > make: *** [build_ldap] Error 2
> 
> > _______________________________________________
> 
> > dev-tech-ldap mailing list
> 
> > dev-tech-ldap@lists.mozilla.org
> 
> > https://lists.mozilla.org/listinfo/dev-tech-ldap

Thank you for the note.  It is very helpful.  I lucked out on the OpenSSL as I 
found a 64 bit binary download for Windows.  Other than that, the compile 
process ran smoothly to a certain extend.  I have to modify the Mozilla-Build 
to support VC2012.  I couldn't get the INCLUDES+= working so I end up copying 
the header files to a known directory.  Now I just need to test it to see if it 
works.
_______________________________________________
dev-tech-ldap mailing list
dev-tech-ldap@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-ldap

Reply via email to