On Montag, 10. Januar 2022 13:24:06 CET Philippe Mathieu-Daudé wrote: > On 1/10/22 09:44, Philippe Mathieu-Daudé wrote: > > On 1/10/22 09:17, Akihiko Odaki wrote: > >> On 2022/01/10 2:06, Philippe Mathieu-Daudé wrote: > >>> When building on macOS 12 we get: > >>> > >>> audio/coreaudio.c:50:5: error: 'kAudioObjectPropertyElementMaster' > >>> is deprecated: first deprecated in macOS 12.0 > >>> [-Werror,-Wdeprecated-declarations] > >>> kAudioObjectPropertyElementMaster > >>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > >>> kAudioObjectPropertyElementMain > >>> > >>> /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frame > >>> works/CoreAudio.framework/Headers/AudioHardwareBase.h:208:5: note: > >>> 'kAudioObjectPropertyElementMaster' has been explicitly marked > >>> deprecated here > >>> kAudioObjectPropertyElementMaster > >>> API_DEPRECATED_WITH_REPLACEMENT("kAudioObjectPropertyElementMain", > >>> macos(10.0, 12.0), ios(2.0, 15.0), watchos(1.0, 8.0), tvos(9.0, 15.0)) > >>> = kAudioObjectPropertyElementMain > >>> ^ > >>> > >>> Use kAudioObjectPropertyElementMain (define it to > >>> kAudioObjectPropertyElementMaster on macOS < 12). > >>> > >>> Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> > >>> --- > >>> audio/coreaudio.c | 16 ++++++++++------ > >>> 1 file changed, 10 insertions(+), 6 deletions(-) > >>> > >>> diff --git a/audio/coreaudio.c b/audio/coreaudio.c > >>> index d8a21d3e507..c836bc9dd37 100644 > >>> --- a/audio/coreaudio.c > >>> +++ b/audio/coreaudio.c > >>> @@ -44,10 +44,14 @@ typedef struct coreaudioVoiceOut { > >>> bool enabled; > >>> } coreaudioVoiceOut; > >>> +#if !defined(MAC_OS_VERSION_12_0) > >>> +#define kAudioObjectPropertyElementMain > >>> kAudioObjectPropertyElementMaster > >>> +#endif > >>> + > >> > >> Semantically MAC_OS_VERSION_12_0 defines the numeric value of version > >> 12.0 and its existence does not mean that > >> kAudioObjectPropertyElementMain is defined. I suggest the following: > >> #if !__is_identifier(kAudioObjectPropertyElementMain) > >> #define kAudioObjectPropertyElementMain kAudioObjectPropertyElementMaster > >> #endif > > Apparently __is_identifier() is Clang specific. It might be acceptable > since this file is restricted to macOS. Similarly for the other > block/file-posix.c patch, the section is conditional to __APPLE__ > being defined.
Correct, __is_identifier() is a clang extension and does not work with GCC (tested). I would not use it. People on Mac usually use clang, but there are also cross compilers for macOS binaries. I'd suggest to use: #if !defined(MAC_OS_VERSION_12_0) || (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_VERSION_12_0) #define kAudioObjectPropertyElementMain kAudioObjectPropertyElementMaster #endif Best regards, Christian Schoenebeck