meson: add a 'coverity' option to fix the build
authorPeter Hutterer <peter.hutterer@who-t.net>
Fri, 11 May 2018 04:09:40 +0000 (14:09 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Wed, 16 May 2018 04:23:12 +0000 (14:23 +1000)
Coverity screwed up something so we can't submit builds right now, the
compilation units all fail. math.h pulls in a _Float128 type that coverity
cannot handle. So as a workaround, add an option to the build to avoid this
and remove it when the next version of coverity hopefully fixes this.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
meson.build
meson_options.txt

index 8d36357e8b5277c6150f59edae61a7edcbf17cc7..9d2cb444e5924ad43717bdc1dcae8acc15396652 100644 (file)
@@ -39,6 +39,21 @@ if cc.get_define('static_assert', prefix : prefix) == ''
        config_h.set('static_assert(...)', '/* */')
 endif
 
+# Coverity breaks because it doesn't define _Float128 correctly, you'll end
+# up with a bunch of messages in the form:
+# "/usr/include/stdlib.h", line 133: error #20: identifier "_Float128" is
+#           undefined
+#   extern _Float128 strtof128 (const char *__restrict __nptr,
+#          ^
+# We don't use float128 ourselves, it gets pulled in from math.h or
+# something, so let's just define it as uint128 and move on.
+# Unfortunately we can't detect the coverity build at meson configure
+# time, we only know it fails at runtime. So make this an option instead, to
+# be removed when coverity fixes this again.
+if get_option('coverity')
+       config_h.set('_Float128', '__uint128_t')
+endif
+
 # Dependencies
 pkgconfig = import('pkgconfig')
 dep_udev = dependency('libudev')
index 144f9160b2902ebbe26f9fb8d3740ca3889c244f..280cf49f18710211c32c98580f7b2ecaa4b00a88 100644 (file)
@@ -18,3 +18,7 @@ option('documentation',
        type: 'boolean',
        value: true,
        description: 'Build the documentation [default=true]')
+option('coverity',
+       type: 'boolean',
+       value: false,
+       description: 'Enable coverity build fixes, see meson.build for details [default=false]')