forked from polyml/polyml
-
Notifications
You must be signed in to change notification settings - Fork 0
/
exportPoly.sml
62 lines (54 loc) · 2.22 KB
/
exportPoly.sml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
(*
Title: Bootstrap code.
Author: David Matthews
Copyright David Matthews 2005-2008, 2017
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License version 2.1 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*)
val () = RunCall.addOverload Bootstrap.convString Bootstrap.convStringName;
val () = RunCall.addOverload Bootstrap.convInt "convInt";
val () = RunCall.addOverload Bootstrap.convWord "convWord";
(* Build the main basis library. *)
val () = Bootstrap.use "basis/build.sml";
(* We've now set up the new name space so everything has to be
compiled into that rather than the old space. *)
(* XWindows/Motif *)
val () =
let
val xWindowsGeneralCall = RunCall.rtsCallFull1 "PolyXWindowsGeneral"
val xcall: int*int->int*int = xWindowsGeneralCall
(* See if the RTS supports the X GetTimeOfDay call. *)
val isX = (xcall(30, 0); true) handle _ => false
in
if isX
then
(
PolyML.make "mlsource/extra/XWindows";
PolyML.make "mlsource/extra/Motif"
)
else ()
end;
val () = PolyML.print_depth 10;
(* Write out the result as an export file. *)
local
val args = CommandLine.arguments();
(* If we have -o filename use that as the output name.
N.B. polyImport takes the first argument that is not recognised as
an RTS argument and treats that as the file name so any -o must occur
AFTER the import file. *)
fun getFile [] = "polyexport" (* Default file name *)
| getFile ("-o" :: outFile :: _) = outFile
| getFile (_::tl) = getFile tl
val fileName = getFile args
in
val () = PolyML.shareCommonData PolyML.rootFunction;
val () = PolyML.export(fileName, PolyML.rootFunction)
end;