mkapp

Make Application: run mkapp to generate an app bundle to install and run on a target.

Application bundles are compressed archives that can be used to:

  • Install your application on a target.
  • Update your app to a new version.

The main input for mkapp is an Application Definition .adef file that contains these definitions:

  • executables to build when the app is built
  • components and/or other files to build into those executables
  • other files to be included as a part of the app
  • if the app will run in a sandbox, files to access outside the sandbox
  • executables to run when the app is started
  • command-line arguments and environment variables to pass to those apps
  • limits to place on the app (CPU, memory, etc.)

mkapp will parse the .adef file, determine which components, interface definitions, and other source files are needed, build those into the libraries and executables required, generate the on-target configuration data needed, and add everything to an app bundle ready for installation on the target.

To display usage, run

mkapp --help
Note
Use of mksys is encouraged vs. using mkapp. mksys produces a full system bundle which has the following benefits:
  • limits the risk of leaving your target in a bad state
  • performs some inter-app consistency checks (e.g., checks for typos in bindings)
  • ensures that all apps are updated together
  • reduces the chances of an app hanging at start-up

However there are occasions when you want or need to distribute an application for inclusion in another users system, but you cannot distribute the source code for this application. In that case you can use the -b switch to mkapp. For example, building a simple helloWorld style application:

mkapp -t wp85 helloWorld.adef -b

This will produce a file called helloWorld.wp85.app and it is a binary app bundle. To use this binary application, simply include it in your system's sdef applications section like you would normally:

apps:
{
    helloWorld.wp85.app
}

Note that this binary application is compiled specifically for the given target, so an app compiled for one target is not necessarily compatible with another target.

See Application Definition .adef files for details on app def files.