⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ost_pthread.m4

📁 贡献一份commoncpp2,有兴趣的可以研究一下
💻 M4
📖 第 1 页 / 共 2 页
字号:
dnl Copyright (C) 1999-2001 Open Source Telecom Corporation.dnldnl This program is free software; you can redistribute it and/or modifydnl it under the terms of the GNU General Public License as published bydnl the Free Software Foundation; either version 2 of the License, ordnl (at your option) any later version.dnldnl This program is distributed in the hope that it will be useful,dnl but WITHOUT ANY WARRANTY; without even the implied warranty ofdnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See thednl GNU General Public License for more details.dnl dnl You should have received a copy of the GNU General Public Licensednl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.dnl dnl As a special exception to the GNU General Public License, if you dnl distribute this file as part of a program that contains a configuration dnl script generated by Autoconf, you may include it under the same dnl distribution terms that you use for the rest of that program.AC_DEFUN([OST_LIB_PTHREAD],[  AC_REQUIRE([OST_SYS_POSIX])  AC_REQUIRE([OST_CC_SYSTIME])  THREAD_FLAGS=""  THREAD_LIBS=""  ost_cv_thread_library="none"  ost_cv_rt_library="none"  ost_cv_cxx_mode=false  AC_ARG_WITH(pthread, [  --with-pthread[=lib]    using specified pthread library],	[if test "$withval" != "" ; then ost_cv_thread_library=$withval ; fi]  )  AC_ARG_WITH(linuxthreads, [  --with-linuxthreads     use linux kernel mode library],	[ost_cv_thread_library=lthread	AC_DEFINE(WITH_LINUXTHREADS, [1], [bsd system using linuxthreads])	if test "$withval" != "yes" ; then		THREAD_FLAGS="-D__USE_GNU -D__USE_UNIX98 -I$withval $THREAD_FLAGS"		CFLAGS="-D__USE_GNU -D__USE_UNIX98 -I$withval $CFLAGS"	else		THREAD_FLAGS="-D__USE_GNU -D__USE_UNIX98 -I/usr/local/include/pthread/linuxthreads $THREAD_FLAGS"		CFLAGS="-D__USE_GNU -D__USE_UNIX98 -I/usr/local/include/pthread/linuxthreads $CFLAGS"	fi	])  AC_CHECK_HEADERS(pthread.h, [	AC_DEFINE(HAVE_PTHREAD_H, [1], [posix thread header])	ost_cv_posix_threads=yes],	ost_cv_posix_threads=no)  if test $ost_cv_posix_threads = no ; then	AC_LANG_SAVE	AC_LANG_CPLUSPLUS	SAVE_CXXFLAGS="$CXXFLAGS"	CXXFLAGS="$CXXFLAGS -pthread"	AC_TRY_COMPILE([#include <pthread.h>],[],		AC_DEFINE(HAVE_PTHREAD_H, [1])		ost_cv_cxx_mode=true		ost_cv_posix_threads=yes)	CXXFLAGS="$SAVE_CXXFLAGS"	AC_LANG_RESTORE  fiAC_LANG_SAVEAC_LANG_CPLUSPLUS  ost_cv_posix_atomic=no  AC_CHECK_HEADERS(sys/atomic_op.h,[	AC_DEFINE(HAVE_ATOMIC_AIX, [1], [atomic aix operations])  ])  AC_CHECK_HEADERS([sys/atomic.h],	ost_cv_posix_sys_atomic=yes,	ost_cv_posix_sys_atomic=no)  if test $ost_cv_posix_sys_atomic = yes ; then	AC_MSG_CHECKING([for atomic_t])	AC_TRY_COMPILE([#include <sys/atomic.h>],		[		atomic_t at; at.counter = 1;		atomic_dec_and_test(&at);		atomic_sub(4, &at);		atomic_inc(&at);		atomic_add(3, &at);		],		[ost_cv_posix_atomic=yes		AC_DEFINE(HAVE_WORKING_SYS_ATOMIC_H, [1], [has usable atomic functions])],		[ost_cv_posix_atomic=no])	AC_MSG_RESULT($ost_cv_posix_atomic)  fi  dnl check for gcc's bits/atomicity and the atomic functions therein  AC_CHECK_HEADERS([bits/atomicity.h],	ost_cv_bits_atomicity=yes,	ost_cv_bits_atomicity=no)  if test $ost_cv_bits_atomicity = yes ; then      AC_MSG_CHECKING([for _Atomic_word])      AC_TRY_COMPILE([#include <bits/atomicity.h>],	    [	    _Atomic_word i = 0;	    __atomic_add(&i, 1);	    __exchange_and_add(&i, 1);	    ],	    [ost_cv_gcc_atomic=yes	     AC_DEFINE(HAVE_GCC_BITS_ATOMIC, [1], [has gcc atomic functions])],	    [ost_cv_gcc_atomic=no])      AC_MSG_RESULT($ost_cv_gcc_atomic)      AC_MSG_CHECKING([for __gnu_cxx::_Atomic_word])      AC_TRY_COMPILE([#include <bits/atomicity.h>],	    [	    using namespace __gnu_cxx;	    _Atomic_word i = 0;	    __atomic_add(&i, 1);	    __exchange_and_add(&i, 1);	    ],	    [ost_cv_gcc_cxx_atomic=yes	     AC_DEFINE(HAVE_GCC_CXX_BITS_ATOMIC, [1], 		[has __gnu_cxx atomic functions])],	    [ost_cv_gcc_cxx_atomic=no])      AC_MSG_RESULT($ost_cv_gcc_cxx_atomic)  fiAC_LANG_RESTORE  if test "$target" = NONE ; then	targetdir=""  else	targetdir="$target"  fi  AC_CHECK_HEADERS(thread.h)  if test "$prefix" = NONE ; then	thrprefix="/usr/$targetdir/include"	if test -d /usr/$targetdir/sys-include ; then		thrprefix="$prefix/$targetdir/sys-include" ; fi  else	thrprefix="$prefix/$targetdir/include"	if test -d "$prefix/$targetdir/sys-include" ; then		thrprefix="$prefix/$targetdir/sys-include" ; fi  fi  if test ! -f $thrprefix/thread.h ; then	thrprefix=/usr/include  fi  AC_SUBST(thrprefix)  if test $ost_cv_posix_threads = yes ; then    if test "$ost_cv_thread_library" = "none" ; then	ost_cv_thread_flags=""	for flags in -kthread -pthread -mthreads -pthreads -Kthread --threadsafe -mt ; do		AC_MSG_CHECKING(whether ${CC-cc} accepts $flags)		echo 'void f(){}' >conftest.c		if test -z "`${CC-cc} $flags -c conftest.c 2>&1`"; then			ost_cv_thread_flags=$flags			AC_MSG_RESULT(yes)		else			AC_MSG_RESULT(no)		fi		rm -f conftest*		if test ! -z "$ost_cv_thread_flags" ; then break ; fi	done#	if test "$ost_cv_prog_cc_pthread" = "no" ; then#  	   AC_CACHE_CHECK(whether ${CC-cc} accepts -mthreads,#		ost_cv_prog_cc_mthreads,#		[echo 'void f(){}' >conftest.c#		if test -z "`${CC-cc} -mthreads -c conftest.c 2>&1`"; then#			ost_cv_prog_cc_mthreads=yes# else#			ost_cv_prog_cc_mthreads=no#		fi#		rm -f conftest*#		])#	fi	ost_cv_thread_library=none	AC_CHECK_LIB(pthread, pthread_self,		ost_cv_thread_library=pthread,		AC_CHECK_LIB(c_r, pthread_self,			ost_cv_thread_library=c_r,			AC_CHECK_LIB(pthread, pthread_kill,				ost_cv_thread_library=pthread,				AC_CHECK_LIB(pthreads, pthread_self,					ost_cv_thread_library=pthreads,					AC_CHECK_LIB(thread, pthread_self,						ost_cv_thread_library=thread)))))	if test $ost_cv_thread_library = none ; then		AC_CHECK_LIB(gthreads, pthread_self,[			AC_CHECK_LIB(malloc, malloc)			ost_cv_thread_library=gthreads])	fi	if test $ost_cv_thread_library = none ; then		AC_CHECK_LIB(cma, pthread_self,			ost_cv_thread_library=cma)	fi	if test $ost_cv_thread_library = none ; then		AC_CHECK_LIB(c, pthread_self,			ost_cv_thread_library=c)	fi	if test $ost_cv_thread_library = none ; then		AC_MSG_ERROR(no library for posix threads found!)	fi    else#	ost_cv_prog_cc_pthread=no#	ost_cv_prog_cc_mthreads=no	ost_cv_thread_flags=""    fi	AC_CHECK_LIB(${ost_cv_thread_library}, pthread_mach_thread_np,		AC_DEFINE(HAVE_PTHREAD_MACH_THREAD_NP, [1], [has mach link])		)	AC_CHECK_LIB(${ost_cv_thread_library}, nanosleep,		AC_DEFINE(HAVE_PTHREAD_NANOSLEEP, [1], [has nanosleep]),[		AC_CHECK_LIB(posix4, nanosleep,[			AC_DEFINE(HAVE_PTHREAD_NANOSLEEP, [1])			THREAD_LIBS="$THREAD_LIBS -lposix4"			],[			AC_CHECK_LIB(rt, nanosleep,[				AC_DEFINE(HAVE_PTHREAD_NANOSLEEP, [1])				ost_cv_rt_library="-lrt"])			])		])	AC_CHECK_LIB(rt, mlockall,[			AC_DEFINE(HAVE_MLOCK, [1], [have mlock])			AC_DEFINE(HAVE_MLOCKALL, [1], [have memlockall])			ost_cv_rt_library="-lrt"],			[			AC_CHECK_FUNCS(mlock)			AC_CHECK_FUNCS(mlockall)			])	if test "$ost_cv_rt_library" != "none" ; then		THREAD_LIBS="$THREAD_LIBS $ost_cv_rt_library" ; fi	if test ! -z "$ost_cv_thread_flags" ; then		THREAD_LIBS="$THREAD_LIBS $ost_cv_thread_flags"	else		THREAD_LIBS="$THREAD_LIBS -l$ost_cv_thread_library"	fi	AC_MSG_CHECKING([if more special flags are required for pthreads])        flag=no        case "${host_cpu}-${host_os}" in                *-aix* | *-freebsd*)     flag="-D_THREAD_SAFE";;                *solaris* | alpha*-osf*) flag="-D_REENTRANT";;        esac        AC_MSG_RESULT(${flag})        if test "x$flag" != xno; then               THREAD_FLAGS="$flag"        fi	AC_SUBST(THREAD_FLAGS)	AC_SUBST(THREAD_LIBS)#	LIBS="$THREAD_LIBS $LIBS"	if test "$ost_cv_thread_library" != "lthread" ; then		AC_CHECK_HEADERS(pthread_np.h)	fi	AC_CHECK_HEADERS(semaphore.h)	AC_CHECK_HEADERS(sched.h)	AC_CHECK_HEADERS(sys/sched.h)        AC_CHECK_FUNCS(sched_getscheduler)	AC_CACHE_CHECK([for recursive mutex type support], ost_cv_mutex_recursive,	[	ost_cv_mutex_recursive="none"	if test "$ost_cv_cxx_mode" = true ; then		AC_LANG_SAVE		AC_LANG_CPLUSPLUS       		SAVE_CXXFLAGS="$CXXFLAGS"        	CXXFLAGS="$CXXFLAGS -pthread"	fi	AC_TRY_COMPILE(		[#include <pthread.h>],		[		#ifndef PTHREAD_MUTEXTYPE_RECURSIVE		#ifdef PTHREAD_MUTEX_RECURSIVE		#define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE		#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -