[Interest] macOS Big Sur ARM Build
Tor Arne Vestbø
Tor.arne.Vestbo at qt.io
Wed Jun 24 18:50:27 CEST 2020
On 24 Jun 2020, at 18:28, Thiago Macieira <thiago.macieira at intel.com<mailto:thiago.macieira at intel.com>> wrote:
On Wednesday, 24 June 2020 08:50:17 PDT David M. Cotter wrote:
Apple ... said that they are still supporting carbon ... on the ARM based
Macs
wait what?
reference please?
https://developer.apple.com/documentation/xcode/porting_your_macos_apps_to_apple_silicon?language=objc
carbon is 32bit. 32bit is dead on Catalina, right? and Big Sur is
post-catalina. so... have i missed something?
I don't think Lars used the right term when he said Carbon. Carbon.framework
definitely is non-working in 64-bit mode:
$ objdump -f /System/Library/Frameworks/Carbon.framework/Carbon
/System/Library/Frameworks/Carbon.framework/Carbon: file format Mach-O 64-
bit x86-64
Actually, Carbon is still around, and 64-bit:
❯ otool -h /System/Library/Frameworks/Carbon.framework/Carbon
Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
0xfeedfacf 16777223 3 0x00 6 24 2080 0x02000085
And we link to it still, due to needing a few functions from it still:
❯ git grep -e "-framework Carbon"
src/plugins/platforms/cocoa/cocoa.pro:98:LIBS += -framework AppKit -framework CoreServices -framework Carbon -framework IOKit -framework QuartzCore -framework CoreVideo -framework Metal -framework IOSurface
Undefined symbols for architecture x86_64:
"_GetCurrentKeyModifiers", referenced from:
QCocoaKeyMapper::queryKeyboardModifiers() in qcocoakeymapper.mm.o
"_LMGetKbdType", referenced from:
QCocoaKeyMapper::updateKeyboard() in qcocoakeymapper.mm.o
"_TISCopyCurrentKeyboardInputSource", referenced from:
QCocoaInputContext::updateLocale() in qcocoainputcontext.mm.o
QCocoaKeyMapper::updateKeyboard() in qcocoakeymapper.mm.o
"_TISCopyInputMethodKeyboardLayoutOverride", referenced from:
QCocoaKeyMapper::updateKeyboard() in qcocoakeymapper.mm.o
"_TISGetInputSourceProperty", referenced from:
QCocoaInputContext::updateLocale() in qcocoainputcontext.mm.o
QCocoaKeyMapper::updateKeyboard() in qcocoakeymapper.mm.o
"_kTISPropertyInputSourceLanguages", referenced from:
QCocoaInputContext::updateLocale() in qcocoainputcontext.mm.o
"_kTISPropertyUnicodeKeyLayoutData", referenced from:
QCocoaKeyMapper::updateKeyboard() in qcocoakeymapper.mm.o
What he meant is that Qt uses a number of C APIs even in 64-bit mode that used
to be loosely called "Carbon" back in the day, opposing to the Objective C
APIs called "Cocoa". Example: CoreFoundation.
Carbon is an umbrella framework for these frameworks:
❯ ls /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks
CommonPanels.framework ImageCapture.framework Print.framework
HIToolbox.framework Ink.framework SecurityHI.framework
Help.framework OpenScripting.framework SpeechRecognition.framework
CoreFoundation and other CoreFoo frameworks are not part of Carbon. They will persist even when Carbon is removed.
Cheers,
Tor Arne
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20200624/db4cd623/attachment.html>
More information about the Interest
mailing list