On Wed, Jun 12, 2024 at 11:02 PM Jun Omae <jun6...@gmail.com> wrote:

> On Wed, Jun 12, 2024 at 5:37 AM Timofey Zhakov <t...@chemodax.net> wrote:
> > > 2.
> > > gen-make.py accepts --with-PKG=... options like the following, but all
> > > options should be passed to cmake -B again. Why CMakeLists.txt is
> > > generated instead of adding directly CMakeLists.txt, in the patch?
> >
> > That's a good question. I decided to just generate the CMake files
> > based on build.conf. I think this approach is great because we can
> > keep vcnet project files and Unix Makefiles until the CMake can fully
> > replace them. The dependency searching is delegated to the CMake, so
> > the CMakeLists.txt file can be generated from the release.py script
> > and put into release tar-ball like 'configure', because it would not
> > contain any paths and options. Additionally, we can also someday just
> > simply put the generated CMakeLists.txt file into the repository,
> > cut-off the gen-make build system, and use CMake as the main build
> > system.
>
> Thanks for the explanation. That makes sense. Adding CMakeLists.txt file
> to release tarball seems to be good to me.
>
> > 1. You don't need to pass the options to the gen-make command, because
> > the dependency searching is done via CMake, so the options are ignored.
> > 2. Instead of specifying each include dir and library path, you could
> > just specify the CMAKE_INSTALL_PREFIX variable to a path where the
> > dependencies are installed.
>
> I try to use CMAKE_INSTALL_PREFIX variable. However, I think CMakeLists.txt
> should have all options corresponding to the --with-PKG of gen-make.py.
>
> Just tried with the following commands:
> [[[
> cmake.exe ^
>   -B "C:/usr/src/subversion/trunk-py312/out" ^
>   -D CMAKE_BUILD_TYPE=Release ^
>   -D CMAKE_PREFIX_PATH=C:/usr/apps/vcpkg/installed/x64-windows-release ^
>   -D BUILD_SHARED_LIBS=ON ^
>   -D SVN_SQLITE_USE_AMALGAMATION=OFF ^
>   -D SVN_USE_INTERNAL_LZ4=ON ^
>   -D SVN_USE_INTERNAL_UTF8PROC=ON ^
>   -D APR_INCLUDE_DIR=C:/usr/src/subversion/win64-vs16/httpd/include ^
>   -D APR_LIBRARY=C:/usr/src/subversion/win64-vs16/httpd/lib/libapr-1.lib ^
>   -D APRUTIL_INCLUDE_DIR=C:/usr/src/subversion/win64-vs16/httpd/include ^
>   -D
> APRUTIL_LIBRARY=C:/usr/src/subversion/win64-vs16/httpd/lib/libaprutil-1.lib
> ^
>   -D
> SQLite3_INCLUDE_DIR=C:/usr/apps/vcpkg/installed/x64-windows-static/include
> ^
>   -D
> SQLite3_LIBRARY=C:/usr/apps/vcpkg/installed/x64-windows-static/lib/sqlite3.lib
> ^
>   || exit/b 1
>
> cmake.exe ^
>   --build "C:/usr/src/subversion/trunk-py312/out" ^
>   --config Release ^
>   --parallel --verbose ^
>   -- ^
>   -clp:ShowCommandLine -fl -flp:logfile=msbuild.log ^
>   || exit/b 1
> ]]
>
> But I encountered many "unresolved external symbol __imp_htonl" errors.
>
> [[[
>      6>checksum.obj : error LNK2019: unresolved external symbol
> __imp_htonl referenced in function close_handler
> [C:\usr\src\subversion\trunk-py312\out\libsvn_subr.vcxproj]
> ]]]
>
> It seems to be caused by missing ws2_32.lib for the linking. I guess
> `gen_cmake.py` needs methods like `get_static_win_depends` and
> `get_linked_win_depends` in `gen_win.py`? Have you got success to
> build on your Windows environment with cmake?
>
> --
> Jun Omae <jun6...@gmail.com> (大前 潤)
>

Missing ws2_32.lib errors: this patch depends on the earlier patch
"svn-fix-ws2_32.patch.txt"
which hasn't been committed yet. That patch can be found in [1]. I don't
have Windows setup right now so I can't test it, but if you can test it
then maybe you could go ahead and commit that one?

[1]
https://lists.apache.org/thread/gz3x1gn7r5r9ynrtp954pmfhsbgrgnm4

Cheers,
Nathan

Reply via email to