Subsections

- 2.1 How `configure` finds the `src` directory

# 2 Generating your own VM and plugin sources

Generating your own VM/plugin sources might be necessary for various reasons:

- you want to change the mix of internal vs. external plugins
- you want to remove some plugins from the VM that you will never use
- you've pulled in some updates that modify the Interpreter or plugins
- you've filed-in (or written) a whole new plugin
- etc...

Version 3.2 (and later) of Unix Squeak use VMMaker to generate the core interpreter and plugin sources.

Start Squeak in the top-level directory (the one containing the `platforms` directory); for example:

`
$ ls
src platforms ...
$ squeak MyCoolPlugin.image
`

Open a VMMakerTool and modify the setup to your liking.

> Note: The VMMaker configuration used to build the distributions of Unix Squeak is available in `platforms/unix/config/VMMaker.config`.

Then click on the relevant ``generate ...'' button. You can now ``configure; make; make install`' in your `blddir` (as described above).

> Note: You only need to run `configure` once for a given `blddir` (on the same host). If you modify the choice of plugins (or change whether they're internal/external) then you can update the build environment by running the `config.status` script in the `bldddir`, like this:
> `$ squeak MyCoolPlugin.image
> ... generate new sources ...
> $ cd blddir
> $ ./config.status
> $ make
> `
> This is much faster than running `configure` all over again. (In fact, `make` should detect any changes to the plugin configuration and re-run `config.status` for you automatically.)

> Note: ``configure`' doesn't actually create any files. The last thing it does is run ``config.status`' to create the configured files in `blddir` from the corresponding file.ins in the `unix/config` directory. So in the remainder of this document the phrase `during configuration' means either when running ``configure`' for the first time or running ``config.status`' to update an already `configure`d build environment.

## 2.1 How `configure` finds the `src` directory

Starting with version 3.7 `configure` looks in two places for the `src` directory, in the following order, and uses the first one that it finds:

- the top-level directory (the one containing the `platforms` directory);
- the `platforms/unix` directory.

In other words, if you want to use your own generated sources without deleting the built-in generated sources, generating them into a `src` directory next to `platforms` (and then re-running `configure`) will do what you want.