Re-implement the forced usage of shared libraries for our test suite using a proper build.conf flag. The updated implementation resolves a few cases where we linked some applications (E.g. op-depth-test) against both the shared and the static version of the same library, because direct and indirect dependencies were handled using different code paths.
This last problem caused test failures on the Windows shared library buildbot, because svn_error_clear() unhooked a different function for its maintainer-abort on error leaks, than the other library inserted.
* build.conf (msvc-force-static): Document. (locks-test, checksum-test, crypto-test, client-test, conflict-data-test, db-test, pristine-store-test, entries-compat-test, op-depth-test, wc-test): Mark these tests as msvc-force-static they use functions that aren't published from the libraries that define them.
(entries-dump, wc-lock-tester, wc-incomplete-tester): Mark these wc.db test helpers as msvc-force-static.
* build/generator/gen_base.py (DependencyGraph.remove): New function. (TargetExe): Read new value from build.conf. (disable_shared): Don't touch msvc_export.
* build/generator/gen_win.py (get_install_targets): Handle the magic of forcing static library usage here, with the code that creates shared libraries. (create_dll_target): Remove magic name logic.
Revert the last few remaining pieces of r850307 (aka r10233), which made the swig bindings on Windows link the 'core' library as central component from every other swig library.
In the few months after this commit (read: somewhere in 2004) most of this change was tweaked and partially reverted, but some magic was left.
Since this didn't work out as planned (as looked at 9 years later), hacks were applied to work around all this. E.g some bindings forced a shared library and then used explicit dll exporting/importing on Windows to get things working.
This patch makes the bindings all use a proper shared library on Windows, with the function exporting handled via the standard header file system we use in other places.
* build.conf (swig_core): Remove keyword that hasn't been used for at least 8 years. (libsvn_swig_py, libsvn_swig_perl, libsvn_swig_ruby): Add svn-exports.
* build/generator/gen_base.py (TargetLib.disable_shared): New function. (TargetSWIG.__init__): Remove include_runtime initialization. (TargetSWIGLib.disable_shared): New function.
* build/generator/gen_win.py (get_install_targets): Call disable_shared instead of doing half its work locally. (get_def_file): Remove disable_shared check. (get_linked_win_depends): Remove disable_shared check.