OpenColorIO
OpenColorIO copied to clipboard
[macOS] Some build errors: `error: 'locale_t' does not name a type; did you mean 'Locale'?`; `error: '::strtod_l' has not been declared; did you mean 'strtoull'?`
Trying to compile this with gcc13 on macOS, I get a bunch of errors:
In file included from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/OpenColorIO/fileformats/xmlutils/XMLReaderUtils.h:17,
from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/OpenColorIO/fileformats/xmlutils/XMLReaderHelper.h:12,
from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/OpenColorIO/fileformats/cdl/CDLReaderHelper.h:7,
from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/OpenColorIO/fileformats/cdl/CDLParser.cpp:8:
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:42:5: error: 'locale_t' does not name a type; did you mean 'Locale'?
42 | locale_t local;
| ^~~~~~~~
| Locale
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h: In constructor 'OpenColorIO_v2_3::NumberUtils::Locale::Locale()':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:35:16: error: class 'OpenColorIO_v2_3::NumberUtils::Locale' does not have any field named 'local'
35 | Locale() : local(newlocale(LC_ALL_MASK, "C", NULL))
| ^~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:35:32: error: 'LC_ALL_MASK' was not declared in this scope
35 | Locale() : local(newlocale(LC_ALL_MASK, "C", NULL))
| ^~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:35:22: error: 'newlocale' was not declared in this scope; did you mean 'setlocale'?
35 | Locale() : local(newlocale(LC_ALL_MASK, "C", NULL))
| ^~~~~~~~~
| setlocale
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h: In destructor 'OpenColorIO_v2_3::NumberUtils::Locale::~Locale()':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:40:20: error: 'local' was not declared in this scope; did you mean 'Locale'?
40 | freelocale(local);
| ^~~~~
| Locale
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:40:9: error: 'freelocale' was not declared in this scope; did you mean 'setlocale'?
40 | freelocale(local);
| ^~~~~~~~~~
| setlocale
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h: In function 'OpenColorIO_v2_3::NumberUtils::from_chars_result OpenColorIO_v2_3::NumberUtils::from_chars(const char*, const char*, double&)':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:68:17: error: '::strtod_l' has not been declared; did you mean 'strtoull'?
68 | tempval = ::strtod_l(first, &endptr, loc.local);
| ^~~~~~~~
| strtoull
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:68:46: error: 'const struct OpenColorIO_v2_3::NumberUtils::Locale' has no member named 'local'; did you mean 'Locale'?
68 | tempval = ::strtod_l(first, &endptr, loc.local);
| ^~~~~
| Locale
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h: In function 'OpenColorIO_v2_3::NumberUtils::from_chars_result OpenColorIO_v2_3::NumberUtils::from_chars(const char*, const char*, float&)':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:110:36: error: '::strtod_l' has not been declared; did you mean 'strtoull'?
110 | tempval = static_cast<float>(::strtod_l(first, &endptr, loc.local));
| ^~~~~~~~
| strtoull
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:110:65: error: 'const struct OpenColorIO_v2_3::NumberUtils::Locale' has no member named 'local'; did you mean 'Locale'?
110 | tempval = static_cast<float>(::strtod_l(first, &endptr, loc.local));
| ^~~~~
| Locale
In file included from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/OpenColorIO/fileformats/xmlutils/XMLReaderUtils.h:17,
from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/OpenColorIO/fileformats/cdl/CDLWriter.cpp:7:
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:42:5: error: 'locale_t' does not name a type; did you mean 'Locale'?
42 | locale_t local;
| ^~~~~~~~
| Locale
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h: In constructor 'OpenColorIO_v2_3::NumberUtils::Locale::Locale()':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:35:16: error: class 'OpenColorIO_v2_3::NumberUtils::Locale' does not have any field named 'local'
35 | Locale() : local(newlocale(LC_ALL_MASK, "C", NULL))
| ^~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:35:32: error: 'LC_ALL_MASK' was not declared in this scope
35 | Locale() : local(newlocale(LC_ALL_MASK, "C", NULL))
| ^~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:35:22: error: 'newlocale' was not declared in this scope; did you mean 'setlocale'?
35 | Locale() : local(newlocale(LC_ALL_MASK, "C", NULL))
| ^~~~~~~~~
| setlocale
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h: In destructor 'OpenColorIO_v2_3::NumberUtils::Locale::~Locale()':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:40:20: error: 'local' was not declared in this scope; did you mean 'Locale'?
40 | freelocale(local);
| ^~~~~
| Locale
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:40:9: error: 'freelocale' was not declared in this scope; did you mean 'setlocale'?
40 | freelocale(local);
| ^~~~~~~~~~
| setlocale
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h: In function 'OpenColorIO_v2_3::NumberUtils::from_chars_result OpenColorIO_v2_3::NumberUtils::from_chars(const char*, const char*, double&)':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:68:17: error: '::strtod_l' has not been declared; did you mean 'strtoull'?
68 | tempval = ::strtod_l(first, &endptr, loc.local);
| ^~~~~~~~
| strtoull
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:68:46: error: 'const struct OpenColorIO_v2_3::NumberUtils::Locale' has no member named 'local'; did you mean 'Locale'?
68 | tempval = ::strtod_l(first, &endptr, loc.local);
| ^~~~~
| Locale
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h: In function 'OpenColorIO_v2_3::NumberUtils::from_chars_result OpenColorIO_v2_3::NumberUtils::from_chars(const char*, const char*, float&)':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:110:36: error: '::strtod_l' has not been declared; did you mean 'strtoull'?
110 | tempval = static_cast<float>(::strtod_l(first, &endptr, loc.local));
| ^~~~~~~~
| strtoull
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:110:65: error: 'const struct OpenColorIO_v2_3::NumberUtils::Locale' has no member named 'local'; did you mean 'Locale'?
110 | tempval = static_cast<float>(::strtod_l(first, &endptr, loc.local));
| ^~~~~
| Locale
In file included from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/OpenColorIO/fileformats/xmlutils/XMLReaderUtils.h:17,
from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/OpenColorIO/fileformats/xmlutils/XMLReaderHelper.h:12,
from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/OpenColorIO/fileformats/cdl/CDLReaderHelper.h:7,
from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/OpenColorIO/fileformats/cdl/CDLReaderHelper.cpp:4:
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:42:5: error: 'locale_t' does not name a type; did you mean 'Locale'?
42 | locale_t local;
| ^~~~~~~~
| Locale
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h: In constructor 'OpenColorIO_v2_3::NumberUtils::Locale::Locale()':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:35:16: error: class 'OpenColorIO_v2_3::NumberUtils::Locale' does not have any field named 'local'
35 | Locale() : local(newlocale(LC_ALL_MASK, "C", NULL))
| ^~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:35:32: error: 'LC_ALL_MASK' was not declared in this scope
35 | Locale() : local(newlocale(LC_ALL_MASK, "C", NULL))
| ^~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:35:22: error: 'newlocale' was not declared in this scope; did you mean 'setlocale'?
35 | Locale() : local(newlocale(LC_ALL_MASK, "C", NULL))
| ^~~~~~~~~
| setlocale
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h: In destructor 'OpenColorIO_v2_3::NumberUtils::Locale::~Locale()':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:40:20: error: 'local' was not declared in this scope; did you mean 'Locale'?
40 | freelocale(local);
| ^~~~~
| Locale
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:40:9: error: 'freelocale' was not declared in this scope; did you mean 'setlocale'?
40 | freelocale(local);
| ^~~~~~~~~~
| setlocale
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h: In function 'OpenColorIO_v2_3::NumberUtils::from_chars_result OpenColorIO_v2_3::NumberUtils::from_chars(const char*, const char*, double&)':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:68:17: error: '::strtod_l' has not been declared; did you mean 'strtoull'?
68 | tempval = ::strtod_l(first, &endptr, loc.local);
| ^~~~~~~~
| strtoull
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:68:46: error: 'const struct OpenColorIO_v2_3::NumberUtils::Locale' has no member named 'local'; did you mean 'Locale'?
68 | tempval = ::strtod_l(first, &endptr, loc.local);
| ^~~~~
| Locale
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h: In function 'OpenColorIO_v2_3::NumberUtils::from_chars_result OpenColorIO_v2_3::NumberUtils::from_chars(const char*, const char*, float&)':
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:110:36: error: '::strtod_l' has not been declared; did you mean 'strtoull'?
110 | tempval = static_cast<float>(::strtod_l(first, &endptr, loc.local));
| ^~~~~~~~
| strtoull
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_graphics_opencolorio/opencolorio/work/OpenColorIO-2.3.2/src/utils/NumberUtils.h:110:65: error: 'const struct OpenColorIO_v2_3::NumberUtils::Locale' has no member named 'local'; did you mean 'Locale'?
110 | tempval = static_cast<float>(::strtod_l(first, &endptr, loc.local));
| ^~~~~
| Locale
make[2]: *** [src/OpenColorIO/CMakeFiles/OpenColorIO.dir/fileformats/cdl/CDLWriter.cpp.o] Error 1
Any idea what goes wrong?
Hi @barracuda156 ! It seems that GCC's locale header, on macOS, doesn't expose any of the underlying C includes. That doesn't match MSVC's and Apple Xcode's implementations, on which I relied when writing this class.
I'll be submitting a PR soon to fix this 👍
@amyspark Awesome, thank you!