From: Bill H. <bil...@ki...> - 2013-03-01 20:08:55
|
The default build of vxl with clang produces tons of warnings like this: /.../vxl/core/vnl/vnl_math.h:96:36: warning: in-class initializer for static data member of type 'const double' is a GNU extension [-Wgnu] static VNL_DLL_DATA const double one_over_sqrt2pi VCL_STATIC_CONST_INIT_FLOAT_DECL(0.39894228040143267794); The clang vxl dashboard gets around this issue with this: http://open.cdash.org/viewNotes.php?buildid=2820316 -Werror=gnu This means that any gnu extensions are errors and when cmake does the try compile for this it will fail. I am thinking the try compile needs to be fixed or maybe this usage should just be removed since it is a gnu only extension... Thoughts? -Bill |
From: Gehua Y. <yan...@gm...> - 2013-03-05 20:29:05
|
I am in favor of gradually dropping usage of GNU extension. C++11 standard provides a clean solution for constant value definition. Though not many compilers are C++11 compliant at this moment, it is definitely the future direction of VXL. Regards, Gehua Yang On Fri, Mar 1, 2013 at 2:40 PM, Bill Hoffman <bil...@ki...>wrote: > The default build of vxl with clang produces tons of warnings like this: > > /.../vxl/core/vnl/vnl_math.h:96:36: warning: in-class initializer for > static data member of type 'const double' is a GNU extension [-Wgnu] > > static VNL_DLL_DATA const double one_over_sqrt2pi > VCL_STATIC_CONST_INIT_FLOAT_DECL(0.39894228040143267794); > > > The clang vxl dashboard gets around this issue with this: > http://open.cdash.org/viewNotes.php?buildid=2820316 > -Werror=gnu > > This means that any gnu extensions are errors and when cmake does the > try compile for this it will fail. I am thinking the try compile needs > to be fixed or maybe this usage should just be removed since it is a gnu > only extension... > > Thoughts? > > -Bill > > > ------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_d2d_feb > _______________________________________________ > Vxl-maintainers mailing list > Vxl...@li... > https://lists.sourceforge.net/lists/listinfo/vxl-maintainers > |
From: Bill H. <bil...@ki...> - 2013-03-06 00:02:20
|
On 3/5/2013 3:28 PM, Gehua Yang wrote: > I am in favor of gradually dropping usage of GNU extension. C++11 > standard provides a clean solution for constant value definition. Though > not many compilers are C++11 compliant at this moment, it is definitely > the future direction of VXL. How about we start with this gnu extension... :) Would anyone mind if I permanently disabled the VCL_STATIC_CONST_INIT_FLOAT_DECL option? -Bill |
From: Matthew W. <mat...@ki...> - 2013-03-06 00:50:19
|
On 2013-03-05 19:02, Bill Hoffman wrote: > On 3/5/2013 3:28 PM, Gehua Yang wrote: >> I am in favor of gradually dropping usage of GNU extension. C++11 >> standard provides a clean solution for constant value definition. Though >> not many compilers are C++11 compliant at this moment, it is definitely >> the future direction of VXL. > How about we start with this gnu extension... :) > > Would anyone mind if I permanently disabled the > VCL_STATIC_CONST_INIT_FLOAT_DECL option? Won't this hurt optimization? Isn't the whole reason for this to exist to allow the compiler to optimize math expressions involving these constants? Especially in C++11 mode, I would think a better solution would be to correctly use 'constexpr', which would further allow using these in other constexpr's. (I should still have a patch for this floating around, but it is against a very old version of VXL, and I am pretty sure the relevant code has been rewritten since then. So... it won't apply, but might be useful for ideas.) -- Matthew |
From: Mathieu M. <mat...@gm...> - 2013-03-06 02:10:59
|
On Wed, Mar 6, 2013 at 1:02 AM, Bill Hoffman <bil...@ki...> wrote: > On 3/5/2013 3:28 PM, Gehua Yang wrote: >> I am in favor of gradually dropping usage of GNU extension. C++11 >> standard provides a clean solution for constant value definition. Though >> not many compilers are C++11 compliant at this moment, it is definitely >> the future direction of VXL. > How about we start with this gnu extension... :) > > Would anyone mind if I permanently disabled the > VCL_STATIC_CONST_INIT_FLOAT_DECL option? At least in debian I was able to get passed those using: http://patch-tracker.debian.org/patch/series/view/vxl/1.17.0-1/fixcompilation2.patch Patch is: -//#define VCL_CAN_STATIC_CONST_INIT_FLOAT 0 /* not allowed */ +#define VCL_CAN_STATIC_CONST_INIT_FLOAT 0 /* not allowed */ -- Mathieu |
From: Bill H. <bil...@ki...> - 2013-03-06 16:48:26
|
On 3/5/2013 9:10 PM, Mathieu Malaterre wrote: > Patch is: > -//#define VCL_CAN_STATIC_CONST_INIT_FLOAT 0 /* not allowed */ > +#define VCL_CAN_STATIC_CONST_INIT_FLOAT 0 /* not allowed */ Confirmed: diff --git a/vcl/vcl_config_compiler.h.in b/vcl/vcl_config_compiler.h.in index 2dcbee8..4db1f64 100644 --- a/vcl/vcl_config_compiler.h.in +++ b/vcl/vcl_config_compiler.h.in @@ -140,7 +140,7 @@ // define VCL_CAN_STATIC_CONST_INIT_FLOAT to either 0 or 1. //#define VCL_CAN_STATIC_CONST_INIT_FLOAT 1 /* allowed */ -//#define VCL_CAN_STATIC_CONST_INIT_FLOAT 0 /* not allowed */ +#define VCL_CAN_STATIC_CONST_INIT_FLOAT 0 /* not allowed */ #ifndef VCL_CAN_STATIC_CONST_INIT_FLOAT # define VCL_CAN_STATIC_CONST_INIT_FLOAT @VCL_STATIC_CONST_INIT_FLOAT@ #endif Removes all the warnings with clang. Alternatively, this could be put in an ifdef CLANG. -Bill |
From: Peter V. <pet...@ya...> - 2013-03-06 19:56:14
|
Or maybe put it inside an "#ifdef NO_GCC_COMPATIBILITY", and set that in an #ifdef CLANG (by default). -- Peter. Bill Hoffman wrote: [...] Alternatively, this could be put in an ifdef CLANG. -- |