The coreaudio library includes Objective-C declarations (using the
caret '^' symbol to declare block references [*]). When building
with a C compiler we get:
[175/839] Compiling C object libcommon.fa.p/audio_coreaudio.c.o
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX12.sdk/System/Library/Frameworks/CoreAudio.framework/Headers/CoreAudio.h:18,
from ../../audio/coreaudio.c:26:
/Library/Developer/CommandLineTools/SDKs/MacOSX12.sdk/System/Library/Frameworks/CoreAudio.framework/Headers/AudioHardware.h:162:2: error: expected identifier or '(' before '^' token
162 | (^AudioObjectPropertyListenerBlock)( UInt32 inNumberAddresses,
| ^
FAILED: libcommon.fa.p/audio_coreaudio.c.o
Rename the file to use the Objective-C default extension (.m) so
meson calls the correct compiler.
[*] https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/WorkingwithBlocks/WorkingwithBlocks.html
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
audio/{coreaudio.c => coreaudio.m} | 0
audio/meson.build | 2 +-
2 files changed, 1 insertion(+), 1 deletion(-)
rename audio/{coreaudio.c => coreaudio.m} (100%)
diff --git a/audio/coreaudio.c b/audio/coreaudio.m
similarity index 100%
rename from audio/coreaudio.c
rename to audio/coreaudio.m
diff --git a/audio/meson.build b/audio/meson.build
index d9b295514f..94dab16891 100644
--- a/audio/meson.build
+++ b/audio/meson.build
@@ -7,7 +7,7 @@ softmmu_ss.add(files(
'wavcapture.c',
))
-softmmu_ss.add(when: coreaudio, if_true: files('coreaudio.c'))
+softmmu_ss.add(when: coreaudio, if_true: files('coreaudio.m'))
softmmu_ss.add(when: dsound, if_true: files('dsoundaudio.c', 'audio_win_int.c'))
audio_modules = {}
--
2.34.1
On Dienstag, 15. Februar 2022 13:06:24 CET Philippe Mathieu-Daudé via wrote:
> The coreaudio library includes Objective-C declarations (using the
> caret '^' symbol to declare block references [*]). When building
> with a C compiler we get:
>
> [175/839] Compiling C object libcommon.fa.p/audio_coreaudio.c.o
> In file included from
> /Library/Developer/CommandLineTools/SDKs/MacOSX12.sdk/System/Library/Framew
> orks/CoreAudio.framework/Headers/CoreAudio.h:18, from
> ../../audio/coreaudio.c:26:
>
> /Library/Developer/CommandLineTools/SDKs/MacOSX12.sdk/System/Library/Framew
> orks/CoreAudio.framework/Headers/AudioHardware.h:162:2: error: expected
> identifier or '(' before '^' token 162 |
> (^AudioObjectPropertyListenerBlock)( UInt32
> inNumberAddresses,
> | ^
>
> FAILED: libcommon.fa.p/audio_coreaudio.c.o
>
> Rename the file to use the Objective-C default extension (.m) so
> meson calls the correct compiler.
>
> [*]
> https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/
> ProgrammingWithObjectiveC/WorkingwithBlocks/WorkingwithBlocks.html
>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
We already had a similar discussion before [1] whether to use .c and add
required compiler flags or using .m. I find this solution more appropriate.
Reviewed-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
[1] https://lore.kernel.org/all/7053351.4JHWUSIRgT@silver/
Best regards,
Christian Schoenebeck
> audio/{coreaudio.c => coreaudio.m} | 0
> audio/meson.build | 2 +-
> 2 files changed, 1 insertion(+), 1 deletion(-)
> rename audio/{coreaudio.c => coreaudio.m} (100%)
>
> diff --git a/audio/coreaudio.c b/audio/coreaudio.m
> similarity index 100%
> rename from audio/coreaudio.c
> rename to audio/coreaudio.m
> diff --git a/audio/meson.build b/audio/meson.build
> index d9b295514f..94dab16891 100644
> --- a/audio/meson.build
> +++ b/audio/meson.build
> @@ -7,7 +7,7 @@ softmmu_ss.add(files(
> 'wavcapture.c',
> ))
>
> -softmmu_ss.add(when: coreaudio, if_true: files('coreaudio.c'))
> +softmmu_ss.add(when: coreaudio, if_true: files('coreaudio.m'))
> softmmu_ss.add(when: dsound, if_true: files('dsoundaudio.c',
> 'audio_win_int.c'))
>
> audio_modules = {}
© 2016 - 2026 Red Hat, Inc.