								-*-text-*-

BUILDING SWIG BINDINGS FOR SVN ON UNIX


Step 1:  Build & install the proper version of SWIG (which is
         currently swig 1.3.19 or newer).

    * Go to http://www.swig.org/, download the sourceball, unpack.

    * In the SWIG-X.X.X directory, run ./configure.

       If you plan to build the python bindings, and have a system
       with more than one version of python installed, you may need
       to pass

             --with-python=/path/to/correct/python/binary

       to the configure script.  You certainly don't want to use any
       version of python older than 2.0.

       If you plan to build the perl bindings, and have a system
       with more than one version of perl installed, you may need
       to pass

             --with-perl5=/path/to/correct/perl/binary

       to the configure script.  You need Perl 5.8.0 or above.

    * run 'make && make runtime && make install && make install-runtime'

    * To verify you have the goodz installed, check that these things
      were created, assuming your $PREFIX was /usr/local/lib:

           - /usr/local/lib/swig1.3/*.i
           - /usr/local/lib/libswig*.so
           - /usr/local/bin/swig

      In particular, you want to make sure that libswigpy.so was
      built and installed, since the python bindings are the most-used
      ones at the moment.


Step 2:  Build and Install Subversion.

  See Subversion's own INSTALL file for details.

  Make sure that Subversion's ./configure script sees your installed SWIG!
  It tries to detect SWIG near the very end of its output.

  If Subversion's ./configure finds a SWIG that it's happy with, then
  it will build a special glue library to link svn to the swig-python
  bindings:  libsvn_swig_py.so (as well as any other languages).


Step 3:  Install Specific Language Bindings

*  Python

   1.  Run 'make swig-py' from the top of the
       Subversion source tree.  This will invoke SWIG on the *.i
       files, resulting in a collection of .c source files.  It will
       then compile and link those .c files into Python libraries.

   2.  Run 'make install-swig-py' (as root, typically)
       from the top of the Subversion source tree.  This will copy
       your new Python libraries into the appropriate system location.

       Note: If you don't have access to install to python's site-packages
       directory, you can have the python modules install to your home
       directory.  You can do this by running
       'make install-swig-py swig_pydir=~'.

       Note: If you want to install to an alternate prefix (usually only
       if you are building packages), you can supply the prefix here.  An
       example of doing this for building rpms looks like
       'make install-swig-py DESTDIR=$RPM_BUILD_ROOT/usr'.

   3.  Make sure that whatever directory the bindings got installed in
       is in your PYTHONPATH.  That directory depends on how you
       installed; a typical location is /usr/local/lib/svn-python/,
       see http://subversion.tigris.org/issues/show_bug.cgi?id=1125
       for some imminent improvements to the install process.

*  Perl

   The build process of the Perl bindings is not yet tightly
   integrated with subversion's build system. It is using the standard
   way for building and installing perl extentions. You will have to
   install subversion before building and using it. Perl 5.8.0 is
   required.

   1.  Run `make swig-pl-lib' from the top of the
       Subversion source tree.

   2.  Go to subversion/bindings/swig/perl and run
       `env APR_CONFIG=/path/to/apr-config perl Makefile.PL'.

       Be sure to use the same perl binary here that you configured
       SWIG to run against during the SWIG configure (see above).

   3.  run `make all test'.

   4.  to install, run `make install-swig-pl-lib' from the top of the
       Subversion source tree, and `make install' from the perl
       directory.

*  Java

   The Java bindings are still under development, and have not yet
   reached a functional state.  You can attempt to build them by
   running 'make swig-java' from the top level of the Subversion
   source tree.


BUILDING SWIG BINDINGS FOR SVN ON WINDOWS


   1.  Install SWIG. Download the SWIG Windows zipfile (it's the same as the
       source tarball except that it also includes a copy of swig.exe) from

           http://www.swig.org/

       and extract it somewhere, like C:\Program Files.

   2.  Install whatever languages you want to build runtimes for. Windows
       versions of Python, Perl, and Java are available from:

           http://www.python.org/
           http://www.activestate.com/ActivePerl/
           http://java.sun.com/j2se/

   3.  Configure Visual C++ with paths to swig.exe and language specific
       libraries. In Visual C++ 6, go to Tools -> Options -> Directories.
       In Visual C++ .NET, go to Tools -> Options -> Projects 
       -> VC++ Directories.

       Add the following paths:

           Executable Directories:

               Path to swig.exe
               (for example, C:\Program Files\SWIG-1.3.19)

           Library Directories:

               For Python, path to python##.lib
               (for example, C:\Program Files\Python22\libs)

               For Perl, path to perl##.lib
               (for example, C:\Program Files\Perl\lib\CORE)

               For Java, path to jvm.lib library
               (for example C:\Program Files\j2sdk1.4.2\lib)

           Include Directories:

               For Python, path to Python.h
               (for example, C:\Program Files\Python22\include)

               For Perl, path to perl.h
               (for example, C:\Program Files\Perl\lib\CORE)

               For Java, path to JNI headers,
               (for example, C:\Program Files\j2sdk1.4.2\include)

               Also for Java, path to JNI Windows headers,
               (for example, C:\Program Files\j2sdk1.4.2\include\win32)

   4.  If you haven't already built Subversion, you should do so now.
       Instructions are in the main INSTALL file. At the very least,
       you need to run gen-make.py to generate Visual Studio project
       files.

   5.  Build the bindings. Open the Subversion workspace in Visual C++
       (subversion_msvc.dsw or subversion_vcnet.sln) and build one or more
       of the following projects:

           __SWIG_PYTHON__
           __SWIG_PERL__
           __SWIG_JAVA__

   6. Install the bindings. The procedure varies depending on the language.

      For Python, create two folders:

          <PYTHON>\Lib\site-packages\svn
          <PYTHON>\Lib\site-packages\libsvn

      Copy subversion\bindings\swig\python\svn\*.py into the svn folder.
      Copy subversion\bindings\swig\python\*.py and
      Release\subversion\bindings\swig\python\*.dll into the libsvn folder.

      Optionally, you can run the following commands to compile the Python
      sources into bytecode:

          python <PYTHON>\lib\compileall.py <PYTHON>\Lib\site-packages\svn
          python <PYTHON>\lib\compileall.py <PYTHON>\Lib\site-packages\libsvn

      This can make the modules load faster for users without write access
      to the site-packages directory.

      For Perl, ???
      For Java, ???


TESTING AND USING SWIG BINDINGS

*  Python

   1.  Verify that an 'svn' package has been installed correctly.  You can
       do this by running Python via 'python -c "from svn import client"'.

   2.  Try some demo programs.  From the top of your svn working copy,
       cd tools/examples/ and try running 'svnlook.py'.

   3.  Start writing your own scripts. Use the Subversion API definitions
       and descriptions in:

           subversion/include/svn_client.h
           subversion/include/svn_delta.h
           subversion/include/svn_fs.h
           subversion/include/svn_ra.h
           subversion/include/svn_repos.h
           subversion/include/svn_wc.h

*  Perl

   The perl bindings are using the standard module testing facilities
   to do regression tests. Simply run make test as described in the
   install section.

*  Java
