glue in working autoconf logic

This commit is contained in:
Love Hornquist Astrand
2009-11-21 22:58:59 -08:00
parent 7bb7bd72ab
commit 607bae3c9e
5 changed files with 30 additions and 15 deletions

View File

@@ -1,6 +1,20 @@
AC_DEFUN([rk_LIBDISPATCH],[ AC_DEFUN([rk_LIBDISPATCH],[
AM_CONDITIONAL(LIBDISPATCH, test foo = bar) AC_CHECK_HEADERS([dispatch/dispatch.h])
AC_FIND_FUNC_NO_LIBS(dispatch_async_f, dispatch,
[#ifdef HAVE_DISPATCH_DISPATCH_H
#include <dispatch/dispatch.h>
#endif],[0,0,0])
if test "$ac_cv_func_dispatch_async_f" = yes ; then
AC_DEFINE([HAVE_GCD], 1, [Define if os support gcd.])
libdispatch=yes
else
libdispatch=no
fi
AM_CONDITIONAL(have_gcd, test "$libdispatch" = yes)
]) ])

View File

@@ -29,7 +29,7 @@ noinst_PROGRAMS = tc ts
ts_LDADD = libheim-ipcs.la ts_LDADD = libheim-ipcs.la
tc_LDADD = libheim-ipcc.la tc_LDADD = libheim-ipcc.la
if LIBDISPATCH if have_gcd
heim_ipc.h heim_ipcUser.c heim_ipcServer.c heim_ipcServer.h: heim_ipc.defs heim_ipc.h heim_ipcUser.c heim_ipcServer.c heim_ipcServer.h: heim_ipc.defs
mig -header heim_ipc.h -user heim_ipcUser.c -sheader heim_ipcServer.h -server heim_ipcServer.c -I$(srcdir) $(srcdir)/heim_ipc.defs mig -header heim_ipc.h -user heim_ipcUser.c -sheader heim_ipcServer.h -server heim_ipcServer.c -I$(srcdir) $(srcdir)/heim_ipc.defs
@@ -40,7 +40,6 @@ heim_ipc_async.h heim_ipc_asyncUser.c heim_ipc_asyncServer.c heim_ipc_asyncServe
heim_ipc_reply.h heim_ipc_replyUser.c: heim_ipc_reply.defs heim_ipc_reply.h heim_ipc_replyUser.c: heim_ipc_reply.defs
mig -header heim_ipc_reply.h -user heim_ipc_replyUser.c -sheader /dev/null -server /dev/null -I$(srcdir) $(srcdir)/heim_ipc_reply.defs mig -header heim_ipc_reply.h -user heim_ipc_replyUser.c -sheader /dev/null -server /dev/null -I$(srcdir) $(srcdir)/heim_ipc_reply.defs
built_ipcc = heim_ipc.h heim_ipcUser.c built_ipcc = heim_ipc.h heim_ipcUser.c
built_ipcc += heim_ipc_asyncServer.c heim_ipc_asyncServer.h built_ipcc += heim_ipc_asyncServer.c heim_ipc_asyncServer.h
@@ -56,4 +55,8 @@ libheim_ipcs_la_LIBADD += -lbsm
CLEANFILES = $(built_ipcc) $(built_ipcs) CLEANFILES = $(built_ipcc) $(built_ipcs)
$(srcdir)/client.c: $(built_ipcc)
$(srcdir)/server.c: $(built_ipcs)
endif endif

View File

@@ -35,7 +35,7 @@
#include "hi_locl.h" #include "hi_locl.h"
#if defined(__APPLE__) && defined(HAVE_LIBDISPATCH) #if defined(__APPLE__) && defined(HAVE_GCD)
#include "heim_ipc.h" #include "heim_ipc.h"
#include "heim_ipc_asyncServer.h" #include "heim_ipc_asyncServer.h"
@@ -458,7 +458,7 @@ struct hipc_ops {
}; };
struct hipc_ops ipcs[] = { struct hipc_ops ipcs[] = {
#if defined(__APPLE__) && defined(HAVE_LIBDISPATCH) #if defined(__APPLE__) && defined(HAVE_GCD)
{ "MACH", mach_init, mach_release, mach_ipc, mach_async }, { "MACH", mach_init, mach_release, mach_ipc, mach_async },
#endif #endif
#ifdef HAVE_DOOR #ifdef HAVE_DOOR

View File

@@ -35,8 +35,6 @@
#include "config.h" #include "config.h"
#define HAVE_LIBDISPATCH 1
#include <sys/types.h> #include <sys/types.h>
#include <sys/un.h> #include <sys/un.h>
@@ -50,7 +48,7 @@
#include <heim-ipc.h> #include <heim-ipc.h>
#if defined(__APPLE__) && defined(HAVE_LIBDISPATCH) #if defined(__APPLE__) && defined(HAVE_GCD)
#include <mach/mach.h> #include <mach/mach.h>
#include <servers/bootstrap.h> #include <servers/bootstrap.h>
#include <dispatch/dispatch.h> #include <dispatch/dispatch.h>

View File

@@ -42,7 +42,7 @@ struct heim_sipc {
void *mech; void *mech;
}; };
#if defined(__APPLE__) && defined(HAVE_LIBDISPATCH) #if defined(__APPLE__) && defined(HAVE_GCD)
#include "heim_ipcServer.h" #include "heim_ipcServer.h"
#include "heim_ipc_reply.h" #include "heim_ipc_reply.h"
@@ -386,7 +386,7 @@ mach_checkin_or_register(const char *service)
} }
#endif /* __APPLE__ && HAVE_LIBDISPATCH */ #endif /* __APPLE__ && HAVE_GCD */
int int
@@ -394,7 +394,7 @@ heim_sipc_launchd_mach_init(const char *service,
heim_ipc_callback callback, heim_ipc_callback callback,
void *user, heim_sipc *ctx) void *user, heim_sipc *ctx)
{ {
#if defined(__APPLE__) && defined(HAVE_LIBDISPATCH) #if defined(__APPLE__) && defined(HAVE_GCD)
mach_port_t sport = MACH_PORT_NULL; mach_port_t sport = MACH_PORT_NULL;
heim_sipc c = NULL; heim_sipc c = NULL;
int ret; int ret;
@@ -429,10 +429,10 @@ heim_sipc_launchd_mach_init(const char *service,
mach_port_mod_refs(mach_task_self(), sport, mach_port_mod_refs(mach_task_self(), sport,
MACH_PORT_RIGHT_RECEIVE, -1); MACH_PORT_RIGHT_RECEIVE, -1);
return ret; return ret;
#else /* !(__APPLE__ && HAVE_LIBDISPATCH) */ #else /* !(__APPLE__ && HAVE_GCD) */
*ctx = NULL; *ctx = NULL;
return EINVAL; return EINVAL;
#endif /* __APPLE__ && HAVE_LIBDISPATCH */ #endif /* __APPLE__ && HAVE_GCD */
} }
/** /**
@@ -447,7 +447,7 @@ heim_sipc_launchd_mach_init(const char *service,
void void
heim_sipc_timeout(time_t t) heim_sipc_timeout(time_t t)
{ {
#if defined(__APPLE__) && defined(HAVE_LIBDISPATCH) #if defined(__APPLE__) && defined(HAVE_GCD)
static dispatch_once_t timeoutonce; static dispatch_once_t timeoutonce;
init_globals(); init_globals();
dispatch_sync(timerq, ^{ dispatch_sync(timerq, ^{
@@ -469,7 +469,7 @@ heim_sipc_timeout(time_t t)
void void
heim_sipc_set_timeout_handler(void (*func)(void)) heim_sipc_set_timeout_handler(void (*func)(void))
{ {
#if defined(__APPLE__) && defined(HAVE_LIBDISPATCH) #if defined(__APPLE__) && defined(HAVE_GCD)
init_globals(); init_globals();
dispatch_sync(timerq, ^{ timer_ev = func; }); dispatch_sync(timerq, ^{ timer_ev = func; });
#else #else