The OpenGL library for Chez Scheme (currently only setup for Linux) loads the GLUT library as follows:
(define no-op (load-shared-object "libglut.so.3"))
Here's a link to that code.
Of course, we'd like the library to load libglut.so.3
on Linux but GLUT.framework/GLUT
on macOS.
Here's an example of how Ypsilon Scheme loads libraries based on the platform:
(define libGLUT
(cond
(on-darwin (load-shared-object "GLUT.framework/GLUT"))
(on-windows (load-shared-object "glut32.dll"))
(on-linux (load-shared-object "libglut.so.3"))
(on-freebsd (load-shared-object "libglut.so"))
(on-openbsd (begin
(load-shared-object "libXmu.so.10.0")
(load-shared-object "libGLU.so.7.0")
(load-shared-object "libglut.so.3.7")))
(else
(assertion-violation
#f
"can not locate GLUT library, unknown operating system"))))
What's a good way to check the platform on Chez Scheme so that we can do something similar in our bindings for foreign libraries?