zynaddsubfx / zyn-build-osx

OSX build script for zynaddsubfx
12 stars 7 forks source link

Issue with gcc, clang, and compilation #1

Open someone89a opened 6 years ago

someone89a commented 6 years ago

Hi, I attempted to run the build scripts on MacOS High Sierra (v10.13.2), and encountered the following issues: Firstly compilation was stopped due to this error:

clang: error: unsupported option '-static-libgcc'

I attempted to make sure that gcc was used instead of clang by adjusting my .bash_profile so that the gcc command would not automatically run clang, which I checked worked, however the problem still persisted. I believe that the issue is with cmake, and that it automatically uses clang over gcc on my system, however I have no idea how to change this.

So instead, I removed the -static-libgcc flags from the script, and let the program compile using clang, to see if it would still work. This did indeed result in a .dmg and a .pkg file being produced, and I ran them as normal to install the VSTs. However the VSTs will not appear in any software I own (I have tried in Ableton Live 9, and Renoise), even after rescanning the plugins. Believing the issue may be that only the 32bit version was installed (although I believe Renoise should be able to run 32bit plugins), I checked whether it could be bridged using jBridgeM, yet it couldn't be, it wasn't recognised as a 32bit nor 64bit plugin.

My final test to see what may be wrong was to comment out the part in the doit.sh script which involves compiling the 32bit version, and so the only version that would be compiled would be the 64bit version. This compiled fine, but the deploy and package scripts would not run afterwards, instead they exited out (I believe whilst checking whether a directory existed).

If there is any information or files that would be useful please let me know. I believe the major issue is clang being used instead of gcc but I am unsure. Many thanks.

x42 commented 6 years ago

When using recent clang with a dynamically linked stdc++, the resulting binary cannot be distributed and it's 10.10 or later only (it still should run on your local machine though).

As for the architecture, check with file /Library/Audio/Plug-Ins/VST/ZynAddSubFx/Contents/MacOS/ZynAddSubFx.dylib that may shed some light.

if you only compile a 32 bit or 64bit binary, you also have to change the 02_deploy script starting line 83 (replace the lipo -create ... with a copy).

I'm considering add a option to compile a local version with clang, but it may be prudent and more useful to rather add a recipe for homebrew to https://github.com/david0/homebrew-audio/ instead and keep this repo for "official" builds that work on 10.6 or later.

someone89a commented 6 years ago

Many thanks, the vst that was I was attempting to use seemed broken as there was no .dylib file inside. I replaced it with the vst from the .dmg and then used the file command, which returned this: /Library/Audio/Plug-Ins/VST/ZynAddSubFX.vst/Contents/MacOS/ZynAddSubFX.dylib: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit dynamically linked shared library x86_64] [i386] /Library/Audio/Plug-Ins/VST/ZynAddSubFX.vst/Contents/MacOS/ZynAddSubFX.dylib (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64 /Library/Audio/Plug-Ins/VST/ZynAddSubFX.vst/Contents/MacOS/ZynAddSubFX.dylib (for architecture i386): Mach-O dynamically linked shared library i386

Which seems right, and upon testing it within Ableton Live 9, Renoise, and also as a plugin within Max 7, the plugin worked. However audio cut out after 10 minutes, so I'm assuming there is a setting within the build scripts I need to change to change the demo mode to release. Any help would be appreciated.

Many thanks.

x42 commented 6 years ago

oops. The demo option was a bug in the last commit. Should be fixed in b2236840

someone89a commented 6 years ago

Ran the compilation scripts, received this message: ./01_compile.sh: line 286: release: command not found ./01_compile.sh: line 289: DDEMO: command not found

I added a $ to the DDEMO on line 289 and then this error occurred the next time I ran the script:

./01_compile.sh: line 289: =: command not found

Many thanks.