-
Notifications
You must be signed in to change notification settings - Fork 0
/
mlton
82 lines (74 loc) · 2.05 KB
/
mlton
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/usr/bin/env bash
# This script calls MLton.
set -e
lib='/home/ansatte/rolando/ML/ADATE/lib/mlton'
gcc='gcc'
mlton="$lib/mlton-compile"
world="$lib/world.mlton"
nj='sml'
eval `$lib/platform`
njHeap="$lib/mlton.$HOST_ARCH-$HOST_OS"
rargs=""
case "$1" in
@MLton)
shift
while [ "$#" -gt 0 -a "$1" != "--" ]; do
rargs="$rargs $1"
shift
done
if [ "$#" -gt 0 -a "$1" == "--" ]; then
shift
else
echo '@MLton missing --'
exit 1
fi
;;
esac
# If $mlton is executable and $world exists and is not older than
# $njHeap (which exists), then use MLton, otherwise use SML/NJ.
doit () {
if [ -x "$mlton" -a -s "$world" -a ! "$njHeap" -nt "$world" ]; then
exec "$mlton" @MLton load-world "$world" ram-slop 0.5 $rargs -- "$@"
elif [ -s "$njHeap" ]; then
exec "$nj" @SMLload="$njHeap" "$@"
fi
echo 'Unable to run MLton. Check that lib is set properly.' >&2
exit 1
}
# For align-{functions,jumps,loops}, we use -m for now instead of
# -f because old gcc's will barf on -f, while newer ones only warn
# about -m. Someday, when we think we won't run into older gcc's,
# these should be changed to -f.
# You may need to add a line with -link-opt '-L/path/to/libgmp' so
# that the linker can find the gmp.
doit "$lib" \
-cc "$gcc" \
-cc-opt "-I$lib/include" \
-cc-opt '-O1' \
-cc-opt '-fno-strict-aliasing -fomit-frame-pointer -w' \
-target-cc-opt x86 \
'-fno-strength-reduce
-fschedule-insns
-fschedule-insns2
-malign-functions=5
-malign-jumps=2
-malign-loops=2
-mcpu=pentiumpro' \
-target-cc-opt sparc \
'-Wa,-xarch=v8plusa
-fcall-used-g5
-fcall-used-g7
-m32
-mv8
-mcpu=ultrasparc' \
-target-link-opt cygwin '-lgmp' \
-target-link-opt darwin '-lgmp' \
-target-link-opt freebsd '-L/usr/local/lib/ -lgmp' \
-target-link-opt mingw \
'-lgmp -lws2_32 -lkernel32 -lpsapi -lnetapi32' \
-target-link-opt netbsd \
'-Wl,-R/usr/pkg/lib -L/usr/local/lib/ -lgmp' \
-target-link-opt openbsd '-L/usr/local/lib/ -lgmp' \
-target-link-opt solaris '-lgmp -lnsl -lsocket' \
-link-opt '-lgdtoa -lm' \
"$@"