Stub code for platforms without functional pthreads.
This commit is contained in:
parent
fc2df394c3
commit
cdac19f131
38
configure.in
38
configure.in
|
@ -195,6 +195,17 @@ if test x$have_llseek = xyes; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
dnl determine if we should use the stubbed pthread code.
|
||||||
|
AC_ARG_ENABLE(pthreads,
|
||||||
|
[ --enable-pthreads include POSIX threads support [default=yes]],
|
||||||
|
, enable_pthreads=yes)
|
||||||
|
if test x$enable_pthreads = xyes; then
|
||||||
|
AC_CHECK_HEADER(pthread.h, have_pthread_hdr=yes)
|
||||||
|
if test x$have_pthread_hdr != xyes; then
|
||||||
|
enable_pthreads=no
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
dnl determine if we should use the stubbed CD-ROM detection code.
|
dnl determine if we should use the stubbed CD-ROM detection code.
|
||||||
AC_ARG_ENABLE(cdrom,
|
AC_ARG_ENABLE(cdrom,
|
||||||
[ --enable-cdrom include CD-ROM support [default=yes]],
|
[ --enable-cdrom include CD-ROM support [default=yes]],
|
||||||
|
@ -218,10 +229,14 @@ if test x$enable_cdrom = xyes; then
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
have_non_posix_threads=no
|
||||||
|
|
||||||
dnl AC_CHECK_HEADER(be/kernel/OS.h, this_is_beos=yes)
|
dnl AC_CHECK_HEADER(be/kernel/OS.h, this_is_beos=yes)
|
||||||
AC_MSG_CHECKING([if this is BeOS])
|
AC_MSG_CHECKING([if this is BeOS])
|
||||||
if test x$build_os = xbeos; then
|
if test x$build_os = xbeos; then
|
||||||
this_is_beos=yes
|
this_is_beos=yes
|
||||||
|
enable_pthreads=no
|
||||||
|
have_non_posix_threads=yes
|
||||||
LIBS="$LIBS -lroot -lbe"
|
LIBS="$LIBS -lroot -lbe"
|
||||||
else
|
else
|
||||||
this_is_beos=no
|
this_is_beos=no
|
||||||
|
@ -233,6 +248,8 @@ AC_MSG_CHECKING([if this is Cygwin])
|
||||||
if test x$build_os = xcygwin; then
|
if test x$build_os = xcygwin; then
|
||||||
this_is_cygwin=yes
|
this_is_cygwin=yes
|
||||||
CFLAGS="$CFLAGS -DWIN32"
|
CFLAGS="$CFLAGS -DWIN32"
|
||||||
|
enable_pthreads=no
|
||||||
|
have_non_posix_threads=yes
|
||||||
else
|
else
|
||||||
this_is_cygwin=no
|
this_is_cygwin=no
|
||||||
fi
|
fi
|
||||||
|
@ -281,7 +298,7 @@ if test x$we_have_sed = xyes; then
|
||||||
if test x$x = xatheos; then
|
if test x$x = xatheos; then
|
||||||
this_is_atheos=yes
|
this_is_atheos=yes
|
||||||
enable_cdrom=no
|
enable_cdrom=no
|
||||||
LDFLAGS="$LDFLAGS -lpthread"
|
enable_pthreads=no
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_MSG_RESULT([$this_is_atheos])
|
AC_MSG_RESULT([$this_is_atheos])
|
||||||
|
@ -292,11 +309,26 @@ if test x$enable_cdrom != xyes; then
|
||||||
AC_DEFINE([PHYSFS_NO_CDROM_SUPPORT], 1, [define if we have no CD support])
|
AC_DEFINE([PHYSFS_NO_CDROM_SUPPORT], 1, [define if we have no CD support])
|
||||||
AC_MSG_WARN([***])
|
AC_MSG_WARN([***])
|
||||||
AC_MSG_WARN([*** There is no CD-ROM support in this build!])
|
AC_MSG_WARN([*** There is no CD-ROM support in this build!])
|
||||||
AC_MSG_WARN([*** PhysicsFS will just pretend there are no discs!])
|
AC_MSG_WARN([*** PhysicsFS will just pretend there are no discs.])
|
||||||
AC_MSG_WARN([*** Is this what you really wanted?])
|
AC_MSG_WARN([*** This may be fine, depending on how PhysicsFS is used,])
|
||||||
|
AC_MSG_WARN([*** but is this what you REALLY wanted?])
|
||||||
|
AC_MSG_WARN([*** (Maybe fix configure.in, or write a platform driver?)])
|
||||||
AC_MSG_WARN([***])
|
AC_MSG_WARN([***])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test x$enable_pthreads != xyes; then
|
||||||
|
AC_DEFINE([PHYSFS_NO_PTHREADS_SUPPORT], 1, [define if we have no POSIX threads support])
|
||||||
|
if test x$have_non_posix_threads != xyes; then
|
||||||
|
AC_MSG_WARN([***])
|
||||||
|
AC_MSG_WARN([*** There is no thread support in this build!])
|
||||||
|
AC_MSG_WARN([*** PhysicsFS will NOT be reentrant!])
|
||||||
|
AC_MSG_WARN([*** This may be fine, depending on how PhysicsFS is used,])
|
||||||
|
AC_MSG_WARN([*** but is this what you REALLY wanted?])
|
||||||
|
AC_MSG_WARN([*** (Maybe fix configure.in, or write a platform driver?)])
|
||||||
|
AC_MSG_WARN([***])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Checks for header files.
|
# Checks for header files.
|
||||||
AC_HEADER_STDC
|
AC_HEADER_STDC
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <pthread.h>
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
|
@ -28,6 +27,10 @@
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <sys/mount.h>
|
#include <sys/mount.h>
|
||||||
|
|
||||||
|
#if (!defined PHYSFS_NO_PTHREADS_SUPPORT)
|
||||||
|
#include <pthread.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef PHYSFS_HAVE_SYS_UCRED_H
|
#ifdef PHYSFS_HAVE_SYS_UCRED_H
|
||||||
# ifdef PHYSFS_HAVE_MNTENT_H
|
# ifdef PHYSFS_HAVE_MNTENT_H
|
||||||
# undef PHYSFS_HAVE_MNTENT_H /* don't do both... */
|
# undef PHYSFS_HAVE_MNTENT_H /* don't do both... */
|
||||||
|
@ -256,12 +259,6 @@ char *__PHYSFS_platformCalcBaseDir(const char *argv0)
|
||||||
} /* __PHYSFS_platformCalcBaseDir */
|
} /* __PHYSFS_platformCalcBaseDir */
|
||||||
|
|
||||||
|
|
||||||
PHYSFS_uint64 __PHYSFS_platformGetThreadID(void)
|
|
||||||
{
|
|
||||||
return((PHYSFS_uint64) pthread_self());
|
|
||||||
} /* __PHYSFS_platformGetThreadID */
|
|
||||||
|
|
||||||
|
|
||||||
/* Much like my college days, try to sleep for 10 milliseconds at a time... */
|
/* Much like my college days, try to sleep for 10 milliseconds at a time... */
|
||||||
void __PHYSFS_platformTimeslice(void)
|
void __PHYSFS_platformTimeslice(void)
|
||||||
{
|
{
|
||||||
|
@ -283,6 +280,22 @@ char *__PHYSFS_platformRealPath(const char *path)
|
||||||
} /* __PHYSFS_platformRealPath */
|
} /* __PHYSFS_platformRealPath */
|
||||||
|
|
||||||
|
|
||||||
|
#if (!defined PHYSFS_NO_PTHREADS_SUPPORT)
|
||||||
|
|
||||||
|
PHYSFS_uint64 __PHYSFS_platformGetThreadID(void) { return(0x0001); }
|
||||||
|
void *__PHYSFS_platformCreateMutex(void) { return((void *) 0x0001); }
|
||||||
|
void __PHYSFS_platformDestroyMutex(void *mutex) {}
|
||||||
|
int __PHYSFS_platformGrabMutex(void *mutex) { return(1); }
|
||||||
|
void __PHYSFS_platformReleaseMutex(void *mutex) {}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
PHYSFS_uint64 __PHYSFS_platformGetThreadID(void)
|
||||||
|
{
|
||||||
|
return((PHYSFS_uint64) pthread_self());
|
||||||
|
} /* __PHYSFS_platformGetThreadID */
|
||||||
|
|
||||||
|
|
||||||
void *__PHYSFS_platformCreateMutex(void)
|
void *__PHYSFS_platformCreateMutex(void)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
|
@ -317,6 +330,9 @@ void __PHYSFS_platformReleaseMutex(void *mutex)
|
||||||
pthread_mutex_unlock((pthread_mutex_t *) mutex);
|
pthread_mutex_unlock((pthread_mutex_t *) mutex);
|
||||||
} /* __PHYSFS_platformReleaseMutex */
|
} /* __PHYSFS_platformReleaseMutex */
|
||||||
|
|
||||||
|
#endif /* !PHYSFS_NO_PTHREADS_SUPPORT */
|
||||||
|
|
||||||
|
|
||||||
#endif /* !defined __BEOS__ && !defined WIN32 */
|
#endif /* !defined __BEOS__ && !defined WIN32 */
|
||||||
|
|
||||||
/* end of unix.c ... */
|
/* end of unix.c ... */
|
||||||
|
|
Loading…
Reference in New Issue