I just downloaded, untarred, compiled, installed gambc-v4_6_0.tgz
But when I tried to use it Space-invaders-src-v1.0.tgz I got errors that look like C/C++ compatibility problems.
I compiled and installed gambit using C++; specifically, the g++ compiler.
I had to modify the space invaders makefile to recognise that gambit was installed at /usr/local/gambit, and to tell it that my C compiler was g++.
## compilers GSC=$(PATH_TO_GAMBIT)/bin/gsc -:=$(PATH_TO_GAMBIT) CC=g++
## Gambit-c # PATH_TO_GAMBIT=/usr/local/Gambit-C/current PATH_TO_GAMBIT=/usr/local/Gambit-C
I then performed a make clean in the space-invaders directory to clear out the effects of mismaking with the wrong PATH_TO_GAMBIT and the wrong CC.
hendrik@lovesong:~/dv/lang/gambit/expand/space-invaders$ make clean make: Warning: File `makefile' has modification time 93 s in the future rm -f coroutine.c engine.c event-simulation-macro.c event-simulation.c font-macro.c font.c glu-header.c glu.c glut-header.c glut.c opengl-header.c opengl.c ppm-reader.c rbtree.c scm-lib-macro.c scm-lib.c sdl-interface.c sdl-user-interface.c sprite-macro.c sprite.c texture-macro.c texture.c user-interface-images.c user-interface.c *_.c *.o* space-invaders.exe *.tar.gz *.tgz *.~*~ *.zip make clean -C doc make: *** doc: No such file or directory. Stop. make: *** [clean] Error 2
Upon doing make OS=linux UI=glut The errors I got were
hendrik@lovesong:~/dv/lang/gambit/expand/space-invaders$ make OS=linux UI=glut make: Warning: File `makefile' has modification time 81 s in the future *** Global Variables ***
OS=linux UI=glut
*** Currently using following paths ***
PATH_TO_GAMBIT=/usr/local/Gambit-C PATH_TO_GL=/usr
*** Beginning compilation *** /usr/local/Gambit-C/bin/gsc -:=/usr/local/Gambit-C -c opengl.scm g++ -I/usr/local/Gambit-C/include -I/usr/include/GL -I/usr/include/GL -c opengl.c opengl.c:60019: warning: deprecated conversion from string constant to ‘char*’ /usr/local/Gambit-C/bin/gsc -:=/usr/local/Gambit-C -c glu.scm g++ -I/usr/local/Gambit-C/include -I/usr/include/GL -I/usr/include/GL -c glu.c glu.c: In function ‘int ___H__20_glu_23_641(___processor_state_struct*)’: glu.c:39781: warning: overflow in implicit constant conversion glu.c: In function ‘int ___H__20_glu_23_657(___processor_state_struct*)’: glu.c:40759: error: invalid conversion from ‘const void*’ to ‘void*’ glu.c: In function ‘int ___H__20_glu_23_659(___processor_state_struct*)’: glu.c:40883: error: invalid conversion from ‘const void*’ to ‘void*’ glu.c: At global scope: glu.c:46535: warning: deprecated conversion from string constant to ‘char*’ make: *** [glu.o] Error 1 hendrik@lovesong:~/dv/lang/gambit/expand/space-invaders$
My guess is that one crucial macro within the gambit include files fails to deal with 'const' properly. Or is there some obscure way I'm getting C code instead of C++?
-- hendrik