David, On 19 May 2014, at 15:42, David Matthews <david.matth...@prolingua.co.uk> wrote:
> Rob, > > On 18/05/2014 17:36, Rob Arthan wrote: >> I am trying to understand my options for using Poly/ML on MinGW for >> building windows applications coded in Standard ML. >> >> There is a bug reported in http://sourceforge.net/p/mingw/bugs/2043/ >> that you have to work around to build Poly/ML with the current MinGW. >> The work-around is to run configure with >> CXXFLAGS="-D_GLIBCXX_HAVE_FENV_H=1” in the environment. (I suspect I >> should also throw -O3 in there too, as I think that setting CXXFLAGS >> replaces its initial setting of -O3 inside the makefiles. Is that >> right?) > > I suspect it is. I wasn't aware of the need for _GLIBCXX_HAVE_FENV_H=1 but > it's quite a while since I last used Mingw. It isn't clear from the link > whether this is something the Poly/ML configure should do or not. I agree that it wasn’t very clear whether this was thought to be a bug in the MinGW header files or not. >> >> Having got Poly/ML to compile, I found that polyc gives errors like >> the following when asked to compile a source file: >> >> gcc.exe: error: C:/DOCUME~1/rda/LOCALS~1/Temp/polyobj.2724.obj: No >> such file or directory > > Again, I haven't tried this with Mingw. I'll take a look. > Thanks. >> If I create an object file from the Poly/ML GUI using PolyML.export, >> polyc will link it. If I understand what is going on correctly, the >> resulting program is a Windows application that brings up the Poly/ML >> GUI to provide the standard input, output and error channels, unless >> it is run with standard input and output connected to pipes, in which >> case it works like a pipe. I think I may end up having to package the >> Standard ML parts of my application as a server, with the GUI >> provided by clients implemented in some other language. Are there any >> other options? > > I think there are three possible options for building Poly/ML on Windows: > Mingw, Visual C or Cygwin. If you use Mingw or Visual C you are building the > native Windows version. This version does put up the GUI, as you say, if the > standard input and output are missing. This is actually done by the RTS > before the ML code is entered so applies equally to functions exported with > PolyML.export as to the usual Poly/ML read-eval-print loop. Actually, it > occurs to me that it is now possible to write the GUI in ML and include it as > part of the top-level root function in Windows. This would allow a > user-exported function to completely by-pass it. I think a GUI is necessary > for Windows applications since that is what Windows users would expect. I would actually have expected the “GUI” to be a command prompt window. I.e., I would have expected poly to be a console application. This is how python comes, for example. Something that behaves like a console application is what cc on MinGW seems to give you if you don’t give it any of the Windows-specific command line options when you compile a standard C program. > > Using Cygwin might be a possibility if you are thinking of providing a > separate GUI. The package that Makarius has provided for running Isabelle on > Windows uses Poly/ML under Cygwin but all the user interaction is through > jEdit. There might be issues, though, if you wanted the ML code to access > the Windows filing system because Cygwin imposes its own view of the filing > system. > Cygwin does work for me, but unfortunately, having to install it is a stopper for some of my potential users. I tried compiling under MinGW with __CYGWIN__ set, but it doesn’t work. Would it be difficult to separate the choice between polystub.c being a standard C application and a Windows application from the __CYGWIN__ flag? Regards, Rob.
_______________________________________________ polyml mailing list polyml@inf.ed.ac.uk http://lists.inf.ed.ac.uk/mailman/listinfo/polyml