On 1/10/22 14:07, Christian Schoenebeck wrote: > 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
Uh I just posted v3. I didn't test GCC. I'll wait for more comment on v3 then repost v4 with your suggestion, thanks.