From: caro Date: Sun, 28 Feb 2010 17:28:05 +0000 (+0000) Subject: abort when pthread is requested but not found X-Git-Tag: build/2012-07-04.173327~2143 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e78b05cf4c319a3e33d057e63b910de162de68b7;p=profile%2Fivi%2Fecore.git abort when pthread is requested but not found patch by Albin Tonnerre git-svn-id: http://svn.enlightenment.org/svn/e/trunk/ecore@46656 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- diff --git a/m4/efl_pthread.m4 b/m4/efl_pthread.m4 index 7bd341c..e50964f 100644 --- a/m4/efl_pthread.m4 +++ b/m4/efl_pthread.m4 @@ -1,11 +1,13 @@ -dnl Copyright (C) 2008 Vincent Torri +dnl Copyright (C) 2010 Vincent Torri dnl That code is public domain and can be freely used or copied. -dnl Macro that check if several ASM instruction sets are available or not. +dnl Macro that check if several pthread library is available or not. -dnl Usage: EFL_CHECK_EFL_CHECK_PTHREAD([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) -dnl Call AC_SUBST(EFL_PTHREAD_FLAGS) +dnl Usage: EFL_CHECK_PTHREAD(want_pthread_spin[, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) +dnl Call AC_SUBST(EFL_PTHREAD_CFLAGS) +dnl Call AC_SUBST(EFL_PTHREAD_LIBS) dnl Define EFL_HAVE_PTHREAD +dnl Define EFL_HAVE_PTHREAD_SPINLOCK AC_DEFUN([EFL_CHECK_PTHREAD], [ @@ -13,7 +15,7 @@ AC_DEFUN([EFL_CHECK_PTHREAD], dnl configure option AC_ARG_ENABLE([pthread], - [AC_HELP_STRING([--disable-pthread], [enable POSIX threads code @<:@default=yes@:>@])], + [AC_HELP_STRING([--disable-pthread], [enable POSIX threads code @<:@default=auto@:>@])], [ if test "x${enableval}" = "xyes" ; then _efl_enable_pthread="yes" @@ -21,7 +23,7 @@ AC_ARG_ENABLE([pthread], _efl_enable_pthread="no" fi ], - [_efl_enable_pthread="yes"]) + [_efl_enable_pthread="auto"]) AC_MSG_CHECKING([whether to build POSIX threads code]) AC_MSG_RESULT([${_efl_enable_pthread}]) @@ -30,20 +32,32 @@ dnl check if the compiler supports pthreads _efl_have_pthread="no" -if test "x${_efl_enable_pthread}" = "xyes" ; then - AC_CHECK_HEADER(pthread.h, +if test "x${_efl_enable_pthread}" = "xyes" || test "x${_efl_enable_pthread}" = "xauto" ; then + + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ +#include + ]], + [[ +pthread_t id; +id = pthread_self(); + ]])], [_efl_have_pthread="yes"], [_efl_have_pthread="no"]) + fi AC_MSG_CHECKING([whether system support POSIX threads]) -AC_MSG_RESULT([${_efl_enable_pthread}]) +AC_MSG_RESULT([${_efl_have_pthread}]) +if test "$x{_efl_enable_pthread}" = "xyes" && test "x${_efl_have_pthread}" = "xno"; then + AC_MSG_ERROR([pthread support requested but not found.]) +fi if test "x${_efl_have_pthread}" = "xyes" ; then case "$host_os" in mingw*) - EFL_PTHREAD_CFLAGS="-mthreads" - EFL_PTHREAD_LIBS="-mthreads -lpthreadGC2" + EFL_PTHREAD_CFLAGS="" + EFL_PTHREAD_LIBS="-lpthreadGC2" ;; solaris*) EFL_PTHREAD_CFLAGS="-mt" @@ -63,9 +77,37 @@ if test "x${_efl_have_pthread}" = "xyes" ; then AC_DEFINE(EFL_HAVE_PTHREAD, 1, [Define to mention that POSIX threads are supported]) fi -if test "x${_efl_have_pthread}" = "xyes" ; then - ifelse([$1], , :, [$1]) -else - ifelse([$2], , :, [$2]) +dnl check if the compiler supports pthreads spinlock + +_efl_have_pthread_spinlock="no" + +if test "x${_efl_have_pthread}" = "xyes" && test "x$1" = "xyes" ; then + + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ +#include + ]], + [[ +pthread_spinlock_t lock; +int res; +res = pthread_spin_init(&lock, PTHREAD_PROCESS_PRIVATE); + ]])], + [_efl_have_pthread_spinlock="yes"], + [_efl_have_pthread_spinlock="no"]) + +fi + +AC_MSG_CHECKING([whether to build POSIX threads spinlock code]) +AC_MSG_RESULT([${_efl_have_pthread_spinlock}]) +if test "$x{_efl_enable_pthread}" = "xyes" && test "x${_efl_have_pthread_spinlock}" = "xno"; then + AC_MSG_ERROR([pthread support requested but spinlocks are not supported]) fi + +if test "x${_efl_have_pthread_spinlock}" = "xyes" ; then + AC_DEFINE(EFL_HAVE_PTHREAD_SPINLOCK, 1, [Define to mention that POSIX threads spinlocks are supported]) +fi + +AS_IF([test "x$_efl_have_pthread" = "xyes"], [$2], [$3]) +AS_IF([test "x$_efl_have_pthread_spinlock" = "xyes"], [$4], [$5]) + ])