#########################################################
#                                                       #
#         HOWTO : INSTALL MySQL FROM SOURCE             #
#                    WINDOWS PORT                       #
#                                                       #  
#           Copyright (C) MySQL AB 1995-2003            #
#########################################################

This is a simple 'HOWTO' document describing how to
build MySQL binaries for versions 4.1 and above on
Windows. Instructions are provided for building binaries
from a standard source distribution or from the BitKeeper
tree that contains the latest development source.

---------------------------------------------------------
NOTE
---------------------------------------------------------

Normally, it is best to use precompiled binary distributions
of MySQL that are built specifically for optimal performance
on Windows by MySQL AB.  Binary distributions are available
from:

http://www.mysql.com/downloads/

The instructions in this document are strictly for users
who want to test MySQL on Windows from the latest source or
from the BitKeeper tree, and for internal MySQL developers.

--------------------------------------------------------
TABLE OF CONTENTS
--------------------------------------------------------
1. REQUIREMENTS
2. OBTAINING A WINDOWS SOURCE DISTRIBUTION
3. CREATING A SOURCE PACKAGE FROM THE 'BitKeeper' TREE
4. BUILDING 'mysql server and clients' FROM VC++ WORKSPACE
5. BUILDING FROM 'nmake' MAKEFILES
6. STARTING THE MYSQL SERVER FOR THE FIRST TIME
7. TESTING THE CONNECTION
8. SPECIAL NOTES AND CONSIDERATIONS

-------------------------------------------------------
1. REQUIREMENTS
-------------------------------------------------------

To build MySQL on Windows from source, you need the
following compiler and resources available on your Windows
system:

   - Microsoft Visual C++ 6.0 and above
   - ~45 MB disk space
   - 64 MB RAM

You'll also need a MySQL source distribution, which you
can obtain as described in section 2.

-------------------------------------------------------
2. OBTAINING A WINDOWS SOURCE DISTRIBUTION
-------------------------------------------------------

There are two ways you can get a Windows source distribution
for MySQL version 4.1 and above:

 I.  Obtain a MySQL AB-distributed source distribution for the
     particular version of MySQL in which you are interested.
     Prepackaged source distributions are available for released
     versions of MySQL and can be obtained from:
     
     http://www.mysql.com/downloads/

 II. Alternatively, you can package a source distribution
     yourself from the latest BitKeeper developer source
     tree. If you plan to do this, you must create the
     package on a Unix system and then transfer it to your
     Windows system.  (The reason for this is that some of the
     configuration and build steps require tools that work only
     on Unix.)  The BitKeeper approach thus requires:

     - A system running Unix, or a Unix-like system such as Linux
     - BitKeeper 3.0 installed on that system (you can obtain
       BitKeeper from http://www.bitkeeper.com)

If you are using the first option, you can skip the  next
section and go directly to "BUILDING 'mysql server & clients'
FROM VC++ WORKSPACE"

-------------------------------------------------------
3. CREATING A SOURCE PACKAGE FROM THE 'BitKeeper' TREE
-------------------------------------------------------

To build the latest Windows source package from the current
BitKeeper source tree, use the following instructions. Please
note that this procedure must be performed on a system
running a Unix or Unix-like operating system.  (The procedure
is known to work well on Linux, for example.)

- Clone the BitKeeper source tree for MySQL (version 4.1
  or above, as desired).  For more information how to clone
  the source tree, see the instructions at:

  http://www.mysql.com/doc/en/Installing_source_tree.html

- Configure and build the distribution so that you have a
  server binary to work with.  One way to do this is to run
  the following command in the top-level directory of your
  source tree:

  ./BUILD/compile-pentium-max

- After making sure that the build process completed successfully,
  run the following utility script from top-level directory
  of your source tree:

  ./scripts/make_win_src_distribution

  This script creates a Windows source package, to be used on
  your Windows system.  You can supply different options to the
  script based on your needs. It accepts the following options:

    --debug   Debug, without creating the package
    --tmp     Specify the temporary location
    --suffix  Suffix name for the package
    --dirname Directory name to copy files (intermediate)
    --silent  Do not list verbosely files processed
    --tar     Create tar.gz package instead of .zip
    --help    Show this help message

   By default, make_win_src_distribution creates a zipped
   archive with the name mysql-$version-win-src.zip, where
   $version represents the version of your MySQL source tree.
 
 - Copy or upload to your Windows machine the Windows source
   package that you have just created. To compile it, use
   the instructions in the next section.

---------------------------------------------------------
4. BUILDING 'mysql server & clients' FROM VC++ WORKSPACE
---------------------------------------------------------

NOTE: MySQL 4.1 and above VC++ workspace files are compatible
      with Microsoft Visual Studio 6.0 and above(7.0/.NET)
      editions and tested by MySQL folks before each 
      release.

Unpack the Windows source zipped archive to a folder and open 
mysql.dsw from your top-level directory.

If you want to build both release and debug versions, then
select 'build' -> 'buildall' option. To build only release
or debug versions, select all appropriate workspaces from
the 'build' -> 'batch build' option.

The simplest solution to building the basic clients and core
server is to set your current active workspace as 'mysqld'
release or debug version, and just hit 'build' or 'F7', which
creates the necessary client binaries in the 'client_release'
or 'client_debug' directories. The libraries are placed in the
'lib_release' and 'lib_debug' directories for release and
debug versions, respectively.

Now you have built the distribution. If you get any compiler
errors, please cross check and email the compiler output to 
win32@lists.mysql.com for further assistance.

---------------------------------------------------------
5. BUILDING FROM 'nmake' MAKEFILES
---------------------------------------------------------
TODO from MySQL PIEFU team.

---------------------------------------------------------
6. STARTING THE MYSQL SERVER FOR THE FIRST TIME
---------------------------------------------------------

The server built using the preceding instructions will
expect that the MySQL base directory and data directory
are C:\mysql and C:\mysql\data by default. If you want to
test your server using the source root directory and its
data directory as the base directory and data directory,
you will need to tell the server their pathnames. You can
either do this on the command line with the --basedir
and --data-dir options, or place appropriate options in
an option file (C:\my.cnf or the my.ini file in your
Windows directory). If you have an existing data directory
elsewhere that you want to use, you can specify its pathname
instead.

Start your server from the 'client_release' or 'client_debug'
directory (depending on which server you want to use). The
general instructions are given here:

http://www.mysql.com/doc/en/Windows_installation.html

You'll have to adapt the instructions appropriately if you
want to use a different base directory and/or data directory.

That's all!!! See, it's as simple to build MySQL on Windows
as on any other platform!!!

---------------------------------------------------------
7. TESTING THE CONNECTION
---------------------------------------------------------

Once the server is running in standalone fashion or as a
service based on your configuration, try to connect to it
from the 'mysql' command line SQL interactive utility that
exists in your 'client_release' or 'client_debug' directory.

---------------------------------------------------------
8. SPECIAL NOTES AND CONSIDERATIONS
---------------------------------------------------------

- For production use, MySQL AB does not advise using a MySQL
  server built by yourself from source. It is preferable to
  stick to using binaries shipped by MySQL AB.

- If you find something not working as expected, or you have
  suggestions about ways to improve the current build process
  on Windows, please email to win32@lists.mysql.com.

Thanks
MySQL Team
