Author: rinrab Date: Wed Sep 18 16:38:36 2024 New Revision: 1920771 URL: http://svn.apache.org/viewvc?rev=1920771&view=rev Log: build: Export some private functions from libraries, to link tools and tests which uses them, against shared versions.
Now, the tests can be compiled in shared configuration on Windows with CMake, which was impossible before due to not-exported functions from DLLs. * build.conf (libsvn_fs_fs, libsvn_fs_x, libsvn_fs_base, libsvn_subr, libsvn_wc): Add private headers to msvc-export to get them into .lib file. (executables, tests, and tools, which were forced to be static): Allow them to be linked against shared libraries. * build/generator/extractor.py, CMakeLists.txt (def file generators): Ignore svn_fs_base__trail_debug, because it is under ifdef. Tested on: - Windows, vcnet generator, shared libraries, including BDB. - Windows, CMake, shared libraries, without BDB, because it is not implemented in CMake build. Modified: subversion/trunk/CMakeLists.txt subversion/trunk/build.conf subversion/trunk/build/generator/extractor.py Modified: subversion/trunk/CMakeLists.txt URL: http://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?rev=1920771&r1=1920770&r2=1920771&view=diff ============================================================================== --- subversion/trunk/CMakeLists.txt (original) +++ subversion/trunk/CMakeLists.txt Wed Sep 18 16:38:36 2024 @@ -407,6 +407,8 @@ function(target_exports target_name) "svn_auth_kwallet_version" "svn_auth_get_gpg_agent_simple_provider" "svn_auth_gpg_agent_version" + # Unavailable in release mode + "svn_fs_base__trail_debug" ) set(def_file_path ${CMAKE_BINARY_DIR}/${target_name}.def) Modified: subversion/trunk/build.conf URL: http://svn.apache.org/viewvc/subversion/trunk/build.conf?rev=1920771&r1=1920770&r2=1920771&view=diff ============================================================================== --- subversion/trunk/build.conf (original) +++ subversion/trunk/build.conf Wed Sep 18 16:38:36 2024 @@ -247,7 +247,9 @@ type = lib path = subversion/libsvn_client libs = libsvn_wc libsvn_ra libsvn_delta libsvn_diff libsvn_subr apriconv apr install = lib -msvc-export = svn_client.h private/svn_client_mtcc.h private/svn_client_private.h private/svn_client_shelf.h private/svn_client_shelf2.h +msvc-export = svn_client.h private/svn_client_mtcc.h private/svn_client_private.h + private/svn_client_shelf.h private/svn_client_shelf2.h + ../libsvn_client/mergeinfo.h ../libsvn_client/client.h # Routines for binary diffing and tree-deltas [libsvn_delta] @@ -287,7 +289,12 @@ sources = *.c bdb/*.c util/*.c install = bdb-lib libs = libsvn_delta libsvn_subr aprutil apriconv apr bdb libsvn_fs_util add-install-deps = $(SVN_FS_LIB_INSTALL_DEPS) -msvc-export = ../libsvn_fs_base/fs_init.h +msvc-export = ../libsvn_fs_base/fs_init.h ../libsvn_fs_base/fs.h + ../libsvn_fs_base/id.h ../libsvn_fs_base/key-gen.h + ../libsvn_fs_base/lock.h ../libsvn_fs_base/trail.h + ../libsvn_fs_base/util/fs_skels.h ../libsvn_fs_base/bdb/changes-table.h + ../libsvn_fs_base/bdb/txn-table.h ../libsvn_fs_base/bdb/nodes-table.h + ../libsvn_fs_base/bdb/strings-table.h ../libsvn_fs_base/bdb/reps-table.h msvc-delayload = yes [libsvn_fs_fs] @@ -297,6 +304,11 @@ path = subversion/libsvn_fs_fs install = fsmod-lib libs = libsvn_delta libsvn_subr aprutil apriconv apr libsvn_fs_util msvc-export = private/svn_fs_fs_private.h ../libsvn_fs_fs/fs_init.h + ../libsvn_fs_fs/fs_fs.h ../libsvn_fs_fs/fs.h + ../libsvn_fs_fs/id.h ../libsvn_fs_fs/index.h + ../libsvn_fs_fs/low_level.h ../libsvn_fs_fs/pack.h + ../libsvn_fs_fs/rep-cache.h ../libsvn_fs_fs/rev_file.h + ../libsvn_fs_fs/util.h msvc-delayload = yes msvc-libs = ws2_32.lib @@ -306,7 +318,9 @@ type = fs-module path = subversion/libsvn_fs_x install = fsmod-lib libs = libsvn_delta libsvn_subr aprutil apriconv apr libsvn_fs_util -msvc-export = ../libsvn_fs_x/fs_init.h +msvc-export = ../libsvn_fs_x/fs_init.h ../libsvn_fs_x/batch_fsync.h + ../libsvn_fs_x/fs_init.h ../libsvn_fs_x/fs_x.h ../libsvn_fs_x/fs.h + ../libsvn_fs_x/hotcopy.h ../libsvn_fs_x/reps.h ../libsvn_fs_x/string_table.h msvc-delayload = yes msvc-libs = ws2_32.lib @@ -401,6 +415,7 @@ msvc-export = private/svn_thread_cond.h private/svn_waitable_counter.h private/svn_packed_data.h private/svn_object_pool.h private/svn_cert.h private/svn_config_private.h private/svn_dirent_uri_private.h + ../libsvn_subr/crypto.h # Working copy management lib [libsvn_wc] @@ -409,8 +424,11 @@ type = lib path = subversion/libsvn_wc libs = libsvn_delta libsvn_diff libsvn_subr aprutil apriconv apr install = lib -msvc-export = svn_wc.h private/svn_wc_private.h - +msvc-export = svn_wc.h private/svn_wc_private.h ../libsvn_wc/conflicts.h + ../libsvn_wc/lock.h ../libsvn_wc/token-map.h + ../libsvn_wc/tree_conflicts.h ../libsvn_wc/wc_db_private.h + ../libsvn_wc/wc_db.h ../libsvn_wc/wc-queries.h + ../libsvn_wc/wc.h ../libsvn_wc/workqueue.h # Subversion plugin for Apache's mod_dav [mod_dav_svn] description = Subversion plug-in for the Apache DAV module @@ -786,7 +804,6 @@ sources = fs-base-test.c install = bdb-test libs = libsvn_test libsvn_wc libsvn_fs libsvn_fs_base libsvn_delta libsvn_fs_util libsvn_subr apriconv apr -msvc-force-static = yes [strings-reps-test] description = Test strings/reps in libsvn_fs_base @@ -796,7 +813,6 @@ sources = strings-reps-test.c install = bdb-test libs = libsvn_test libsvn_wc libsvn_fs libsvn_fs_base libsvn_delta libsvn_subr apriconv apr -msvc-force-static = yes [changes-test] description = Test changes in libsvn_fs_base @@ -806,7 +822,6 @@ sources = changes-test.c install = bdb-test libs = libsvn_test libsvn_wc libsvn_fs libsvn_fs_base libsvn_delta libsvn_subr apriconv apr -msvc-force-static = yes # ---------------------------------------------------------------------------- # Tests for libsvn_fs_fs @@ -818,7 +833,6 @@ sources = fs-fs-pack-test.c install = test libs = libsvn_test libsvn_wc libsvn_fs libsvn_fs_fs libsvn_delta libsvn_subr apriconv apr -msvc-force-static = yes [fs-fs-fuzzy-test] description = Use fuzzying to test FSFS corruption resilience @@ -828,7 +842,6 @@ sources = fs-fs-fuzzy-test.c install = sub-test libs = libsvn_test libsvn_wc libsvn_fs libsvn_fs_fs libsvn_delta libsvn_repos libsvn_subr apriconv apr -msvc-force-static = yes [fs-fs-private-test] description = Test FSFS private API @@ -838,7 +851,6 @@ sources = fs-fs-private-test.c install = test libs = libsvn_test libsvn_wc libsvn_fs libsvn_fs_fs libsvn_delta libsvn_repos libsvn_subr apriconv apr -msvc-force-static = yes # ---------------------------------------------------------------------------- # Tests for libsvn_fs_x @@ -850,7 +862,6 @@ sources = fs-x-pack-test.c install = test libs = libsvn_test libsvn_wc libsvn_fs libsvn_fs_x libsvn_delta libsvn_subr apriconv apr -msvc-force-static = yes [string-table-test] description = Test fsfs string tables @@ -859,7 +870,6 @@ path = subversion/tests/libsvn_fs_x sources = string-table-test.c install = test libs = libsvn_test libsvn_wc libsvn_fs_x libsvn_subr apr -msvc-force-static = yes # ---------------------------------------------------------------------------- # Tests for libsvn_fs @@ -871,7 +881,6 @@ path = subversion/tests/libsvn_fs sources = locks-test.c install = test libs = libsvn_test libsvn_wc libsvn_fs libsvn_delta libsvn_subr apriconv apr -msvc-force-static = yes [fs-test] description = Tests in libsvn_fs @@ -952,7 +961,6 @@ path = subversion/tests/libsvn_subr sources = checksum-test.c install = test libs = libsvn_test libsvn_wc libsvn_subr apr zlib -msvc-force-static = yes [compat-test] description = Test compatibility functions @@ -977,7 +985,6 @@ path = subversion/tests/libsvn_subr sources = crypto-test.c install = test libs = libsvn_test libsvn_wc libsvn_subr aprutil apr -msvc-force-static = yes [dirent_uri-test] description = Test dirent_uri library @@ -1224,7 +1231,6 @@ path = subversion/tests/libsvn_client sources = client-test.c install = test libs = libsvn_test libsvn_client libsvn_wc libsvn_repos libsvn_ra libsvn_fs libsvn_delta libsvn_subr apriconv apr -msvc-force-static = yes [mtcc-test] description = Test Multi Command Context @@ -1241,7 +1247,6 @@ path = subversion/tests/libsvn_client sources = conflicts-test.c ../libsvn_wc/utils.c install = test libs = libsvn_test libsvn_client libsvn_wc libsvn_repos libsvn_ra libsvn_fs libsvn_delta libsvn_subr apriconv apr -msvc-force-static = yes # ---------------------------------------------------------------------------- # Tests for libsvn_diff @@ -1296,7 +1301,6 @@ path = subversion/tests/libsvn_wc sources = conflict-data-test.c utils.c install = test libs = libsvn_client libsvn_test libsvn_wc libsvn_subr apriconv apr -msvc-force-static = yes [db-test] description = Test the wc-ng database subsystem @@ -1305,7 +1309,6 @@ path = subversion/tests/libsvn_wc sources = db-test.c utils.c install = test libs = libsvn_client libsvn_test libsvn_wc libsvn_subr apriconv apr -msvc-force-static = yes [pristine-store-test] description = Test the wc-ng pristine text storage subsystem @@ -1314,7 +1317,6 @@ path = subversion/tests/libsvn_wc sources = pristine-store-test.c utils.c install = test libs = libsvn_client libsvn_test libsvn_wc libsvn_subr apriconv apr -msvc-force-static = yes [entries-compat-test] description = Test backwards compat for the entry interface @@ -1323,7 +1325,6 @@ path = subversion/tests/libsvn_wc sources = entries-compat.c utils.c install = test libs = libsvn_client libsvn_test libsvn_wc libsvn_subr apriconv apr -msvc-force-static = yes [op-depth-test] description = Test layered tree changes @@ -1332,7 +1333,6 @@ path = subversion/tests/libsvn_wc sources = op-depth-test.c utils.c install = test libs = libsvn_client libsvn_test libsvn_wc libsvn_subr apriconv apr -msvc-force-static = yes [wc-queries-test] description = Test Sqlite query evaluation @@ -1349,7 +1349,6 @@ path = subversion/tests/libsvn_wc sources = wc-test.c utils.c install = test libs = libsvn_client libsvn_test libsvn_wc libsvn_subr apriconv apr -msvc-force-static = yes # ---------------------------------------------------------------------------- # Tests for the client's internal functions @@ -1361,7 +1360,6 @@ path = subversion/tests/client sources = filesize-test.c install = test libs = libsvn_client libsvn_test libsvn_wc libsvn_subr apriconv apr -msvc-force-static = yes # ---------------------------------------------------------------------------- # These are not unit tests at all, they are small programs that exercise @@ -1393,7 +1391,6 @@ path = subversion/tests/cmdline sources = entries-dump.c install = test libs = libsvn_wc libsvn_subr apriconv apr -msvc-force-static = yes testing = skip [atomic-ra-revprop-change] @@ -1418,7 +1415,6 @@ path = subversion/tests/libsvn_wc sources = wc-lock-tester.c install = test libs = libsvn_wc libsvn_subr apriconv apr -msvc-force-static = yes testing = skip [wc-incomplete-tester] @@ -1427,7 +1423,6 @@ path = subversion/tests/libsvn_wc sources = wc-incomplete-tester.c install = test libs = libsvn_wc libsvn_subr apriconv apr -msvc-force-static = yes testing = skip [svn-wc-db-tester] @@ -1436,7 +1431,6 @@ path = tools/dev/wc-ng sources = svn-wc-db-tester.c install = test libs = libsvn_wc libsvn_subr apr -msvc-force-static = yes testing = skip # ---------------------------------------------------------------------------- Modified: subversion/trunk/build/generator/extractor.py URL: http://svn.apache.org/viewvc/subversion/trunk/build/generator/extractor.py?rev=1920771&r1=1920770&r2=1920771&view=diff ============================================================================== --- subversion/trunk/build/generator/extractor.py (original) +++ subversion/trunk/build/generator/extractor.py Wed Sep 18 16:38:36 2024 @@ -57,6 +57,9 @@ _filter_names = [ 'svn_auth_kwallet_version', 'svn_auth_get_gpg_agent_simple_provider', 'svn_auth_gpg_agent_version', + + # Unavailable in release mode + 'svn_fs_base__trail_debug', ] if __name__ == '__main__':