RFE: clang support
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Inkscape |
Fix Released
|
Wishlist
|
Samuel Chase |
Bug Description
Follow-up report to
Bug #889172 “Compile failure (clang): "variable length array" errors in box3d.cpp”
<https:/
Rationale:
- «clang support is a good thing»
<http://
- 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 (Clang 3.x)
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 with
> checking GNU compiler version...
> configure: error: gcc >= 3.0 is needed to compile inkscape
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/
- src/2geom/
3) blocker: failure to compile 'src/color-
<http://
«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 version 3.0 (tags/RELEASE_
- clang version 3.1 (branches/
---
[1] <http://
[2] <http://
<http://
<http://
<http://
[3] <http://
description: | updated |
Changed in inkscape: | |
assignee: | nobody → Samuel Chase (samebchase) |
status: | Confirmed → In Progress |
Changed in inkscape: | |
status: | Fix Committed → Fix Released |
Errors in 'src/2geom' (clang 3.1):
CXX 2geom/basic- intersection. o 2geom/basic- intersection. cpp:67: 26: error: variable length array of
^
../../src/
non-POD element type 'Geom::Point'
Geom::Point Vtemp[sz][sz];
1 error generated.
CXX 2geom/solve- bezier- parametric. o 2geom/solve- bezier- parametric. cpp:72: 21: error: variable length array of
^ 2geom/solve- bezier- parametric. cpp:77: 34: error: use of undeclared parametric_ bezier_ roots(Right, degree, solutions, depth+1);
^ 2geom/solve- bezier- parametric. cpp:194: 32: error: variable length array 1][degree+ 1];
^
../../src/
non-POD element type 'Geom::Point'
Geom::Point Left[degree+1], /* New left and right */
../../src/
identifier 'Right'
find_
../../src/
of non-POD element type 'Geom::Point'
Geom::Point Vtemp[degree+
3 errors generated.