#!/bin/sh # Path to the MLton library source. # Used by this script to find the *.mlb files. MLBSRC=/usr/local/lib/mlton/sml # Path to the patch smlnj-lib source. # Used as the default root value in the generated code. LIBSRC=/usr/local/lib/mlton/sml LIBS='Util/smlnj-lib.mlb,util Controls/controls-lib.mlb,controls HashCons/hash-cons-lib.mlb,hashcons HTML/html-lib.mlb,html INet/inet-lib.mlb,inet PP/pp-lib.mlb,pp Reactive/reactive-lib.mlb,reactive RegExp/regexp-lib.mlb,regexp Unix/unix-lib.mlb,unix' echo 'structure Word31 = Word;' echo 'structure Int32 = Int;' echo 'structure Unsafe = struct structure CharVector = CharVector structure Array = Array end;' echo "local" echo "val root = \"$LIBSRC\"" echo for l in ${LIBS} do FILE=`expr "$l" : '\(.*\),'` VARN=`expr "$l" : '.*,\(.*\)'` echo "val $VARN = [" cat $MLBSRC/smlnj-lib/$FILE | sed 's/ *(\*.*\*) *//' \ | egrep '\.(sml|sig)$' \ | sed 's/^ *\(.*\)/"\1",/' echo '""]' echo done echo 'fun dol ("",_) =()' echo ' | dol (dn,l) =List.app(fn "" => () | s => use(root^"/smlnj-lib/"^dn^"/"^s)) l' echo "in" echo "val _ = List.app dol [" for l in ${LIBS} do DIRN=`expr "$l" : '\([^/]*\)'` VARN=`expr "$l" : '.*,\(.*\)'` echo "(\"$DIRN\", $VARN)," done echo '("", [])]' echo "end;"