• Re: [gentoo-dev] How to add -std=c++14 to CXXFLAGS of a cmake.eclass ba

    From parona@21:1/5 to All on Sat Dec 17 13:10:02 2022
    Hi,

    but this makes no difference, c++17 is still used. How to convince cmake_src_compile to use -std=c++14?

    Cmake sets those flags during src_configure (when the build dir is configured) and therefore ignores CXXFLAGS entirely during src_compile.

    You should set those in src_configure before cmake_src_configure gets called. And Arsen Arsenovićs reply applies here on how to use flag-o-matic function append-cxxflags to do it.

    --
    Alfred Wingate

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Arsen =?utf-8?Q?Arsenovi=C4=87?=@21:1/5 to Andrey Grozin on Sat Dec 17 13:00:01 2022
    Hi,

    Andrey Grozin <grozin@woodpecker.gentoo.org> writes:

    Hello *,

    I'm trying to package a new version of sci-visualization/gle which now uses cmake. After some patching CMakeLists.txt, it configures successfully. But at build time it spits zillion errors

    error: ISO C++17 does not allow dynamic exception specifications

    The natural thing to try is to add -std=c++14 to CXXFLAGS. So I tried

    src_compile() {
    CXXFLAGS="${CXXFLAGS} -std=c++14" cmake_src_compile
    }

    but this makes no difference, c++17 is still used. How to convince cmake_src_compile to use -std=c++14?

    Thanks in advance,
    Andrey


    audacity-2.4.2-r3.ebuild has something for this already:
    ``append-cxxflags -std=gnu++14''

    Check out flag-o-matic.eclass. Note that the build system could still
    be overriding it, so if that fails, I'd check the compilation commands
    for -std=... parameters, as well as CXX_STANDARD_LEVEL, or whatever
    cmake calls it.

    Hope that helps, have a great day.
    --
    Arsen Arsenović

    --=-=-Content-Type: application/pgp-signature; name="signature.asc"

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

    iOYEARYKAI4WIQT+4rPRE/wAoxYtYGFSwpQwHqLEkwUCY52uMl8UgAAAAAAuAChp c3N1ZXItZnByQG5vdGF0aW9ucy5vcGVucGdwLmZpZnRoaG9yc2VtYW4ubmV0RkVF MkIzRDExM0ZDMDBBMzE2MkQ2MDYxNTJDMjk0MzAxRUEyQzQ5MxAcYXJzZW5AYWFy c2VuLm1lAAoJEFLClDAeosST3oQA/Re52pih6NF+CtGxi51oiGF3VYJN0HjUKKx3 2geO+pUQAP93IM62mEsxGJ75SjIUE0hwwSspxUPdU842DnE7npGwAw==5xtZ
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Azamat Hackimov@21:1/5 to All on Sat Dec 17 14:10:01 2022
    Hello.

    You need to add

    set(CMAKE_CXX_STANDARD 14)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)

    into CMakeLists.txt after project() declaration via patching. Since
    this is an upstream issue, you need to notify upstream about C++17 incompatibility.

    сб, 17 дек. 2022 г. в 14:35, Andrey Grozin <grozin@woodpecker.gentoo.org>:

    Hello *,

    I'm trying to package a new version of sci-visualization/gle which now
    uses cmake. After some patching CMakeLists.txt, it configures
    successfully. But at build time it spits zillion errors

    error: ISO C++17 does not allow dynamic exception specifications

    The natural thing to try is to add -std=c++14 to CXXFLAGS. So I tried

    src_compile() {
    CXXFLAGS="${CXXFLAGS} -std=c++14" cmake_src_compile
    }

    but this makes no difference, c++17 is still used. How to convince cmake_src_compile to use -std=c++14?

    Thanks in advance,
    Andrey



    --
    From Siberia with Love!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Azamat Hackimov@21:1/5 to All on Sat Dec 17 14:20:01 2022
    Also, according to commit history, dynamic exception usage was removed
    in https://github.com/vlabella/GLE/commit/14753e9aba9eb6490358caaeb60f6e36ba314acc,
    so you can try to apply this patch.

    сб, 17 дек. 2022 г. в 16:05, Azamat Hackimov <azamat.hackimov@gmail.com>:

    Hello.

    You need to add

    set(CMAKE_CXX_STANDARD 14)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)

    into CMakeLists.txt after project() declaration via patching. Since
    this is an upstream issue, you need to notify upstream about C++17 incompatibility.

    сб, 17 дек. 2022 г. в 14:35, Andrey Grozin <grozin@woodpecker.gentoo.org>:

    Hello *,

    I'm trying to package a new version of sci-visualization/gle which now
    uses cmake. After some patching CMakeLists.txt, it configures
    successfully. But at build time it spits zillion errors

    error: ISO C++17 does not allow dynamic exception specifications

    The natural thing to try is to add -std=c++14 to CXXFLAGS. So I tried

    src_compile() {
    CXXFLAGS="${CXXFLAGS} -std=c++14" cmake_src_compile
    }

    but this makes no difference, c++17 is still used. How to convince cmake_src_compile to use -std=c++14?

    Thanks in advance,
    Andrey



    --
    From Siberia with Love!



    --
    From Siberia with Love!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andrey Grozin@21:1/5 to All on Sat Dec 17 14:20:01 2022
    This message is in MIME format. The first part should be readable text,
    while the remaining parts are likely unreadable without MIME-aware tools.

    On Sat, 17 Dec 2022, Arsen Arsenović wrote:
    audacity-2.4.2-r3.ebuild has something for this already:
    ``append-cxxflags -std=gnu++14''
    Thanks, this works.

    Andrey

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)