[MacPorts] #61775: mame: 0.226 build fails on 10.8, due to host libstdc++ bug (_DARWIN_C_SOURCE needs to be defined)

MacPorts noreply at macports.org
Mon Dec 7 22:19:33 UTC 2020


#61775: mame: 0.226 build fails on 10.8, due to host libstdc++ bug
(_DARWIN_C_SOURCE needs to be defined)
---------------------+----------------------
 Reporter:  mascguy  |      Owner:  mascguy
     Type:  defect   |     Status:  assigned
 Priority:  High     |  Milestone:
Component:  ports    |    Version:
 Keywords:           |       Port:  mame
---------------------+----------------------
 Mame 0.226 fails to build on 10.8, due to compilation errors in file
 'src/osd/modules/files/posixfile.cpp'.

 Here's one example:

 {{{
 In file included from
 ../../../../../src/osd/modules/file/posixfile.cpp:41:
 In file included from ../../../../../src/osd/modules/file/posixfile.h:12:
 In file included from ../../../../../src/osd/osdcore.h:17:
 In file included from ../../../../../src/lib/util/strformat.h:174:
 In file included from ../../../../../src/lib/util/vecstream.h:25:
 In file included from
 /opt/local/libexec/llvm-9.0/bin/../include/c++/v1/istream:163:
 In file included from
 /opt/local/libexec/llvm-9.0/bin/../include/c++/v1/ostream:140:
 /opt/local/libexec/llvm-9.0/bin/../include/c++/v1/locale:1455:16: error:
 use of undeclared identifier 'snprintf_l'; did you mean 'vswprintf_l'?
     int __nc = __libcpp_snprintf_l(__nar, sizeof(__nar),
 _LIBCPP_GET_C_LOCALE, __fmt, __v);
                ^
 }}}

 In short, the issue relates to a bug in the host libstdc++: When
 '_XOPEN_SOURCE' is defined, certain items aren't declared unless
 '_DARWIN_C_SOURCE' is also defined. So far, this bug seems to be isolated
 to MacOS 10.8.x.

 Proposed immediate-term solution: Patch the source file(s) in question,
 adding the following at the appropriate place:

 {{{
 // MacPorts: Fix for libstdc++ bug in MacOS 10.8.x, which causes
 compilation errors
 #if defined(__APPLE__)
 #define _DARWIN_C_SOURCE
 #endif
 }}}

 In parallel, I'll also discuss the fixes with the Mame project. And
 ultimately submit a pull request, to permanently fix this for future
 releases.

 Note: While we could certainly define '_DARWIN_C_SOURCE' globally, that
 seems more risky. And unnecessary, if only a small number of source files
 are involved.

 Currently building on a 10.8 VM, to verify the latter.

-- 
Ticket URL: <https://trac.macports.org/ticket/61775>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list