Opened 4 years ago

Last modified 4 years ago

#61775 closed defect

mame: 0.226 build fails on 10.8, due to host libstdc++ bug (_DARWIN_C_SOURCE needs to be defined) — at Initial Version

Reported by: mascguy (Christopher Nielsen) Owned by: mascguy (Christopher Nielsen)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc:
Port: mame

Description

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.

Change History (0)

Note: See TracTickets for help on using tickets.