From 607bae3c9e0dac7769246a096dcf59c2eda5af55 Mon Sep 17 00:00:00 2001 From: Love Hornquist Astrand Date: Sat, 21 Nov 2009 22:58:59 -0800 Subject: [PATCH] glue in working autoconf logic --- cf/dispatch.m4 | 16 +++++++++++++++- lib/ipc/Makefile.am | 7 +++++-- lib/ipc/client.c | 4 ++-- lib/ipc/hi_locl.h | 4 +--- lib/ipc/server.c | 14 +++++++------- 5 files changed, 30 insertions(+), 15 deletions(-) diff --git a/cf/dispatch.m4 b/cf/dispatch.m4 index 12c4861d0..68b39fd48 100644 --- a/cf/dispatch.m4 +++ b/cf/dispatch.m4 @@ -1,6 +1,20 @@ 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 +#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) ]) \ No newline at end of file diff --git a/lib/ipc/Makefile.am b/lib/ipc/Makefile.am index 78f1a3432..afc5cffd7 100644 --- a/lib/ipc/Makefile.am +++ b/lib/ipc/Makefile.am @@ -29,7 +29,7 @@ noinst_PROGRAMS = tc ts ts_LDADD = libheim-ipcs.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 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 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_asyncServer.c heim_ipc_asyncServer.h @@ -56,4 +55,8 @@ libheim_ipcs_la_LIBADD += -lbsm CLEANFILES = $(built_ipcc) $(built_ipcs) +$(srcdir)/client.c: $(built_ipcc) +$(srcdir)/server.c: $(built_ipcs) + + endif \ No newline at end of file diff --git a/lib/ipc/client.c b/lib/ipc/client.c index 62939c883..08cc572ec 100644 --- a/lib/ipc/client.c +++ b/lib/ipc/client.c @@ -35,7 +35,7 @@ #include "hi_locl.h" -#if defined(__APPLE__) && defined(HAVE_LIBDISPATCH) +#if defined(__APPLE__) && defined(HAVE_GCD) #include "heim_ipc.h" #include "heim_ipc_asyncServer.h" @@ -458,7 +458,7 @@ struct hipc_ops { }; 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 }, #endif #ifdef HAVE_DOOR diff --git a/lib/ipc/hi_locl.h b/lib/ipc/hi_locl.h index 8ea31c862..7a261ffcb 100644 --- a/lib/ipc/hi_locl.h +++ b/lib/ipc/hi_locl.h @@ -35,8 +35,6 @@ #include "config.h" -#define HAVE_LIBDISPATCH 1 - #include #include @@ -50,7 +48,7 @@ #include -#if defined(__APPLE__) && defined(HAVE_LIBDISPATCH) +#if defined(__APPLE__) && defined(HAVE_GCD) #include #include #include diff --git a/lib/ipc/server.c b/lib/ipc/server.c index b9cb80f0d..c8481b7c0 100644 --- a/lib/ipc/server.c +++ b/lib/ipc/server.c @@ -42,7 +42,7 @@ struct heim_sipc { void *mech; }; -#if defined(__APPLE__) && defined(HAVE_LIBDISPATCH) +#if defined(__APPLE__) && defined(HAVE_GCD) #include "heim_ipcServer.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 @@ -394,7 +394,7 @@ heim_sipc_launchd_mach_init(const char *service, heim_ipc_callback callback, void *user, heim_sipc *ctx) { -#if defined(__APPLE__) && defined(HAVE_LIBDISPATCH) +#if defined(__APPLE__) && defined(HAVE_GCD) mach_port_t sport = MACH_PORT_NULL; heim_sipc c = NULL; int ret; @@ -429,10 +429,10 @@ heim_sipc_launchd_mach_init(const char *service, mach_port_mod_refs(mach_task_self(), sport, MACH_PORT_RIGHT_RECEIVE, -1); return ret; -#else /* !(__APPLE__ && HAVE_LIBDISPATCH) */ +#else /* !(__APPLE__ && HAVE_GCD) */ *ctx = NULL; return EINVAL; -#endif /* __APPLE__ && HAVE_LIBDISPATCH */ +#endif /* __APPLE__ && HAVE_GCD */ } /** @@ -447,7 +447,7 @@ heim_sipc_launchd_mach_init(const char *service, void heim_sipc_timeout(time_t t) { -#if defined(__APPLE__) && defined(HAVE_LIBDISPATCH) +#if defined(__APPLE__) && defined(HAVE_GCD) static dispatch_once_t timeoutonce; init_globals(); dispatch_sync(timerq, ^{ @@ -469,7 +469,7 @@ heim_sipc_timeout(time_t t) void heim_sipc_set_timeout_handler(void (*func)(void)) { -#if defined(__APPLE__) && defined(HAVE_LIBDISPATCH) +#if defined(__APPLE__) && defined(HAVE_GCD) init_globals(); dispatch_sync(timerq, ^{ timer_ev = func; }); #else