On 02/04/2013 13:25, Ren? Neumann wrote:
Am 02.04.2013 14:02, schrieb David Matthews: This would definitly be a great help for people new to Poly/ML. When I had to produce a standalone executable from an ML-file it took me quite some time before figuring out how it works.
Actually it's probably not much more than polyml --use myprogram.ML --use export.ML Where export.ML is PolyML.export("polyml.o", main); OS.Process.exit OS.Process.success: unit;
Make the name of the resulting obj file a parameter and it's fine, I think. Could look like (shell script):
polyml --use myprogram.ML <<EOF PolyML.export("${output}", main); EOF
Yes, of course. Having the object file name as a parameter, perhaps defaulting to the name of the source file with ".o" on the end, was my "much more than".
Perhaps one can also pour in the gcc-compile phase already, so it's one step from ML-file to executable.
I don't know how that works so perhaps that's for later.
So, in summary, it should look like: -c option: Compile a source file which must contain a function main of type unit -> unit (or string list => unit or string list -> int ???) and export the object file.
-o option: Used with -c to override the default object file name.
-i option: Force interactive mode. The default is interactive only if stdin is a terminal. This controls whether to print a prompt.
--skip-first-line option: Skip the first line of the input stream. Used with scripts with #! at the start.
Does that seem reasonable? I don't think there's much there that is very complicated. Should some of these imply the -q option?
David