Haskell Platform can't use OpenGL on OpenBSD.

Thanos Tsouanas thanos at sians.org
Tue Mar 16 19:29:18 EDT 2010


I have successfully compiled ghc-6.10.4 on OpenBSD on i386.
I have downloaded the Haskell Platform tarball, but ./configure

[ ... ]
checking GL/gl.h usability... yes
checking GL/gl.h presence... yes
checking for GL/gl.h... yes
checking for library containing glEnd... no
configure: error: The OpenGL C library is required

Looking into GL/gl.h, I see that the function glEnd is there:

GLAPI void GLAPIENTRY glEnd( void );

My system's GL/gl.h seems to be v7.4:
 * Mesa 3-D graphics library
 * Version:  7.4

My config.log states the following, regarding OpenGL:

[ ...lots of passed tests... ]
configure:4247: checking GL/gl.h usability
configure:4264: gcc -c -g -O2 -I/usr/X11R6/include
-I/usr/local/include conftest.c >&5
configure:4271: $? = 0
configure:4285: result: yes
configure:4289: checking GL/gl.h presence
configure:4304: gcc -E -I/usr/X11R6/include -I/usr/local/include conftest.c
configure:4311: $? = 0
configure:4325: result: yes
configure:4353: checking for GL/gl.h
configure:4360: result: yes
configure:4373: checking for library containing glEnd
configure:4414: gcc -o conftest -g -O2 -I/usr/X11R6/include
-I/usr/local/include conftest.c -lz  > &5
/tmp//ccanY01U.o(.text+0x12): In function `main':
undefined ref
erence to `glEnd'
collect2: ld returned 1 exit status
configure:4421: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| #define PACKAGE_NAME "haskell-platform"
| #define PACKAGE_TARNAME "haskell-platform"
| #define PACKAGE_VERSION "2009.2.0.2"
| #define PACKAGE_STRING "haskell-platform 2009.2.0.2"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_LIBZ 1
| /* end confdefs.h.  */
| /* Override any GCC internal prototype to avoid an error.
|    Use char because int might match the return type of a GCC
|    builtin and then its argument prototype would still apply.  */
| #ifdef __cplusplus
| extern "C"
| #endif
| char glEnd ();
| int
| main ()
| {
| return glEnd ();
|   ;
|   return 0;
| }

Now, I may not be a C programmer, but is this even supposed
to work?  Testing this program is weird:

conftest.c:5: error: conflicting types for `glEnd'
/usr/X11R6/include/GL/gl.h:957: error: previous declaration of `glEnd'

Which was expected, since glEnd is defined to return void in GL/gl.h,
so I tried to delete that function declaration from this .c file, and I got:

conftest.c: In function `main':
conftest.c:8: error: void value not ignored as it ought to be

Ok, this was expected, so I tried to delete the "return" and I got
this final error:

/tmp//ccq1Rmj0.o(.text+0x19): In function `main':
: undefined reference to `glEnd'
collect2: ld returned 1 exit status

Please let me know if you have any ideas on how to procede with
the installation of Haskell Platform.

Thanks in advance.

Thanos Tsouanas

More information about the Glasgow-haskell-users mailing list