Quellcode durchsuchen

FreeBSD patches; appears to be fully functional now.

Ryan C. Gordon vor 23 Jahren
Ursprung
Commit
c02838ad5e
2 geänderte Dateien mit 30 neuen und 8 gelöschten Zeilen
  1. 18 2
      configure.in
  2. 12 6
      platform/unix.c

+ 18 - 2
configure.in

@@ -226,6 +226,17 @@ if test x$we_have_sed = xyes; then
   AC_MSG_RESULT([$this_is_macosx])
 fi
 
+this_is_freebsd=no
+if test x$we_have_sed = xyes; then
+  AC_MSG_CHECKING([if this is FreeBSD])
+  x=`echo $build_os |tr A-Z a-z |sed "s/.*freebsd.*/freebsd/"`
+  if test x$x = xfreebsd; then
+    this_is_freebsd=yes
+  fi
+
+  AC_MSG_RESULT([$this_is_freebsd])
+fi
+
 # Checks for header files.
 AC_HEADER_STDC
 AC_CHECK_HEADERS([stdlib.h string.h])
@@ -242,6 +253,13 @@ dnl AC_TYPE_SIZE_T
 AC_FUNC_MEMCMP
 AC_CHECK_FUNCS([memset strrchr])
 
+CFLAGS="$CFLAGS -D_REENTRANT -D_THREAD_SAFE"
+LDFLAGS="$LDFLAGS -no-undefined"
+
+if test x$this_is_freebsd = x$yes; then
+  LDFLAGS="$LDFLAGS -pthread"
+fi
+
 dnl Add Makefile conditionals
 AM_CONDITIONAL(BUILD_ZLIB, test x$enable_internal_zlib = xyes)
 AM_CONDITIONAL(BUILD_TEST_PHYSFS, test x$enable_testprog = xyes)
@@ -249,8 +267,6 @@ AM_CONDITIONAL(BUILD_MACOSX, test x$this_is_macosx = xyes)
 AM_CONDITIONAL(BUILD_BEOS, test x$this_is_beos = xyes)
 AM_CONDITIONAL(BUILD_CYGWIN, test x$this_is_cygwin = xyes)
 
-LDFLAGS="$LDFLAGS -no-undefined"
-
 AC_OUTPUT([
 Makefile
 archivers/Makefile

+ 12 - 6
platform/unix.c

@@ -13,9 +13,15 @@
 /* BeOS uses beos.cpp and posix.c ... Cygwin and such use win32.c ... */
 #if ((!defined __BEOS__) && (!defined WIN32))
 
+#ifdef __FreeBSD__
+#  if (!defined __BSD__)
+#    define __BSD__
+#  endif
+#endif
+
 #if ((defined __APPLE__) && (defined __MACH__))
-#  if (!defined __DARWIN__)
-#    define __DARWIN__
+#  if (!defined __BSD__)
+#    define __BSD__
 #  endif
 #endif
 
@@ -33,10 +39,10 @@
 #include <time.h>
 #include <errno.h>
 
-#if (!defined __DARWIN__)
-#include <mntent.h>
-#else
+#if (defined __BSD__)
 #include <sys/ucred.h>
+#else
+#include <mntent.h>
 #endif
 
 #include <sys/mount.h>
@@ -62,7 +68,7 @@ int __PHYSFS_platformDeinit(void)
 
 
 
-#if (defined __DARWIN__)
+#if (defined __BSD__)
 
 char **__PHYSFS_platformDetectAvailableCDs(void)
 {