Source

pygame / doc / BuildVC.txt

===========================================
Building Pygame2 using Microsoft Visual C++
===========================================
In contrast to the MinGW build, the Microsoft Visual C++ build will require a
bit more ground work before you actually can start to make your own pygame2
package.

Setting up Visual C++ and the environment
-----------------------------------------
First of all, you have to make sure, that you have at least a Microsoft
Visual C++ compiler that matches your current Python version. For Python
<= 2.5 this usually will be the Visual C++ 7.x compiler, shipped with
e.g. the VC Toolkit 2003 or Visual Studio.NET 2003.
For later Python releases, Visual Studio.NET 2008 or Visual C++ 2008 Express
are required. 

.. note::

    If you are going to use the VC Toolkit 2003, make sure, you have some
    proper registry keys set. Otherwise Python's distutils will not be able to
    detect the settings. Within the util/ directory you can find an example
    registry key. Change the paths within it according to your system
    configuration and import it into your registry to allow C Python modules
    to be built with the VC Toolkit 2003.

Setting up the dependencies
---------------------------

.. note::

    The following list of dependencies might not be the most actual
    one. Please check the README.txt file in the top source directory
    for the most actual dependency list!

Make sure, you have at least one of the following Python versions
installed:

* Python 2.4, 2.5, 2.6, 3.1 (http://www.python.org)

To build anything, you will have to download the following additional
packages:

* SDL >= 1.2.10              (http://www.libsdl.org)
* SDL_mixer >= 1.2.11        (http://www.libsdl.org/projects/SDL_mixer/)
* SDL_ttf >= 2.0.9           (http://www.libsdl.org/projects/SDL_ttf/)
* SDL_image >= 1.2.10        (http://www.libsdl.org/projects/SDL_image/)
* SDL_gfx >= 2.0.18          (http://www.ferzkopp.net/Software/SDL_gfx-2.0/)
* libpng >= 1.2.24           (http://www.libpng.org)
* libjpeg >= 6b              (http://www.ijg.org/)
* freetype >= 2.3.5          (http://www.freetype.org)
* portmidi >= 199            (http://portmedia.sourceforge.net/)
* OpenAL                     use one of:
    
  * OpenAL11CoreSDK (Aug 2009) http://www.openal.org 
  * openal-soft >= 1.11.753    http://kcat.strangesoft.net/openal.html

The Win32 build chain for Pygame2 does not support building all
dependencies from scratch. Instead it relies on already built libraries,
correctly configured settings and matching includes. Thus you will
either need to build them yourself or to rely on the offered prebuilt
packages.

Once you downloaded and/or built all the dependencies, you have to make
sure that they can be found by Pygame2's build script. The script will
search the directory where it resides, the parent directory of it and a
directory named 'prebuilt' for the libraries and headers. If you
installed the dependencies to different locations, you should change the
_searchdirs entry within the config/config_win.py script to include the
directories.

.. note::

    At this point, we strongly recommend a directory named 'prebuilt'
    that is created under the Pygame2 source directory.

.. note::

    The 'prebuilt' directory should have the following layout:

    prebuilt\\include    -> Contains all header files and header subdirectories
    as installed by the dependencies.

    prebuilt\\lib        -> Contains all library files (both, .dll and .lib)
    as installed by the dependencies.

Building Pygame2
----------------
If anything you can proceed to build and install Pygame2 itself. Simply
type: ::

    python setup.py build install

This will build and install Pygame2 in one step.

You also can use the small build.bat batch script, which optionally can
set up the VC++ include and library paths for the VC Toolkit 2003. Change it to
your needs and then execute it using ::

    build.bat

This will build and install Pygame2 as above.
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.