# HG changeset patch # User wenzelm # Date 1118524648 -7200 # Node ID f4b7cf8975af47275e330e5c7857cd5bdb024717 # Parent 9d020423093b3b44fc771328a5f399811d4b17a5 some cygwin support; diff -r 9d020423093b -r f4b7cf8975af lib/scripts/run-polyml --- a/lib/scripts/run-polyml Sat Jun 11 22:15:58 2005 +0200 +++ b/lib/scripts/run-polyml Sat Jun 11 23:17:28 2005 +0200 @@ -29,7 +29,20 @@ ## Poly/ML programs ML_DBASE_PREFIX="" -POLY="$ML_HOME/poly" +ML_DBASE_SUFFIX="" +CYGPATH="" + +case "$ML_PLATFORM" in + *-cygwin) + ML_DBASE_SUFFIX=".pmd" + POLY="$ML_HOME/PolyML.exe" + CYGPATH="cygpath -m" + ;; + *) + POLY="$ML_HOME/poly" + ;; +esac + check_file "$POLY" case "$ML_SYSTEM" in @@ -37,13 +50,13 @@ if [ -z "$ML_DBASE" ]; then if [ -z "$COPYDB" ]; then ML_DBASE_PREFIX="$ML_HOME/" - ML_DBASE="ML_dbase" + ML_DBASE="ML_dbase${ML_DBASE_SUFFIX}" else - ML_DBASE="$ML_HOME/ML_dbase" + ML_DBASE="$ML_HOME/ML_dbase${ML_DBASE_SUFFIX}" fi POLYPATH="$ML_HOME" else - POLYPATH=$(dirname "$ML_DBASE") + POLYPATH="$(dirname "$ML_DBASE")" fi export POLYPATH @@ -96,7 +109,13 @@ DB="$OUTFILE" else [ -f "$OUTFILE" ] && { rm -f "$OUTFILE" || fail_out; } - echo "PolyML.make_database \"$OUTFILE\"; PolyML.quit();" | "$POLY" -r "$INFILE" + if [ -z "$CYGPATH" ]; then + echo "PolyML.make_database \"$OUTFILE\"; PolyML.quit();" | "$POLY" -r "$INFILE" + else + OUTFILE_CYGWIN="$($CYGPATH "$OUTFILE")" + INFILE_CYGWIN="$($CYGPATH "$INFILE")" + echo "PolyML.make_database \"$OUTFILE_CYGWIN\"; PolyML.quit();" | "$POLY" -r "$INFILE_CYGWIN" + fi [ -f "$OUTFILE" ] || fail_out DB="$OUTFILE" fi @@ -112,8 +131,14 @@ DB_INFO=$(ls -l "$DB" 2>/dev/null) -"$ISABELLE_HOME/lib/scripts/feeder" -p -h "$MLTEXT" $FEEDER_OPTS | \ - { read FPID; "$POLY" $ML_OPTIONS "$DB"; RC="$?"; kill -HUP "$FPID"; exit "$RC"; } +if [ -z "$CYGPATH" ]; then + "$ISABELLE_HOME/lib/scripts/feeder" -p -h "$MLTEXT" $FEEDER_OPTS | \ + { read FPID; "$POLY" $ML_OPTIONS "$DB"; RC="$?"; kill -HUP "$FPID"; exit "$RC"; } +else + DB_CYGWIN="$($CYGPATH "$DB")" + "$ISABELLE_HOME/lib/scripts/feeder" -p -h "$MLTEXT" $FEEDER_OPTS | \ + { read FPID; "$POLY" $ML_OPTIONS "$DB_CYGWIN"; RC="$?"; kill -HUP "$FPID"; exit "$RC"; } +fi RC="$?" NEW_DB_INFO=$(ls -l "$DB" 2>/dev/null) diff -r 9d020423093b -r f4b7cf8975af src/Pure/ML-Systems/polyml.ML --- a/src/Pure/ML-Systems/polyml.ML Sat Jun 11 22:15:58 2005 +0200 +++ b/src/Pure/ML-Systems/polyml.ML Sat Jun 11 23:17:28 2005 +0200 @@ -6,7 +6,17 @@ Compatibility file for Poly/ML (version 4.0, 4.1, 4.1.x). *) -(** ML system related **) +(** ML system and platform related **) + +(* cygwin *) + +val cygwin_platform = + let val n = size ml_platform + in n >= 6 andalso String.substring (ml_platform, n - 6, 6) = "cygwin" end; + +fun if_cygwin f x = if cygwin_platform then f x else (); +fun unless_cygwin f x = if not cygwin_platform then f x else (); + (* old Poly/ML emulation *) @@ -34,7 +44,8 @@ (* bounded time execution *) -use "ML-Systems/polyml-time-limit.ML"; +unless_cygwin + use "ML-Systems/polyml-time-limit.ML"; (* prompts *) @@ -168,25 +179,5 @@ val profiling: int->unit = RunCall.run_call1 RuntimeCalls.POLY_SYS_profiler; -structure OriginalPosix = Posix; -structure OriginalIO = Posix.IO; - -structure Posix = -struct - open OriginalPosix - structure IO = - struct - open OriginalIO - val mkTextReader = mkReader - val mkTextWriter = mkWriter - end; -end; - -(*This extension of the Poly/ML Signal structure is only necessary - because in SML/NJ, types Posix.Signal.signal and Signals.signal differ.*) -structure IsaSignal = -struct - open Signal - val usr1 = Posix.Signal.usr1 - val usr2 = Posix.Signal.usr2 -end; +unless_cygwin + use "ML-Systems/polyml-posix.ML";