Difference between revisions of "How To Make a MPB Package"
Line 15: | Line 15: | ||
Here's an example of a plugin package file: | Here's an example of a plugin package file: | ||
<source lang="makefile"> | <source lang="makefile"> | ||
− | + | 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)) | |
− | + | </source> | |
− | |||
− | |||
− | + | Let's divide this into small pieces so it's easier to understand.<br> | |
+ | We're using PLUGINPKG as a generic name, '''you must use your package name in uppercase''' here.<br> | ||
+ | First we define the version, plus the download location and filename to download the source code from.<br> | ||
− | define | + | <source lang="makefile"> |
− | $( | + | PLUGINPKG_VERSION = 1.0.0 |
+ | PLUGINPKG_SITE = http://download.sourceforge.net/myplugin/ | ||
+ | PLUGINPKG_SOURCE = myplugin-$(PLUGINPKG_VERSION).tar.gz | ||
+ | </source> | ||
+ | |||
+ | If you rather use a git repository, use something like this: | ||
+ | |||
+ | <source lang="makefile"> | ||
+ | PLUGINPKG_VERSION = 25451be928b69c288f6978fb3b3fcf202dbd1ee1 | ||
+ | PLUGINPKG_SITE = git://github.com/myself/myplugin | ||
+ | PLUGINPKG_SITE_METHOD = git | ||
+ | </source> | ||
+ | |||
+ | Moving on, we define which bundles to use.<br> | ||
+ | (Note: they must be installed to $DESTDIR/usr/lib/lv2/) | ||
+ | |||
+ | <source lang="makefile"> | ||
+ | PLUGINPKG_BUNDLES = myplugin.lv2 | ||
+ | </source> | ||
+ | |||
+ | Finally, we defined the steps to build the package.<br> | ||
+ | If you're using autoconf or cmake, buildroot has this covered for you already.<br> | ||
+ | For autotools, use: | ||
+ | |||
+ | <source lang="makefile"> | ||
+ | $(eval $(autotools-package)) | ||
+ | </source> | ||
+ | |||
+ | For cmake, use: | ||
+ | <source lang="makefile"> | ||
+ | $(eval $(cmake-package)) | ||
+ | </source> | ||
+ | |||
+ | Using other build systems means you have to specify how to configure, build and install the code.<br> | ||
+ | Here's an example for waf: | ||
+ | |||
+ | <source lang="makefile"> | ||
+ | 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)) | ||
+ | </source> | ||
+ | |||
+ | And here's an example for raw makefiles: | ||
+ | |||
+ | <source lang="makefile"> | ||
+ | PLUGINPKG_TARGET_MAKE = $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) | ||
+ | |||
+ | define PLUGINPKG_BUILD_CMDS | ||
+ | $(PLUGINPKG_TARGET_MAKE) | ||
endef | endef | ||
− | define | + | define PLUGINPKG_INSTALL_TARGET_CMDS |
− | $( | + | $(PLUGINPKG_TARGET_MAKE) install DESTDIR=$(TARGET_DIR) |
endef | endef | ||
$(eval $(generic-package)) | $(eval $(generic-package)) | ||
+ | </source> | ||
+ | |||
+ | == Tips and tricks | ||
+ | |||
+ | <source lang="makefile"> | ||
+ | PLUGINPKG_CONF_OPTS=-DBUILD_GUI=OFF | ||
+ | </source> | ||
+ | |||
+ | <source lang="makefile"> | ||
+ | PLUGINPKG_AUTORECONF = YES | ||
+ | </source> | ||
+ | |||
+ | <source lang="makefile"> | ||
+ | PLUGINPKG_MAKE = $(MAKE1) | ||
</source> | </source> |
Revision as of 21:39, 13 September 2017
This page describes how to make a plugin package for mod-plugin-builder (or MPB for short)
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>
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)