On Fri, Mar 27, 2026 at 7:42 AM Jun Omae <[email protected]> wrote:
>
> On 2026/03/20 6:06, [email protected] wrote:
> > Author: rinrab
> > Date: Thu Mar 19 21:06:44 2026
> > New Revision: 1932395
> >
> > Log:
> > cmake: Use newer sqlite targets due to deprecation.
> >
> > In cmake 4.3, the standard module to locate the sqlite library, changed 
> > names
> > of its exported targets. I have a lot to say, but I would prefer to stay 
> > quite
> > about that.
> >
> > Fixed by updating target that we use, with a code to handle older cmake
> > versions.
> >
> > * CMakeLists.txt
> >   (sqlite): Use new targets.
> >
> > Modified:
> >    subversion/trunk/CMakeLists.txt
> >
> > Modified: subversion/trunk/CMakeLists.txt
> > ==============================================================================
> > --- subversion/trunk/CMakeLists.txt   Thu Mar 19 20:57:55 2026        
> > (r1932394)
> > +++ subversion/trunk/CMakeLists.txt   Thu Mar 19 21:06:44 2026        
> > (r1932395)
> > @@ -360,7 +360,14 @@ else()
> >    find_package(SQLite3)
> >
> >    if(SQLite3_FOUND)
> > -    add_library(external-sqlite ALIAS SQLite::SQLite3)
> > +    # Support for CMake < 4.3
> > +    # In prior versions of cmake, the sqlite targets were exported in the
> > +    # SQLite namespace, which was then changed to SQLite3.
> > +    if(NOT TARGET SQLite3::SQLite3)
> > +      add_library(SQLite3::SQLite3 ALIAS SQLite::SQLite3)
> > +    endif()
> > +
> > +    add_library(external-sqlite ALIAS SQLite3::SQLite3)
> >    else()
> >      find_package(SQLiteAmalgamation REQUIRED)
> >      add_library(external-sqlite ALIAS SQLite::SQLite3Amalgamation)
> >
>
> After r1932395, builds using cmake on Windows are failing due to the
> following error [1]:
>
> [[[
> -- Found SQLite3: C:/vcpkg/installed/x64-windows/include (found version 
> "3.51.2")
> CMake Error at C:/vcpkg/scripts/buildsystems/vcpkg.cmake:653 (_add_library):
>   _add_library cannot create ALIAS target "external-sqlite" because target
>   "SQLite3::SQLite3" is itself an ALIAS.
> Call Stack (most recent call first):
>   CMakeLists.txt:370 (add_library)
> ]]]
>
> CMake on windows-latest image (windows-2025) is 3.31.6, however the
> changes are not working as expected.
>
> Proposed fix:
>
> [[[
> diff --git a/CMakeLists.txt b/CMakeLists.txt
> index f71c95337..a920cbc9a 100644
> --- a/CMakeLists.txt
> +++ b/CMakeLists.txt
> @@ -349,12 +349,12 @@ else()
>    if(SQLite3_FOUND)
>      # Support for CMake < 4.3
>      # In prior versions of cmake, the sqlite targets were exported in the
> -    # SQLite namespace, which was then changed to SQLite3.
> -    if(NOT TARGET SQLite3::SQLite3)
> -      add_library(SQLite3::SQLite3 ALIAS SQLite::SQLite3)
> +    # SQLite namespace.
> +    if(TARGET SQLite3::SQLite3)
> +      add_library(external-sqlite ALIAS SQLite3::SQLite3)
> +    else()
> +      add_library(external-sqlite ALIAS SQLite::SQLite3)
>      endif()
> -
> -    add_library(external-sqlite ALIAS SQLite3::SQLite3)
>    else()
>      find_package(SQLiteAmalgamation REQUIRED)
>      add_library(external-sqlite ALIAS SQLite::SQLite3Amalgamation)
> ]]]
>
>
> [1] 
> https://github.com/apache/subversion/actions/runs/23316955539/job/67819718566#step:12:205

+1

This fix looks good to me. Removing the intermediate alias into
SQLite3::SQLite3 and binding it directly to external-sqlite is
reasonable.

I copied that from the documentation.

-- 
Timofei Zhakov

Reply via email to