nigels-com / glew

The OpenGL Extension Wrangler Library
Other
2.58k stars 608 forks source link

OSMesa build error under Ubuntu 24.04 and OsMesa 24.0.5 #411

Open kwaegel opened 2 months ago

kwaegel commented 2 months ago

I'm trying to build under Ubuntu 24.04 with OsMesa (libosmesa6-dev==24.0.5-1ubuntu1), and getting some APIENTRY definition errors. The regular build without any SYSTEM= definitions works fine.

Steps:

git clone https://github.com/nigels-com/glew.git
cd glew/auto
make
cd ..
make SYSTEM=linux-osmesa

Output (after removing some unrelated warnings):

$ make SYSTEM=linux-osmesa
sed \
        -e "s|@prefix@|/usr/local|g" \
        -e "s|@libdir@|/usr/local/lib64|g" \
        -e "s|@exec_prefix@|/usr/local/bin|g" \
        -e "s|@includedir@|/usr/local/include/GL|g" \
        -e "s|@version@|2.2.0|g" \
        -e "s|@cflags@||g" \
        -e "s|@libname@|GLEW|g" \
        -e "s|@libgl@|-lOSMesa|g" \
        -e "s|@requireslib@|glu|g" \
        < glew.pc.in > glew.pc
cc -DGLEW_NO_GLU -O2 -Wall -W -Wshadow -pedantic -Iinclude -fPIC -Wcast-qual -ansi -pedantic -fno-stack-protector -DGLEW_OSMESA  -o tmp/linux-osmesa/default/shared/glewinfo.o -c src/glewinfo.c
In file included from src/glewinfo.c:41:
/usr/include/GL/osmesa.h:124:29: error: expected ';' after top level declarator
GLAPI OSMesaContext APIENTRY
                            ^
/usr/include/GL/osmesa.h:137:29: error: expected ';' after top level declarator
GLAPI OSMesaContext APIENTRY
                            ^
/usr/include/GL/osmesa.h:166:29: error: expected ';' after top level declarator
GLAPI OSMesaContext APIENTRY
                            ^
/usr/include/GL/osmesa.h:176:12: error: redeclaration of 'APIENTRY' with a different type: 'void' vs 'OSMesaContext' (aka 'struct osmesa_context *')
GLAPI void APIENTRY
           ^
/usr/include/GL/osmesa.h:166:21: note: previous declaration is here
GLAPI OSMesaContext APIENTRY
                    ^
/usr/include/GL/osmesa.h:176:20: error: expected ';' after top level declarator
GLAPI void APIENTRY
                   ^
/usr/include/GL/osmesa.h:208:17: error: redeclaration of 'APIENTRY' with a different type: 'GLboolean' (aka 'unsigned char') vs 'OSMesaContext' (aka 'struct osmesa_context *')
GLAPI GLboolean APIENTRY
                ^
/usr/include/GL/osmesa.h:166:21: note: previous declaration is here
GLAPI OSMesaContext APIENTRY
                    ^
/usr/include/GL/osmesa.h:208:25: error: expected ';' after top level declarator
GLAPI GLboolean APIENTRY
                        ^
/usr/include/GL/osmesa.h:218:29: error: expected ';' after top level declarator
GLAPI OSMesaContext APIENTRY
                            ^
/usr/include/GL/osmesa.h:236:12: error: redeclaration of 'APIENTRY' with a different type: 'void' vs 'OSMesaContext' (aka 'struct osmesa_context *')
GLAPI void APIENTRY
           ^
/usr/include/GL/osmesa.h:218:21: note: previous declaration is here
GLAPI OSMesaContext APIENTRY
                    ^
/usr/include/GL/osmesa.h:236:20: error: expected ';' after top level declarator
GLAPI void APIENTRY
                   ^
/usr/include/GL/osmesa.h:252:12: error: redeclaration of 'APIENTRY' with a different type: 'void' vs 'OSMesaContext' (aka 'struct osmesa_context *')
GLAPI void APIENTRY
           ^
/usr/include/GL/osmesa.h:218:21: note: previous declaration is here
GLAPI OSMesaContext APIENTRY
                    ^
/usr/include/GL/osmesa.h:252:20: error: expected ';' after top level declarator
GLAPI void APIENTRY
                   ^
/usr/include/GL/osmesa.h:267:17: error: redeclaration of 'APIENTRY' with a different type: 'GLboolean' (aka 'unsigned char') vs 'OSMesaContext' (aka 'struct osmesa_context *')
GLAPI GLboolean APIENTRY
                ^
/usr/include/GL/osmesa.h:218:21: note: previous declaration is here
GLAPI OSMesaContext APIENTRY
                    ^
/usr/include/GL/osmesa.h:267:25: error: expected ';' after top level declarator
GLAPI GLboolean APIENTRY
                        ^
/usr/include/GL/osmesa.h:283:17: error: redeclaration of 'APIENTRY' with a different type: 'GLboolean' (aka 'unsigned char') vs 'OSMesaContext' (aka 'struct osmesa_context *')
GLAPI GLboolean APIENTRY
                ^
/usr/include/GL/osmesa.h:218:21: note: previous declaration is here
GLAPI OSMesaContext APIENTRY
                    ^
/usr/include/GL/osmesa.h:283:25: error: expected ';' after top level declarator
GLAPI GLboolean APIENTRY
                        ^
/usr/include/GL/osmesa.h:300:18: error: redeclaration of 'APIENTRY' with a different type: 'OSMESAproc' (aka 'void (*)()') vs 'OSMesaContext' (aka 'struct osmesa_context *')
GLAPI OSMESAproc APIENTRY
                 ^
/usr/include/GL/osmesa.h:218:21: note: previous declaration is here
GLAPI OSMesaContext APIENTRY
                    ^
/usr/include/GL/osmesa.h:300:26: error: expected ';' after top level declarator
GLAPI OSMESAproc APIENTRY
                         ^
/usr/include/GL/osmesa.h:309:12: error: redeclaration of 'APIENTRY' with a different type: 'void' vs 'OSMesaContext' (aka 'struct osmesa_context *')
GLAPI void APIENTRY
           ^
/usr/include/GL/osmesa.h:218:21: note: previous declaration is here
GLAPI OSMesaContext APIENTRY
                    ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make: *** [Makefile:195: tmp/linux-osmesa/default/shared/glewinfo.o] Error 1