Comment 0 for bug 992124

su_v (suv-lp) wrote :

Follow-up report to
Bug #889172 “Compile failure (clang): "variable length array" errors in box3d.cpp”
<https://bugs.launchpad.net/inkscape/+bug/889172>

Rationale:
- «clang support is a good thing»
<http://thread.gmane.org/gmane.comp.graphics.inkscape.devel/36760/focus=36767>

- OS X is migrating from GCC to CLANG (latest Xcode versions >= 4.2 no longer include Apple's GCC at all). It might be desirable to support building Inkscape using the system compiler on latest OS X versions (compiling Inkscape with custom GCC versions can cause known compatibility issues because the C++ libraries are built with a different compiler version [1]).

Drawbacks:
- Missing OpenMP support (?)

Current status:
Even though most of the reported 'non-POD element type' issues have been fixed in current trunk (and backported to 0.48.x), Inkscape still fails to build with clang:

1) autotools - configure.ac: configure fails
The check for the compiler version has 'gcc version' hardcoded and fails with clang. [2]

2) unsolved 'variable length array of non-POD element type' errors
- src/2geom/basic-intersection.cpp
- src/2geom/solve-bezier-parametric.cpp

3) blocker: failure to compile 'src/color-profile.cpp'
<http://www.graphicall.org/ftp/ideasman42/inkscape_clang.html>

«I think the problem is that ColorProfileImpl should be defined in the
Inkscape namespace instead of in the global namespace, so that it
matches its declaration in color-profile.h. The code has an using
declaration that pulls ColorProfileImpl into the global namespace and
it looks like GCC then allows defining the type in the scope of the
using declaration, but I doubt whether this is standards conforming.» [3]

Test system:
OS X 10.7.2, MacPorts 2.0.4 (up-to-date)
Inkscape 0.48+devel r11297

Clang versions tested:
- Apple clang version 3.0 (tags/Apple/clang-211.12) (based on LLVM 3.0svn)
- clang version 3.0 (tags/RELEASE_30/final) (MacPorts)
- clang version 3.1 (branches/release_31 155781) (MacPorts)

---
[1] <http://wiki.inkscape.org/wiki/index.php/FAQ#On_Linux.2C_Inkscape_crashes_with_.22invalid_pointer.22_message>
[2] <http://trac.macports.org/ticket/31492>
    <http://fink.cvs.sourceforge.net/fink/dists/10.7/stable/main/finkinfo/graphics/inkscape.info?view=markup#l104>
[3] <http://thread.gmane.org/gmane.comp.graphics.inkscape.devel/37024/focus=37060>