Difference between revisions of "How To Make a MPB Package"
Line 1: | Line 1: | ||
This page describes how to make a plugin package for mod-plugin-builder (or MPB for short) | This page describes how to make a plugin package for mod-plugin-builder (or MPB for short) | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Plugin packages reside in plugins/package/ directory. | Plugin packages reside in plugins/package/ directory. | ||
Line 98: | Line 88: | ||
</source> | </source> | ||
− | == Tips and tricks | + | == Tips and tricks == |
<source lang="makefile"> | <source lang="makefile"> | ||
Line 111: | Line 101: | ||
PLUGINPKG_MAKE = $(MAKE1) | PLUGINPKG_MAKE = $(MAKE1) | ||
</source> | </source> | ||
+ | |||
+ | == Final notes == | ||
+ | |||
+ | Plugin packages are buildroot files. Because of that it must comply with Buildroot rules.<br> | ||
+ | A few important notes: | ||
+ | * The package name is defined by the folder name and cannot contain '.' | ||
+ | * There must be a <packagename>.mk file inside the package folder | ||
+ | * The package name and '.mk' file name must be the same | ||
+ | * Inside the '.mk' file all defined variables must start with the package name in uppercase replacing '-' with '_' | ||
+ | * You need to define the generated plugin bundle names in the <PACKAGE_NAME>_BUNDLES variable | ||
+ | * Browse through other examples so you get an idea of other variations of the makefiles (how to use cmake or waf for example) | ||
+ | * If you want to rebuild after a change to your plugin or the .mk then it is often easiest to just delete the previous build's directory for your plugin ~/mod-workdir/plugins-dep/build/<packagename>-<version> |
Revision as of 21:40, 13 September 2017
This page describes how to make a plugin package for mod-plugin-builder (or MPB for short)
Plugin packages reside in plugins/package/ directory.
Here's an example of a plugin package file:
PLUGINPKG_VERSION = 1.0.0
PLUGINPKG_SITE = http://download.sourceforge.net/myplugin/
PLUGINPKG_SOURCE = myplugin-$(PLUGINPKG_VERSION).tar.gz
PLUGINPKG_BUNDLES = myplugin.lv2
$(eval $(cmake-package))
Let's divide this into small pieces so it's easier to understand.
We're using PLUGINPKG as a generic name, you must use your package name in uppercase here.
First we define the version, plus the download location and filename to download the source code from.
PLUGINPKG_VERSION = 1.0.0
PLUGINPKG_SITE = http://download.sourceforge.net/myplugin/
PLUGINPKG_SOURCE = myplugin-$(PLUGINPKG_VERSION).tar.gz
If you rather use a git repository, use something like this:
PLUGINPKG_VERSION = 25451be928b69c288f6978fb3b3fcf202dbd1ee1
PLUGINPKG_SITE = git://github.com/myself/myplugin
PLUGINPKG_SITE_METHOD = git
Moving on, we define which bundles to use.
(Note: they must be installed to $DESTDIR/usr/lib/lv2/)
PLUGINPKG_BUNDLES = myplugin.lv2
Finally, we defined the steps to build the package.
If you're using autoconf or cmake, buildroot has this covered for you already.
For autotools, use:
$(eval $(autotools-package))
For cmake, use:
$(eval $(cmake-package))
Using other build systems means you have to specify how to configure, build and install the code.
Here's an example for waf:
PLUGINPKG_TARGET_WAF = $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(HOST_DIR)/usr/bin/python ./waf
define PLUGINPKG_CONFIGURE_CMDS
(cd $(@D); $(BLOP_TARGET_WAF) configure --prefix=/usr)
endef
define PLUGINPKG_BUILD_CMDS
(cd $(@D); $(BLOP_TARGET_WAF) build -j $(PARALLEL_JOBS))
endef
define PLUGINPKG_INSTALL_TARGET_CMDS
(cd $(@D); $(BLOP_TARGET_WAF) install --destdir=$(TARGET_DIR))
endef
$(eval $(generic-package))
And here's an example for raw makefiles:
PLUGINPKG_TARGET_MAKE = $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)
define PLUGINPKG_BUILD_CMDS
$(PLUGINPKG_TARGET_MAKE)
endef
define PLUGINPKG_INSTALL_TARGET_CMDS
$(PLUGINPKG_TARGET_MAKE) install DESTDIR=$(TARGET_DIR)
endef
$(eval $(generic-package))
Tips and tricks
PLUGINPKG_CONF_OPTS=-DBUILD_GUI=OFF
PLUGINPKG_AUTORECONF = YES
PLUGINPKG_MAKE = $(MAKE1)
Final notes
Plugin packages are buildroot files. Because of that it must comply with Buildroot rules.
A few important notes:
- The package name is defined by the folder name and cannot contain '.'
- There must be a <packagename>.mk file inside the package folder
- The package name and '.mk' file name must be the same
- Inside the '.mk' file all defined variables must start with the package name in uppercase replacing '-' with '_'
- You need to define the generated plugin bundle names in the <PACKAGE_NAME>_BUNDLES variable
- Browse through other examples so you get an idea of other variations of the makefiles (how to use cmake or waf for example)
- If you want to rebuild after a change to your plugin or the .mk then it is often easiest to just delete the previous build's directory for your plugin ~/mod-workdir/plugins-dep/build/<packagename>-<version>