Announcing rack-plugin-toolchain for Rack plugin developers

VCV has published the rack-plugin-toolchain project, allowing you to cross-build Rack plugins for Mac/Windows/Linux with a single command using Ubuntu or Arch Linux, OR using Docker on a Mac/Windows/Linux host.

Building the toolchains takes a few hours since it compiles GCC or LLVM for each platform, but it should only take a few commands. Also requires access to a Mac 10.13 computer to obtain the Mac SDK package.

This toolchain is particularly useful for closed-source/commercial plugin developers who don’t want to install the Rack SDK and development environment on all three platforms to produce packages for the VCV Library. Note that it’s still important to fully test your plugins on all platforms before publishing the packages, especially for commercial plugins.

13 Likes

Do you need specifically 10.13 or will this also be okay on 10.14?

You could edit the Makefile before building to use 10.14, but we haven’t tested this and don’t know whether it will produce working builds.

1 Like

Just a datapoint: My main machine is an Arch Linux box, but I have an older Mac-book running 10.15.5 (Catalina), so on a lark I compiled it to see if it would work.

The build was not without issue: when it moved to the testing phase it tired to re-checkout the osxcross repository and git gave me an error, but I deleted and re-ran make toolhcain-all. It got through the second time…

… and it seems to work. I was able to cross-compile the Bogaudio plugins (seemed like a good test). The compilation worked, and the modules I brought up on the mac worked. The diff:

diff --git a/Makefile b/Makefile
index 37ad5d8..96ec6b7 100644
--- a/Makefile
+++ b/Makefile
@@ -58,7 +58,7 @@ $(toolchain-mac):
        cd osxcross/build/llvm-$(MAC_CLANG_VERSION).src/build && make install
 
        # Build osxcross
-       cp MacOSX10.13.sdk.tar.* osxcross/tarballs/
+       cp MacOSX10.15.sdk.tar.* osxcross/tarballs/
        cd osxcross && UNATTENDED=1 TARGET_DIR="$(LOCAL_DIR)/osxcross" ./build.sh
 
        # Build Mac version of binutils and build LLVM gold
@@ -92,9 +92,9 @@ PLUGIN_DIR ?=
 
 
 plugin-build-mac: export PATH := $(LOCAL_DIR)/osxcross/bin:$(PATH)
-plugin-build-mac: export CC := x86_64-apple-darwin17-clang
-plugin-build-mac: export CXX := x86_64-apple-darwin17-clang++-libc++
-plugin-build-mac: export STRIP := x86_64-apple-darwin17-strip
+plugin-build-mac: export CC := x86_64-apple-darwin19-clang
+plugin-build-mac: export CXX := x86_64-apple-darwin19-clang++-libc++
+plugin-build-mac: export STRIP := x86_64-apple-darwin19-strip
 
 
 plugin-build-win: export PATH := $(LOCAL_DIR)/x86_64-w64-mingw32/bin:$(PATH)