m3build contains some built-in support for machine and operating system dependencies. The package structure makes provision for separate build directories for different machine and operating system combinations. The default behaviour of m3build is to generate the compiled object files, libaries and programs in the build directory corresponding to the machine and operating system on which m3build is executing.
The following set of variables exist to allow m3makefiles to be parameterised by machine and operating system.
The net effect of the above allows a single package to build a family of architectural variants, in different build sub-directories, where each variant uses the same set of m3makefiles, parameterized by the above variables. If this degree of flexibility is insufficient, then the extra variation must be specified in a separate package, which can use include_pkg to access the shared sources.