• Bug#1102350: cmake 4.0 couldn't find correct std module source file

    From Leen Hawk@21:1/5 to All on Tue Apr 8 08:10:01 2025
    --65e83ee8e449b43bd10a50ac857ddb2f9451002e075d61e51bb6027f7b9f Content-Transfer-Encoding: 7bit
    Content-Type: text/plain; charset=UTF-8

    Package: cmake
    Version: 4.0.0

    With these test file:

    `CMakeLists.txt`:
    ```cmake
    cmake_minimum_required(VERSION 4.0.0)
    set(CMAKE_CXX_STANDARD 23)
    set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD "a9e1cf81-9932-4810-974b-6eccaf14e457")

    set(CMAKE_CXX_STANDARD_REQUIRED OFF)
    set(CMAKE_CXX_MODULE_STD 1)

    project(cpptest VERSION 0.1.0 LANGUAGES CXX)

    add_executable(cpptest main.cpp)
    ```
    `main.cpp`:
    ```cpp
    import std;
    int main(){
    std::println("Hello world!");
    }
    ```

    It shows:
    ```shell
    CMake Error at build/CMakeFiles/4.0.0/CMakeCXXCompiler.cmake:103 (target_sources):
    Cannot find source file:

    /usr/lib/gcc/x86_64-linux-gnu/include/c++/15/bits/std.cc
    Call Stack (most recent call first):
    /usr/share/cmake-4.0/Modules/CMakeTestCXXCompiler.cmake:91 (include)
    CMakeLists.txt:8 (project)


    CMake Error in CMakeLists.txt:
    No SOURCES given to target: __CMAKE__CXX23@synth_2e5b435a2e6c


    CMake Generate step failed. Build files cannot be regenerated correctly.
    ```

    I have change the `CMakeCXXCompiler.cmake`:
    ```
    target_sources(__CMAKE::CXX23
    INTERFACE
    FILE_SET std TYPE CXX_MODULES
    BASE_DIRS "/usr/lib/gcc/x86_64-linux-gnu/15/../include/c++/15/bits"
    FILES "/usr/lib/gcc/x86_64-linux-gnu/15/../include/c++/15/bits/std.cc" "/usr/lib/gcc/x86_64-linux-gnu/15/../include/c++/15/bits/std.compat.cc")
    endif ()
    ```
    to
    ```
    target_sources(__CMAKE::CXX23
    INTERFACE
    FILE_SET std TYPE CXX_MODULES
    BASE_DIRS "/usr/include/c++/15/bits"
    FILES "/usr/include/c++/15/bits/std.cc" "/usr/include/c++/15/bits/std.compat.cc")
    endif ()
    ```
    to fix it. And there is my issue on kitware cmake:https://gitlab.kitware.com/cmake/cmake/-/issues/26609

    They have fixed in gentoo and fedora. But debian doesn't. --65e83ee8e449b43bd10a50ac857ddb2f9451002e075d61e51bb6027f7b9f Content-Transfer-Encoding: quoted-printable
    Content-Type: text/html; charset=UTF-8

    <!DOCTYPE html><html><head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    </head>
    <body>
    <pre style="margin: 1.5em 0px; padding: 0px; border: 0px; outline: 0px; font-weight: 400; font-style: normal; font-size: 13px; font-family: monospace; vertical-align: baseline; overflow: auto; white-space: pre; color: rgb(0, 0, 0); font-variant-
    ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-
    decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><span>Package: cmake
    Version: 4.0.0

    With these test file:

    `CMakeLists.txt`:
    ```cmake
    cmake_minimum_required(VERSION 4.0.0)
    set(CMAKE_CXX_STANDARD 23)
    set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD &#34;a9e1cf81-9932-4810-974b-6eccaf14e457&#34;)

    set(CMAKE_CXX_STANDARD_REQUIRED OFF)
    set(CMAKE_CXX_MODULE_STD 1)

    project(cpptest VERSION 0.1.0 LANGUAGES CXX)

    add_executable(cpptest main.cpp)
    ```
    `main.cpp`:
    ```cpp
    import std;
    int main(){
    std::println(&#34;Hello world!&#34;);
    }
    ```

    It shows:
    ```shell
    CMake Error at build/CMakeFiles/4.0.0/CMakeCXXCompiler.cmake:103 (target_sources):
    Cannot find source file:

    /usr/lib/gcc/x86_64-linux-gnu/include/c++/15/bits/<a href="std.cc" target="_blank" ref="noopener noreferrer">std.cc</a>
    Call Stack (most recent call first):
    /usr/share/cmake-4.0/Modules/CMakeTestCXXCompiler.cmake:91 (include)
    CMakeLists.txt:8 (project)


    CMake Error in CMakeLists.txt:
    No SOURCES given to target: __CMAKE__CXX23@synth_2e5b435a2e6c


    CMake Generate step failed. Build files cannot be regenerated correctly.
    ```

    I have change the `CMakeCXXCompiler.cmake`:
    ```
    target_sources(__CMAKE::CXX23
    INTERFACE
    FILE_SET std TYPE CXX_MODULES
    BASE_DIRS &#34;/usr/lib/gcc/x86_64-linux-gnu/15/../include/c++/15/bits&#34;
    FILES &#34;/usr/lib/gcc/x86_64-linux-gnu/15/../include/c++/15/bits/<a href="std.cc" target="_blank" ref="noopener noreferrer">std.cc</a>&#34; &#34;/usr/lib/gcc/x86_64-linux-gnu/15/../include/c++/15/bits/<a href="std.compat.cc" target="_blank" ref="
    noopener noreferrer">std.compat.cc</a>&#34;)
    endif ()
    ```
    to
    ```
    target_sources(__CMAKE::CXX23
    INTERFACE
    FILE_SET std TYPE CXX_MODULES
    BASE_DIRS &#34;/usr/include/c++/15/bits&#34;
    FILES &#34;/usr/include/c++/15/bits/<a href="std.cc" target="_blank" ref="noopener noreferrer">std.cc</a>&#34; &#34;/usr/include/c++/15/bits/<a href="std.compat.cc" target="_blank" ref="noopener noreferrer">std.compat.cc</a>&#34;)
    endif ()
    ```
    to fix it. And there is my issue on kitware cmake:</span><a class="moz-txt-link-freetext" href="https://gitlab.kitware.com/cmake/cmake/-/issues/26609">https://gitlab.kitware.com/cmake/cmake/-/issues/26609</a>

    They have fixed in gentoo and fedora. But debian doesn&#39;t.</pre>

    </body></html>
    --65e83ee8e449b43bd10a50ac857ddb2f9451002e075d61e51bb6027f7b9f--

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Timo =?utf-8?Q?R=C3=B6hling?=@21:1/5 to All on Tue Apr 8 09:40:02 2025
    Control: reassign 1102350 libstdc++-15-dev
    Control: retitle 1102350 libstdc++-15-dev: libstdc++-modules.json points at wrong location

    * Leen Hawk <leenhawk@leenhawk.com> [2025-04-08 13:47]:
    I have change the `CMakeCXXCompiler.cmake`:
    ```
    target_sources(__CMAKE::CXX23
    INTERFACE
    FILE_SET std TYPE CXX_MODULES
    BASE_DIRS "/usr/lib/gcc/x86_64-linux-gnu/15/../include/c++/15/bits"
    FILES "/usr/lib/gcc/x86_64-linux-gnu/15/../include/c++/15/bits/std.cc" "/usr/lib/gcc/x86_64-linux-gnu/15/../include/c++/15/bits/std.compat.cc")
    endif ()
    ```
    to
    ```
    target_sources(__CMAKE::CXX23
    INTERFACE
    FILE_SET std TYPE CXX_MODULES
    BASE_DIRS "/usr/include/c++/15/bits"
    FILES "/usr/include/c++/15/bits/std.cc" "/usr/include/c++/15/bits/std.compat.cc")
    endif ()
    ```
    to fix it. And there is my issue on kitware cmake: >https://gitlab.kitware.com/cmake/cmake/-/issues/26609

    The source-path in libstdc++-modules.json is broken, and this needs to
    be fixed in gcc-15, not in cmake.

    They have fixed in gentoo and fedora. But debian doesn't.
    Nobody filed a bug yet, what do you expect? Especially with an
    unreleased snapshot of gcc that sits in experimental for a good reason.


    Cheers
    Timo

    --
    ⢀⣴⠾⠻⢶⣦⠀ ╭────────────────────────────────────────────────────╮
    ⣾⠁⢠⠒⠀⣿⡁ │ Timo Röhling │
    ⢿⡄⠘⠷⠚⠋⠀ │ 9B03 EBB9 8300 DF97 C2B1 23BF CC8C 6BDD 1403 F4CA │
    ⠈⠳⣄⠀⠀⠀⠀ ╰────────────────────────────────────────────────────╯

    -----BEGIN PGP SIGNATURE-----

    iQIzBAEBCgAdFiEEmwPruYMA35fCsSO/zIxr3RQD9MoFAmf0z+kACgkQzIxr3RQD 9MogPQ//YWTWGKx3XHFRTTyAdXx6WANFkw+ABOSmHFkfouPce6ISJAQuhhrbDYAA spXXdXcwBlMcX3GkW5xejT3y6CMRrmGNne6NKn4li+37vxQjyELu6QtbQQVO7kyu GrDge8uZXFgofscBir94lu7G3/ZxSe697u51X6mf83CGBfZorn3nQeaf2UokXfEL ZCq1snJlWEWaWnoKaCBs7C/8hw4MZKbdhTepunNACkbgXOG3SZfr7PJ4J6yj3WI7 HFrvZW8jyH4vNNcDzL32MWt50PhyyP+Z/hG3S3ilsxUA/FHMvxu9zE5NBOqmBIM5 j7tctHwFc17cDnK8ufAoJWd99tQgMWwIcbZOhZmczB6