This reverts commit 8087d283c08033c61112cf7ce847433f92da5220. Bash that comes with macOS does not support associative arrays.
Unified · Split
| @@ -40,6 +40,7 @@ muinc="-I $mudir/include -I $mudir/thirdparty/freetype/include" · 39 unmodified lines | |||
| 40 | test -d "$mudir" || die muPDF not found, consult $(dirname $0)/BUILDING | 40 | test -d "$mudir" || die muPDF not found, consult $(dirname $0)/BUILDING |
| 41 | 41 | ||
| 42 | mkdir -p $outd/{$wsid,lablGL} | 42 | mkdir -p $outd/{$wsid,lablGL} |
| 43 | :>$outd/ordered | ||
| 43 | 44 | ||
| 44 | isfresh() { test -r $1.past && test "$(<$1.past)" = "$2"; } | 45 | isfresh() { test -r $1.past && test "$(<$1.past)" = "$2"; } |
| 45 | 46 | ||
| @@ -137,14 +138,10 @@ done < <(ocamlc -config) · 91 unmodified lines | |||
| 137 | 138 | ||
| 138 | read cvers < <($ccomp --version) | 139 | read cvers < <($ccomp --version) |
| 139 | 140 | ||
| 140 | declare -A modset | ||
| 141 | modord= | ||
| 142 | |||
| 143 | bocaml1() { | 141 | bocaml1() { |
| 144 | if test -z "${modset[$3]-}"; then | 142 | if ! grep -q "$3" $outd/ordered; then |
| 145 | bocaml2 "$@" | 143 | bocaml2 "$@" |
| 146 | modset[$3]=+ | 144 | echo "$3" >>"$outd/ordered" |
| 147 | test "${3%%.cmi}" != "$3" || modord="$modord $3" | ||
| 148 | fi | 145 | fi |
| 149 | } | 146 | } |
| 150 | 147 | ||
| @@ -287,8 +284,9 @@ else · 136 unmodified lines | |||
| 287 | bocamlc wsi/x11/xlib.o | 284 | bocamlc wsi/x11/xlib.o |
| 288 | fi | 285 | fi |
| 289 | 286 | ||
| 290 | cmd="ocamlc -custom $libs -o $outd/llpp $cobjs $modord -cclib \"$clibs\"" | 287 | ord=$(grep -v \.cmi $outd/ordered) |
| 291 | keycmd="digest $outd/llpp $cobjs $modord $mulibs" | 288 | cmd="ocamlc -custom $libs -o $outd/llpp $cobjs $(echo $ord) -cclib \"$clibs\"" |
| 289 | keycmd="digest $outd/llpp $cobjs $ord $mulibs" | ||
| 292 | isfresh "$outd/llpp" "$cmd$(eval $keycmd)" || { | 290 | isfresh "$outd/llpp" "$cmd$(eval $keycmd)" || { |
| 293 | echo linking $outd/llpp | 291 | echo linking $outd/llpp |
| 294 | eval "$cmd" || die "$cmd failed" | 292 | eval "$cmd" || die "$cmd failed" |