WARNING: This document is an internal VR Studio document describing
how to set up Panda on a new PC using our internal development
environment.  It is not useful for programmers who are not within the
VR Studio firewall.

If you are looking for documentation on installing Panda in the rest
of the world, see INSTALL.txt in this directory.




To install Panda3D on WinNT/Win2000/Win98:
-------------------------------------
Notes:
  Lines preceeded by ">" are instructions to be typed on the command line. 
  On WinNT, make sure your system clock is not set to GMT (only worry about
    this if your makedepend seems out of sync, i.e. you constantly reinstall
    old files over more current ones).
  Opengl appears to be installed with the os for both WinNT and Win98, but I
    read somewhere that we might want to do our own version control for
    this eventually using "VerInstallFile" to install our own version of
    OpenGl.
  "Touch" doesn't quite work properly on WinNT or Win98 currently.
  Make sure you run ftp in "binary" mode to fetch tarballs.
  "ftp" doesn't currently read "backspace" in rxvt, so you'll just have to be
    precise at the ftp prompt for now ("delete" doesn't work either).
    If this really bugs you, you can create a shortcut on the Desktop to
    "tcsh.exe" and run ftp properly from there rather than from rxvt.
  Occasionally, a freshly opened shell will hang in the middle of
    attaching or something.  This appears to be a race condition in
    cshrc that appears only on multiprocessor machines.  If this
    happens, go ahead and kill the tcsh process (or ftp or rxvt
    process) using the Task Manager and try again.
  Make sure your machine has enough disk space - I'd start with the largest
    open space on any of your partitions.
  Make sure your machine has networking (IP, gateway, etc.) so you can use
    ftp to get to mother.
    
Step 0: Map network drive to build tools drive
  - right click on Network Places, choose Map Network Drive
  - Map Network Drive V: to \\dimbo\panda
  - select reconnect drive at startup
  - if this doesnt work, you can install the build tools from CD

Step 1: Install Visual C++ (v6.0)
  - Run V:\msvc-6.0\setup.exe, or install from CD.  
    For a faster install, select custom install and uncheck everything
    but Visual C++, Data Access, ActiveX, and Tools
  - On WinNT, you will be prompted to register environment variables for
    running the compiler from the command line - do it.
  - Install MSVC Service Pack 5 by running V:\msvc-sp5\setupsp5.exe, or from CD
    You may need to run v:\msvc-sp5\mdac_typ.exe first (setup will tell you if so)
  - Install the MSDN Library documentation if this is a primary dev machine.
    Install from CD, or by running V:\msdn-apr01\setup.exe.  To save time and
    disk space, choose custom install and uncheck everything but Text-Search 
    Index, VC++, Platform SDK, Knowledge Base, and All Other Files.
  
Step 2: Install MS Platform SDK to get updated VC libs and headers
  - Install MS Platform SDK MSDN CD in default location. 
  - Run v:\platform-sdk\setup.exe, or install from a (Feb/Jul/Oct) 2000 
    Platform SDK CD. Do not use a Feb 2001 or newer release, since it will 
    be missing DX7 d3dim.lib.  This should prepend the Platform SDK paths 
    to your PATH,INCLUDE, and LIB dirs.  Building libpandadx requires this 
    step (needs DX7 headers/libs)

Step 3: Install Cygwin (v1.3.2)
  - Install Cygwin by running V:\cygwin-1.3.2\setup.exe, and selecting 
    'install from local directory' (or go to cygwin.com and run setup.exe
     from the link there to install the latest version from the internet)
  - Open up a shell by running (and, if you desire, creating a shortcut to)
    tcsh.exe in: 
       C:/Cygwin/bin 
    Alternately, you can run a bash shell by going to the "Start"
    button at the bottom left of your screen, selecting "Programs",
    "Cygwin" and "bash".  You can then run "tcsh" at the bash prompt to make 
    things easier.  
  - Set up the Cygwin environment:
    - Cygwin 1.3.2 comes with tcsh 6.10.00, which has a bug preventing
      files on the path like 'CL.EXE' from being recognized as executable 
      when the shell is outside of their directory.  For now we must revert
      to tcsh 6.09, do 'copy V:\cygwin-1.3.2\tcsh.exe c:\cygwin\bin'.  Also
      copy more.exe from the same location, this seems to be missing in the
      latest cygwin install.

    - all of the commands below have been collected in V:\win\install\wintools\etc\setup_env.csh.  cd V:\win\install\wintools\etc, run tcsh, and 
do 'source setup_env.csh' to do all of the below automatically

    - Check for directories /bin /etc /tmp /usr and create them using 
      mkdir if they don't exist.  
    - Make the following directories:
      > mkdir /c /f /g /h /i /j /v
      > mkdir /msvc98 /mscommon /mspsdk
      > mkdir /usr/local /usr/local/bin /usr/local/etc

    - Create some links expected by the attach scripts:
      > ln -s /bin/tcsh /bin/csh
      > ln -s /bin/perl /usr/local/bin/perl
      > ln -s /bin/bash /usr/local/bin/bash
    - Connect the network drives:
      > net use f: "\\nufat\fat" /persistent:yes
      > net use g: "\\nufat\bit" /persistent:yes
      > net use h: "\\dimbo\usr2" /persistent:yes
      > net use i: "\\nufat\big" /persistent:yes
      > net use j: "\\nufat\for" /persistent:yes
      > net use v: "\\dimbo\panda" /persistent:yes
    - Mount directories.  Note the use of -b for the unix mounts. The
      VC++ mounts assume VC++ was installed in C:\Program Files:
      > mount -s c:/ /c
      > mount -s -b f:/ /f
      > mount -s -b g:/ /g
      > mount -s -b h:/ /h
      > mount -s -b i:/ /i
      > mount -s -b j:/ /j
      > mount -s -b v:/ /v
      > mount -s C:/Program\ Files/Microsoft\ Visual\ Studio/VC98 /msvc98
      > mount -s C:/Program\ Files/Microsoft\ Visual\ Studio/Common /mscommon
      > mount -s C:/Program\ Files/Microsoft\ Platform\ Sdk /mspsdk
    - These are optional, but handy
      > mkdir /fat
      > mkdir /bit
      > mkdir /fit
      > mkdir /ful
      > mkdir /alpha
      > mkdir /beta
      > mkdir /gamma
      > mkdir /for
      > mount -s -b F:/ /fat
      > mount -s -b G: /bit
      > mount -s -b H:/fit/ /fit
      > mount -s -b H:/ful/ /ful
      > mount -s -b I:/alpha/ /alpha
      > mount -s -b I:/beta /beta
      > mount -s -b I:/gamma /gamma
      > mount -s -b J:/ /for

Step 4: Create your home directory
  - Create a HOME directory:
    > mkdir /usr/<yourname>
  - Set the $HOME environment variable:
    - On WinNT use the Registry:
      - Select "My Computer" icon from the desktop.
      - Select "Control Panel" icon.
      - Select "System" icon.
      - Select "Environment" tab.
      - Create the variable "HOME" with the value "/usr/<yourname>".
      - click ok - ok - ok to exit (you must exit for the change to take 
        effect)
      - Now open a new shell to get the changes.
    - On Win98 use AUTOEXEC.BAT:
      - Add/Change the "HOME=/usr/<yourname>" line in C:\AUTOEXEC.BAT:
      - Note: if you want to edit your existing AUTOEXEC.BAT, you need
        to use "edit.exe" in order to generate the correct "newline"
        character (^M).
    - Note: We've seen a problem where we can't source ~/.cshrc if the home
      directory /usr/<yourname> does not match the user name %USERNAME% windows env var.
      To be safe, be sure and name your home directory to be /usr/<yourname>.
  - Copy important startup files into your home directory:
    > cd /v/win/install/wintools/panda
    > cp .cshrc .emacs Configrc Config.pp /usr/<yourname>
  - Make sure the contents of .cshrc are correct for your setup.  In
    particular, make sure the definition for PANDA_ROOT matches the
    directory you have installed Cygwin to (normally C:\Cygwin), and
    that CVSROOT is correct for your CVS login (if $USERNAME is not
    the same as your CVS/Unix account name, edit the variable as
    necessary).

Step 5: Update /usr/local/etc:
  - Copy vspec files from $WINTOOLS to /usr/local/etc
    > cd /v/win/install/wintools
    > cp_vspec 
  - (Optional) Add new username to vspec files
    - If you are setting up a new user, edit the *.vspec files
      in /usr/local/etc to reflect the new username and path to the player
      tree.  
    - Also edit (on the SGI, for instance on mother) the file 
      /fit/cvs/CVSROOT/passwd to add the new username as a valid user of
      CVS.
  - (Optional) Update default values in vspec files
    - Edit appropriate *.vspec files to specify which trees you wish to use
      as a default (e.g. install vs. minstall vs. personal)

Step 6: Grab the cvs trees
  - Open a new shell
  - Create personal trees:
    > cd ~
    > mkdir player
    > cd player
    # Just hit return when prompted for a password
    > cvs login
    > cvs co dtool (only if local dtool will be built)
    > cvs co panda (only if local panda will be built)
    > cvs co direct (only if local direct will be built)
    > cvs co toontown (only if local toontown will be built)
  - Choose which optimize level you want. This is set in Config.pp in
    your $HOME directory.  Look for #define OPTIMIZE and follow
    instructions above that.  You can only choose an arbitrary
    optimize level if you are building your own DTOOL and PANDA;
    otherwise, you must set it to the optimize level corresponding to
    the version of DTOOL/PANDA you intend to attach to (install is
    built OPTIMIZE 2, release is built OPTIMIZE 3).

Step 7: (Optional) Build $DTOOL
  - When you opened a new shell in step 6, it should have attached
    to $DTOOL:install automatically, but you will need to attach to your
    own DTOOL if you want to build your own.
    > cta dtool personal
    > cd $DTOOL
    > ppremake
    > nmake install

Step 8: (Optional) Build $PANDA 
  - Build panda
    > cta panda personal
    > cd $PANDA
    > ppremake
    > nmake install
  - You can now run "demo" to test the install and build - you should
    see a window pop up with a triangle in it.  To see the triangle with
    a texture on it, you'll need to be in $PANDA/src/all/testbed/ when
    you run "demo".

Step 9: Install Emacs   
  (note: this emacs does not use Cygwin paths, "/" represents the real root not "C:\Cygwin".)
  - get the tarball from /for/program/tarballs/emacs-20.7-fullbin-i386.tar.gz 
  - untar/install (This will install emacs into C:/emacs-20.7, 
    do not attempt to install it under a directory containing a space,
    like "Program Files".)
    > cd /c
    > tar xvzf ~/emacs-20.7-fullbin-i386.tar.gz
  - Copy lisp/script files
    > cp $DIRECT/src/directscripts/python-mode.el /c/emacs-20.7/lisp/progmodes
    > cp $DIRECT/src/directscripts/runPythonEmacs /usr/local/bin
  - Update environment variables (win2000).  Note: You should only need to
    do this if you intend to invoke Panda from a non-Cygwin prompt.  If you
    will always be using Cygwin, simply edit your .cshrc file to extend the
    path appropriately. 
    - right click on your computer icon at the top left of the screen
    - select "properties"
    - click on the "Advanced" tab
    - click on "Environment Variables..."
    - double click on the "Path" variable in the bottom pane (system variables)
    - add  C:\emacs-20.7\bin  to the end of the path (semicolon separated)
    - click ok - ok - ok to exit (you must exit for the change to take effect)

Step 10: Build $DIRECT
  > cta direct personal
  > cd $DIRECT
  > ppremake
  > nmake install

Step 11: Build $TOONTOWN
  > cta toontown personal
  > cd $TOONTOWN
  > ppremake
  > nmake install

Step 12: Generate Python Code
  > cd $DIRECT/bin
  > genPyCode win-debug (if you have built using OPTIMIZE = 1 or 2)
  > genPyCode win-release (if you have built using OPTIMIZE = 3 or 4)

