Preliminary patch for building apr-1.3.3 on Haiku. There's still an issue to be figured out, it gives an error near the end of configure about rm not finding libtoolT, the work around for now is to create a temp symlink for libtool to /libtool

This commit is contained in:
Scott McCreary
2009-05-08 22:47:49 +00:00
parent dc262b0866
commit 3ee540cde1

View File

@@ -0,0 +1,201 @@
diff -urN apr-1.3.3/build/apr_hints.m4 apr-1.3.3-haiku/build/apr_hints.m4
--- apr-1.3.3/build/apr_hints.m4 2009-04-27 05:57:37.000000000 +0000
+++ apr-1.3.3-haiku/build/apr_hints.m4 2009-04-28 02:01:57.000000000 +0000
@@ -35,7 +35,7 @@
dnl Generally, we force the setting of CC, and add flags
dnl to CFLAGS, CPPFLAGS, LIBS and LDFLAGS.
dnl
-AC_DEFUN(APR_PRELOAD, [
+AC_DEFUN([APR_PRELOAD], [
if test "x$apr_preload_done" != "xyes" ; then
apr_preload_done="yes"
@@ -453,6 +453,12 @@
APR_SETIFNULL(have_proc_invoked, [1])
APR_SETIFNULL(apr_cv_use_lfs64, [yes])
;;
+ *-haiku*)
+ APR_ADDTO(LIBS, [-lnetwork])
+ APR_SETIFNULL(apr_lock_method, [USE_POSIXSEM_SERIALIZE])
+ APR_SETIFNULL(apr_posixsem_is_global, [yes])
+ APR_SETIFNULL(apr_process_lock_is_global, [yes])
+ ;;
esac
fi
@@ -463,7 +469,7 @@
dnl
dnl Allows us to provide a default choice of compiler which
dnl the user can override.
-AC_DEFUN(APR_CC_HINTS, [
+AC_DEFUN([APR_CC_HINTS], [
case "$host" in
*-apple-aux3*)
APR_SETIFNULL(CC, [gcc])
diff -urN apr-1.3.3/build/apr_network.m4 apr-1.3.3-haiku/build/apr_network.m4
--- apr-1.3.3/build/apr_network.m4 2009-04-27 05:57:37.000000000 +0000
+++ apr-1.3.3-haiku/build/apr_network.m4 2009-04-27 06:00:26.000000000 +0000
@@ -21,7 +21,7 @@
dnl
dnl check for type in_addr
dnl
-AC_DEFUN(APR_TYPE_IN_ADDR,[
+AC_DEFUN([APR_TYPE_IN_ADDR],[
AC_CACHE_CHECK(for type in_addr, ac_cv_type_in_addr,[
AC_TRY_COMPILE([
#ifdef HAVE_SYS_TYPES_H
diff -urN apr-1.3.3/build/apr_threads.m4 apr-1.3.3-haiku/build/apr_threads.m4
--- apr-1.3.3/build/apr_threads.m4 2009-04-27 05:57:37.000000000 +0000
+++ apr-1.3.3-haiku/build/apr_threads.m4 2009-04-27 05:51:44.000000000 +0000
@@ -26,7 +26,7 @@
dnl pthreads is not available.
dnl Turn off warnings if we're using gcc.
dnl
-AC_DEFUN(APR_CHECK_PTHREADS_H, [
+AC_DEFUN([APR_CHECK_PTHREADS_H], [
if test "$GCC" = "yes"; then
SAVE_FL="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -w"
@@ -41,7 +41,7 @@
dnl
dnl APR_CHECK_PTHREAD_GETSPECIFIC_TWO_ARGS
dnl
-AC_DEFUN(APR_CHECK_PTHREAD_GETSPECIFIC_TWO_ARGS, [
+AC_DEFUN([APR_CHECK_PTHREAD_GETSPECIFIC_TWO_ARGS], [
AC_CACHE_CHECK(whether pthread_getspecific takes two arguments, ac_cv_pthread_getspecific_two_args,[
AC_TRY_COMPILE([
#include <pthread.h>
@@ -65,7 +65,7 @@
dnl
dnl APR_CHECK_PTHREAD_ATTR_GETDETACHSTATE_ONE_ARG
dnl
-AC_DEFUN(APR_CHECK_PTHREAD_ATTR_GETDETACHSTATE_ONE_ARG, [
+AC_DEFUN([APR_CHECK_PTHREAD_ATTR_GETDETACHSTATE_ONE_ARG], [
AC_CACHE_CHECK(whether pthread_attr_getdetachstate takes one argument, ac_cv_pthread_attr_getdetachstate_one_arg,[
AC_TRY_COMPILE([
#include <pthread.h>
@@ -91,7 +91,7 @@
dnl Try running a program which uses pthreads, executing the
dnl actions-if-success commands on success.
dnl
-AC_DEFUN(APR_PTHREADS_TRY_RUN, [
+AC_DEFUN([APR_PTHREADS_TRY_RUN], [
AC_TRY_RUN( [
#include <pthread.h>
#include <stddef.h>
@@ -182,12 +182,12 @@
dnl the checks for threading support so that they can restored if the
dnl result is not what the caller wanted.
dnl
-AC_DEFUN(APR_PTHREADS_CHECK_SAVE, [
+AC_DEFUN([APR_PTHREADS_CHECK_SAVE], [
apr_pthsv_CFLAGS="$CFLAGS"
apr_pthsv_LIBS="$LIBS"
])dnl
-AC_DEFUN(APR_PTHREADS_CHECK_RESTORE, [
+AC_DEFUN([APR_PTHREADS_CHECK_RESTORE], [
CFLAGS="$apr_pthsv_CFLAGS"
LIBS="$apr_pthsv_LIBS"
])dnl
diff -urN apr-1.3.3/configure.in apr-1.3.3-haiku/configure.in
--- apr-1.3.3/configure.in 2009-04-27 05:57:37.000000000 +0000
+++ apr-1.3.3-haiku/configure.in 2009-04-28 02:02:02.000000000 +0000
@@ -244,7 +244,7 @@
dnl otherwise.
case $host in
- *os390)
+ *os390|*haiku*)
if test "$ac_test_CFLAGS" != set; then
APR_REMOVEFROM(CFLAGS,-g)
fi
@@ -479,6 +479,12 @@
OSDIR="unix"
eolstr="\\n"
;;
+ *haiku*)
+ OSDIR="unix"
+ eolstr="\\n"
+ AC_CHECK_LIB(bsd, getpass)
+ AC_CHECK_LIB(network, socket)
+ ;;
*)
OSDIR="unix"
eolstr="\\n"
@@ -833,6 +840,10 @@
havemmapzero="0"
havemmapanon="0"
APR_BEGIN_DECISION([anonymous shared memory allocation method])
+APR_IFALLYES(header:kernel/OS.h func:create_area,
+ [havebeosshm="1"
+ APR_DECIDE(USE_SHMEM_BEOS_ANON,
+ [BeOS areas])])
APR_IFALLYES(header:sys/ipc.h header:sys/shm.h header:sys/file.h dnl
func:shmget func:shmat func:shmdt func:shmctl,
[haveshmgetanon="1"
@@ -904,6 +915,9 @@
haveos2shm="0"
havewin32shm="0"
APR_BEGIN_DECISION([namebased memory allocation method])
+APR_IFALLYES(header:kernel/OS.h func:create_area,
+ [havebeosshm="1"
+ APR_DECIDE(USE_SHMEM_BEOS, [BeOS areas])])
APR_IFALLYES(header:sys/mman.h func:mmap func:munmap,
[havemmaptmp="1"
APR_DECIDE(USE_SHMEM_MMAP_TMP,
@@ -917,9 +931,6 @@
func:shmget func:shmat func:shmdt func:shmctl,
[haveshmget="1"
APR_DECIDE(USE_SHMEM_SHMGET, [SysV IPC shmget()])])
-APR_IFALLYES(header:kernel/OS.h func:create_area,
- [havebeosshm="1"
- APR_DECIDE(USE_SHMEM_BEOS, [BeOS areas])])
APR_IFALLYES(header:os2.h,
[haveos2shm="1"
APR_DECIDE(USE_SHMEM_OS2, [OS/2 DosAllocSharedMem()])])
diff -urN apr-1.3.3/test/testpoll.c apr-1.3.3-haiku/test/testpoll.c
--- apr-1.3.3/test/testpoll.c 2009-04-27 05:57:37.000000000 +0000
+++ apr-1.3.3-haiku/test/testpoll.c 2009-04-28 02:02:28.000000000 +0000
@@ -193,6 +193,8 @@
recv_msg(s, 2, p, tc);
send_msg(s, sa, 1, tc);
+ apr_sleep(apr_time_make(0, 10000));
+
rv = apr_poll(pollarray, SMALL_NUM_SOCKETS, &srv, 2 * APR_USEC_PER_SEC);
ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
check_sockets(pollarray, s, 0, 0, tc);
@@ -207,6 +209,8 @@
send_msg(s, sa, 2, tc);
+ apr_sleep(apr_time_make(0, 10000));
+
rv = apr_poll(pollarray, SMALL_NUM_SOCKETS, &srv, 2 * APR_USEC_PER_SEC);
ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
check_sockets(pollarray, s, 0, 0, tc);
@@ -381,6 +385,7 @@
int num;
send_msg(s, sa, 0, tc);
+ apr_sleep(apr_time_make(0, 10000));
rv = apr_pollset_poll(pollset, 0, &num, &descs);
ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
ABTS_INT_EQUAL(tc, 1, num);
@@ -411,6 +416,7 @@
send_msg(s, sa, 2, tc);
send_msg(s, sa, 5, tc);
+ apr_sleep(apr_time_make(0, 10000));
rv = apr_pollset_poll(pollset, 0, &num, &descs);
ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
ABTS_INT_EQUAL(tc, 2, num);
@@ -443,6 +449,7 @@
int num;
send_msg(s, sa, LARGE_NUM_SOCKETS - 1, tc);
+ apr_sleep(apr_time_make(0, 10000));
rv = apr_pollset_poll(pollset, 0, &num, &descs);
ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
ABTS_INT_EQUAL(tc, 1, num);