(This is just a placeholder until there’s a real release by somebody who understands the build system. I did a bunch of hackery on the build system to make it run. That’s orthogonal to the keyboard-input patch.)
Hello, I’m the person who contributed the macOS Gargoyle patch.
For Gargoyle to run on older macOS versions the executables need to be compiled targeting the appropriate OS X version (you don’t need the old SDK). Pass the
-mmacosx-version-min=10.x
option to every compiler and linker command line. I’ve been targeting 10.9 without issue. Anything older will run into problems because of Apple’s switching of the default C++ standard library.
The difficulty is the support libraries. The Homebrew packages (bottles) target various OS X releases. Ideally they need to be built with the same min version as Gargoyle itself. I haven’t bothered figuring out how to do this.
Application Specific Information:
dyld: launch, loading dependent libraries
Dyld Error Message:
Library not loaded: /usr/local/opt/sdl/lib/libSDL-1.2.0.dylib
Referenced from: /Users/USER/Desktop/Gargoyle.app/Contents/MacOS/Gargoyle
Reason: image not found
Model: MacBookPro11,2, BootROM MBP112.0138.B17, 4 processors, Intel Core i7, 2 GHz, 8 GB, SMC 2.18f15
Graphics: Intel Iris Pro, Intel Iris Pro, Built-In
Memory Module: BANK 0/DIMM0, 4 GB, DDR3, 1600 MHz, 0x80AD, 0x484D54343531533641465238412D50422020
Memory Module: BANK 1/DIMM0, 4 GB, DDR3, 1600 MHz, 0x80AD, 0x484D54343531533641465238412D50422020
AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0x134), Broadcom BCM43xx 1.0 (7.21.171.10.1a16)
Bluetooth: Version 5.0.0f18, 3 services, 27 devices, 1 incoming serial ports
Network Service: Wi-Fi, AirPort, en0
PCI Card: Apple 57761-B0, Ethernet Controller, Thunderbolt@191,0,0
PCI Card: pci11c1,5901, IEEE 1394 Open HCI, Thunderbolt@190,0,0
PCI Card: pci12d8,400e, USB Open Host Controller, Thunderbolt@194,0,0
PCI Card: pci12d8,400e, USB Open Host Controller, Thunderbolt@194,0,1
PCI Card: pci12d8,400f, USB Enhanced Host Controller, Thunderbolt@194,0,2
Serial ATA Device: APPLE SSD SM0256F, 251 GB
USB Device: USB 2.0 Bus
USB Device: Hub
USB Device: Wireless Mouse
USB Device: FaceTime HD Camera (Display)
USB Device: Apple Thunderbolt Display
USB Device: Display Audio
USB Device: USB 3.0 Bus
USB Device: Apple Internal Keyboard / Trackpad
USB Device: BRCM20702 Hub
USB Device: Bluetooth USB Host Controller
USB Device: Keyboard Hub
USB Device: Apple Keyboard
Thunderbolt Bus: MacBook Pro, Apple Inc., 17.1
Thunderbolt Device: Thunderbolt Display, Apple Inc., 1, 26.2[/spoiler]
From your crash report it seems you’re missing SDL library:
However, it looks like you are using Homebrew so, for the time being, you can install SDL and SDL_mixer libraries. You may need other libraries too. Eventually, all these libraries will be packaged in the Gargoyle bundle (unfortunately, it’s not as simple as just copying them into the bundle directory).
The libraries need to be copied into Gargoyle.app/Contents/Frameworks, then library references from other libraries and executables have to be fixed. Take a look at the beginning of the ‘gargoyle_osx.sh’ script and the calls to ‘install_name_tool’
It can be done by hand (which I’ve done a few times) but it gets old, quickly.
I added a special case for /usr/local/opt/sdl/lib/libSDL-1.2.0.dylib because that’s not showing up as a reference to /usr/local/lib/libSDL-1.2.0.dylib . (Yes, those are identical files.) However, I guess I did it wrong.
That’s set.
cmd LC_VERSION_MIN_MACOSX
cmdsize 16
version 10.9
sdk 10.12
I’m an idiot! I forgot that since Homebrew 1.0 some packages are installed to “/usr/local/opt” and others into “/usr/local/lib”. I think all libraries are available on “/usr/local/opt” but I’m not certain (and can’t check right now)
Yes. I’m not sure what possessed the Homebrew people from splitting them up like that. Something about “bottles” and “kegs” I don’t fully understand.
I mean, in my install SDL is in “/usr/local/lib” while yours is “/usr/local/opt”. Makes no sense.
One more tool I use is the Activity Monitor. Click the process name then the info button/icon. In the dialog click the “Open Files” tab and you’ll see all the libraries the program is using and where they’re being loaded from. There’s probably a way to do this from the terminal but I don’t know it.
It’s particularly annoying that the compiles are done with -L/usr/local/lib and there is a file /usr/local/lib/libSDL-1.2.0.dylib but that’s not what the binary winds up naming.