Russell Yanofsky <> (rey4)

r862915, r850448, r850310, r850307, r850302, r850300, r850293, r850288, r850286, r850281, r850280, r850265, r850254, r850253, r850252, r850216, r850215, r850203, r850179, r850163, r850162, r850159, r850117, r850116, r850115, r850114, r850113, r850111, r850051, r850050, r848325, r848324, r848323, r848183, r847653, r847492, r847491, r847490, r847489, r847488, r847487, r847486, r847424, r847423, r847370, r847369, r847320, r847309, r847308, r847307, r847306, r847305, r847304, r847303, r847302, r847152, r847150, r847147, r847146, r847145, r847144, r847143, r847142, r847141, r847140, r847049, r847048, r847047, r847046, r847018, r846993, r846992, r846837, r846836, r846835, r846834, r846833, r846797, r846793, r846792, r846760, r846693, r846676, r846655, r846654, r846653, r846453, r846403, r846378, r846346, r846330

r862915 | brane | 2006-12-30 19:05:40 -0600 (Sat, 30 Dec 2006)

Support building DLLs on Windows. This closes #1627.

Patch by: Vlad Georgescu <>
(Tweaked by me.)

* build.conf:
  (libsvn_client, libsvn_delta, libsvn_diff, libsvn_fs,
   libsvn_ra, libsvn_repos, libsvn_subr, libsvn_wc):
  Replace the msvc_static option with a msvc_export option containing the
  list of public header files for that library.
  (swig_client, swig_delta, swig_fs, swig_ra, swig_repos):
  Add dependency on APR.
  (svnserve): Add dependency on advapi32.lib

* build/generator/
  Handle svn_ctype_table.
  (_filter_names): Add svn_auth_get_keychain_simple_provider.

* build/generator/
  (create_dll_target): New. Given a static library, it creates a new
   dynamic library target that depends on that library.
  (get_install_targets): Call create_dll_target for each target that has
   msvc_export set.
  (get_linked_win_depends): Scan the dependency tree in breadth-first
   order, allowing us to prevent cases when both a dll and its
   corresponding static library are linked into a project.
  (get_def_file): Return a name that's in a generated directory, not
   in the source tree.

* build/generator/vcnet_vcproj.ezt,
  Add empty.c as a source file for dll projects, because Visual Studio
  refuses to build a project's outputs if it has no source files.

* build/win32/empty.c: New file.

  Handle the new --disable-shared option.

* subversion/libsvn_ra/ra_loader.c
  (svn_ra_dav_init, svn_ra_svn_init, svn_ra_local_init, svn_ra_serf_init):
  Implement these here if their corresponding libraries are not linked in,
  and have them return a "not implemented" error.

* subversion/libsvn_subr/ctype.c
  (svn_ctype_table_internal): Rename from ctype_table. Remove 'static'

  Append the paths to our libraries' dlls to the PATH environment variable.

r850448 | rey4 | 2004-07-21 04:16:49 -0500 (Wed, 21 Jul 2004)

Revert the effects of r10233 and r10236 on unix. These changes caused
the build system to include swig runtime functions in our swig "core"
modules so we wouldn't have to depend on external swig runtime
libraries. But they also caused a few problems.

1) They caused a libtool error on linux
   Putting the runtime into the core module meant that the other modules
   would need to be linked to it to access the runtime. Libtool would do
   the linking correctly during the initial build, but when it relinked
   the libraries during installation it would try invoke gcc with -l_core,
   which doesn't work because core modules have names like, not This is probably a bug in libtool.

2) They don't work on cygwin because they create mutual dependencies
   between core modules and libsvn_swig_(perl|py|java) modules. On cygwin,
   libtool can't make two shared libraries which depend on each other.
   A solution to this which was never committed was to build the
   libsvn_swig_* libraries as static libraries.

3) They don't work on darwin. Having other modules depend on the core
   modules is no good on darwin because the core moules are built
   as dynamically loadable libraries, not dynamically linked libraries
   on that platform. On darwin, a library can be either dynamically
   loadable or dynamically linked, but not both.

* build/ac-macros/swig.m4:
    revert r10236

* build/generator/
  (SWIGObject._init_, TargetSWIG.add_dependencies):
    revert r10236

  (TargetSWIGRuntime, TargetSWIG.add_dependencies):
    undo effects of r10233 on unix build, restore dependency on external
    swig runtime libraries

* build.conf
  (swig_client, swig_delta, swig_fs, swig_ra, swig_repos, swig_wc):
    undo effects of r10233 on unix build, make dependencies on
    "swig_core" into "nonlib" dependencies so they only show up
    on windows

r850310 | rey4 | 2004-07-11 10:25:06 -0500 (Sun, 11 Jul 2004)

Get python bindings to build on unix and to not depend on an external
swig runtime library.

* build/ac-macros/swig.m4:
    new make variable for swig -runtime option

    use separate commands for running swig with and without runtime

* build.conf
    use "nonlibs" dependency on "swig_core" instead of "libs" dependency
    to avoid circular dependency error in make

* build/generator/
  (SWIGObject.__init__, TargetSWIG.add_dependencies):
    add new "target" member to swig objects to expose more build
    information to make backend

* build/generator/
    use "include-runtime" values on swig targets to determine whether to
    call swig with runtime or not

r850307 | rey4 | 2004-07-10 18:22:35 -0500 (Sat, 10 Jul 2004)

Change build of swig bindings on windows. Export swig runtime functions
from core module instead of building a separate runtime library.

* build.conf
    include runtime code

  (swig_client, swig_delta, swig_fs, swig_ra, swig_repos, swig_wc,
   libsvn_swig_py, libsvn_swig_perl):
    depend on core library instead of runtime library

    build as static library instead of dll to prevent mutual dependency
    between this library and the core module. Our build system can't
    make two DLLs that depend on each other.

* build/generator/
    read new "include-runtime" option

  (TargetSWIGRuntime, _build_types):
    remove swig_runtime target type

* build/generator/
     remove handling of swig runtime targets

     add -runtime option for generating swig core modules

* subversion/bindings/swig/core.i
* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h
* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
  (current_pool, svn_swig_pl_get_current_pool,
    move the perl bindings' "current_pool" variable from swigutil_pl
    library to the core module. Neccessary because we're now building
    the utility library as a static library, and don't want a different
    copy of the global variable in each module that uses the library

* subversion/bindings/swig/INSTALL
    don't copy nonexistent perl runtime and utility libraries

* build/win32/

r850302 | rey4 | 2004-07-10 16:04:04 -0500 (Sat, 10 Jul 2004)

Make build generator compatible with older versions of python.

Review by: David Summers <>
(Reported the bug and helped test the patch.)

* build/generator/
  (TargetJavaHeaders.add_dependencies, TargetJavaClasses.add_dependencies):
    Don't use extended call syntax.

r850300 | rey4 | 2004-07-10 14:33:25 -0500 (Sat, 10 Jul 2004)

Avoid another swig/java/windows problem.

* subversion/bindings/swig/svn_repos.i
    don't wrap this function pointer type in java

r850293 | rey4 | 2004-07-10 12:53:30 -0500 (Sat, 10 Jul 2004)

Miscellaneous make generator cleanup. These changes have no effect on
generated makefiles or project files.

* build/generator/
  (TargetJavaHeaders.add_dependencies, TargetJavaClasses.add_dependencies):
    remove outdated comments

* build/generator/
  (WinGeneratorBase.copyfile, WinGeneratorBase.movefile):
    remove unused functions

    remove outdated comments and used member "shared"

    move variable initializion closer to where variable is used

r850288 | rey4 | 2004-07-10 10:18:32 -0500 (Sat, 10 Jul 2004)

Windows build cleanup. Reorganize code that generates swig command
lines on windows.

* build/generator/
    clean up, get rid of some duplicate logic

    don't set swig options here

* build/generator/
* build/generator/
    remove "swig_options" template variable

r850286 | breser | 2004-07-10 05:00:02 -0500 (Sat, 10 Jul 2004)

Build generator fix. Make install targets in generated makefile have
explicit dependencies on library install targets. So for example,
make the "install-bin" target depend on the "install-lib"
target because one or more of the installed files in "install-bin"
depends on one or more libraries installed by "install-lib"

Patch by: "Russell Yanofsky" <>

* build/generator/
    output install dependencies from graph

r850281 | rey4 | 2004-07-09 20:13:55 -0500 (Fri, 09 Jul 2004)

Perl bindings build change. Set perl module names correctly in swig
interface files instead of setting them wrongly there and then fixing
them on the swig command line. This change has no effect on the
source files swig generates.

* subversion/bindings/swig/core.i
* subversion/bindings/swig/svn_client.i
* subversion/bindings/swig/svn_delta.i
* subversion/bindings/swig/svn_fs.i
* subversion/bindings/swig/svn_ra.i
* subversion/bindings/swig/svn_repos.i
* subversion/bindings/swig/svn_wc.i
    fix %module statement for perl

* build/generator/
    stop passing -module option to swig

* subversion/bindings/swig/perl/native/
    stop passing -module option to swig

r850280 | rey4 | 2004-07-09 19:29:19 -0500 (Fri, 09 Jul 2004)

Windows build simplification. Invoke apr-util configuration script
( automatically in gen-make, instead of requiring
users to do it. This mirrors the build process on unix where our
configure script calls apr-util's configure script when it is
building it from source.

* build/generator/
    new function that runs

    call _configure_apr_util

    remove w32locatedb build step

    remove instructions for downloading and copying
    since it's now included with apr-util and apache

r850265 | rey4 | 2004-07-08 19:24:39 -0500 (Thu, 08 Jul 2004)

Build generator cleanup. Try to handle paths thoughout the build
generator more consistently. The main effect of this is that paths in
outputted msvc files and makefiles use one kind of slash instead of
combinations of forward slashes and backslashes.

* build/generator/
  (native_path, build_path, build_path_join, build_path_split,
   build_path_splitfile, build_path_dirname, build_path_basename,
   build_path_retreat, build_path_strip):
    new path handling functions

  (_strip_path, _retreat_dots):
    removed, replaced by build_path_strip and build_path_retreat

  (lots of places):
    make use of new path functions

* build/generator/
  (Generator.write, Generator.write_symbols):
    make use of new path functions

* build/generator/
  (WinGeneratorBase.parse_options, WinGeneratorBase.__init__):
    stop converting all user entered paths into absolute paths,
    instead try to use them as they are

    set new "rootpath" member

  (msvc_path, msvc_path_join, WinGeneratorBase.path, WinGeneratorBase.apath):
    new path handling functions

  (WinGeneratorBase.search_for, WinGeneratorBase.map_rootpath,

  (WinGeneratorBase.get_configs, WinGeneratorBase.get_proj_sources,
   WinGeneratorBase.get_output_dir, WinGeneratorBase.get_intermediate_dir,
   WinGeneratorBase.get_def_file, WinGeneratorBase.get_external_project,
   WinGeneratorBase.get_win_includes, WinGeneratorBase.get_win_lib_dirs):
    make use of new path functions

  (WinGeneratorBase._find_bdb, WinGeneratorBase.parse_options,
   WinGeneratorBase.__init__, get_win_defines, , get_win_libs):
    simplify bdb detection

* build/generator/
* build/generator/
  (Generator.write_project, Generator.write):
    stop passing around rootpath parameters

r850254 | rey4 | 2004-07-07 20:46:57 -0500 (Wed, 07 Jul 2004)

Build generator cleanup. Move logic for determining output filenames
and directories into windows generator base. This change has no effect
on generated makefiles or project files.

* build/generator/
    stop setting swig-windows-specific shared_dir variable here

    here too

* build/generator/
    stop resetting JavaTarget path values

  (WinGeneratorBase.get_output_name, WinGeneratorBase.get_output_dir,

* build/generator/
* build/generator/
    set new template variables for output paths

* build/generator/msvc_dsp.ezt
* build/generator/vcnet_vcproj.ezt
    use new template variables

r850253 | rey4 | 2004-07-07 20:44:36 -0500 (Wed, 07 Jul 2004)

Build generator cleanup. Move some of the code for building java
classes and javah headers from the windows backend to the base
generator in order to eliminate some duplicate logic. This change
has no effect on generated makefiles or project files.

* build/generator/
    set some extra source and target parameters so the windows build
    has an easier time coming up with java build command lines
* build/generator/
    use the new parameters from gen_base for java custom build commands

    tweak format of return value so get_proj_sources can access source
    and target objects

r850252 | rey4 | 2004-07-07 20:43:05 -0500 (Wed, 07 Jul 2004)

Build generator cleanup. Move code that handles the --with-apr*
parameters on windows into the windows backend. This change has
no effect on generated makefiles or project files.

* build/generator/
    remove initializion of apr*_path members

    remove code that tweaks targets' external_project properties

* build/generator/
* build/generator/
    change to call get_external_project() instead of reading targets'
    external_project property values
* build/generator/
    new function that figures out locations of external projects

* build.conf
  (apr, aprutil, apriconv, apriconv_ccs_modules,
   apriconv_ces_modules, neon, gen_uri_delims, xml, __CONFIG__):
    use forward slashes in paths for apr targets (and some others)

r850216 | rey4 | 2004-07-05 00:16:32 -0500 (Mon, 05 Jul 2004)

Fix a typo in swig documentation

* subversion/bindings/swig/INSTALL:
    I can spell D-L-L.

r850215 | rey4 | 2004-07-05 00:07:31 -0500 (Mon, 05 Jul 2004)

Get swig-java bindings running on windows.

* build.conf
  (swig-java-java, __SWIG_JAVA__):
    add missing dependencies

* build/generator/
    pass along globs that don't match instead of throwing an error

    remove no longer neccessary _collect_paths workaround

    skip files which don't exist yet

    removed. implementation makes no sense, looks like it was
    the result of a copy and paste operation gone awry...

* build/generator/
    handle dependencies on java targets

* build/generator/
    add custom build rule for making JARs on windows

* subversion/bindings/swig/java/org/tigris/subversion/util/
    fix loadLibrary calls

* subversion/bindings/swig/INSTALL
    add something about how to use java bindings on windows

r850203 | rey4 | 2004-07-02 23:46:23 -0500 (Fri, 02 Jul 2004)

Get swig java bindings to build on windows.

* build/generator/
    call swig with extra options to specify package name and
    destination directory for java wrapper classes

    define SWIGJAVA macro here for swig java targets

* subversion/bindings/swig/svn_ra.i
    ignore some troublesome struct members

* subversion/bindings/swig/svn_wc.i
    ignore some troublesome struct members

* subversion/bindings/swig/java/org/tigris/subversion/swig
    new directory for generated java wrapper classes

* subversion/bindings/swig/java/org/tigris/subversion
    remove swig subdirectory from svn:ignore list

r850179 | rey4 | 2004-06-29 18:50:29 -0500 (Tue, 29 Jun 2004)

Update swig dependencies

* build.conf
    add apr dependency (perl bindings use apr_time_now)

r850163 | rey4 | 2004-06-27 21:05:24 -0500 (Sun, 27 Jun 2004)

Build perl utility library as a DLL instead of a static library on windows
so it can be shared by all the perl modules instead of statically linked
into each of them. This is neccessary because the library has global
state which needs to be shared across the different modules.

This change is based on patches from issue 1627, "create subversion DLLs
on Windows"

* build.conf
    build as dll and add missing dependencies

* build/generator/
    add custom build steps for generating module definition (.def)

    new function

    link perl utility library with perl dll

* build/generator/
    read new "msvc-export" option

* build/generator/
    add new "def_file" template variable

* build/generator/vcnet_vcproj.ezt
    output "def_file" value

* subversion/bindings/swig/INSTALL
    include new dll file in perl installation steps

r850162 | rey4 | 2004-06-27 19:23:47 -0500 (Sun, 27 Jun 2004)

Changes to perl utility library so it will be easier to build as a DLL
on windows.

* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h
* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
    remove this variable from the public interface

  (svn_swig_pl_set_current_pool, svn_swig_pl_get_current_pool):
    new functions to access current_pool value

* subversion/bindings/swig/core.i
    add typemaps to use the new current_pool functions

r850159 | rey4 | 2004-06-27 15:38:09 -0500 (Sun, 27 Jun 2004)

Fix problem with windows build of perl bindings.

* build/generator/
    invoke swig with -noproxy option

r850117 | rey4 | 2004-06-20 20:28:50 -0500 (Sun, 20 Jun 2004)

Fix macro usage in perl bindings

* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h
    make sure _MSC_VER is defined before using it

r850116 | rey4 | 2004-06-20 20:15:24 -0500 (Sun, 20 Jun 2004)

Improvements for perl bindings on windows.

Suggested by: Branko Čibej <>

* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
    use safer macros

* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h

* build/generator/
    define snprintf here

r850115 | rey4 | 2004-06-20 20:13:23 -0500 (Sun, 20 Jun 2004)

Fix for building perl bindings on windows

* build/win32/
    fix perl include statement

r850114 | rey4 | 2004-06-20 18:03:14 -0500 (Sun, 20 Jun 2004)

Revert 10037, as requested on dev list.

* subversion\bindings\swig\INSTALL
* build\win32\
* build\generator\msvc_dsp.ezt
* build\generator\
* build\generator\
* build\generator\
    put these back

r850113 | rey4 | 2004-06-20 16:18:36 -0500 (Sun, 20 Jun 2004)

Fix perl bindings on windows. These changes allow the swig modules
to be built and loaded by perl. However, the bindings as a whole
still don't work due to problems with the native modules

* build.conf
    add more library dependencies

  (many sections...)
    restore perl targets which were removed in r10023. Although these
    targets aren't used by the unix build process, they are neccessary
    on windows.

* build/generator/
    omit "swig-pl" and "install-swig-pl" build targets from outputted

* subversion/bindings/swig/perl/native/
    stop outputting vararg macros, ms compilers don't like them

* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h
  (snprintf, strtoll):
    add workarounds for ms c runtime

* subversion/bindings/swig/INSTALL
    update instructions for perl on windows

* build/generator/
    add special custom build rules for perl bindings

* build/generator/
    change outputted module names for perl bindings

* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h
* subversion/bindings/swig/perl/native/
    set native eol-style properties

r850111 | rey4 | 2004-06-20 14:24:10 -0500 (Sun, 20 Jun 2004)

On windows, generate swig runtime libraries by invoking swig instead
of cobbling together internal swig source files. This change simplifies
the build process but breaks compatibility with SWIG 1.3.19 and earlier
on windows.

* build/win32/

* build/generator/
    stop setting swig_options variable

    use swig to generate runtime libraries instead of,
    stop using swig_options variable, and remove workaround for swig 1.3.19

* build/generator/
* build/generator/
    stop using swig_options variable

* build/generator/msvc_dsp.ezt
    add quotes around source paths

* subversion/bindings/swig/INSTALL
    update build instructions

r850051 | rey4 | 2004-06-12 21:06:20 -0500 (Sat, 12 Jun 2004)

Minor make generator changes: remove sorting voodoo from,
instead just sort dependencies before outputting them. Also remove
extra whitespace from project files introduced in r9935. These changes
affect the order of dependencies and whitespace in the generated
makefiles and project files, but leave them the same otherwise.

* build/generator/
  (DependencyGraph.get_all_sources, DependencyGraph.get_deps):
    remove sorting code

  (DependencyGraph.get_targets, DependencyNode.__cmp__,

  (TargetI18N.__init__, TargetJava.__init__):
    stop setting garbage filename values

    add special case for TargetJava and TargetI18N

* build/generator/
  (Generator.write, Generator.write_symbols):
    add dependency sorting code

* build/generator/
    update dependency sorting code

* build/generator/msvc_dsp.ezt
    remove whitespace

r850050 | rey4 | 2004-06-12 20:02:06 -0500 (Sat, 12 Jun 2004)

Tweaks to new make generator code introduced in r9935. These changes
have no effect on the generated makefiles or project files.

* build/generator/
  (Target.__init__, TargetJavaHeaders.__init__,
   TargetJavaClasses.__init__): Get rid of "needs_windows_custom_build" member.
   TargetJavaClasses.get_windows_custom_target): Removed.

* build/generator/
  (WinGeneratorBase.get_proj_sources): Move in code from
    get_windows_custom* methods in that makes the custom
    build command lines.  Shortened the code a little but preserved
    original logic.

* build/generator/
* build/generator/
  (Generator.get_project_quote, Generator.quote): Change quote functions

r848325 | rey4 | 2004-01-11 19:56:25 -0600 (Sun, 11 Jan 2004)

Even more groundwork for Issue 1627 "create subversion DLLs on Windows."
Change (the script that scans subversion public headers and
produces lists of functions that need to be exported from dlls) to work
with current headers and to output valid module definition files
(.def files).

* build/generator/
  (_funcs, extract_funcs):
    make regular expression for finding function declarations a
    little more tolerant

  (scan_headers, headers_to_libraries):
    removed. header information is now stored in build.conf

  (global code):
    change to output function list in .def format

r848324 | rey4 | 2004-01-11 19:54:29 -0600 (Sun, 11 Jan 2004)

Some more groundwork for Issue 1627 "create subversion DLLs on Windows."
Rewrite WinGeneratorBase.get_win_depends() implementation to come up
with correct project dependencies when a library is dynamically linked
to some targets and statically linked to others. This change has no effect
on generated makefiles or project files.

* build/generator/
    break up "get_win_depends_impl" into three new methods. The new
    methods implement the same logic as the old method but they
    return extra information about dependencies to their callers.

    call the new methods instead of get_win_depends_impl().
    also add some new logic to filter lists of dependencies

    update calls to get_win_depends()

r848323 | rey4 | 2004-01-11 19:50:25 -0600 (Sun, 11 Jan 2004)

Some groundwork for Issue 1627 "create subversion DLLs on Windows."
Change some template variables in msvc projects to make it easier
to add custom build steps. This change has no effect on generated
makefiles or project files.

* build/generator/
    add "sources.custom_build" variable to determine the type of build.
    rename "sources.swig_target" to "sources.custom_target"

* build/generator/msvc_dsp.ezt
* build/generator/vcnet_vcproj.ezt
    use "sources.custom_build" to determine build type instead of
    "swig_language" and "swig_output" variables.
    replace use of "sources.swig_target"

r848183 | brane | 2003-12-27 22:37:18 -0600 (Sat, 27 Dec 2003)

Start using the APR DLLs instead of linking with static libs on Windows.
This change combines two patches from Russell Yanofsky <>
(see below) with the following changes:

* (Options): New class; container for command line options.
   Use it wherever the 'rest' list was used before.
  (__main__): Recognise options --with-apr, --with-apr-util, and
   --with-apr-iconv, and change --with-httpd to set these explicitly.
   Remember all build config options in a file called 'gen-make.opts'.
  (_usage_exit): Document the new command-line options.

* Parse 'gen-make.opts' to get the location of the APR modules.
   Move the APR DLLs to the objdir, and set the PATH and APR_ICONV_PATH
   environment variables before running tests. Add logic to run svnserve
   for svn:// tests and new option --svnserve-args for custom arguments.
   Document this option.

* build/generator/ (GeneratorBase.__init__): Add APR module
   paths to self.cfg.
  (TargetLinked.__init__): Use real APR module paths for external projects.

* build/generator/ (WinGeneratorBase.parse_options): Interpret
   the --with-apr* options from and set the self.apr_path,
   self.apr_util_path and self.apr_iconv_path attributes. Use them
   everywhere instead of hard-coded paths to APR modules.
   Construct [expat_path] when generating build_neon.bat.

* INSTALL: Document changes to the Windows build.

* build/generator/ Use calculated paths to APR modules
   instead of hard-coded paths.

* build/generator/build_neon.ezt: Use [expat_path] instead of hardcoded path.

* .: Add 'gen-make.opts' to svn:ignore.

1st patch from Russell Yanofsky <>:
Link with dynamic apr libraries instead of static ones on windows. This
change probably breaks the windows testing script and the windows installer,
since subversion executables now depend on libapr.dll, libaprutil.dll,
and libapriconv.dll. It has no effect on the generated makefile.

* build.conf
  (apr, aprutil, apriconv, apriconv_ccs_modules, apriconv_ces_modules):
    refer to .dll projects instead of .lib projects

* build/generator/
    add new "msvc_name" option

* build/generator/
  (WinGeneratorBase.gen_proj_names, WinGeneratorBase.create_fake_target):
    use new "msvc_name" to override msvc project names


2nd patch from Russell Yanofsky <>:
Normalize the way apache modules are built on windows, now that all of
subversion is using the dynamically linked apr library. This change
effects only the outputted mod_dav_svn and mod_auth_svn projects.

* build.conf
  (mod_dav_svn, mod_authz_svn)
    add dependencies for windows

* build/generator/

    change to make use of nonlibs option

    delete some special case apache code that's no longer neccessary

Patch by: Russell Yanofsky <>

r847653 | rey4 | 2003-10-30 21:58:59 -0600 (Thu, 30 Oct 2003)

Minor api change to allow the subr library to be built as a DLL. Replace
global variable svn_md5_empty_string_digest with a function of the same
name, because it's the only global variable in the entire Subversion API
and, unlike functions, global variables can't be transparently imported
from Windows DLLs in C.

Approved by: Greg Stein <>

* subversion/include/svn_md5.h
* libsvn_subr/md5.c
    convert this from an extern global into a function

* subversion/libsvn_fs/reps-strings.c
  (svn_fs__get_mutable_rep, rep_contents_clear):
    update references to svn_md5_empty_string_digest

r847492 | rey4 | 2003-10-13 23:20:41 -0500 (Mon, 13 Oct 2003)

Add a few missing dependencies that caused errors when I tried to
compile subversion libraries as dlls.

* build.conf
  (libsvn_subr, svnversion, aprutil):
    add missing dependencies
    set "external-lib" option

r847491 | rey4 | 2003-10-13 23:18:45 -0500 (Mon, 13 Oct 2003)

Update get_win_libs function(). This change has no effect on the
generated makefile. It does cause some project files to link with
fewer (unneccessary) external libraries.

* build/generator/
    use "msvc-static" values

* build.conf
  (libsvn_subr, apr, neon):
    set "msvc-libs" options

r847490 | rey4 | 2003-10-13 23:12:53 -0500 (Mon, 13 Oct 2003)

Revert revision 7415. I checked in the wrong patch.

Affected files:

*  build.conf
*  build/generator/
*  build/generator/
*  build/generator/
*  build/generator/
*  build/generator/

r847489 | rey4 | 2003-10-13 23:05:05 -0500 (Mon, 13 Oct 2003)

Update get_win_libs function(). This change has no effect on the
generated makefile. It does cause some project files to link with
fewer (unneccessary) external libraries.

* build/generator/
    use "msvc-static" values

* build.conf
  (libsvn_subr, apr, neon):
    set "msvc-libs" options

r847488 | rey4 | 2003-10-13 23:03:18 -0500 (Mon, 13 Oct 2003)

Use new "msvc_static" values in another context. This change has no
effect on outputted makefiles or project files.

* build/generator/
* build/generator/
    use "msvc_static" value

r847487 | rey4 | 2003-10-13 23:00:06 -0500 (Mon, 13 Oct 2003)

Stop having static libraries depend on each other in msvc. These
dependencies caused msvc to copy all object code that a library
depended on into the library itself. This change saves disk space
(for example, it shrinks the ra library from 4 mb to 16 kb) and
allows some code in to be simplified. This change has no
effect on the generated makefile, or on individual project files,
but the dependencies between project files are now different.

* build.conf
  (libsvn_client, libsvn_delta, libsvn_diff, libsvn_fs, libsvn_ra,
   libsvn_ra_dav, libsvn_ra_svn, libsvn_ra_local, libsvn_repos,
   libsvn_subr, libsvn_wc, libsvn_swig_py, libsvn_swig_java,
   libsvn_swig_perl, libsvn_test, libsvn_test_fs, apr, aprutil,
   apriconv, neon, xml):
    add "msvc-static" option, and "msvc-fake" option for libraries
    that generate their headers as they are being built in msvc

  (apriconv_ccs_modules, apriconv_ces_modules):
    change types from "lib" to "exe"

  (libsvn_ra_dav, libsvn_ra_svn, libsvn_wc, mod_authz_svn):
    remove "msvc-deps" amd "msvc-fake-deps" options

* build/generator/
  (GeneratorBase.__init__, dep_types):
    get rid of "msvc-deps" and "msvc-fake-deps" options

    read new "msvc-static" and "msvc-fake" options

* build/generator/
    update code which creates "fake" projects

    change the way msvc dependencies are read off of the dependency

  (WinGeneratorBase.get_win_libs, WinGeneratorBase.get_win_sources):
    update calls to get_win_depends

r847486 | rey4 | 2003-10-13 22:45:49 -0500 (Mon, 13 Oct 2003)

Get rid of TargetExternal class and move its functionality into
TargetLinked. This change will help simplify parts of the project
generator that don't need to distinguish between generated projects
and preexisting projects. This change has no effect on outputted
makefiles or project files.

* build.conf
  (apr, aprutil, apriconv, apriconv_ccs_modules, apriconv_ces_modules,
   bdb, neon, gen_uri_delims, xml, ra-libs, __CONFIG__):
    change from "external" type to actual type. rename "make-lib" and
    "msvc-project" members to "external-lib" and "external-project"

* build/generator/
    set default path value

  (TargetLinked.__init__, TargetLinked.add_dependencies,
   TargetExternal, _build_types):
    move code from TargetExternal to TargetLinked, remove
    TargetExternal class

    assign "external_lib" member instead of "make_lib"

* build/generator/
  (Generator.write, Generator.write_symbols):
    update references to TargetExternal

* build/generator/
  (WinGeneratorBase.get_win_depends_impl, Generator.get_win_libs):
    update references to TargetExternal

* build/generator/
    update references to TargetExternal

* build/generator/
    update references to TargetExternal

r847424 | rey4 | 2003-10-08 01:01:01 -0500 (Wed, 08 Oct 2003)

* subversion/bindings/swig/INSTALL
    update instructions for building swig bindings with MSVC.NET

r847423 | rey4 | 2003-10-08 00:56:28 -0500 (Wed, 08 Oct 2003)

Handle svn_wc_status_func_t callback, also fixed a comment in svn_client.i
Missing callback was pointed out by Barry Scott <>
on the users list. He also posted a little script to test it.

Review by: Barry Scott <>

* subversion/bindings/swig/svn_client.i
  (svn_wc_status_func_t status_func, void *status_baton):
    new typemap

* subversion/bindings/swig/swigutil_py.h
    new thunk declaration

* subversion/bindings/swig/swigutil_py.c
    new thunk definition

    new static function used by svn_swig_py_status_func

r847370 | rey4 | 2003-10-04 13:25:15 -0500 (Sat, 04 Oct 2003)

Make python svn_config_get_config return an opaque pointer to the apr hash
of config options instead of converting the hash to a python dictionary.
Change motivated by discussion with Barry Scott <>
on the user's list.

* subversion/bindings/swig/core.i
  (apr_hash_t **cfg_hash): 
    return pointer instead of converting to dictionary

r847369 | rey4 | 2003-10-04 08:37:36 -0500 (Sat, 04 Oct 2003)

Get skipped sections to work again so gen-make can run without
--with-httpd option.

* build/generator/
    ignore skipped section names

r847320 | rey4 | 2003-09-29 15:59:50 -0500 (Mon, 29 Sep 2003)

Changes to and its regression testing script so they will
work on Windows. Martin Fuchs <> and
François Beausoleil <> helped test this
patch at different points and comments from Max Bowsher <>
and <> helped improve the code.

Review by: Martin Fuchs <>
           François Beausoleil <>
           Max Bowsher <>
           C. Michael Pilato <> 

* tools/cvs2svn/
    Changed this function to expect os.sep in the file path passed to
    it instead of forward slashes.

    new function to escape shell arguments, works differently on unix
    and windows

    changed to use the escape_shell_arg function

    explicitly specify text mode when opening list of filenames

* tools/cvs2svn/
    changed command line used to start cvs2svn on windows

    Added missing slash detection. Needed because absolute paths on
    windows begin with a drive letter instead of a slash.

    new function to take the place of time.strptime, which doesn't
    exist on windows

    replaced time.strptime() call with svn_strptime() call.

r847309 | rey4 | 2003-09-28 21:14:42 -0500 (Sun, 28 Sep 2003)

Store global lists of manpages, test programs, output directories, etc,
in dependency graph instead of as members of the Generator class.
This way code that builds up the lists can be moved out of the
main generator loop and into implementations of Target.add_dependencies.

This change affects the BUILD_DIRS lists in, but all
other output is unchanged. The BUILD_DIRS lists holds the same set of
of entries but is in a different order and has duplicates removed.

* build/generator/
    remove list members and code that builds lists

    update code which traverses target_dirs

  (list_types, dep_types):
    define constants for storing lists in graphs

  (TargetLinked.add_dependencies, TargetExe.add_dependencies,
   TargetExternal.add_dependencies, TargetProject.add_dependencies):
    add code to build up lists

    read "manpages" and "testing" options

* build/generator/
    update code which gets list of projects

* build/generator/
    update code which gets lists of directories, tests, and manpages

r847308 | rey4 | 2003-09-28 21:06:15 -0500 (Sun, 28 Sep 2003)

Instead of using ExternalLibrary class to represent external libraries
for makefile generation and TargetExternal for project generation,
remove ExternalLibrary class and add new "make-lib" member to
TargetExternal class so it can be used for all types of generation.
Removal of ExternalLibrary required that swig module dependencies on
swig utility and runtime libraries be specified differently than
before. So they're now listed in build.conf instead of being coded
in and

These changes have no effect on outputted makefiles or project files.

* build.conf
  (svn, svnadmin, svndumpfilter, svnlook, libsvn_client,
   libsvn_delta, libsvn_diff, libsvn_fs, libsvn_ra, libsvn_ra_dav,
   libsvn_ra_svn, libsvn_ra_local, libsvn_repos, libsvn_subr,
   libsvn_wc, svnserve, svnversion, libsvn_swig_py, libsvn_swig_java,
   libsvn_swig_perl, and a bunch of tests):
    depend on TargetExternal targets instead of ExternalLibrary
    targets, i.e. "apr" instead of "$(SVN_APR_LIBS)"

  (swig_client, swig_delta, swig_fs, swig_ra, swig_repos, swig_wc,
    add explicit dependencies on swig runtime and utility libraries

  (libsvn_swig_py, libsvn_swig_java, libsvn_swig_perl):
    add "lang" parameter and change type from "lib" to "swig-lib" so
    parameter will be used

  (apr, aprutil, apriconv, neon):
    specify "make-lib" parameter with make variable names for linking
    these libraries

  (bdb, ra-libs):
    new external targets

    rename "language" parameter to "lang"

* build/generator/
    look for TargetExternal.make_lib members instead of
    ExternalLibrary instances

* build/generator/
  (GeneratorBase.__init__, GeneratorBase.find_sections):
    expect "libs" and "nonlibs" parameters to contain lists of
    section names only and never refer to makefile variables


    remove code that added dependencies on swig runtime and utility

    assign "make_lib" member

  (TargetSWIGLib, _build_types):
    add "swig_lib" build type for swig utility libraries

    add "make_lib" and "msvc_libs" members

    rename "language" parameter to "lang"

    bring back this function

* build/generator/
  (WinGeneratorBase.envvars, WinGeneratorBase.__init__,
   WinGeneratorBase.subst_win_env, WinGeneratorBase.find_sections):
    remove mechanicsm for substituting make variables while building
    the dependency graph

    tweaked to work with new external targets and explicitly
    specified swig dependencies in build.conf

    add special handling for new external targets that aren't
    associated with projects

    change to handle TargetExternal instances instead of
    ExternalLibrary instances

r847307 | rey4 | 2003-09-28 20:56:12 -0500 (Sun, 28 Sep 2003)

Replace "path" and "project_name" options for "external" targets in
build.conf with a new option called "msvc-project" which explicitly
specifies the path of the external msvc project file.

This change affects the order of project dependency lists in the
generated msvc solution and workspace files, but all other output is

* build.conf
  (apr, aprutil, apriconv, apriconv_ccs_modules,
   apriconv_ces_modules, neon, gen_uri_delims,
   xml, __CONFIG__):
    specify external msvc project paths

* build/generator/
  (TargetExternal, TargetExternal.__init__,
    handle new "msvc-project" option and inherit directly from Target
    instead of TargetSpecial

  (TargetSpecial, TargetProject, TargetProject.__init__,
    move TargetSpecial code into TargetProject, and remove
    TargetSpecial class

* build/generator/
* build/generator/
    simplify code that makes external project paths

r847306 | rey4 | 2003-09-28 20:53:34 -0500 (Sun, 28 Sep 2003)

Mass renaming. "project" targets are now called "external" targets and
"utility" targets are now called "project" targets. This change has no
effect on the outputted makefile or project files.

Changed files:

* build.conf
* build/generator/
* build/generator/
* build/generator/
* build/generator/
* build/generator/

r847305 | rey4 | 2003-09-28 20:51:43 -0500 (Sun, 28 Sep 2003)

Get rid of "external" target type since external targets are really
just types of "utility" targets. This change has no effect on the
outputted makefile or project files.

* build.conf:
    change type for "external" to "utility"

* build/generator/
  (TargetExternal, _build_types):
    remove external target type

* build/generator/
* build/generator/
* build/generator/
    update various conditional expressions that detect external

r847304 | rey4 | 2003-09-28 20:49:16 -0500 (Sun, 28 Sep 2003)

Move some logic from dsp and vcproj generators into common base.
This change has no effect on the outputted makefile or project files.

* build/generator/
    skip script targets

* build/generator/
* build/generator/
    remove code for skipping script targets

r847303 | rey4 | 2003-09-28 20:45:27 -0500 (Sun, 28 Sep 2003)

Change implementations of two methods in WinGeneratorBase. These
changes have no effect on the outputted makefile or project files.

* build/generator/
    move recursive portion of gen_win_depends into
    gen_win_depends_impl to prevent unneccessary copying and sorting
    with each recursive call

    compute berkeley db library name in one place instead of three

r847302 | rey4 | 2003-09-28 20:41:49 -0500 (Sun, 28 Sep 2003)

Remove some extraneous settings from build.conf. This change has no
effect on the outputted makefile or project files.

* build.conf
    remove 'release' and 'debug' settings. These doen't have effect
    and i'm not sure what effect they were intended to have since
    the neon project file is not outputted by the build generator

r847152 | rey4 | 2003-09-17 13:08:09 -0500 (Wed, 17 Sep 2003)

* subversion/bindings/swig/core.i
    fix a comment

r847150 | rey4 | 2003-09-16 20:38:26 -0500 (Tue, 16 Sep 2003)

Fix bugs in configuration API reported by Barry Scott <>
on user list.

* subversion/bindings/swig/core.i
  (const char *config_dir):
    allow None to be passed for this argument

  (apr_hash_t **cfg_hash);
    make this argument into a return value

r847147 | rey4 | 2003-09-15 17:15:19 -0500 (Mon, 15 Sep 2003)

Add new "msvc-deps" and "msvc-fake-deps" configuration options, so
special case code for individual projects in can be

* build.conf
  (libsvn_ra_dav, libsvn_ra_svn, libsvn_wc, mod_authz_svn):
    use new build options for msvc dependency information
* build/generator/
  (WinGeneratorBase.get_install_targets, get_install_targets):
    read fake project information from graph instead of relying
    on hardcoded values.

r847146 | rey4 | 2003-09-15 17:11:00 -0500 (Mon, 15 Sep 2003)

Rename "depsubr" and "depdelta" projects to "libsvn_subr_fake" and

* build/generator/
    use new names for fake projects

r847145 | rey4 | 2003-09-15 17:09:21 -0500 (Mon, 15 Sep 2003)

Superficial changes to makefile / project generator: renaming variables,
reordering code, adding docstrings, changing whitespace, eliminating 
dead code and doing some minor refactoring.

Here is a list of renamed class members:

Old Names                       New Names
----------------------------    ----------------------------

Generator.targets               Generator.sections
Generator.skip_targets          Generator.skip_sections
Generator._find_libs            Generator.find_sections
Generator._filter_targets       Generator._filter_sections
DependencyNode.fname            DependencyNode.filename
Target.output                   Target.filename
ObjectFile.build_cmd            ObjectFile.compile_cmd

This patch has no effect on the outputted makefile or project files.

Changed files:

* build/generator/
* build/generator/
* build/generator/
* build/generator/
* build/generator/

r847144 | rey4 | 2003-09-15 17:07:07 -0500 (Mon, 15 Sep 2003)

Join Target and DependencyNode hierachies. The main obstacle to doing
this had been the differences between normal sections of build.conf and
swig sections. Normal sections are each associated with a single target,
while swig sections are associated with multiple targets (one for each
scripting language). This meant that data about swig sections and
targets had to be kept in two separate classes (SWIGLibrary for targets
and TargetSWIG for sections), while normal sections had their target
and section information in a single class (Target). This patch resolves
the difference by adding a new class called Target.Section which holds
section data for all sections.

This patch has no effect on outputted makefiles or project files.

* build/generator/
    update code that creates new targets, and remove some special
    case code for SWIG that is no longer neccessary

    just return string for unknown libraries instead of creating
    ExternalLibrary classes

    new method to add multiple dependencies at once

  (DependencyNode.__str__, DependencyNode.__cmp__):
    simplify these methods now that Target / DependencyNode class
    hierarchies are merged

  (SWIGLibrary, SWIGRuntimeLibrary): removed

  (Target, Target.__init__):
    inherit from DependencyNode, remove some member assignments that
    are no longer neccessary

  (Target.add_dependencies, TargetLinked.add_dependencies,
    changed signatures, implementations pretty much the same

    new inner class to hold section data and to create and keep track
    of Targets corresponding to a section.

  (Target.__str__, Target.__cmp__, Target.__hash__):
    removed, no longer needed now that Target inherits from

  (TargetLinked.__init__, TargetExe.__init__, TargetLib.__init__,
   TargetApacheMod.__init__, TargetSpecial.__init__):
    add "sources" and "fname" members

  (TargetSWIG, TargetSWIG.__init__):
    inherit from TargetLib instead of Target, add in some members
    from old SWIGLibrary class

  (TargetSWIG.add_dependencies, TargetSWIGRuntime.add_dependencies):
    change signatures, change implementations to add only one target
    instead of one target for each language

    rename "language" member to "lang" for consistency with other SWIG

* build/generator/
    just return string for unknown libraries instead of creating
    ExternalLibrary instances

    updated calls that create fake "depsubr" and "depdelta" targets

  (WinGeneratorBase.get_proj_sources, WinGeneratorBase.gen_proj_names,
   WinGeneratorBase.get_win_defines, WinGeneratorBase.get_win_includes,
   WinGeneratorBase.get_win_libs): check for TargetSWIG instances
    instead of SWIGLibrary instances

    updated calls that add dependencies

    remove some special case code for swig that is no longer neccessary

* build/generator/
    check for TargetSWIG instances instead of SWIGLibrary instances

* build/generator/
    check for TargetSWIG instances instead of SWIGLibrary instances

* build/generator/
    check for TargetSWIG instances instead of SWIGLibrary instances

r847143 | rey4 | 2003-09-15 17:04:31 -0500 (Mon, 15 Sep 2003)

Change project generator to take all projects from the dependency
graph instead of taking some from the dependency graph and some
from the "targets" dictionary. This change has no effect on
outputted project files.

* build/generator/
    get project targets from graph instead of "targets" dictionary

* build/generator/
* build/generator/
    remove special case code for TargetSWIG targets
    which is no longer neccessary

* build/generator/
  (dep_types): add new "DT_PROJECT" type
  (TargetSpecial.add_dependencies): add self to dependency graph

r847142 | rey4 | 2003-09-15 17:02:43 -0500 (Mon, 15 Sep 2003)

Sort outputted lists of dependencies in a more uniform way to make it
easier to check for regressions when the build generator is modified
in the future.

* build/generator/
  (DependencyNode.__str__, DependencyNode.__cmp__,
   Target.__str__, Target.__cmp__, _node_str, _node_cmp):
    make Target and DependencyNode instances use the same criteria
    for sorting

    add swig dependencies on libraries listed in 'libs' options in 
    build.conf after all other dependencies so lists of swig 
    dependencies in look more like lists of other
* build/generator/
    sort returned dependency list. This affects the ordering of
    dependency lists in subversion_msvc.dsw and subversion_vcnet.sln

r847141 | rey4 | 2003-09-15 16:59:21 -0500 (Mon, 15 Sep 2003)

Remove some unneccessary dependencies from build.conf

* build.conf:
  (__SWIG_PYTHON__, __SWIG_JAVA__): remove dependencies on static 
    utility libraries, since they aren't really targets themselves,
    just dependencies of individual swig modules

r847140 | rey4 | 2003-09-15 16:56:37 -0500 (Mon, 15 Sep 2003)

Prevent vcnet generator from including configuration info in 
subversion_vcnet.sln for projects that don't exist.

* build/generator/
  (Generator.write): don't include TargetExternal and TargetSWIG 
    targets in list of guids

r847049 | rey4 | 2003-09-04 13:21:14 -0500 (Thu, 04 Sep 2003)

Removed "custom" attribute, which was originally used to specify
custom build steps, but got hijacked for all sorts of other purposes.
Instead added "compile-cmd" attribute and two new "type" values for
apache modules and ra modules. These changes have no effect on the
generated makefile or project files.

* build/generator/
  (ObjectFile.__init__): added "build_cmd" member

  (SWIGUtilPython, SWIGUtilJava, SWIGUtilPerl, _custom_build):
    removed these ObjectFile subclasses

    removed "is_ra_module" and "is_apache_mod" members

    got rid of "custom" getter and added "compile-cmd" getter

  (TargetApacheMod, TargetRaModule, _build_types):
    added new target types for apache modules and ra modules.

  (TargetLib.__init__, TargetApacheMod.__init__):
    moved apache specific code into new apache class

* build.conf
  (libsvn_ra_dav, libsvn_ra_svn, libsvn_ra_local, mod_dav_svn,
    use new "type" values instead of "custom" attribute

  (libsvn_swig_py, libsvn_swig_java, libsvn_swig_perl):
    use new "compile-cmd" attribute instead of "custom" attribute

* build/generator/
    use "isinstance(target, TargetRaModule)" instead of

* build/generator/
  (adjust_win_depends, get_win_defines, get_win_includes,
   get_win_lib_dirs, get_win_libs, get_win_sources):
    use "isinstance(target, TargetApacheMod)" instead of

* build/generator/
* build/generator/gen_vcproj
    use "isinstance(target, TargetApacheMod)" instead of

r847048 | rey4 | 2003-09-04 13:17:32 -0500 (Thu, 04 Sep 2003)

Remove 'default_sources' member from TargetLinked classes. This change
has no effect on output.

* build/generator/
  (TargetExe, TargetLib, TargetDoc):
    remove "default_sources" static member

    remove reference to "default_sources" member

r847047 | rey4 | 2003-09-04 13:15:25 -0500 (Thu, 04 Sep 2003)

Get rid of default_install member on target classes. This change has
no effect on the outputted makefiles and project files, it's just an
attempt to reduce complexity.

* build.conf
  (svn, libsvn_client, libsvn_diff, libsvn_ra, libsvn_wc,
   svnversion, svn-config):
     specify "install" option instead of relying on default values

* build/generator/
    removed default "install" setting code

  (TargetExe, TargetScript, TargetLib, TargetDoc, TargetSWIG,
   TargetSWIGRuntime, TargetProject, TargetExternal, TargetUtility,
     remove "default_install" static members

  (TargetSWIG.add_dependencies, TargetSWIGRuntime.add_dependencies):
    remove reference to "install" member

  (TargetSWIG, TargetSWIG.__init__): inherit from Target instead of
    TargetLinked, since SWIG code no longer has anything in common
    with TargetLinked

* build/generator/
  (GeneratorBase.get_win_depends): remove reference to "install" member
    for SWIG targets

r847046 | rey4 | 2003-09-04 13:13:18 -0500 (Thu, 04 Sep 2003)

Made get_win_depends function a little more general so other code with
similar functionality could be eliminated. This change has no effect
on the outputted project files, it's just a minor code clean up.

* build/generator/
  (WinGeneratorBase.get_win_depends): added ability to retrieve lists
    of a target's dependencies minus its dependencies' dependencies,
    and ability to have lists filtered by class type

  (WinGeneratorBase.get_unique_win_depends): removed function

  (WinGeneratorBase.adjust_win_depends): replaced dependency
    computation with call to get_win_depends

r847018 | rey4 | 2003-09-01 18:27:53 -0500 (Mon, 01 Sep 2003)

Prevent some nonexistent swig-related paths from showing up in the

* build/generator/ (Generator.write): build CLEAN_FILES
  listing from dependency graph instead of targets array

r846993 | rey4 | 2003-08-29 10:47:15 -0500 (Fri, 29 Aug 2003)

Read target configuration values in Target classes instead of in
the build generator loop. This change has no effect on build
generator output, it's just an attempt to clean up some code.

* build/generator/

  (GeneratorBase.__init__): put config variables into a dictionary so
    Target classes can read their own configuration values. Also other
    minor changes to use new location of config values

  (GeneratorBase.__init__): compute intra-target dependencies for all
    Target instances instead of just TargetLinked instances so
    TargetSpecial no longer needs to inherit from TargetLinked

  (_cfg_defaults, GeneratorBase.__init__): remove global list of
    default config values

  (Target.__init__, TargetLinked.__init__, TargetExe.__init__,
   TargetLib.__init__, TargetSWIG.__init__, TargetSpecial.__init__,
   TargetProject.__init__, TargetExternal.__init__,
   TargetSWIGUtility.__init__): moved code that reads configuration
    values from GeneratorBase.__init__ to relevant Target
    constructors. This required a change in the constructors'

  (Target.__init__, TargetLinked.__init__): moved initialization of
    "install," "output," and "object_cls" members from Target's
    constructor to TargetLinked's because those variables are only
    relevant to linked targets. Moved initialization of
    "is_ra_module" in the opposite direction to be more consistent
    with "is_apache_mod" initialization.

  (TargetSWIG): changed to inherit from TargetLinked instead of
    Target, so the code in the TargetLinked constructor will run for
    SWIG targets.

  (TargetSWIG.add_dependencies, GeneratorBase.__init__): renamed
    TargetSWIG 'libs' member to 'swig_libs' to avoid confusion with
    the 'libs' configuration parameter. 'swig_libs' is an array of
    Target objects while 'libs' is a space separated string of target

* build/generator/

  (WinGeneratorBase.get_install_targets): updated creation of dummy
    targets for new Target constructor signature.

* build/generator/ (Generator.write):
* build/generator/ (Generator.write):
    check value of "project_name" member, instead of checking 
    existance since it now always exists

r846992 | rey4 | 2003-08-29 10:13:13 -0500 (Fri, 29 Aug 2003)

Treat swig utility targets more like regular utility targets to 
prevent win32 paths from showing up in

* build/generator/ (GeneratorBase.__init__): keep 
    swig_utility paths out of target_dirs

r846837 | rey4 | 2003-08-16 18:47:37 -0500 (Sat, 16 Aug 2003)

* build/win32/
    added comment describing script

r846836 | rey4 | 2003-08-16 18:18:58 -0500 (Sat, 16 Aug 2003)

Changed Visual Studio builds of SWIG bindings to dynamically link
with the SWIG runtime instead of statically linking with it.
(Makefile builds already do this). This is needed because the
SWIG runtime functions read and write global data. When static
linking is used each module gets its own incomplete copy of the
global data, now data is shared and accessible to all modules.

* build.conf
    new target: swig_runtime

* build/win32/
    new python script which generates swig runtime code for
    various languages

* build/generator/msvc_dsp.ezt
* build/generator/vcnet_vcproj.ezt
    pass -c option to swig. new custom build step to generate
    swig runtime source

* build/generator/
    (SWIGLibrary.__init__): changed signature and moved some
      functionality into TargetSWIG.add_dependencies

    (SWIGRuntimeLibrary): new DependencyNode class

    (TargetSWIG.add_dependencies): changes for new SWIGLibrary

    (TargetSWIGRuntime, _build_types): add new Target class

* build/generator/
    (Generator.write_project, Generator.adjust_win_depends):
      added code to handle writing project files for swig
      runtime libraries

r846835 | rey4 | 2003-08-16 16:54:22 -0500 (Sat, 16 Aug 2003)

Internal changes to treat swig libraries more like normal libraries

Log Message:

* build/generator/
    (TargetSWIG.add_dependencies): Add swig library dependencies to
      tree under the swig library name, rather than SWIGLibrary
      instance for consistency with other libraries.

* build/generator/
    (WinGeneratorBase.get_proj_sources): changes for compatibility

* build/generator/
    (Generator.write): remove some special treatment of
      SWIGLibrary instances now that their dependencies are
      added to the dependency graph just like other libraries.

r846834 | rey4 | 2003-08-16 16:19:29 -0500 (Sat, 16 Aug 2003)

Remove reference to non-existant __INSTALLER__ project in subversion_vcnet.sln

* build/generator/
    (Generator.write_project, Generator.write): changed to skip
      TargetExternal instances (like __INSTALLER__) completely.
      Before it was skipping the project files but still
      including references to them in the solution files.

r846833 | rey4 | 2003-08-16 15:58:22 -0500 (Sat, 16 Aug 2003)

Put project listings in MSVC workspace files in sorted order instead of random
order to make them easier to read and verify.

* build/generator/
* build/generator/
    (Generator.write): list projects in subversion_msvc.dsw and
      subversion_vcnet.sln files in alphabetical order

r846797 | rey4 | 2003-08-12 21:03:49 -0500 (Tue, 12 Aug 2003)

* subversion/bindings/swig/INSTALL
    Fix more typos and use more consistent capitalization and ordering

r846793 | rey4 | 2003-08-12 17:02:50 -0500 (Tue, 12 Aug 2003)

* subversion/bindings/swig/INSTALL
    fixed some typos

r846792 | rey4 | 2003-08-12 16:40:22 -0500 (Tue, 12 Aug 2003)

Updated Windows instructions.

* subversion/bindings/swig/INSTALL
    added instructions for installing swig and configuring Visual Studio
    on Windows. Also moved all windows instructions into a separate 

r846760 | rey4 | 2003-08-09 12:18:45 -0500 (Sat, 09 Aug 2003)

Visual Studio projects for perl bindings now link with the perl library.
The perl command used to figure out the library name came from
Branko Cibej <> and Colin Watson <>.

* build/generator/
    (WinGeneratorBase.__init__): now detects library name for installed
    perl version
    (WinGeneratorBase.get_win_libs): now includes perl library

r846693 | rey4 | 2003-07-31 04:05:57 -0500 (Thu, 31 Jul 2003)

removed a workaround for an old version of swig

* subversion/bindings/swig/svn_delta.i
    (svn_txdelta_window_t::new_data): made this const char * structure
    member read only instead of not exposing the structure at all

r846676 | rey4 | 2003-07-28 22:52:31 -0500 (Mon, 28 Jul 2003)

*ahem* ... Is this thing on?

  Add myself to the list of committers as having commit access to the
  bindings portion of the tree.

r846655 | cmpilato | 2003-07-27 16:41:11 -0500 (Sun, 27 Jul 2003)

Prevent users of swig bindings from assigning to const char * struct
members so there won't be any memory leaks.

Patch by: Russell Yanofsky <>

* subversion/bindings/swig/core.i: made struct members which cause
  "Warning(451): Setting const char * member may leak memory" immutable.

r846654 | cmpilato | 2003-07-25 11:06:33 -0500 (Fri, 25 Jul 2003)

Changes to make svn.fs.FileDiff class work on windows.

Patch by: Russell Yanofsky <>

* subversion/bindings/swig/python/svn/ 
  (_escape_msvcrt_shell_command, _escape_msvcrt_shell_arg): 
    added these functions for escaping command lines on windows.
  (FileDiff.get_pipe): changed to convert argument list to a string 
    on windows to avoid "TypeError: popen2() argument 1 must be string,
    not list".

r846653 | cmpilato | 2003-07-25 10:53:45 -0500 (Fri, 25 Jul 2003)

Bugfix for the python bindings. svn_repos_get_logs() causes a crash
when its "discover_changed_paths" argument is nonzero because the
thunk, svn_swig_py_thunk_log_receiver(), that forwards to a user
defined python callback function is unable to find a swig type
corresponding to the svn_log_changed_path_t structs that it has to
pass to the callback.

Patch by: Russell Yanofsky <>

* subversion/bindings/swig/swigutil_py.c
  (svn_swig_py_thunk_log_receiver): changed argument to
    SWIG_TypeQuery for "svn_log_changed_path_t" type

* subversion/bindings/swig/core.i: 
  (svn_log_changed_path_t): No longer ignore this.  Also, mark its
    'copyfrom_path' member is immutable.

r846453 | brane | 2003-07-01 02:10:51 -0500 (Tue, 01 Jul 2003)

Changes to make swig's generated .c files explicitly dependent on the headers
included in its .i files. This patch affects the generated makefile and
VC6 projects but not the VC7 projects.

Patch by: Russell Yanofsky <>

* build/generator/msvc_dsp.ezt: Added new "sources.user_deps" property.

* build/generator/ (GeneratorBase.compute_hdr_deps): Now computes
  header dependencies for generated swig files.
  (SWIGSource): new DependencyNode class to hold information about .i source
  (TargetSWIG.add_dependencies): changed to add SWIGSource nodes to the
  dependency graph instead of strings containing the paths to .i files

* build/generator/ (WinGeneratorBase.get_proj_sources): Now adds
  swig header dependencies from the dependency graph as user-defined
  dependencies of the generated .c files in visual studio projects.

* build/generator/ (Generator.write): SWIGSource nodes are
  cast to strings in two places so string and path operations can
  be performed on them.

r846403 | brane | 2003-06-24 05:50:29 -0500 (Tue, 24 Jun 2003)

Changes to make swig bindings actually function on windows.

Patch by: Russell Yanofsky <>

* build/generator/ (WinGeneratorBase.get_win_defines): Removed
  STATIC_LINKED preprocessor definition for swig bindings.

* build/generator/msvc_dsp.ezt:
* build/generator/vcnet_vcproj.ezt: Got rid of -noproxy argument for swig.
  Added new property sources.swig_target which holds the same path
  sources.swig_output except that swig_output uses forward slashes
  and swig_target uses backslashes

* build/generator/ (WinGeneratorBase.get_proj_sources): Removed
  extraneous arguments to two ProjectItem constructor calls.
  Added new source property "swig_target".

* subversion/bindings/swig/INSTALL: updated instructions

r846378 | brane | 2003-06-19 21:08:12 -0500 (Thu, 19 Jun 2003)

Make the generated SWIG bindings for Win32 more beautiful.

Patch by: Russell Yanofsky <>

* build.conf: Added description strings for SWIG libraries and two new
  utility targets, __SWIG_PYTHON__ and __SWIG_JAVA__.

* build/generator/msvc_dsp.ezt: For generated targets with the
  shared_dir flag set, append the target name to the Intermediate_Dir
  parameter. This lets each SWIG DLL use its own version resource.

* build/generator/ (GeneratorBase.__init__): Added new parser
  option "language" which is needed for the new __SWIG_*__ targets.

  (TargetSWIG.add_dependencies): Changed to set the description attribute
  on each newly created SWIGLibrary.

  (SWIGLibrary.__init__): Takes new parameter 'desc', which is used to
  initialize the 'desc' member. Init 'shared_dir' to 1.

  (lang_full_name): New; a map of language tags to pretty names for
  tweaking the SWIGLibrary descriptions.

  (Target): Added new member 'shared_dir', defaults to None.

  (TargetSWIG.add_dependencies): Pass 'self.desc' to the SWIGLibrary

  (TargetSWIGUtility): New class; inherits from TargetUtility for SWIG
  utility targets.

  (unique): Moved from and added a docstring.

* build/generator/ (WinGeneratorBase.get_unique_win_depends):
  Aow adds SWIGLibraries as dependencies of TargetSWIGUtility targets.

* build/generator/ (unique): moved to

  (Generator.write_project): no longer assigns None to the SWIGLibraries'
  "desc" attributes. Usee gen_base.unique to uniquify the install targets.

r846346 | brane | 2003-06-17 17:54:55 -0500 (Tue, 17 Jun 2003)

Changes to make/project generator to generate VC6 .dsp projects for the swig
bindings. This required some small changes to and,
but they do not effect the vcproj or makefile output. The resulting python
binaries seem to work fine, at least for the cvs2svn script. I didn't attempt
to build the java projects.

Patch by: Russell Yanofsky <>

* build/generator/msvc_dsp.ezt: New custom build section and two new
  attributes ("swig_language" and "swig_output") for swig sources.
  Renamed target's "is_apache_mod" property to "is_dll".

* build/generator/ (TargetSWIG.add_dependencies): Adds SWIGObject
  representing the generated C file as a dependency of the object file
  instead of adding a string containing the C file's name. This makes it
  possible to determine the name of the .i file associated with a SWIGLibrary
  object using the dependency graph.

* build/generator/ (get_win_defines,get_win_includes,get_win_libs):
  Added more hardcoded dependencies for the swig projects.

* build/generator/ (Generator.write_project): Added
  conditionals to detect if target is a swig library, and if so write out
  sources with custom build steps and set some attributes on the target

  (Generator.write): Changed to iterate over the targets in
  graph.get_all_sources(DT_INSTALL), making the dsp project generator
  more consistent with the vcproj and makefile generators. It still
  goes over the targets in the self.targets dictionary, though, to pick
  up fake targets like __ALL__ , depsubr, and so on.

* subversion/bindings/swig/INSTALL: Filled in instructions for Windows.

r846330 | brane | 2003-06-16 18:51:22 -0500 (Mon, 16 Jun 2003)

Small change to the fs library which prevents the heap corruption that
otherwise occurs when Subversion and Berkeley DB modules use different C
runtime libraries. This change should eliminate the need to distribute
separate builds of Berkeley DB for VC6 and VC7 on Windows.

Patch by: Russell Yanofsky <>

* subversion/libsvn_fs/fs.c (allocate_env): Changed to call set_alloc() on
  each new Berkeley DB environment object.