← Back to team overview

kicad-developers team mailing list archive

Re: [PATCH] Adapt CMake 3.0 compatibility code for C++14

 

Hi,

On Wed, Jul 17, 2019 at 01:24:26PM -0400, Seth Hillbrand wrote:

> Any reason to be using the gnu++14 extensions?  I thought we were
> trying to stay with the vanilla c++14.

I went for consistency. This code is pretty much unused anyway, since it
only handles the very old CMake versions that don't know the properties --
that's why there is a version check in front that causes a fatal error if
someone bumps the minimum CMake version without removing the compatibility
code.

We currently have the respective compiler extensions enabled (both GNU and
Visual Studio), because we don't have

    set( CMAKE_CXX_EXTENSIONS OFF )

The problem is that doing that breaks msys2 builds with wx 3.0, because gcc
provides a POSIX-compliant strlen implementation as an extension that
becomes unavailable in standards-compliant mode. A wx header decides to
redirect missing functions to replacements in the DLL, but building the DLL
with extensions enabled means that the function is missing -- so builds
with -std=c++14 fail to link with a missing symbol.

I dimly remember that this is fixed in wx 3.1 (just provide the CRT
functions unconditionally), but I can't find the bug report anymore.

   Simon


Follow ups

References