[Vm-dev] CMakeMaker--whaddya think?

David T. Lewis lewis at mail.msen.com
Wed Apr 16 01:02:49 UTC 2014

On Tue, Apr 15, 2014 at 05:08:39PM -0700, gettimothy wrote:
> Hi all.
> Unless I am talked out of it , I am going to generate the CMMake "stuff" from Smalltalk classes similar to the way that VMMaker generates source code.

This is exactly the approach of the CMakeVMMaker package (hosted in the
VMMaker repository), so please take a close look at that before you do
anything new along these lines. There is some very good work that has
been done there, and there would be no point in duplicating it.

Also, please take a careful look at Ian Piumarta's CMake procedures in trunk.
There is a good reason why Ian chose to organize the build procedures in this
manner, and there is also a good reason why he chose to maintain the build
scripts in Subversion along with the source code.

The overall organization of Ian's CMake build is more or less this:

- A single CMake script platforms/unix/CMakeLists.txt controls the overall build.

- That script calls INCLUDE to include the instructions for the plugins, the
VM modules, and for the main VM.

- The various individual program modules, such as plugins, may have files
called config.cmake and build.cmake. These live in the source directories
for their respective modules, and provide any module-specific customization
needed for configuring or building the module in that directory.

- For the main VM, the build.cmake and config.cmake files are in the
platforms/unix/vm directory. These two files control the build of the VM

- There is a unix shell script platforms/unix/cmake/configure that serves
as a utility to drive the main platforms/unix/CMakeLists.txt. This is a
convenience script that provides a front end to the entire process (for
example, it lets you specify --image64 to build a VM for the 64-bit image

In order to get the stack interpreter and Cog sources to build in Unix,
my expectation is that the config.cmake and build.cmake scripts in
platforms/unix/vm will need to be changed to build the necessary sources
that Eliot has added to the main VM. In all likelihood, nothing at all
will need to be changed in any of the plugin directories, or in any of
the VM module directories (such as vm-display-X11 or vm-sound-ALSA).


More information about the Vm-dev mailing list