
MACINTOSH BUILD INSTRUCTIONS
============================


Build requirements
------------------

The following third-party tools/SDKs are needed to build PGP 6.0.2i:

 * Metrowerks CodeWarrior Pro 3 (http://www.metrowerks.com)
 * Metrowerks CodeWarrior IDE 3.0.1 Patch for Macintosh Hosted Tools
   (ftp://ftp.metrowerks.com/pub/updates/CWPR03/CW_IDE_3.0.1Patch.sit.hqx)
 * MindVision Installer VISE for Macintosh 5.5.2 (http://www.mindvision.com)
 * Aladdin's Stuffit Expander 4.0.1 (located on the Metrowerks CodeWarrior Pro
   3 CD)
 * Unzip 5.32 (http://hotfiles.zdnet.com/cgi-bin/texis/swlib/mac/infomac.html?
   fcode=MC13934)
 * Apple DiskCopy 6.3 (http://http.info.apple.com/ftp/Apple.Support.Area/
   Apple.Software.Updates/US/Macintosh/Utilities/Disk_Copy/
   Disk_Copy_6.3.smi.bin)
 * Apple ResEdit 2.1.3 (CW Pro 3 Tools:Apple Development Tools:
   ResEdit 2.1.3.sit) or Mathemaesthetics Resorcerer
   (http://www.mathemaesthetics.com)
 * Apple Open Transport SDK 1.3 (ftp://ftp.apple.com/devworld/
   Development_Kits/OpenTransportSDK.sea.hqx)
 * Apple Appearance Manager SDK 1.0.3 (ftp://ftp.apple.com/devworld/
   Development_Kits/Appearance_SDK_1.0.3.sit.hqx)
 * Apple Contextual Menu Manager SDK 1.0.3 (ftp://ftp.apple.com/devworld/
   Development-Kits/ContextualMenuMgr_1.0.3.sit.hqx)
 * Apple CFM-68K 4.0 System Extension and related files (CW Pro 3 Tools:
   Systern Folder Items:For MacOS Development:for Extensions folder:For 68K
   Macs Only:)


Preparing the build environment
-------------------------------

(1) If Stuffit Expander is not already on the machine, copy Stuffit Expander
    4.0.1 from the Metrowerks CodeWarrior Pro 3 Tools CD. The Stuffit
    Expander folder is located at "CW Pro 3 Tools:Other Metrowerks Tools:Tools
    for Netborne patches:Stuffit Expander:". Open Stuffit Expander and enable
    the "Expand Encoded Files" option in the "Expansion" panel of the
    preferences dialog.

(2) Install Metrowerks CodeWarrior Pro 3 (CW Pro 3) from the "CW Pro 3 Tools"
    CD. The "MacOS Heaven" option will install all needed tools.

(3) Apply the Metrowerks CodeWarrior IDE 3.0.1 Patch for Macintosh Hosted
    Tools to update the IDE application to 3.0.1.

(4) Delete the file "Metrowerks:Metrowerks CodeWarrior:CodeWarrior IDE 3.0" if
    it still exists.

(5) Increase the preferred memory size of the application "Metrowerks:
    Metrowerks CodeWarrior:CodeWarriorIDE 3.0.1" to at least 20000K. Note that
    building PGP 6.0.2i can be memory intensive. We recommend at least 64MB of
    available memory.

(6) Install and personalize the MindVision Installer VISE 5.5.2 application.

(7) CW Pro 3 incorrectly shipped with older versions of some Open Transport
    stub libraries and is missing the CFM 68K OT stub libraries altogether.
    The correct files are located in the Open Transport SDK. Copy (and replace
    if prompted) the following files to the folder "Metrowerks:Metrowerks
    CodeWarrior:MacOS Support:Libraries:MacOS Common:":

    * Open Transport SDK:Open Tpt Client Developer:CFM68K Shared Libraries:
      OpenTpt68kATalkLib
    * Open Transport SDK:Open Tpt Client Developer:CFM68K Shared Libraries:
      OpenTpt68kClentLib
    * Open Transport SDK:Open Tpt Client Developer:CFM68K Shared Libraries:
      OpenTpt68kInetLib
    * Open Transport SDK:Open Tpt Client Developer:CFM68K Shared Libraries:
      OpenTpt68kUtilLib
    * Open Transport SDK:Open Tpt Client Developer:PPC Libraries:
      OpenTptAppleTalkLib
    * Open Transport SDK:Open Tpt Client Developer:PPC Libraries:
      OpenTptInternetLib
    * Open Transport SDK:Open Tpt Client Developer:PPC Libraries:
      OpenTransportLib
    * Open Transport SDK:Open Tpt Client Developer:PPC Libraries:
      OpenTransportUtilLib
    * Open Transport SDK:Open Tpt Module Developer:Libraries:
      OpenTptKemelUtilLib
    * Open Transport SDK:Open Tpt Module Developer:Libraries:OpenTptModuleLib

(8) CW Pro 3 has a code generation bug regarding glue code to 64-bit math
    routines in CFM 68K projects. The linker assumes the result is returned in
    register AO while the glue code implementation returns the result in
    register DO. PGP is built using a modified CFM 68K runtime library. To fix
    the runtime library source code, insert the line "move.1 aO,d0" just
    before the final RETURN statement in each of the following functions in
    the file "Metrowerks:Metrowerks CodeWarrior:MacOS Support:Libraries:
    Runtime:Runtime CFM68K:(Sources):LongLong68K.c":

    * __rt_neg64
    * __rt_inv64
    * __rt_add64
    * __rt_sub64
    * __rt_mul64
    * __rt_shl64
    * __rt_shru64
    * __rt_shrs64
    * __rt_and64
    * __rt_or64
    * __rt_eor64
    * __rt_ultoi64
    * __rt_sltoi64

(9) Open the CW project file "Metrowerks:Metrowerks CodeWarrior:MacOS Support:
    Libraries:Runtime:Runtime CFM68K:MSL RuntimeCFM68K.mcp" and make the
    project to recompile the fixed runtime library.


Preparing the source code tree
------------------------------

Before compilation, several additional steps are needed to prepare the source
tree:

(1) All of the binaries are located in the files "binares1.zip" and
    "binaries2.zip". These files contain the binaries in a "parallel"
    hierarchy to the source tree. Launch Unzip 5.32 and select the Modifiers->
    Extract Options->Conversion Mode->Binary menu item to force Unzip to
    interpret all archive contents as binary. Then, choose Extract from the
    File menu and extract the contents of "binaries1.zip" and "binaries2.zip".
    Note that Stuffit Expander can extract zip files, but is unable to
    automatically merge the files into the source tree, so use Unzip if at all
    possible.

(2) Convert all the Macbinary-format binary files (those ending with bin) to
    native Mac files of the same name except with the ".bin" stripped off. The
    easiest way to do this is to drag the clients and libs folders onto
    Stuffit Expander. If you wish to have a clean source tree, optionally
    delete all the original ".bin" files.

(3) Create the following empty folders:

    * clients:disk:mac:projects:apps:
    * clients:disk:mac:projects:obj:
    * clients:pgp:mac:obj:
    * clients:pgp:mac:PGPEudoraPlugIn:obj:
    * clients:pgp:mac:PGPmenu:pieces:

(4) PGPcontextmenu needs library files located in the Contextual Menu Manager
    SDK. Copy the folder "Contextual Menu Manager SDK:Contextual Menu
    Development:Headers & Stubs:" to the folder "clients:pgp:mac:
    PGPcontextmenu:".

(5) Decompress the self-extracting archive "clients:pgp:mac:install:
    Installer.sea". This should create a folder "Installer" in the same
    location as the self extracting archive.

(6) Copy the following files to the folder "clients:pgp:mac:install:Installer:
    System Folder Items:":

    * CW Pro 3 Tools:System Folder Items:For MacOS Development:for Extensions
      folder:ObjectSupportLib
    * CW Pro 3 Tools:System Folder Items:For MacOS Development:for Extensions
      folder:For 68K Macs Only:CFM-68K Runtime Enabler
    * CW Pro 3 Tools:Systern Folder Items:For MacOS Development:for Extensions
      folder:For 68K Macs Only:NuDragLib.slb
    * Contextual Menu Manager SDK:Contextual Menu Development:Runtime:Put
      these in Extensions f:S0Mobjects(tm) for Mac OS
    * Appearance SDK:.Keyboard
    * Appearance SDK:Appearance Extension
    * Appearance SDK:Prefs for use with System 7.x:Appearance Preferences

(7) Copy all of the files in the folder "clients:pgp:mac:install:docs:" to the
    folder "clients:pgp:mac:install:Installer:Extras:".
 
(8) Copy the file "Appearance SDK:Appearance" to the folder "clients:pgp:mac:
    install:Installer: System Folder Items:Appearance (APPC):"
 
(9) Copy the file "Appearance SDK:AppearanceCDEV' to the folder "clients:pgp:
    mac:install:Installer:System Folder Items:Appearance (APPL):". Rename the
    resulting file "Appearance".

(10) Copy the folder "Installer VISE 5.5.2:Samples:Sample Projects:Installer
     VISE Headers:" to the folder "clients:pgp:mac:install:".

(11) Make the CW Pro 3 project "clients:pgp:mac:install:InstallAdmin Resource:
     InstallAdmin.prj". This will produce the output file "clients:pgp:mac:
     install:InstallAdmin Resource:AdminInstaller.rsrc".

(12) Use ResEdit or Resorcerer to COPY the 'ADMN' 5000 resource from the file
     "clients:pgp:mac:install:InstallAdmin Resource:AdminInstaller.rsrc" to
     the file "clients:pgp:mac:install:Installer:PGP60.vct".


Setting source code flags
-------------------------

The following library flags are located in the file "libs:pgpcdk:priv:include:
pgpSDKBuildFlags.h":

* PGP_RSA: Set to 1 for RSA-enabled builds
* PGP_RSA_KEYGEN: Set to 1 to allow RSA key generation
* PGP_USECAPIFORRSA: Set to 1 to use Microsoft's Crypto API (CAPI) for RSA
  operations. Always set to 0 for Macintosh builds.
* PGP_USECAPIFORMD2: Set to 1 to use Microsoft's Crypto API (CAPI) for MD2
  hashing operations. Always set to 0 for Macintosh builds.
* PGP_USEBSAFEFORRSA: Set to 1 to use RSA's BSAFE library for RSA operations.
  Note that BSAFE is not included in these source code books.
* PGP_USEPGPFORRSA: Set to 1 to use the PGP implementation for RSA operations.
* PGP_USERSAREF: Set to 1 to use the RSAREF library for RSA operations. Note
  that RSAREF is not included in these source code books.

These flags should be set as follows for the three supported builds:

* Desktop Security: PGP_RSA = 1, PGP_RSA_KEYGEN = 1, PGP_USECAPIFORRSA = 0,
  PGP_USECAPIFORMD2 = 0, PGP_USEBSAFEFORRSA = 0, PGP_USEPGPFORRSA = 1,
  PGP_USERSAREF = 0
* Personal Privacy: PGP_RSA = 1, PGP_RSA_KEYGEN = 1, PGP_USECAPIFORRSA = 0,
  PGP_USECAPIFORMD2 = 0, PGP_USEBSAFEFORRSA = 0, PGP_USEPGPFORRSA = 1,
  PGP_USERSAREF = 0
* Freeware: PGP_RSA = 1, PGP_RSA_KEYGEN = 0, PGP_USECAPIFORRSA = 0,
  PGP_USECAPIFORMD2 = 0. PGP_USEBSAFEFORRSA = 0, PGP_USEPGPFORRSA = 1,
  PGP_USERSAREF = 0

The following client flags are located in the file "clients:pgp:shared:
pgpBuildFlags.h":

* BETA: Set to 0 for release builds
* PGP_DEMO: Set to 0 for regular builds
* PGP_FREEWARE: Set to 1 when building PGPfreeware
* PGP_BUSINESS_SECURITY: Set to 1 when building PGP Desktop Security
* PGP_PGP_PERSONAL_PRIVACY: Set to 1 when building PGP for Personal Privacy
* PGP_ADMIN_BUILD: Set to 1 when building the admin version of PGP Desktop
  Security. Ignored for all Macintosh builds
* NO_RSA_KEYGEN: Set to 1 to disable RSA key generation
* NO_RSA_OPERATIONS: Set to 1 to disable encrypting/signing with RSA keys
* CREDIT_RSA_BSAFE: Set to 1 when building an RSA-enabled version which uses
  RSAs BSAFE library

These flags should be set as follows for the three supported builds:

* Desktop Security: BETA = 0, PGP_DEMO = O, PGP_FREEWARE = O,
  PGP_BUSINESS_SECURITY = 1, PGP_PGP_PERSONAL_PRIVACY = 0, PGP_ADMIN-BUILD
  = 1, NO_RSA_KEYGEN = 0, NO_RSA_OPERATIONS = 0, CREDIT_RSA_BSAFE = 0
* Personal Privacy: BETA = 0, PGP_DEMO = 0, PGP_FREEWARE = 0,
  PGP_BUSINESS_SECURITY = 0, PGP_PGP_PERSONAL_PRIVACY = 1, PGP_ADMIN_BUILD
  = 0, NO_RSA_KEYGEN = 0, NO_RSA_OPERATIONS = 0, CREDIT_RSA_BSAFE = 0
* Freeware: BETA = 0, PGP_DEMO = 0, PGP_FREEWARE = 1, PGP_BUSINESS_SECURITY
  = 0, PGP_PGP_PERSONAL_PRIVACY = 0, PGP_ADMIN_BUILD = 0, NO_RSA_KEYGEN = 1,
  NO_RSA_OPERATIONS = 0, CREDIT_RSA_BSAFE = 0


Building the code
-----------------

(1) Open the CW project file "clients:pgp:mac:Build60.prj". Select the target
    "All Non-Debug" from the target popup menu and make the project. This
    will build all PGP 6.0.2i client binaries except PGPdisk into the folder
    "clients:pgp:mac:obj:". The PGPsdk library binaries are built into the
    folder "libs:pgpcdk:mac:pub:".
 
(2) Close the CW project file "Build60.prj" and open the CW project file
    "clients:disk:mac:projects:PGPdiskApp.prj". Select the target "CFM Fat"
    from the target popup menu and make the project. This will build the
    PGPdisk application files into the folder "clients:disk:mac:projects:
    apps:".
 
(3) Delete the file "clients:disk:mac:projects:apps:PGPdisk". Change the name
    of the file "clients:disk:mac:projects:apps:PGPdiskPPC" to "PGPdisk".
    Change the name of the file "clients:disk:mac:projects:apps:PGPdiskCFM68K"
    to "PGPdisk68K".


Building the installer
----------------------

(1) Copy (or move) all of the files/folders from ONE of the following folders
    to the folder "clients:pgp:mac:install:Installer:Extras:", depending on
    the desired build:

    * clients:pgp:mac:install:Installer:Extras:business:
    * clients:pgp:mac:install:Installer:Extras:personal:
    * clients:pgp:mac:install:Installer:Extras:freeware:

(2) Open the Installer VISE archive "clients:pgp:mac:install:Installer:
    PGP60.vct".

(3) Select "Validate Paths" from the Extras menu. By default, all files in the
    archive will be located automatically. If a file cannot be found, you will
    be prompted for its location. Locate the correct file, if needed.

(4) Select "Bring Up To Date..." from the Archive menu. Make sure every
    checkbox along the left side of the list of files is checked and click the
    Update button.

(5) Component installation is controlled through VISE build directives. Select
    "Build Directives..." from the Archive menu. The two build directives,
    "pgpdisk" and "business", are set as follows for the three different
    builds:

    * Desktop Security: pgpdisk checked, business checked
    * Personal Privacy: pgpdisk checked, business unchecked
    * Freeware: pgpdisk unchecked, business unchecked

(6) Information display in the installer is controlled through Installer VISE
    variables. Select "Variables..." from the Archive menu. Change the values
    of the "algstr" and "config" variables, as appropriate.

(7) Select "Archive Settings..." from the Archive menu and click on the "Text
    Files" tab. Highlight the "Default" entry in the "License Agreement Files"
    and click the Edit button. Navigate to the folder "clients:pgp:mac:
    install:Installer" and choose the appropriate "EULA xxx" file. Dismiss the
    Archive Settings window.

(8) Select the "PGP 6.0" folder in the main VISE archive window and select
    "Set Icon Locations..." from the Archive menu. Follow the directions to
    arrange the application in a presentable manner.

(9) Select "Build Installer..." from the File menu. This will build the
    installer into the folder "clients:pgp:mac:install:Installer:".


End of build instructions.
