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.

Changes between Version 34 and Version 35 of BuildingWinNSS


Ignore:
Timestamp:
Oct 15, 2011, 3:27:40 PM (12 years ago)
Author:
itsnotabigtruck
Comment:

Additional updates - pending testing build process with the (free) Windows SDK 7.1

Legend:

Unmodified
Added
Removed
Modified
  • BuildingWinNSS

    v34 v35  
    99== Prerequisites ==
    1010
     11 1. '''Get GNU Patch:'''[[BR]]Download [http://gnuwin32.sourceforge.net/packages/patch.htm Patch] from the !GnuWin32 project. Note that Windows thinks that "patch.exe" is a patch for a program and will prompt you to UAC elevate it whenever you use it (see [http://math.nist.gov/oommf/software-patchsets/patch_on_Windows7.html this page]).
    1112 1. '''Get the Windows SDK:'''[[BR]]Download the [https://www.microsoft.com/download/en/details.aspx?id=8279 Windows SDK for Windows 7 SP1] and install it to the default location.
    1213 1. '''Get the Windows Driver Kit (WDK):'''[[BR]]Download the [https://www.microsoft.com/download/en/details.aspx?displaylang=en&id=11800 WDK for Windows 7 SP1] and install it to the default location.
     
    1415 1. '''Get Network Security Services (NSS):'''[[BR]]Download the latest version of [ftp://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/ NSS] (currently 3.12.11 w/ CKBI 1.87) and extract it to the same location.
    1516 1. '''Get MozillaBuild:'''[[BR]]Download the latest version of [ftp://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/MozillaBuildSetup-Latest.exe MozillaBuild] and install it to `c:\devel\mozilla-build`.
     17
     18== Apply patches ==
     19
     20Download the [http://code.google.com/p/xchat-wdk/source/browse/ext/nss-wdk/nss-wdk.patch?name=wdk WDK build patch] from the [http://code.google.com/p/xchat-wdk/ XChat-WDK project]. Open a command prompt at your NSS/NSPR directory and run `"c:\path\to\patch.exe" -p1 --binary -i nss-wdk.patch`.
    1621
    1722== Choose build configuration ==
     
    2328
    2429You can toggle them with environmental variables. Here's the matrix:
     30
    2531   {{{
    2632#!rst
    27 +-----------+----------------+-----------------+
    28 |           |USE_DEBUG_RTL=  |USE_DEBUG_RTL=1  |
    29 +===========+================+=================+
    30 |BUILD_OPT= |WINNT6.1_DBG.OBJ|WINNT6.1_DBG.OBJD|
    31 +-----------+----------------+-----------------+
    32 |BUILD_OPT=1|WINNT6.1_OPT.OBJ|N/A              |
    33 +-----------+----------------+-----------------+
     33+---------------+--------------------+---------------------+
     34|               |``USE_DEBUG_RTL=``  |``USE_DEBUG_RTL=1``  |
     35+===============+====================+=====================+
     36|``BUILD_OPT=`` |``WINNT6.1_DBG.OBJ``|``WINNT6.1_DBG.OBJD``|
     37+---------------+--------------------+---------------------+
     38|``BUILD_OPT=1``|``WINNT6.1_OPT.OBJ``|``N/A``              |
     39+---------------+--------------------+---------------------+
    3440   }}}
    3541
    3642The 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).
    3743
    38 '''WARNING''': it seems the builder considers any variable as 1 if it's set. So if you enter
    39    {{{
    40 set BUILD_OPT=0
    41    }}}
    42 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).
    43 
    44 '''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:
    45    || || ||USE_DEBUG_RTL=1||BUILD_OPT=1||
    46    ||OS_TARGET=WIN95||WIN954.0_DBG.OBJ||WIN954.0_DBG.OBJD||WIN954.0_OPT.OBJ||
    47    ||OS_TARGET=WINNT||WINNT6.1_DBG.OBJ||WINNT6.1_DBG.OBJD||WINNT6.1_OPT.OBJ||
    48 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
    49    {{{
    50 set BUILD_OPT=1
    51 set USE_DEBUG_RTL=1
    52    }}}
    53 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:
    54 
    55    {{{
    56 set BUILD_OPT=
    57    }}}
     44'''WARNING''': it seems the builder considers an option to be enabled if it's set, so if you enter `set BUILD_OPT=0` you'll get an optimized build, not 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).
    5845
    5946More info about the build variables can be found on the [https://developer.mozilla.org/en/NSS_reference/Building_and_installing_NSS/Build_instructions Build instructions] page of the Mozilla Developer Central.
    6047
    6148== Build NSS ==
     49
     50  ''To be updated with DDK build instructions''
    6251
    6352The 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):
     
    9786The 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.
    9887
    99 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.
     88The 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. The following files need to be distributed with Pidgin:
     89
     90 * `libnspr4.dll`
     91 * `libplds4.dll`
     92 * `libplc4.dll`
     93 * `nssutil3.dll`
     94 * `freebl3.dll`
     95 * `sqlite3.dll`
     96 * `softokn3.dll`
     97 * `nss3.dll`
     98 * `ssl3.dll`
     99 * `nssckbi.dll`
     100 * `softokn3.chk`
     101 * `freebl3.chk`
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!