Hi Tim,
Can you please check if the following makes sense for compiling on Risc OS?
As previously discussed, we are changing the directory layout of generated sources so that all plugins (internal and external) are generated into a single subdirectory. This matches the organization that Eliot is using for Cog builds. VMMaker is already updated to do this by default unless you explicitly set "VMMaker useSinglePluginsDirectory: false".
You may have noticed from the recent string of commit notices that Ian has reworked the Unix build to use the new flattened directory structure. Along with this, we are adopting the conventions of using the plugins.int, plugins.ext, and plugins.exc configuration files to control the build:
On Wed, Nov 13, 2013 at 07:44:43PM -0800, commits@squeakvm.org wrote:
Revision: 2807 Author: piumarta Date: 2013-11-13 19:44:42 -0800 (Wed, 13 Nov 2013) Log Message:
look for plugins.{int,ext,exc} in build, unix/cmake and src; parse plugin lists more robustly
This is intended to be compatible with the Cog build conventions, in which plugins.int/ext/exc are located in the build directory, and are used at compile time to control which plugins are built. This permits a full set of generated sources to be present in the src directory, even if only a subset is used for a particular platform build.
Along with this, there is a search path convention for the plugins.int/ext/exc files:
- If plugins.int/ext/exc exist in the build directory, these are used. This matches the approach for Cog build, and is generally appropriate for a person or organization that wants to build VMs for multiple platforms from a single controlled set of C source files.
- Otherwise, if plugins.int/ext/exc exist in the unix/cmake directory (or presumably in the case of Risc OS, in some location that you might choose in platforms/RiscOC), then these are used. This is the use case of a platform maintainer (e.g. Ian) building official VMs for distribution, where the trunk/src files may have been generated by someone else (e.g. you or me), and he wants to explicitly specify the configuration for the platform build. It may also be appropriate for Linux distribution maintainers.
- Otherwise, use the plugins.int/ext/exc in the src directory. This is the default case, in which VMMaker generates plugins.int and plugins.ext as part of the source generation. This is also the normal case for an individual person (such as myself) building a VM, or using VMMaker to develop a new plugin, debug a VM problem, etc. Very likely it is also the normal case when you build a VM for Risc OS.
I think that most of the above is pretty much self-evident, but I wanted to run it by you in case any of this conflicts with the way in which you build a VM for Risc OS (or more generally, any non-unixish platform).
Thanks, Dave