Hi, All!
I got this error while compiling SDL 1.1.3 & 1.1.4 under Linux
with glibc 2.1.0:
=== Cut ===
In file included from SDL_syssem.c:58:
/usr/include/semaphore.h:28: parse error before _pthread_descr' /usr/include/semaphore.h:28: warning: no semicolon at end of struct or union /usr/include/semaphore.h:29: warning: data definition has no type or storage class /usr/include/semaphore.h:33: parse error before
'
/usr/include/semaphore.h:34: parse error before *' /usr/include/semaphore.h:35: parse error before
‘
/usr/include/semaphore.h:36: parse error before *' /usr/include/semaphore.h:37: parse error before
*’
/usr/include/semaphore.h:38: parse error before *' SDL_syssem.c:63: parse error before
sem_t’
SDL_syssem.c:63: warning: no semicolon at end of struct or union
SDL_syssem.c: In function SDL_CreateSemaphore': SDL_syssem.c:69: sizeof applied to an incomplete type SDL_syssem.c:71: dereferencing pointer to incomplete type SDL_syssem.c: In function
SDL_DestroySemaphore’:
SDL_syssem.c:85: dereferencing pointer to incomplete type
SDL_syssem.c: In function SDL_SemTryWait': SDL_syssem.c:99: dereferencing pointer to incomplete type SDL_syssem.c: In function
SDL_SemWait’:
SDL_syssem.c:114: dereferencing pointer to incomplete type
SDL_syssem.c: In function SDL_SemValue': SDL_syssem.c:155: dereferencing pointer to incomplete type SDL_syssem.c: In function
SDL_SemPost’:
SDL_syssem.c:172: dereferencing pointer to incomplete type
make[2]: *** [SDL_syssem.lo] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all-recursive] Error 1
=== Cut ===
Error is caused by this definition in semaphore.h:
typedef struct {
struct { long status; int spinlock; } sem_lock;
int sem_value;
_pthread_descr sem_waiting;
} sem_t;
It is possibly glibc 2.1.0 error, but semaphore.h in fact does not include
definition for _pthread_descr.
I’ve fixed this by adding #include <pthread.h> into
src/thread/linux/SDL_syssem.c:
— SDL_syssem.c.old Sat Aug 12 19:04:54 2000
+++ SDL_syssem.c Sat Aug 12 19:05:13 2000
@@ -52,6 +52,7 @@
#include <stdio.h>
#include <stdlib.h>
+#include <pthread.h>
#include <semaphore.h>
/* Wrapper around POSIX 1003.1b semaphores */–
SY: Dmitry Melamud - Odessa Hackers Net -