Trac is being migrated to new services! Issues can be found in our new YouTrack instance and WIKI pages can be found on our website.

Version 34 (modified by itsnotabigtruck, 12 years ago) (diff)

Initial work on updating page for DDK build and current NSS version

Building NSS on Windows

Preamble

NSS stands for Network Security Services. NSS is required to use SSL in Pidgin. NSS depends on NSPR and a shared database (SQLite since NSS 3.12), but you don't have to worry about these, there's and NSS with NSPR package which is compact thus it contains all sources required to build NSS.

Note: at the moment you can't build NSS completely using GCC. It fails at the final stage when linking additional tools. However, you can build all the important libraries successfully. It will hopefully be improved in the future. You can, however, build NSS completely with the Windows Driver Kit, but you'll need the NSS-WDK patch (binaries here).

Prerequisites

  1. Get the Windows SDK:
    Download the Windows SDK for Windows 7 SP1 and install it to the default location.
  2. Get the Windows Driver Kit (WDK):
    Download the WDK for Windows 7 SP1 and install it to the default location.
  3. Get the Netscape Portable Runtime (NSPR):
    Download the latest version of NSPR (currently 4.8.9) and extract it to c:\devel\pidgin-devel\win32-dev.
  4. Get Network Security Services (NSS):
    Download the latest version of NSS (currently 3.12.11 w/ CKBI 1.87) and extract it to the same location.
  5. Get MozillaBuild:
    Download the latest version of MozillaBuild and install it to c:\devel\mozilla-build.

Choose build configuration

The two most important options are:

  • optimization
  • debug RTL

You can toggle them with environmental variables. Here's the matrix:

  USE_DEBUG_RTL= USE_DEBUG_RTL=1
BUILD_OPT= WINNT6.1_DBG.OBJ WINNT6.1_DBG.OBJD
BUILD_OPT=1 WINNT6.1_OPT.OBJ N/A

The version after WINNT is the version of your current OS (you can check it with the winver command). WINNT6.1 assumes you're building on Windows 7. The default setting is an unoptimized build with the release RTL (WINNT6.1_DBG.OBJ).

WARNING: it seems the builder considers any variable as 1 if it's set. So if you enter

set BUILD_OPT=0

you'll get an optimized build although you wanted a debug one. The answer lies in mozilla\security\coreconf\WIN32.mk. They check variables with ifdefs, which is just plain wrong (or they should mention it this way in the documentation).

Solution: set a variable only if you want the related build. Here's the table for seeing what you actually have to enter and what you'll get:

USE_DEBUG_RTL=1BUILD_OPT=1
OS_TARGET=WIN95WIN954.0_DBG.OBJWIN954.0_DBG.OBJDWIN954.0_OPT.OBJ
OS_TARGET=WINNTWINNT6.1_DBG.OBJWINNT6.1_DBG.OBJDWINNT6.1_OPT.OBJ

OS_TARGET is an exception and isn't affected by this error because it's not numerical, so the script checks for its value instead of its existence. As a sidenote, BUILD_OPT seems to have a higher priority than USE_DEBUG_RTL, so if you enter

set BUILD_OPT=1
set USE_DEBUG_RTL=1

you'll get an optimized build without linking with the debug RTL. In case you want, for example, a debug build after an optimized, you can unset the variable by setting it without a value, such as:

set BUILD_OPT=

More info about the build variables can be found on the Build instructions page of the Mozilla Developer Central.

Build NSS

The easiest way to do this with consistent results is to make a build script (the following is what the binary included with Pidgin is built with):

#!/bin/bash

#The path that we've extracted the nss source tarball into
NSS_SRC_DIR=/c/devel/pidgin-devel/win32-dev

#Set our Build Arguments:
#Optimized Build
export BUILD_OPT=1
#Target Windows NT Family
export OS_TARGET=WINNT
#Use GCC (as opposed to VC)
export NS_USE_GCC=1

#Set up the build path with MinGW and Moztools
PATH=/c/devel/pidgin-devel/win32-dev/mingw/bin
PATH=/c/devel/mozilla-build/moztools/bin:$PATH
PATH=/c/devel/mozilla-build/msys/bin:$PATH
export PATH

pushd $NSS_SRC_DIR/nss-3.12.8/mozilla/security/nss
make nss_build_all
popd

Save this script as build.sh. Launch a command prompt and run:

c:\devel\mozilla-build\msys\bin\sh build.sh

The build will likely not complete successfully due to hardcoded library paths and other problems in the build system (it will bail out building .../cmd/bltest). If it gets that far, it has already built the various libraries successfully.

The resulting binaries will be placed in c:\devel\pidgin-devel\win32-dev\nss-3.12.8\mozilla\dist. The contents of private and public are the same across all configurations so they can be distributed separately.

Attachments (7)

Download all attachments as: .zip

All information, including names and email addresses, entered onto this website or sent to mailing lists affiliated with this website will be public. Do not post confidential information, especially passwords!