[M3devel] Multiple executables from the same source

Hendrik Boom hendrik at topoi.pooq.com
Mon Jul 8 18:25:40 CEST 2013


On Mon, Jul 08, 2013 at 10:51:41AM -0500, Rodney M. Bates wrote:
> 
> 
> On 07/06/2013 09:11 PM, Hendrik Boom wrote:
> >I'm writiing and debugging a bunch of interfaces and modules.
> >They are all supposed to fit together into one happy executable.
> >
> >But of course, until I've finished debugging them
> >   they fit together into one unhappy executable.
> >To test them properly I'd like to write a series of unit tests.
> >To run these tests I will need  to make further executables,
> >   each consisting of a test modules and several of the modules under test.
> >
> >Now with the usual structure of a Modula 3 workspace,
> >   there is one m3makefile and a src directory, and it makes one executable,
> >   not many,
> >   and it doesn't really give me a choice of which executable I want.
> >
> >In the old days of C code and Makefiles, I could have multiple targets
> >   each one being built with its own cc command
> >   with its own list of source files names.
> >
> >Is there anything comparable for Modula 3?
> >
> >The best I've come up sith so far is to have a number of directories,
> >   one for each test case,
> >   with its own m3makefile and its own symbolic link to a common src directory.
> 
> I have one project with three executables and a majority of the code shared.  I
> am using essentially this scheme, but instead of the symlinks in the directories,
> I have 'include_dir("../common/src")' in the m3makefiles of the main programs.
> common/src has its m3makefile for all the stuff in common.

Is this a way of getting cm3 to search ../common/src as sell as the src 
it usually looks through?

That may be what I wanted ... but IF statements in m3makefiles suffice 
for now.

It's useful to know that include_dir is available, though.

Is there any advice how to make sure the variable names I use in an 
m3makefiles don't confllict with the ones that cm3 might be using to 
manage the compilation?

> 
> This means means every main program has to independently compile all the common
> stuff and keep its own copies thereof.  But disk is cheap and plentiful,
> and 200K..300K SLOC compiles from scratch fast enough.

Independently compiling all that stuff is what I originally wanted -- 
it would give me the option of trying independent and very different 
implementations for some interfaces so as to discover hidden logical 
dependencies.

And the extra disk space is not that much space -- considering that 
it only needs to be tied up during testing,

-- hendrik



More information about the M3devel mailing list