# Notes about GCC version 6.1.0 and later

*N.B* all packages build with gcc6 as of [2018-08-15](https://github.com/mxe/mxe/commit/7a5b4281dc86f225e55f3fb2122477eeb8088d15)

GCC 6.1 is released with a number of major changes
[[1](https://gcc.gnu.org/ml/gcc-announce/2016/msg00000.html)]
[[2](https://gcc.gnu.org/gcc-6/changes.html)]
. The most notable change is:
> The `C++` frontend now defaults to `C++14` standard instead of `C++98` it has
> been defaulting to previously, for compiling older `C++` code that might
> require either explicitly compiling with selected older `C++` standards,
> or might require some code adjustment, see
> [[3](https://gcc.gnu.org/gcc-6/porting_to.html)]
> for details.

So it is expected that some of MXE packages will fails to build from source
(FTBFS) with default GCC 6.x options. As a workaround we may add `-std=gnu++11`
or `-std=gnu++98` into `CXXFLAGS` for building problematic packages. And this
will not affect the builds with older versions of GCC.

For example, in autotools based projects:
```
...
$(PKG)_CXXFLAGS := -std=gnu++11
...
    cd '$(1)' && \
    CXXFLAGS="$($(PKG)_CXXFLAGS)" \
    ./configure \
...
```

Just after adding this plugin (gcc6) some packages were FTBFS. For now, these
packages might be already fixed by upstream developers, by additional patches
or using above mentioned workaround. See the table below for details. If some
MXE packages or your personal projects are still FTBFS you may look how other
packages were fixed and use similar approach.

Please ensure that proposed fixes for packages also build with earlier GCC
versions [[4](https://github.com/mxe/mxe/commit/a1cc019)].

| package            | target                                  | fixed in commit                                      |
| ------------------ | --------------------------------------- | ---------------------------------------------------- |
| boost              | all                                     | [7ca2bce](https://github.com/mxe/mxe/commit/7ca2bce) |
| cgal               | all                                     | -                                                    |
| dcmtk              | static (all)                            | [8608e13](https://github.com/mxe/mxe/commit/8608e13) |
| fdk-aac            | all                                     | [363aec7](https://github.com/mxe/mxe/commit/363aec7) |
| flann              | all                                     | [73cd813](https://github.com/mxe/mxe/commit/73cd813) |
| freeimage          | static (all)                            | [adc74c9](https://github.com/mxe/mxe/commit/adc74c9) |
| glib               | all                                     | [58c2c96](https://github.com/mxe/mxe/commit/58c2c96) |
| gtkimageview       | static (all)                            | -                                                    |
| gtkmm2             | static (all)                            | -                                                    |
| gtkmm3             | static (all)                            | -                                                    |
| guile              | i686-w64-mingw32.static (all)           | -                                                    |
| itk                | all                                     | [55e9bba](https://github.com/mxe/mxe/commit/55e9bba) |
| jsoncpp            | all                                     | [0bc73f7](https://github.com/mxe/mxe/commit/0bc73f7) |
| json_spirit        | all                                     | -                                                    |
| librsvg            | all                                     | -                                                    |
| libxml++           | all                                     | -                                                    |
| log4cxx            | static (all)                            | -                                                    |
| ocaml-lablgtk2     | i686-w64-mingw32.static (all)           | -                                                    |
| opencv             | all                                     | -                                                    |
| ossim              | all                                     | -                                                    |
| qt                 | all                                     | [5aac1c3](https://github.com/mxe/mxe/commit/5aac1c3) |
| qt3d               | all                                     | [d52961f](https://github.com/mxe/mxe/commit/d52961f) |
| qtwebkit           | i686-w64-mingw32.shared                 | -                                                    |
| sdl_sound          | static (all)                            | -                                                    |
| smpeg              | all                                     | [57cb6bb](https://github.com/mxe/mxe/commit/57cb6bb) |
| smpeg2             | all                                     | [1a42cbc](https://github.com/mxe/mxe/commit/1a42cbc) |
| ucl                | all                                     | [0ac2a77](https://github.com/mxe/mxe/commit/0ac2a77) |
| vtk                | static (all)                            | -                                                    |
| vtk6               | all                                     | -                                                    |
| wxwidgets          | static (all)                            | [6869e3b](https://github.com/mxe/mxe/commit/6869e3b) |
