[MLton] bootstrap problem

Matthew Fluet fluet@cs.cornell.edu
Tue, 9 Aug 2005 09:43:45 -0400 (EDT)


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--1417689696-1109571589-1123595025=:6085
Content-Type: TEXT/PLAIN; charset=US-ASCII


> On Aug 9, 2005, at 1:38 PM, Matthew Fluet wrote:
> > This is only a problem if you attempt compile from un-clean  
> > sources.  If
> > your host compiler is not found in ./build/bin/mlton, then compilation
> > bootstraps using the mlton.cm file, which does not use annotations  
> > (and
> > then does a second compile using mlton.mlb, now that ./build/bin/mlton
> > exists)
> 
> Ah. I didn't read the surrounding if.
> 
> Error: <mlnlffi-lib>/c.mlb 18.4.
>    File /Users/terpstra/src/mlton/build/lib/sml/mlnlffi-lib/internals/ 
> c-int.powerpc-darwin.mlb does not exist.
> 
> I just copied c-int.x86-linux.mlb to c-int.powerpc-darwin.mlb.
> Will this work? How can I test it?

Duplicating the c-int.mlb for x86-linux ought to work.

If you want to test NLFFI, here are some tests that I've adapted from the
SML/NJ CVS repository.  The tests in {array,ll,math,printf} should work;  
the tests in {pdb,recursive,structs} won't work because they have
functions that take or return structs.

You'll need to build mlnlffigen, which requires the CKit and SML/NJ
Libraries (http://mlton.org/Libraries).
--1417689696-1109571589-1123595025=:6085
Content-Type: APPLICATION/x-gzip; name="mlton.nlffi.tgz"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.58.0508090943450.6085@lion.cs.cornell.edu>
Content-Description: 
Content-Disposition: attachment; filename="mlton.nlffi.tgz"

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
rXtuu+/1S0tAdRzY40+5Haq28m/i6gsLUHaFQbR6hyn50vGmEPeYAE3rkDj6
H7eRA1YDkd5QrHQzW7m46ZiTAFAcK7qfjUkHhaQBaxLcLqaeQ3rO/JAEPLeD
CkiUikt6PDl+lsXXTdMHItwOKss0pjjzicA6/9M7Do2mcZf73yMR+V9Vhp3+
RytQ0v6Prv8jdfpfrUBF+z+q/o/Wnf+1Ap3+z+cNVfz/mPo/Yrf/bwXq9H+w
N3Ts/ulCBf+3pv+D8r+i/o/S6f+0Attr7GC/EObboUWKPUqlYg/F7BR7HhdK
+L/V8z+Z2v/Mn/9J3fq/Fag6/1s/kqs7jst4L3SbHhDS87n4jmDV8Vx3MvcY
UML/0djcTBr3kf+Jnfy/Fdgo/4tav0b+F2Fl5X/J5N/J/z4SqOL/eUNp1N//
X9P/UbXu/k8rYN2Elu8S01tNHYsE/+eHpMcc/BFXCLTd0jDDC0rDQr08nl5F
VK+iqleShUA5Dj0kJVjWzbKUwtK7ro3veJel8SFMEquqcl5Vl+WBULBs4IOH
2Sr+b0n/X1JHavz+x2ikUP1/adTJ/1uBWP+fDfh30v+P5v/7KPjfX7Gfu0iS
XjhT7uL83etX6IHdmOVEYF3avHX1hW0MYtRs1hbO+lUDh21HSBRv6yzmkyN9
SCrK8UWUY5qDOHy8IVKSRwgL5pbjYGQsGCQThN6SRAurCB0xaf3GOJj1vrcM
yX7fMZ39NeRcvTDdzjtXS6QSWix27F1S6ih4vB5l2zIz7O2KnOJynPDjy9ev
/mdMDMfSXY7+HXM7/oL0/RnBVSvtXhsacL1wufbLJPRJLHGrxv9MF3pQGrX7
v2E6/mvoL41UpXv/pRWIrDzRwXpyfvYtz3Z70Z4PWYly3atzmAdYOGMw3AGW
jGIcjCTw2Tcc23LDmJdg1rBhhO5Od/5aUMH/aw143zRq93+R/EdVFUkdwjgB
n0p3/tsKsAeHYAV1QSc23P/JgnjEvPdx/TdBT2GWeuMJLruKQXqG5xp6SH7Z
zUVHPdBD8sbSHSH03jK7af4h2cV7GtzOzs5ujupG7H2G/hvPFXII+8W1DNpu
bf5ysevzl6Val798BnHPWswg+G2ZwSj2VhlMqNZlsKr9q+b/dD31sD5Wx//S
UEnmfzz4hflf6fQ/2oEG5v/Cgr6b/j8mWOd/NGzfbBp30f8ewl5AlFQ0Cd3p
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
4VHCvwFRZV/NADACAA==

--1417689696-1109571589-1123595025=:6085--