0
0
Fork 0
haikuports/dev-lang/gambas/patches/gambas-r7048.patch

378 lines
9.9 KiB
Diff

Index: acinclude.m4
===================================================================
--- acinclude.m4 (revision 7048)
+++ acinclude.m4 (working copy)
@@ -206,10 +206,9 @@
dnl AC_CHECK_LIB(m, main, echo)
dnl AC_CHECK_LIB(z, main, echo)
- C_LIB=-lc
+ GB_LIBC()
- AC_SUBST(C_LIB)
-
+ dnl ---- Check for C++ libraries
AC_CHECK_LIB(gcc_s, main, CXX_LIB="$CXX_LIB -lgcc_s")
AC_CHECK_LIB(stdc++, main, CXX_LIB="$CXX_LIB -lstdc++")
@@ -370,6 +369,13 @@
GBX_THREAD_INC="-pthread -D_REENTRANT"
GBX_THREAD_LDFLAGS=""
;;
+ *-*-haiku* )
+ THREAD_LIB=""
+ THREAD_INC=""
+ GBX_THREAD_LIB=""
+ GBX_THREAD_INC=""
+ GBX_THREAD_LDFLAGS=""
+ ;;
*)
THREAD_LIB="-lpthread"
THREAD_INC="-D_REENTRANT"
@@ -393,6 +399,30 @@
## ---------------------------------------------------------------------------
+## GB_LIBC
+## Detect C library
+## ---------------------------------------------------------------------------
+
+AC_DEFUN([GB_LIBC],
+[
+ case "${host}" in
+ *-*-haiku* )
+ dnl Haiku has implicit C library in libroot.
+ C_LIB=""
+ ;;
+ *)
+ C_LIB="-lc"
+ ;;
+ esac
+
+ AC_MSG_CHECKING(for C library)
+ AC_MSG_RESULT($C_LIB)
+
+ AC_SUBST(C_LIB)
+])
+
+
+## ---------------------------------------------------------------------------
## GB_MATH
## Detect mathematic libraries
## ---------------------------------------------------------------------------
@@ -403,6 +433,9 @@
*-*-freebsd* )
MATH_LIB="-lm"
;;
+ *-*-haiku* )
+ MATH_LIB=""
+ ;;
*)
MATH_LIB="-lm"
;;
@@ -521,6 +554,12 @@
AC_DEFINE(OS_HURD, 1, [Target system is Hurd])
AC_DEFINE(SYSTEM, "Hurd", [Operating system])
;;
+ *-*-haiku* )
+ SYSTEM=HAIKU
+ dnl AC_DEFINE(OS_GNU, 1, [Target system is of GNU family])
+ AC_DEFINE(OS_HAIKU, 1, [Target system is Haiku])
+ AC_DEFINE(SYSTEM, "Haiku", [Operating system])
+ ;;
* )
SYSTEM=UNKNOWN
AC_DEFINE(SYSTEM, "unknown", [Operating system])
@@ -641,6 +680,18 @@
gb_sub_dir_list_64=`echo "$gb_sub_dir_list" | sed s/"lib"/"lib64"/g`
+if test $SYSTEM == "HAIKU"; then
+ gb_arch="`getarch`"
+ gb_main_dir_list="$gb_main_dir_list `findpaths -c' ' -a "$gb_arch" B_FIND_PATH_DEVELOP_DIRECTORY`"
+ gb_arch_inc_subdir=headers
+ gb_arch_lib_subdir=lib
+ if test "$gb_arch" != "`getarch -p`"; then
+ gb_arch_inc_subdir="headers/$gb_arch"
+ gb_arch_lib_subdir="lib/$gb_arch"
+ fi
+ gb_sub_dir_list=`echo "$gb_sub_dir_list" | sed "s:include:$gb_arch_inc_subdir:g;s:lib:$gb_arch_lib_subdir:g"`
+fi
+
## if there is 'lib' inside sub-directories, then we decide to search "lib64" first.
if test "$gb_sub_dir_list_64" != "$gb_sub_dir_list"; then
Index: gb.net/src/CDnsClient.c
===================================================================
--- gb.net/src/CDnsClient.c (revision 7048)
+++ gb.net/src/CDnsClient.c (working copy)
@@ -530,7 +530,7 @@
else
{ /* Synchronous mode */
inet_aton(THIS->sHostIP,&addr);
-#ifdef __sun__
+#if defined(__sun__) || defined(__HAIKU__)
stHost=gethostbyaddr((const char *)&addr,sizeof(addr),AF_INET);
#else
stHost=gethostbyaddr(&addr,sizeof(addr),AF_INET);
Index: gb.net/src/CSerialPort.c
===================================================================
--- gb.net/src/CSerialPort.c (revision 7048)
+++ gb.net/src/CSerialPort.c (working copy)
@@ -42,6 +42,10 @@
#define TIOCINQ FIONREAD
#endif
+#ifndef TIOCM_RNG
+#define TIOCM_RNG TIOCM_RI
+#endif
+
#include "main.h"
#include "tools.h"
@@ -646,8 +650,12 @@
if (THIS->status)
{
+#ifdef TIOCINQ
if (ioctl(THIS->port, TIOCINQ, &ret))
GB.Error("Unable to read input buffer size: &1", strerror(errno));
+#else
+ GB.Error("Unable to read input buffer size: &1", strerror(ENOSYS));
+#endif
}
GB.ReturnInteger(ret);
@@ -660,8 +668,12 @@
if (THIS->status)
{
+#ifdef TIOCOUTQ
if (ioctl(THIS->port, TIOCOUTQ, &ret))
GB.Error("Unable to read output buffer size: &1", strerror(errno));
+#else
+ GB.Error("Unable to read output buffer size: &1", strerror(ENOSYS));
+#endif
}
GB.ReturnInteger(ret);
Index: gb.net/src/CSocket.c
===================================================================
--- gb.net/src/CSocket.c (revision 7048)
+++ gb.net/src/CSocket.c (working copy)
@@ -32,6 +32,7 @@
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <sys/poll.h>
+#include <sys/time.h>
#include <sys/un.h>
#include <netinet/in.h>
#include <arpa/inet.h>
Index: gb.xml/src/element.cpp
===================================================================
--- gb.xml/src/element.cpp (revision 7048)
+++ gb.xml/src/element.cpp (working copy)
@@ -19,6 +19,7 @@
***************************************************************************/
+#define _GNU_SOURCE /* for memrchr() */
#include "element.h"
#include "node.h"
Index: gb.xml/src/html/cssfilter.cpp
===================================================================
--- gb.xml/src/html/cssfilter.cpp (revision 7048)
+++ gb.xml/src/html/cssfilter.cpp (working copy)
@@ -1,3 +1,4 @@
+#define _GNU_SOURCE /* for memrchr() */
#include "cssfilter.h"
#include "htmlmain.h"
#include "htmlelement.h"
Index: gb.xml/src/utils.cpp
===================================================================
--- gb.xml/src/utils.cpp (revision 7048)
+++ gb.xml/src/utils.cpp (working copy)
@@ -19,6 +19,7 @@
***************************************************************************/
+#define _GNU_SOURCE /* for memrchr() */
#include "utils.h"
#include "gbinterface.h"
#include "../gb_common.h"
Index: main/configure.ac
===================================================================
--- main/configure.ac (revision 7048)
+++ main/configure.ac (working copy)
@@ -9,6 +9,14 @@
LT_INIT
AM_PROG_CC_C_O
+dnl ---- Check for POSIX.1-2001 calls
+
+AC_CHECK_FUNCS(getpriority setpriority waitpid statvfs)
+
+dnl ---- Haiku needs -lbsd for daemon()
+
+AC_SEARCH_LIBS(daemon, bsd)
+
dnl ---- Check for internationalization library
GB_COMPONENT(
@@ -87,7 +95,7 @@
dnl ---- We do not use libtool to load shared libraries anymore!
AC_DEFINE(DONT_USE_LTDL, 1, [Do not use libtool to load shared libraries])
-if test "$SYSTEM" != "OPENBSD" && test "$SYSTEM" != "FREEBSD"; then
+if test "$SYSTEM" != "OPENBSD" && test "$SYSTEM" != "FREEBSD" && test "$SYSTEM" != "HAIKU"; then
DL_LIB="-ldl"
else
DL_LIB=""
Index: main/gbc/gbi.c
===================================================================
--- main/gbc/gbi.c (revision 7048)
+++ main/gbc/gbi.c (working copy)
@@ -45,7 +45,7 @@
#include <dlfcn.h>
-#if defined(OS_LINUX) || defined(OS_GNU) || defined(OS_OPENBSD) || defined(OS_FREEBSD) || defined(OS_CYGWIN)
+#if defined(OS_LINUX) || defined(OS_GNU) || defined(OS_OPENBSD) || defined(OS_FREEBSD) || defined(OS_CYGWIN) || defined(OS_HAIKU)
#define lt_dlinit() (0)
#define lt_dlhandle void *
#define lt_dlopenext(_path) dlopen(_path, RTLD_LAZY)
Index: main/gbx/gbx_c_application.c
===================================================================
--- main/gbx/gbx_c_application.c (revision 7048)
+++ main/gbx/gbx_c_application.c (working copy)
@@ -238,8 +238,12 @@
if (!_daemon && VPROP(GB_BOOLEAN))
{
old_pid = getpid();
+#ifdef HAVE_DAEMON
if (daemon(FALSE, FALSE))
THROW_SYSTEM(errno, NULL);
+#else
+ THROW_SYSTEM(ENOSYS, NULL);
+#endif
// Argh! daemon() changes the current process id...
_daemon = TRUE;
init_again(old_pid);
@@ -257,12 +261,16 @@
BEGIN_PROPERTY(Application_Priority)
- int pr;
+ int pr = -1;
if (READ_PROPERTY)
{
errno = 0;
+#ifdef HAVE_GETPRIORITY
pr = getpriority(PRIO_PROCESS, 0);
+#else
+ errno = ENOSYS;
+#endif
if (pr == -1 && errno > 0)
THROW_SYSTEM(errno, NULL);
GB_ReturnInteger(pr);
@@ -276,8 +284,12 @@
else if (pr > 19)
pr = 19;
+#ifdef HAVE_SETPRIORITY
if (setpriority(PRIO_PROCESS, 0, VPROP(GB_INTEGER)) < 0)
THROW_SYSTEM(errno, NULL);
+#else
+ THROW_SYSTEM(ENOSYS, NULL);
+#endif
}
END_PROPERTY
Index: main/gbx/gbx_c_process.c
===================================================================
--- main/gbx/gbx_c_process.c (revision 7048)
+++ main/gbx/gbx_c_process.c (working copy)
@@ -834,7 +834,11 @@
{
int status;
+#ifdef HAVE_WAITPID
+ if (waitpid(process->pid, &status, WNOHANG) == process->pid)
+#else
if (wait4(process->pid, &status, WNOHANG, NULL) == process->pid)
+#endif
{
process->status = status;
_last_status = status;
Index: main/gbx/gbx_c_task.c
===================================================================
--- main/gbx/gbx_c_task.c (revision 7048)
+++ main/gbx/gbx_c_task.c (working copy)
@@ -120,7 +120,11 @@
while (_object)
{
next = THIS->list.next;
+#ifdef HAVE_WAITPID
+ if (waitpid(THIS->pid, &status, WNOHANG) == THIS->pid)
+#else
if (wait4(THIS->pid, &status, WNOHANG, NULL) == THIS->pid)
+#endif
{
THIS->status = status;
stop_task(THIS);
Index: main/lib/signal/csignal.c
===================================================================
--- main/lib/signal/csignal.c (revision 7048)
+++ main/lib/signal/csignal.c (working copy)
@@ -42,7 +42,11 @@
#define SIGPWR -1
#endif
-#ifdef OS_CYGWIN
+#ifndef SIGIO
+#define SIGIO -1
+#endif
+
+#if defined(OS_CYGWIN) || defined(OS_HAIKU)
#define SIGIOT -1
#endif
Index: main/share/gb_file_temp.h
===================================================================
--- main/share/gb_file_temp.h (revision 7048)
+++ main/share/gb_file_temp.h (working copy)
@@ -38,7 +38,9 @@
#ifdef PROJECT_EXEC
-#if defined(OS_FREEBSD) || defined(OS_OPENBSD)
+#ifdef HAVE_STATVFS
+#include <sys/statvfs.h>
+#elif defined(OS_FREEBSD) || defined(OS_OPENBSD)
#include <sys/mount.h>
#else
#include <sys/statfs.h>
@@ -1022,12 +1024,20 @@
int64_t FILE_free(const char *path)
{
+#ifdef HAVE_STATVFS
+ struct statvfs info;
+#else
struct statfs info;
+#endif
if (FILE_is_relative(path))
return 0;
+#ifdef HAVE_STATVFS
+ statvfs(path, &info);
+#else
statfs(path, &info);
+#endif
return (int64_t)(getuid() == 0 ? info.f_bfree : info.f_bavail) * info.f_bsize;
}