2.8.6 Installing MySQL from Source on Windows
---------------------------------------------

* Menu:

* windows-vc-plus-plus-build::   Building MySQL Using VC++
* windows-bitkeeper-build::      Creating a Windows Source Package from the Latest Development Source

These instructions describe how to build MySQL binaries from source for
version 5.0 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*: The instructions in this document are strictly for users who
want to test MySQL on Windows from the latest source distribution or
from the BitKeeper tree. For production use, MySQL AB does not advise
using a MySQL server built by yourself from source. Normally, it is
best to use precompiled binary distributions of MySQL that are built
specifically for optimal performance on Windows by MySQL AB.
Instructions for installing a binary distributions are available at
*Note windows-installation::.

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

   * Visual Studio 2003 compiler system (VC++ 7.0).

   * Between 3 and 5 GB disk space.

   * Windows 2000 or higher.

The exact system requirements can be found here:
`http://msdn.microsoft.com/vstudio/productinfo/sysreqs/default.aspx'

You also need a MySQL source distribution for Windows. There are two
ways you can obtain a source distribution for MySQL 5.0:

  1. Obtain a source distribution packaged by MySQL AB.  Prepackaged
     source distributions are available from
     `http://dev.mysql.com/downloads/'.

  2. 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. See *Note
          installing-source-tree:: for instructions how to download and
          install BitKeeper.

If you are using a Windows source distribution, you can go directly to
*Note windows-vc-plus-plus-build::. To build from the BitKeeper tree,
proceed to *Note windows-bitkeeper-build::.

If you find something not working as expected, or you have suggestions
about ways to improve the current build process on Windows, please send
a message to the `win32' mailing list. See *Note mailing-list::.

File: manual.info,  Node: windows-vc-plus-plus-build,  Next: windows-bitkeeper-build,  Prev: windows-source-build,  Up: windows-source-build

2.8.6.1 Building MySQL Using VC++
.................................

*Note*: VC++ workspace files for MySQL 4.1 and above are compatible
with Microsoft Visual Studio 2003 editions and tested by MySQL AB staff
before each release.

Follow this procedure to build MySQL:

  1. Create a work directory (for example, `C:\workdir').

  2. Unpack the source distribution in the aforementioned directory
     using `WinZip' or another Windows tool that can read `.zip' files.

  3. Start Visual Studio.

  4. From the File menu, select

     Open Workspace

     .

  5. Open the `mysql.dsw' workspace you find in the work directory.

  6. From the Build menu, select the Set Active Configuration menu.

  7. Click over the screen selecting

     mysqld - Win32 Debug

     and click OK.

  8. Press F7 to begin the build of the debug server, libraries, and
     some client applications.

  9. Compile the release version in the same way.

 10. Debug versions of the programs and libraries are placed in the
     `client_debug' and `lib_debug' directories. Release versions of
     the programs and libraries are placed in the `client_release' and
     `lib_release' directories. Note that if you want to build both
     debug and release versions, you can select the

     Build All

     option from the Build menu.

 11. Test the server. The server built using the preceding instructions
     expects 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 tree root directory and its data
     directory as the base directory and data directory, you need to
     tell the server their pathnames.  You can either do this on the
     command line with the -basedir and -datadir options, or place
     appropriate options in an option file (the `my.ini' file in your
     Windows directory or `C:\my.cnf'). If you have an existing data
     directory elsewhere that you want to use, you can specify its
     pathname instead.

 12. Start your server from the `client_release' or `client_debug'
     directory, depending on which server you want to use. The general
     server startup instructions are at *Note windows-installation::.
     You need to adapt the instructions appropriately if you want to
     use a different base directory or data directory.

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

When you are satisfied that the programs you have built are working
correctly, stop the server. Then install MySQL as follows:

  1. Create the directories where you want to install MySQL.  For
     example, to install into `C:\mysql', use these commands:

          C:\> mkdir C:\mysql
          C:\> mkdir C:\mysql\bin
          C:\> mkdir C:\mysql\data
          C:\> mkdir C:\mysql\share
          C:\> mkdir C:\mysql\scripts

     If you want to compile other clients and link them to MySQL, you
     should also create several additional directories:

          C:\> mkdir C:\mysql\include
          C:\> mkdir C:\mysql\lib
          C:\> mkdir C:\mysql\lib\debug
          C:\> mkdir C:\mysql\lib\opt

     If you want to benchmark MySQL, create this directory:

          C:\> mkdir C:\mysql\sql-bench

     Benchmarking requires Perl support. See *Note perl-support::.

  2. From the `workdir' directory, copy into the `C:\mysql' directory
     the following directories:

          C:\> cd \workdir
          C:\workdir> copy client_release\*.exe C:\mysql\bin
          C:\workdir> copy client_debug\mysqld.exe C:\mysql\bin\mysqld-debug.exe
          C:\workdir> xcopy scripts\*.* C:\mysql\scripts /E
          C:\workdir> xcopy share\*.* C:\mysql\share /E

     If you want to compile other clients and link them to MySQL, you
     should also copy several libraries and header files:

          C:\workdir> copy lib_debug\mysqlclient.lib C:\mysql\lib\debug
          C:\workdir> copy lib_debug\libmysql.* C:\mysql\lib\debug
          C:\workdir> copy lib_debug\zlib.* C:\mysql\lib\debug
          C:\workdir> copy lib_release\mysqlclient.lib C:\mysql\lib\opt
          C:\workdir> copy lib_release\libmysql.* C:\mysql\lib\opt
          C:\workdir> copy lib_release\zlib.* C:\mysql\lib\opt
          C:\workdir> copy include\*.h C:\mysql\include
          C:\workdir> copy libmysql\libmysql.def C:\mysql\include

     If you want to benchmark MySQL, you should also do this:

          C:\workdir> xcopy sql-bench\*.* C:\mysql\bench /E

Set up and start the server in the same way as for the binary Windows
distribution. See *Note windows-installation::.

File: manual.info,  Node: windows-bitkeeper-build,  Prev: windows-vc-plus-plus-build,  Up: windows-source-build

2.8.6.2 Creating a Windows Source Package from the Latest Development Source
............................................................................

To create a 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. For example, the procedure is known to work well on Linux.

  1. Copy the BitKeeper source tree for MySQL 5.0.  For more
     information on how to copy the source tree, see the instructions in
     *Note installing-source-tree::.

  2. 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:

          shell> ./BUILD/compile-pentium-max

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

          shell> ./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:

        * -help

          Display a help message.

        * -debug

          Print information about script operations, do not create
          package.

        * -tmp

          Specify the temporary location.

        * -suffix

          Suffix name for the package.

        * -dirname

          Directory name to copy files (intermediate).

        * -silent

          Do not print verbose list of files processed.

        * -tar

          Create `tar.gz' package instead of `.zip' package.

     By default, `make_win_src_distribution' creates a Zip-format
     archive with the name `mysql-VERSION-win-src.zip', where VERSION
     represents the version of your MySQL source tree.

  4. Copy or upload to your Windows machine the Windows source package
     that you have just created. To compile it, use the instructions in
     *Note windows-vc-plus-plus-build::.

File: manual.info,  Node: windows-client-compiling,  Prev: windows-source-build,  Up: installing-source

2.8.7 Compiling MySQL Clients on Windows
----------------------------------------

In your source files, you should include `my_global.h' before `mysql.h':

     #include <my_global.h>
     #include <mysql.h>

`my_global.h' includes any other files needed for Windows compatibility
(such as `windows.h') if you compile your program on Windows.

You can either link your code with the dynamic `libmysql.lib' library,
which is just a wrapper to load in `libmysql.dll' on demand, or link
with the static `mysqlclient.lib' library.

The MySQL client libraries are compiled as threaded libraries, so you
should also compile your code to be multi-threaded.

