/mod-plugin-builder

MOD Plugin Builder

Primary LanguageC++

mod-plugin-builder

This repository contains the toolchain and libraries used in MOD Devices.

It allows developers to locally build plugins for MOD Duo and also prepare for Cloud builds.
Currently this builder only supports Linux hosts.
If you're not running Linux see this HowTo.

There are several dependencies:

  • gcc & g++
  • git
  • subversion
  • hg/mercurial
  • autoconf
  • automake
  • bzip2
  • lzma
  • binutils
  • libtool
  • ncurses
  • rsync
  • wget
  • bc
  • bison
  • flex
  • help2man
  • gawk
  • gperf
  • texinfo

If you're running a debian based system you can install all dependencies by running:

sudo apt-get install acl bc curl cvs git mercurial rsync subversion wget \
bison bzip2 flex gawk gperf gzip help2man nano perl patch tar texinfo unzip \
automake binutils build-essential cpio libtool libncurses-dev pkg-config libtool-bin

Note that libtool-bin is not available on old distros.
If that is the case for you, simply skip that package but install everything else.

To begin simply run the bootstrap.sh script with either modduo or modduox as argument.
The bootstrap.sh script will build the toolchain (ct-ng) and buildroot.
Depending on your machine it can take more than 1 hour.

All files will be installed in ~/mod-workdir.
Set the 'WORKDIR' environment variable before bootstraping if you wish to change that.

After the bootstrap process is complete, you can start building plugins.
See the 'plugins/package' folder in this repository for some examples.

To build a plugin, run:
./build <platform> <plugin-package>

Where platform is either modduo or modduox, and plugin-package is a folder inside the plugins/package directory.

If everything goes well, you will have the final plugin bundle in ~/workdir/<platform>/plugins.
You can use MOD-SDK's 'publish' tab to push those into a MOD Duo.
Or if you feel like doing it manually, you can run something like:

cd /path/to/workdir/plugins # adjust as needed
tar czf bundle1.lv2 bundle2.lv2 | base64 | curl -F 'package=@-' http://192.168.51.1/sdk/install; echo

NOTE: If you want to build the provided plugins in this repository you'll need to enable git submodules, like this:

git submodule init
git submodule update

To cleanup the build of a plugin, run:
./build <platform> <plugin-package>-dirclean

There's a more detailed HowTo explaining how to compile an LV2 Plugin using mod-plugin-builder.

Note about Camomile

The Camomile integration is under testing phase. Check the PR notes for more details.