Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[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'? #1973

Open
barracuda156 opened this issue May 2, 2024 · 2 comments · May be fixed by #1987
Labels
Build Issue Issues related to build or environment problems on any platform.

Comments

@barracuda156
Copy link

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?

@carolalynn carolalynn added the Build Issue Issues related to build or environment problems on any platform. label May 15, 2024
@amyspark
Copy link
Contributor

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 👍

@barracuda156
Copy link
Author

@amyspark Awesome, thank you!

amyspark added a commit to amyspark/OpenColorIO that referenced this issue Jun 21, 2024
Fixes AcademySoftwareFoundation#1973

Signed-off-by: L. E. Segovia <amy@amyspark.me>
amyspark added a commit to amyspark/OpenColorIO that referenced this issue Jun 21, 2024
Fixes AcademySoftwareFoundation#1973

Signed-off-by: L. E. Segovia <amy@amyspark.me>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Build Issue Issues related to build or environment problems on any platform.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants