summaryrefslogtreecommitdiff
path: root/meson.build
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2023-01-06 00:47:31 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2023-01-10 17:25:51 +0200
commitaed615e1730d17a3da77ea22d5af43440cc4d873 (patch)
tree4b8e318a47b5404d143640def827a3ecb1746505 /meson.build
parent0e3b8d71f590d93540b2e6a6500cc7739f7199e9 (diff)
libcamera: base: utils: Support C libraries lacking locale support
Not all C libraries include support for locale objects (locale_t) and the strto*_l() family of functions. A notable example is uClibc that can be compiled with a hardcoded "C" locale. Compilation then fails as the newlocale(), freelocale() and strtod_l() functions are not defined. Fix the compilation breakage by checking for the availability of the locale_t type, and fall back to strtod() when the type isn't available. This may not lead to the correct result if support for locale objects isn't available and the locale isn't hardcoded to "C", but that is such a corner case that we will likely never encounter it. Fixes: e8ae254970cf ("libcamera: yaml_parser: Use C locale") Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Diffstat (limited to 'meson.build')
-rw-r--r--meson.build4
1 files changed, 4 insertions, 0 deletions
diff --git a/meson.build b/meson.build
index e86673dd..389c5472 100644
--- a/meson.build
+++ b/meson.build
@@ -72,6 +72,10 @@ if cc.has_header_symbol('unistd.h', 'issetugid')
config_h.set('HAVE_ISSETUGID', 1)
endif
+if cc.has_header_symbol('locale.h', 'locale_t', prefix : '#define _GNU_SOURCE')
+ config_h.set('HAVE_LOCALE_T', 1)
+endif
+
if cc.has_header_symbol('stdlib.h', 'secure_getenv', prefix : '#define _GNU_SOURCE')
config_h.set('HAVE_SECURE_GETENV', 1)
endif