At 09:26 AM 10/2/2006, Marc Feeley wrote:
On 2-Oct-06, at 1:10 AM, Blake McBride wrote:
Greetings,
I want to build a stand-alone (requiring no DLL's) scheme app under Windows. I re-built Gambit 4.0b19 with Microsoft VC without a problem. However, when I try to compile a trivial program I get:
C:\Systems\Scheme\Gambit>gsc a.scm *** ERROR IN ##parameterize -- No such file or directory (current-directory "C:\lib")
C:\Systems\Scheme\Gambit>gsc -dynamic a.scm *** ERROR IN ##parameterize -- No such file or directory (current-directory "C:\bin")
When you build Gambit-C you must indicate where it will be installed by setting the ___GAMBCDIR symbol. With gcc this can be done with:
gcc -D___GAMBCDIR="C:/Gambit-C/4.0b19" ...
Just do the equivalent thing in VC.
Note also that when you run gsc and gsi, you can force the Gambit installation directory with the -:=DIR runtime option. So you could do:
gsc -:=C:/Gambit-C/4.0b19 a.scm
That worked and I did get a good executable file. I had to link with gambc.lib, user32.lib and ws2_32.lib (two MS libs).
I don't get the whole "compile in the destination path" stuff. That means you have to re-build the whole thing whenever you want to move anything (like to a drive with more space). It also makes distributing Gambit a real pain (use my path or else...). Why don't you build with a default path and then use an environment variable to specify the Gambit home? That's how everyone else does it.
I'd leave in the -:= ability in case someone doesn't want to use an environment variable and just wants to specify the home on the command line. But allowing the use of an environment variable is a real convenience.
The makefile I am using is as follows:
GSHOME = /Gambit-C/4.0b19
a.exe : a.scm gsc -:=$(GSHOME) a.scm cl -nologo -c -MTd -I$(GSHOME)\include a.c a_.c link /nologo /out:a.exe /libpath:$(GSHOME)\lib a.obj a_.obj gambc.lib user32.lib ws2_32.lib
clean: rm -zq *.c *.obj *.exe *~ *.bak
a.scm just contains: (display "hello world")
I tried the -verbose option and that gave me nothing useful. It would be unbelievably great if the -verbose option displayed the full compile and link commands it was running.
I have no idea what that error message is trying to tell me. I tried all sorts of -cc-options and -ld-option options with no luck. Without a display of what it's executing, I'm in the dark.
I'll see what I can do. Note that it is the gsc-cc-o.bat script that invokes the C compiler. This file should be in
C:/Gambit-C/4.0b19/bin/gsc-cc-o.bat
You could add a trace in that script to echo the command that invokes the C compiler.
I didn't realize that GSC didn't drive the compile/link phase.
Blake McBride