************************************************************ mmm (mindy makefile maker) v0.93 by Peter Hinely 1999-01-04 ************************************************************ Introduction ------------ Compiling Dylan files with mindycomp, Gwydion Dylan's bytecode compiler, and then executing them with mindy, the bytecode interpreter, can be relatively awkward. Gwydion Dylans's d2c (Dylan-to-C compiler) uses special files called lid files (suffix .lid) to generate an executable or library file. mmm is a new tool which is able to process lid files to produce a makefile tailored for building an executable or library with mindycomp. mmm was written using Gwydion Dylan on the BeOS. Installing mmm -------------- To build mmm, cd into the mmm directory and type make This will create an executable named mmm (It is actually a self-executing dbc file). Now place mmm somewhere in your path. The gd/bin/ directory would be a good place. You are now ready to use mmm for all your mindy projects. Using mmm --------- Create a minimal lid file for your mindy project if there is not one already. (If you are starting a new project, you can use the make-dylan-app utility that is included in the Gwydion Dylan distribution.) A minimal lid file that can be processed with mmm would look like: ------begin foo.lid------ library: foo executable: foo (Omit this line if you are building a library only) foo-exports.dylan (a list of Dylan source files foo.dylan separated by whitespace) -------end foo.lid------- (Note: Minimal lid files for d2c may require additional specifiers). Now just process the lid file with mmm: mmm foo.lid (If you have only one lid file in that directory, you can just type "mmm *.lid") mmm creates a makefile called foo.lid.mak, and then runs the makefile by doing a "make -f foo.lid.mak". If there were no errors during compilation, your library or executable is now ready to use. In general, you won't need to, but if you want to directly access the rules in the mmm-generated makefile, here are some possiblities: make -f foo.lid.mak (automatically done by mmm) make -f foo.lid.mak clean (removes all .dbc files) make -f foo.lid.mak realclean (removes all .dbc files plus the executable or library) If anyone has any better suggestions on how things should work, please email me above. Things to do ------------ incorporate a "-nomake" option for mmm to disable automatic making Historical Note --------------- mmm used to be dependent the compiler-base-lib and debugger-format-lib libraries (located in gd/src/d2c/base/ and gd/build/common/format respectively). With this release I have ripped the relevant portions of code out of the compiler-base directory so the compiler-base-lib library is no longer needed.