[gambit-list] Building Gambit on windows

Marc Feeley feeley at iro.umontreal.ca
Thu Jan 19 12:48:56 EST 2017


Here’s a start!

Marc

Gambit-C is an implementation of Scheme that is designed to be portable and efficient.  By using C as a target language it offers high portability to any host platform with a decent C compiler.  It's design is based on a bootstrapped Scheme compiler, that is, a large part of the system is implemented in Scheme and compiled to C using the Gambit compiler itself.

The source code files are composed of .h, .c and .scm files.  The .c files implement the lowest levels of the runtime system that interface with the host operating system (IO subsystem, memory management and garbage collector, foreign function interface, etc).

Because the .scm files are converted to .c files by the Gambit compiler, it is possible to precompile these .scm files and only distribute a set of .h and .c files that are compiled and linked by a standard C compiler.  However, to provide maximum flexibility and allow modifying the system, the .scm files that were used to generate the .c files are also distributed as part of a "release".

This means that only a C compiler is needed to build the system from the released sources.  The two main products of a build are gsi, the Gambit Scheme interpreter, and gsc, the Gambit Scheme compiler.  Once gsc has been built, modification of the .scm files is possible because gsc can be used to convert the modified .scm files to .c files.  To prepare for this bootstrap process, a "make bootstrap" is needed to copy the gsc built from the release to gsc-boot to prevent any bugs introduced in the .scm files to affect future compilations of the .scm files (in other words it makes the circular bootstrap process less sensitive to new issues).

For flexibility, the .c files generated by gsc-boot from .scm files are composed of calls to macros defined in the file gambit.h .  This allows the build process, through the use of a "configure" script, to adapt gambit.h to the specifics of the host platform (operating system, host C compiler properties and supported language i.e. C/C++/Objective-C). The target code generated by gsc-boot is thus completely independent of the host platform (and in particular the size of pointers 32 or 64 bits).

Here is a diagram showing how all of this fits together:

    SOURCE FILES

    setup.c                                    \
    os_io.c                                     |
    c_intf.c                                    |
                                     config.h   |
    gambit.h.in     ------------>    gambit.h   |          gsi
                      configure                  > ------>
    _kernel.scm \                   _kernel.c   |    cc    gsc
    _eval.scm    |                  _eval.c     |           |
    _thread.scm   > ------------>   _thread.c   |           |
    _num.scm     |    gsc-boot      _num.c      |           |
    ...         /        ^          ...        /            |
                         |                                  |
                         +----------------------------------+
                                      make bootstrap

All files indicated are part of a release, except for config.h, gambit.h, gsi and gsc, that are created by the build process.

So to build the system from the files in a release, an initial

   ./configure

is needed to create the gambit.h and config.h files adapted to the host platform.  Then a

   make

creates the gsi and gsc executables.  Then a

   make bootstrap

creates gsc-boot (simply a copy of the gsc executable).  From this point, modifications of .scm files should be followed by a

   make

to use gsc-boot to convert the modified .scm files to .c files and invoke the C compiler to produce the modified executables for gsi and gsc.

The build process is slightly more complex when using source code that is obtained from the github repository.  This is due to the fact that the .c files generated from .scm files are not kept up to date in the repository (because even minor changes to the .scm files would cause huge diffs in the generated .c files that would be hard to manage).

To account for this, the build process for a github clone requires that the gsc-boot corresponding to the most recent release be built first (by checking out the latest release).  Once this gsc-boot is built, it can be used to build the HEAD (any .scm files modified since the latest release can now be converted to the corresponding .c file by gsc-boot).

So to build the system from the files in a github repository clone, an initial

   ./configure

is needed to create the main makefile from makefile.in (to be able to call "make"!).  Then a

   make latest-release

creates gsc-boot.  Then a

   make bootclean

removes all generated .c files so that the following

   make bootstrap

compiles all the .scm files to .c files using the gsc-boot of the latest release, and then copies this new compiler to gsc-boot.

Note that at this point the generated .c files are possibly suboptimal because the conversion of .scm to .c was done with the Gambit Scheme compiler of the latest release.  It is possible that since the latest release some improvements were made to the compiler itself, to generate better code, inline new primitive procedures, etc.  So it is necessary to use the new gsc-boot to recompile all of the .scm files.  This is done with

   make bootclean
   make 

For convenience these set of steps are performed by "make from-scratch".  So to build the system from github, these steps are needed:

   git clone https://github.com/gambit/gambit.git
   cd gambit
   ./configure
   make latest-release
   ./configure
   make from-scratch

> On Jan 19, 2017, at 7:28 AM, Adam <adam.mlmb at gmail.com> wrote:
> 
> Find below the list of "hmm" moments I had with respect to building Gambit, ever, if not else then for completeness.
> 
> These are not to suggest that anything is lacking in the documentation, this was just the most relevant answer I could come up with to your question :))
> 
> Hope it's of value in some way.
> 
> 
> 
>  * When rebuilding Gambit, after having done "make clean" for the reason that it seemed that that was needed - so that would be a good start, if you patch your Gambit or if you don't patch your Gambit or if you change ./configure arguments (--enable-* , CXX_FLAGS=.. etc.), is there ever a reason to run make clean?
> 
>  * I think in general I am quite unclear about in what situations I would use either of the make targets (listed on https://github.com/gambit/gambit/blob/master/INSTALL.txt#L453 ) and what their requirements for success are.
> 
>    Also are any of these not for use by users (but only for use by yourself)?
> 
>    clean, bootclean, realclean, bootstrap, mostlyclean sound the same to me. Understanding the picture here would be great.
> 
>    Also why would anyone ever do "make pull" instead of "git pull"?
> 
>  * When rebuilding Gambit, after having done "make clean" (or was it "make bootstrap"), the makefile tries to run something like ./gambc-cc a gambit-c compiler binary to regenerate the C files. That file invariably never exists. Why does the makefile not try to use ./gsc/gsc or the default gsc binary in its place, so that instead one needs to make a soft-link to either of those or copy it in?
> 
>    Or is there some ./configure or make argument to specify the path to the gsc binary to use? (if so didn't see the option mentioned anywhere)
> 
>  * I think a long time ago I was building Gambit on mingw. For some reason I needed to.. run the configure script to get a makefile I think, and that needed to be done in cygwin. Something like this. That that was even possible was not apparent to me when doing it, and I didn't understand beforehand that it could be relevant. I can't find any writeup right now of this experience, do you have any idea what it may have been?
> 
>    The MingW build instructions are here, https://github.com/gambit/gambit/blob/master/INSTALL.txt#L555 , is Cygwin a prerequirement, if so maybe list it?
> 
>    Maybe I got all confused about when and not to use \\ or / or \ in MingW when building.
> 
>    And the overall scheme of how to build with MingW.
> 
>  * Are there any limitations to the Visual C build mode - the basic presumption here is that the C files exist already (produced in an Unix environment) and the only thing you do in Visual C is to build the binary, right?
> 
>    Is any makefile or configure script or anything else than .c and .h files used?
> 
>  * How do you cross-build with gcc and are there any limitations to that?
> 
>  * (I think trying the VC project file in misc/vcstudio.zip not worked out of the box for me. I think eventually my conclusion became that trying to build from VC anyhow was a bad idea, and switched to the misc/vcexpress.bat build script instead which turned out much better.)
> 
>  * And a related question that has been going on forever has been: how do I enable the maximum of debugging symbols (-Og and any more) but not get any ./console file generated and also otherwise have gambit compiled for real use?
> 
> 2017-01-19 19:30 GMT+08:00 Marc Feeley <feeley at iro.umontreal.ca>:
> Can you be more specific about what kind of information is missing from INSTALL.txt?
> 
> Marc
> 
> > On Jan 18, 2017, at 9:39 PM, Adam <adam.mlmb at gmail.com> wrote:
> >
> > A writeup on the wiki "Build and install instructions for all platforms" could be of use.
> >
> > There are instructions in https://github.com/gambit/gambit/blob/master/INSTALL.txt and https://github.com/gambit/gambit/blob/master/README.md .. and they are coming with a problem that they are not so elaborated, so it would be nice if the wiki page would provide the contextual understanding of what's going on and what to do for the unintroduced.
> >
> > Something like this :)
> >
> >
> >
> > 2017-01-19 9:16 GMT+08:00 Marc Feeley <feeley at iro.umontreal.ca>:
> > You are probably better off using misc/vctoolkit.bat which is more complete and easier to modify.
> >
> > Marc
> >
> > > On Jan 18, 2017, at 8:04 PM, C K Kashyap <ckkashyap at gmail.com> wrote:
> > >
> > > Thanks Marc,
> > > I shall try with your suggested prefix.
> > >
> > > For visual studio - here's what I did
> > > 1. Cloned a fresh repo
> > > 2. Unzipped vstudio.zip into the repo root
> > > 3. Opend the sln file
> > > 4. Removed lib/os.c and added lib/os_setup.c
> > > 5. Did a build - got 615 errors - mostly cannot open gambit.h
> > > 6. So I ran ./configure and retried - did not help
> > >
> > > For msys2, I am afraid, I did not follow the instructions properly.
> > >
> > > Regards,
> > > Kashyap
> > >
> > >
> > > Severity      Code    Description     Project File    Line    Suppression State
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 8967
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 8973
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 8996
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 9002
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 9069
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 9075
> > > Error C2146   syntax error: missing ';' before identifier '___r2'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 9950
> > > Error C2143   syntax error: missing ';' before '{'    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 10012
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 10934
> > > Error C2143   syntax error: missing ';' before '{'    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 10985
> > > Error C2143   syntax error: missing ';' before '{'    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 11035
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 11214
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 11219
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 11259
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 11288
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 11377
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 11393
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 11440
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 11623
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 11668
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 11916
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 11924
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 12001
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 12072
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 12130
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 12142
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 12194
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 12223
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 12268
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 12280
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 12412
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 12420
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 12536
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 12808
> > > Error C2146   syntax error: missing ';' before identifier '___r4'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 12910
> > > Error C2143   syntax error: missing ';' before 'goto' lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 12921
> > > Error C2146   syntax error: missing ';' before identifier '___r2'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 12945
> > > Error C2143   syntax error: missing ';' before 'goto' lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 12956
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 12964
> > > Error C2146   syntax error: missing ';' before identifier '___r0'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 12983
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 13005
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 13021
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 13505
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 13722
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 13728
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 14191
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 14219
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 14381
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 14410
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 14471
> > > Error C2146   syntax error: missing ';' before identifier '___r4'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 14822
> > > Error C2143   syntax error: missing ';' before 'goto' lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 14833
> > > Error C2146   syntax error: missing ';' before identifier '___r1'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 14855
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 14867
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 14908
> > > Error C2146   syntax error: missing ';' before identifier '___r4'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 15111
> > > Error C2143   syntax error: missing ';' before 'goto' lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 15122
> > > Error C2146   syntax error: missing ';' before identifier '___r3'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 15133
> > > Error C2146   syntax error: missing ';' before identifier '___L7__23__23_thread_2d_send'      lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 15147
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 15170
> > > Error C2146   syntax error: missing ';' before identifier '___r4'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 15378
> > > Error C2143   syntax error: missing ';' before 'if'   lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 15392
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 15452
> > > Error C2146   syntax error: missing ';' before identifier '___r0'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 15459
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 15464
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 15510
> > > Error C2146   syntax error: missing ';' before identifier '___r1'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 15564
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 15590
> > > Error C2146   syntax error: missing ';' before identifier '___r2'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 15665
> > > Error C2143   syntax error: missing ';' before 'goto' lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 15677
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 15682
> > > Error C2146   syntax error: missing ';' before identifier '___r1'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 15757
> > > Error C2146   syntax error: missing ';' before identifier '___L17__23__23_mutex_2d_signal_2d_and_2d_condvar_2d_wait_21_'      lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 15769
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 15786
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 15791
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 15836
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 15913
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 15922
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 15933
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 16051
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 16127
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 16511
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 16517
> > > Error C2065   '___RUNQUEUE': undeclared identifier    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 19038
> > > Error C2146   syntax error: missing ';' before identifier '___r3'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 19401
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 19406
> > > Error C2146   syntax error: missing ';' before identifier '___r1'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 19421
> > > Error C2146   syntax error: missing ';' before identifier '___r4'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 19437
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 19442
> > > Error C2146   syntax error: missing ';' before identifier '___r1'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 19456
> > > Error C2146   syntax error: missing ';' before identifier '___r3'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 19480
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 19485
> > > Error C2146   syntax error: missing ';' before identifier '___r1'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 19495
> > > Error C2146   syntax error: missing ';' before identifier '___r4'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 19521
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 19526
> > > Error C2146   syntax error: missing ';' before identifier '___r1'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 19539
> > > Error C2146   syntax error: missing ';' before identifier '___r2'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 19688
> > > Error C2146   syntax error: missing ';' before identifier '___r1'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 19700
> > > Error C2146   syntax error: missing ';' before identifier '___r4'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 22582
> > > Error C2143   syntax error: missing ';' before 'goto' lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 22593
> > > Error C2146   syntax error: missing ';' before identifier '___r1'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 22629
> > > Error C1003   error count exceeds 100; stopping compilation   lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_thread.c 22629
> > > Error C2146   syntax error: missing ';' before identifier '___r3'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_repl.c   23586
> > > Error C2143   syntax error: missing ';' before 'goto' lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_repl.c   23597
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_repl.c   23656
> > > Error C2146   syntax error: missing ';' before identifier '___r2'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_repl.c   23700
> > > Error C2146   syntax error: missing ';' before identifier '___r1'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_repl.c   23712
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     19850
> > > Error C2143   syntax error: missing ';' before 'goto' lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     19862
> > > Error C2146   syntax error: missing ';' before identifier '___r2'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     19882
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     19894
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     19908
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     19925
> > > Error C2143   syntax error: missing ';' before 'goto' lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     19937
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     19956
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     19973
> > > Error C2143   syntax error: missing ';' before 'goto' lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     19985
> > > Error C2146   syntax error: missing ';' before identifier '___r3'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     20023
> > > Error C2143   syntax error: missing ';' before 'if'   lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     20035
> > > Error C2146   syntax error: missing ';' before identifier '___r4'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     20109
> > > Error C2143   syntax error: missing ';' before 'if'   lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     20120
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     20129
> > > Error C2146   syntax error: missing ';' before identifier '___r3'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     20139
> > > Error C2143   syntax error: missing ';' before 'goto' lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     20151
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     20209
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     20226
> > > Error C2143   syntax error: missing ';' before 'goto' lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     20238
> > > Error C2146   syntax error: missing ';' before identifier '___r3'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     20259
> > > Error C2143   syntax error: missing ';' before 'if'   lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     20271
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     20308
> > > Error C2146   syntax error: missing ';' before identifier '___r4'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     20351
> > > Error C2143   syntax error: missing ';' before 'goto' lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     20362
> > > Error C2146   syntax error: missing ';' before identifier '___r3'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     20382
> > > Error C2143   syntax error: missing ';' before 'if'   lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     20394
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     20423
> > > Error C2146   syntax error: missing ';' before identifier '___r3'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     21612
> > > Error C2143   syntax error: missing ';' before 'goto' lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     21624
> > > Error C2146   syntax error: missing ';' before identifier '___r4'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     21643
> > > Error C2143   syntax error: missing ';' before 'if'   lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     21654
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     21663
> > > Error C2146   syntax error: missing ';' before identifier '___r3'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     21905
> > > Error C2143   syntax error: missing ';' before 'goto' lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     21917
> > > Error C2146   syntax error: missing ';' before identifier '___r4'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     21936
> > > Error C2143   syntax error: missing ';' before 'if'   lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     21947
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     21956
> > > Error C2146   syntax error: missing ';' before identifier '___r3'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     23164
> > > Error C2143   syntax error: missing ';' before 'goto' lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     23175
> > > Error C2146   syntax error: missing ';' before identifier '___r3'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     23233
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     23257
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     23261
> > > Error C2146   syntax error: missing ';' before identifier '___r4'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24007
> > > Error C2143   syntax error: missing ';' before 'if'   lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24018
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24027
> > > Error C2146   syntax error: missing ';' before identifier '___r4'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24093
> > > Error C2143   syntax error: missing ';' before 'if'   lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24104
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24110
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24227
> > > Error C2143   syntax error: missing ';' before 'goto' lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24239
> > > Error C2146   syntax error: missing ';' before identifier '___r2'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24259
> > > Error C2146   syntax error: missing ';' before identifier '___r2'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24272
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24285
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24299
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24316
> > > Error C2143   syntax error: missing ';' before 'goto' lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24328
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24347
> > > Error C2146   syntax error: missing ';' before identifier '___r3'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24379
> > > Error C2143   syntax error: missing ';' before 'goto' lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24390
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24425
> > > Error C2146   syntax error: missing ';' before identifier '___r3'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24439
> > > Error C2143   syntax error: missing ';' before 'goto' lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24450
> > > Error C2146   syntax error: missing ';' before identifier '___r2'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24465
> > > Error C2143   syntax error: missing ';' before 'goto' lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24477
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24489
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24509
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24521
> > > Error C2146   syntax error: missing ';' before identifier '___r4'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24550
> > > Error C2146   syntax error: missing ';' before identifier '___L97__23__23_make_2d_vector_2d_port'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24562
> > > Error C2146   syntax error: missing ';' before identifier '___r2'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24592
> > > Error C2143   syntax error: missing ';' before 'goto' lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24604
> > > Error C2146   syntax error: missing ';' before identifier '___r3'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24629
> > > Error C2143   syntax error: missing ';' before 'if'   lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24641
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24677
> > > Error C2146   syntax error: missing ';' before identifier '___r4'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24699
> > > Error C2143   syntax error: missing ';' before 'goto' lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24710
> > > Error C2146   syntax error: missing ';' before identifier '___r2'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24734
> > > Error C2146   syntax error: missing ';' before identifier '___L109__23__23_make_2d_vector_2d_port'    lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24746
> > > Error C2146   syntax error: missing ';' before identifier '___r3'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24773
> > > Error C2143   syntax error: missing ';' before 'if'   lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24785
> > > Error C2146   syntax error: missing ';' before identifier '___r2'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24819
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24831
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     24845
> > > Error C2146   syntax error: missing ';' before identifier '___r3'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     25961
> > > Error C2143   syntax error: missing ';' before 'goto' lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     25972
> > > Error C2146   syntax error: missing ';' before identifier '___r3'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     26000
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     26024
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     26028
> > > Error C2146   syntax error: missing ';' before identifier '___r4'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     26803
> > > Error C2143   syntax error: missing ';' before 'if'   lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     26814
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     26823
> > > Error C2146   syntax error: missing ';' before identifier '___r4'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     26889
> > > Error C2143   syntax error: missing ';' before 'if'   lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     26900
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     26906
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     27027
> > > Error C2143   syntax error: missing ';' before 'goto' lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     27039
> > > Error C2146   syntax error: missing ';' before identifier '___r2'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     27059
> > > Error C2146   syntax error: missing ';' before identifier '___r2'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     27072
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     27085
> > > Error C2146   syntax error: missing ';' before identifier '___fp'     lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     27099
> > > Error C1003   error count exceeds 100; stopping compilation   lib     c:\mingw\msys\1.0\home\ckk\gambit\lib\_io.c     27099
> > > Error C1083   Cannot open include file: 'gambit-not408007.h': No such file or directory       gsi     c:\mingw\msys\1.0\home\ckk\gambit\include\gambit.h      15
> > > Error C1083   Cannot open include file: 'gambit-not408007.h': No such file or directory       gsc     c:\mingw\msys\1.0\home\ckk\gambit\include\gambit.h      15
> > >
> > >
> > > On Wed, Jan 18, 2017 at 3:57 PM, Marc Feeley <dr.marc.feeley at gmail.com> wrote:
> > > Thanks for your feedback… but it shouldn’t be this complicated! For mingw you should use a --prefix like this
> > >
> > >  --prefix=C:/MinGW/msys/1.0/GAMBITSCHEME
> > >
> > > to avoid moving the whole directory.
> > >
> > > For Visual Studio, there’s probably a file or two missing in the .sln project (I don’t keep it up to date… my guess is add “lib/os_setup.c” and remove “lib/os.c”).
> > >
> > > For msys2, did you get the sources from a clone of the github repository? If so, the instructions in INSTALL.txt should be followed precisely to bootstrap Gambit.
> > >
> > > Marc
> > >
> > > > On Jan 18, 2017, at 6:37 PM, C K Kashyap <ckkashyap at gmail.com> wrote:
> > > >
> > > > Hi all,
> > > >
> > > > I was able to get Gambit to build on windows - I tried initially with msys2 (hoping to build a 64bit version) - but failed -
> > > >
> > > > $ make install
> > > > making all in include
> > > > make[1]: Entering directory '/home/ckk/gambit/include'
> > > > make[1]: Leaving directory '/home/ckk/gambit/include'
> > > > making all in lib
> > > > make[1]: Entering directory '/home/ckk/gambit/lib'
> > > > ../gsc-boot -:~~bin=../bin,~~lib=../lib,~~include=../include -f -c  -check -prelude "(##include \"header.scm\")" _repl.scm
> > > > make[1]: *** [makefile:167: _repl.c] Segmentation fault
> > > > make[1]: *** Deleting file '_repl.c'
> > > > make[1]: Leaving directory '/home/ckk/gambit/lib'
> > > > make: *** [makefile:417: all-recursive] Error 1
> > > >
> > > >
> > > > After that, I tried using VS 2015 (unzipped vstudio.zip -- opened the sln - but did not succeed)
> > > >
> > > > Eventually, I tried with mingw (from mingw.org) -
> > > >
> > > > ./configure; make -j4 latest-release ; ./configure --prefix=/GAMBITSCHEME --enable-single-host; make -j4 from-scratch
> > > > ; make check; make -j4 doc; make install
> > > >
> > > > The above resulted in GAMBITSCHEME getting created under / -> under C:\MinGW\msys\1.0 that is .... however I got this error -
> > > >
> > > > $ gsc -exe hello.scm
> > > > *** ERROR IN ##parameterize -- No such file or directory
> > > > (current-directory "\\GAMBITSCHEME\\bin\\")
> > > >
> > > >
> > > > So, I copied the whole GAMBITSCHEME director under C:\ and wala!!! things worked (I now have a working gambit compiler on my windows box - where I need to spend a lot of time). I am sharing this just in case anyone finds this useful. I am going to try to use the prebuilt 64 bit windows build (I had tried it earlier but had run into some issues)
> > > >
> > > >
> > > > Regards,
> > > > Kashyap
> > > >
> > > >
> > > >
> > > > _______________________________________________
> > > > Gambit-list mailing list
> > > > Gambit-list at iro.umontreal.ca
> > > > https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
> > >
> > >
> >
> > _______________________________________________
> > Gambit-list mailing list
> > Gambit-list at iro.umontreal.ca
> > https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
> >
> 
> 





More information about the Gambit-list mailing list