A platform makefile should define the following variables: PLATFORM_DEBUG_FLAGS The flags to pass to the C# compiler to generate appropriate debug information PLATFORM_MCS_FLAGS Flags that are always passed to the C# compiler PLATFORM_RUNTIME The system runtime for executing CLR programs. Blank on Win32, probably $(RUNTIME) (the Mono runtime) on everything else. PLATFORM_CORLIB The name of the system's corlib. 'mscorlib.dll' PLATFORM_MAKE_CORLIB_CMP Define it to something nonempty if corlib_cmp.dll should be built on this platform. Only should be done if the platform provides its own non-Mono runtime that we can compare corlibs with. PLATFORM_TWEAK_CORLIB_SOURCES A command to futz around with the sources to mscorlib.dll. See linux.make and win32.make for examples. Should be 'cat' unless you know what you're doing. PLATFORM_CHANGE_SEPARATOR_CMD A command to change filename separators given on stdin. Leave undefined if Unixy filenames will work. See win32.make. BOOTSTRAP_MCS The C# compiler used to compile mcs/mcs.exe, and possibly other assemblies if the user is doing a standalone build (that is, not a bootstrap). hidden_prefix, hidden_suffix Prefix and suffix for hidden/temporary files. Unused right now, I think. platform-check: A target to make sure that we can build on this platform.