Porting crib sheet for an imaginary port to FreeBSD 3.x: Directories and files to create: libs/m3core/src/C/FreeBSD3 libs/m3core/src/Csupport/FreeBSD3 libs/m3core/src/runtime/FreeBSD3 libs/m3core/src/unix/freebsd-3 m3config/src/FreeBSD3 Files to edit: language/modula3/m3compiler/m3middle/src/Target.m3 language/modula3/m3tools/m3gdb/gdb/ltconfig libs/libm3/src/random/m3makefile libs/m3core/src/float/m3makefile libs/m3core/src/runtime/m3makefile libs/m3core/src/time/POSIX/m3makefile libs/m3core/src/unix/m3makefile m3config/src/COMMON To disable VM-synchronized GC: libs/m3core/src/runtime/FreeBSD3/RTMachine.i3 Set VMHeap = FALSE libs/m3core/src/runtime/FreeBSD3/RTHeapDepC.c #ifdef out most of the file. To add custom options for the bootstrap: language/modula3/m3compiler/m3bootstrap/src/m3makefile Search for ALPHA_OSF to see examples. Special gcc config options: language/modula3/m3compiler/m3cc/src/m3makefile GCC configure script: language/modula3/m3compiler/m3cc/gcc/configure Other stuff: You must build and install the new m3middle, m3build, and m3ship before you can make a bootstrap. Use gmake. GCC build wants byacc. Sometimes you can finesse this in the M3 config file with something like M3CC_MAKE = ["gmake", "BISON=yacc"]. May need to define NDEBUG when building m3cgc1 to avoid problems with "language/modula3/m3compiler/m3cc/gcc/assert.h".