I needed only Apache modules, nothing else, so I omitted some prerequsities for client part. Complete SubVersion will not build using the following instructions. Also I needed only FSFS storage for SubVersion, I skipped BDB completely.
- Download and unpack SubVersion source (I used latest 1.6.12).
- Download and unpack SQLite amalgamation to "sqlite-amalgamation" subdirectory.
- Download and unpack ZLIB to "zlib" subdirectory.
- Create empty subdirectory "neon".
- Run (for VS2008): gen-make.py -t vcproj --vsnet-version=2008 --with-httpd=path-to-your-configured-httpd-source
First problem: ZLIB build must be fixed for x64, otherwise there will be one unresolved external symbol later. Quick fix is to open build\win32\build_zlib.bat and insert this at line 51:
set ASM_OPTS=AS=ml64 LOC="-DASMV -DASMINF" OBJA="inffasx64.obj gvmat64.obj inffas8664.obj"
(info found in zlib\win32\Makefile.msc) and then open zlib\contrib\masmx64\inffas8664.c and prepend "../../" to four includes at the beginning.
- Open subversion_vcnet.sln in VS and select Release x64
- Select mod_authz_svn and build it, all required dependencies will be built automatically
Second problem: there will be a lot of unresolved external symbols. I added following include paths and input files for linker:
for mod_dav_svn:
..\..\..\Release\subversion\libsvn_delta
..\..\..\Release\subversion\libsvn_fs
..\..\..\Release\subversion\libsvn_fs_fs
..\..\..\Release\subversion\libsvn_fs_util
..\..\..\Release\subversion\libsvn_repos
..\..\..\Release\subversion\libsvn_subr
xml.lib
Crypt32.lib
svn_delta-1.lib
svn_fs-1.lib
libsvn_fs_fs-1.lib
libsvn_fs_util-1.lib
svn_repos-1.lib
svn_subr-1.lib
for mod_authz_svn:
..\..\..\Release\subversion\libsvn_repos
..\..\..\Release\subversion\libsvn_subr
svn_repos-1.lib
svn_subr-1.lib
- After that build should succeed and resulting Apache modules are:
Release\subversion\mod_authz_svn\mod_authz_svn.so
Release\subversion\mod_dav_svn\mod_dav_svn.so
SubVersion is linked in statically. The usual 32bit version uses external dlls, but I wasn't able to build it this way. Not really a problem for me, as there won't be anything else on the same server that could share the dlls anyway.
As I mentioned, the resulting modules seem to work fine, but is everything really ok or is there any hidden problem waiting to show itself in the worst possible time? Who knows..
