newlib/winsup/cygwin/configure.in
Robert Collins 5c83f260b8 * configure.in: Remove PTH_ALLOW.
* cygwin.din: Remove @PTH_ALLOW@ prefixes to pthread functions.
	Add new pthread exports.
	* pthread.cc: New wrapper functions for the above new exports.
	* sched.cc (valid_sched_parameters): New function.
	(sched_setparam): Use it.
	(sched_set_thread_priority): New function. Used by pthread_sched*.
	* thread.cc (pthread_key_destructor::InsertAfter): New function.
	(pthread_key_destructor::UnlinkNext): New function.
	(pthread_key_destructor::Next): New function.
	(pthread_key_destructor_list::Insert): New function.
	(pthread_key_destructor_list::Remove): New function.
	(pthread_key_destructor_list::Pop): New function.
	(pthread_key_destructor::pthread_key_destructor): New function.
	(pthread_key_destructor_list::IterateNull): New function.
	(MTinterface::Init): Initialise new member.
	(pthread::pthread): Initialise new members.
	(pthread::create): Copy new attributes. Set the new thread priority.
	(pthread_attr::pthread_attr): Initialise new members.
	(pthread_key::pthread_key): Setup destructor function.
	(pthread_key::~pthread_key): Remove destructor function.
	(pthread_mutexattr::pthread_mutexattr): New function.
	(pthread_mutexattr::~pthread_mutexattr): New function.
	(__pthread_once): New function.
	(__pthread_cleanup): New function.
	(__pthread_cancel): New function.
	(__pthread_setcancelstate): New function.
	(__pthread_setcanceltype): New function.
	(__pthread_testcancel): New function.
	(__pthread_attr_getinheritsched): New function.
	(__pthread_attr_getschedparam): New function.
	(__pthread_attr_getschedpolicy): New function.
	(__pthread_attr_getscope): New function.
	(__pthread_attr_setinheritsched): New function.
	(__pthread_attr_setschedparam): New function.
	(__pthread_attr_setschedpolicy): New function.
	(__pthread_attr_setscope): New function.
	(__pthread_exit): Call any key destructors on thread exit.
	(__pthread_join): Use the embedded attr values.
	(__pthread_detach): Use the embedded attr values.
	(__pthread_getconcurrency): New function.
	(__pthread_getschedparam): New function.
	(__pthread_key_create): Pass the destructor on object creation.
	(__pthread_key_delete): Correct incorrect prototype.
	(__pthread_setconcurrency): New function.
	(__pthread_setschedparam): New function.
	(__pthread_cond_timedwait): Support static mutex initialisers.
	(__pthread_cond_wait): Ditto.
	(__pthread_mutex_getprioceiling): New function.
	(__pthread_mutex_lock): Support static mutex initialisers.
	(__pthread_mutex_trylock): Ditto.
	(__pthread_mutex_unlock): Ditto.
	(__pthread_mutex_destroy): Ditto.
	(__pthread_mutex_setprioceiling): New function.
	(__pthread_mutexattr_getprotocol): New function.
	(__pthread_mutexattr_getpshared): New function.
	(__pthread_mutexattr_gettype): New function.
	(__pthread_mutexattr_init): New function.
	(__pthread_mutexattr_destroy): New function.
	(__pthread_mutexattr_setprotocol): New function.
	(__pthread_mutexattr_setprioceiling): New function.
	(__pthread_mutexattr_getprioceiling): New function.
	(__pthread_mutexattr_setpshared): New function.
	(__pthread_mutexattr_settype): New function.
	Remove stubs for non MT_SAFE compilation.
	* thread.h: Remove duplicate #defines.
	Add prototypes for new functions in thread.cc.
	(pthread_key_destructor): New class.
	(pthread_key_destructor_list): New class.
	(pthread_attr): Add new members.
	(pthread): Remove members that are duplicated in the pthread_attr class.
	(pthread_mutex_attr): Add new members.
	(pthread_once): New class.
	* include/pthread.h: Add prototypes for new functions exported from cygwin1.dll.
	Remove typedefs.
	* include/sched.h: Add prototypes for new functions in sched.cc.
	* include/cygwin/types.h: Add typedefs from pthread.h
2001-04-12 04:04:53 +00:00

243 lines
5.5 KiB
Plaintext

dnl Autoconf configure script for Cygwin.
dnl Copyright 1996, 1997, 1998, 2000 Cygnus Solutions.
dnl
dnl This file is part of Cygwin.
dnl
dnl This software is a copyrighted work licensed under the terms of the
dnl Cygwin license. Please consult the file "CYGWIN_LICENSE" for
dnl details.
dnl
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.12)dnl
AC_INIT(init.cc)
AC_CONFIG_HEADER(config.h)
AC_PROG_INSTALL
dnl FIXME: We temporarily define our own version of AC_PROG_CC. This is
dnl copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
dnl are probably using a cross compiler, which will not be able to fully
dnl link an executable. This should really be fixed in autoconf
dnl itself.
AC_DEFUN(LIB_AC_PROG_CC,
[AC_BEFORE([$0], [AC_PROG_CPP])dnl
AC_CHECK_TOOL(CC, gcc, gcc)
if test -z "$CC"; then
AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
fi
AC_PROG_CC_GNU
if test $ac_cv_prog_gcc = yes; then
GCC=yes
dnl Check whether -g works, even if CFLAGS is set, in case the package
dnl plays around with CFLAGS (such as to build both debugging and
dnl normal versions of a library), tasteless as that idea is.
ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
AC_PROG_CC_G
if test "$ac_test_CFLAGS" = set; then
CFLAGS="$ac_save_CFLAGS"
elif test $ac_cv_prog_cc_g = yes; then
CFLAGS="-gstabs+ -O2"
else
CFLAGS="-O2"
fi
else
GCC=
test "${CFLAGS+set}" = set || CFLAGS="-g"
fi
])
AC_DEFUN(LIB_AC_PROG_CXX,
[AC_BEFORE([$0], [AC_PROG_CPP])dnl
AC_CHECK_TOOL(CXX, g++, g++)
if test -z "$CXX"; then
AC_CHECK_PROG(CXX, c++, c++, , , )
test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
fi
CXXFLAGS='$(CFLAGS)'
])
AC_CANONICAL_SYSTEM
LIB_AC_PROG_CC
LIB_AC_PROG_CXX
case "$with_cross_host" in
""|*cygwin*)
all_host="all_host"
install_host="install_host"
;;
*)
all_host=
install_host=
;;
esac
AC_SUBST(all_host)
AC_SUBST(install_host)
AC_CHECK_TOOL(AR, ar, ar)
dnl AC_SUBST(AR)
AC_CHECK_TOOL(AS, as, as)
dnl C_SUBST(AS)
AC_CHECK_TOOL(RANLIB, ranlib, ranlib)
dnl C_SUBST(RANLIB)
AC_CHECK_TOOL(LD, ld, ld)
dnl C_SUBST(LD)
AC_CHECK_TOOL(DLLTOOL, dlltool, dlltool)
dnl C_SUBST(DLLTOOL)
AC_CHECK_TOOL(WINDRES, windres, windres)
dnl C_SUBST(WINDRES)
AC_ALLOCA
AC_PROG_MAKE_SET
dnl check whether gcc supports __builtin_memset.
# Test for builtin mem* functions.
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_TRY_COMPILE([
#include <string.h>
void foo(char *s, int c, size_t n)
{
__builtin_memset(s, c, n);
}
], [ ],
use_builtin_memset=yes, use_builtin_memset=no)
if test $use_builtin_memset = "yes"; then
AC_DEFINE(HAVE_BUILTIN_MEMSET)
fi
AC_LANG_RESTORE
dnl set default mt safeness and then process the options.
mt_safe_val=1
MT_SAFE=yes
AC_ARG_ENABLE(threadsafe,
[ --enable-threadsafe=[runtime] Build a cygwin DLL which is thread safe],
[case "${enableval}" in
yes)
dnl default.
;;
runtime)
mt_safe_val=2
MT_SAFE=yes
;;
no)
mt_safe_val=0
MT_SAFE=no
;;
esac
])
AC_ARG_ENABLE(extra-threadsafe-checking,
[ --enable-extra-threadsafe-checking Build a cygwin DLL which is thread safe with extra consistency checking],
[case "${enableval}" in
yes)
mt_safe_val=1
MT_SAFE=yes
AC_DEFINE(_CYG_THREAD_FAILSAFE)
;;
no)
dnl Don't do anything here to avoid overriding --enable-threadsafe.
;;
esac
])
if test "$MT_SAFE" = "yes"; then
AC_DEFINE_UNQUOTED(_MT_SAFE,$mt_safe_val)
fi
dnl Makefile uses MT_SAFE, so we subst as well as defining it.
AC_SUBST(MT_SAFE)
AC_ARG_ENABLE(debugging,
[ --enable-debugging Build a cygwin DLL which has more consistency checking for debugging],
[case "${enableval}" in
yes) AC_DEFINE(DEBUGGING) ;;
no) ;;
esac
])
AC_ARG_ENABLE(vfork,
[ --enable-vfork Build a cygwin DLL which uses experimental vfork code],
[case "${enableval}" in
yes) AC_DEFINE(NEWVFORK) ;;
no) ;;
esac
])
dnl The only time we might want to transform the install names
dnl is for unix x cygwin. Otherwise we don't. For now we don't
dnl transform names.
dnl if test "x$cross_compiling" = "xno" -a ; then
dnl if test "x$program_transform_name" = "xs,x,x,"; then
dnl program_transform_name=""
dnl fi
dnl if test "x$program_transform_name" = "x"; then
dnl program_transform_name="s,^,$target_alias-,"
dnl else
dnl program_transform_name="$program_transform_name -e s,^,$target_alias-,"
dnl fi
dnl fi
dnl
dnl If newlib is part of build tree, always set EXE_LDFLAGS to point to
dnl it; this is important in cases where the installed newlib is perhaps
dnl not compatible. Check and warn for installed newlib only if it's not
dnl part of the build tree.
dnl
AC_MSG_CHECKING([if newlib is part of the build tree])
EXE_LDFLAGS=
if test -d ../newlib
then
AC_MSG_RESULT(yes)
EXE_LDFLAGS="-B../../newlib/ -B../"
else
AC_MSG_RESULT(no)
fi
AC_SUBST(EXE_LDFLAGS)
if test x"$EXE_LDFLAGS" = x
then
AC_MSG_CHECKING([if installed newlib needed])
AC_TRY_LINK(,
[/* main already defined */]
,
AC_MSG_RESULT(no)
,
AC_MSG_RESULT(yes)
AC_MSG_WARN(newlib not found - utility .exe's may not link))
fi
AC_SUBST(EXE_LDFLAGS)
case "$target_cpu" in
i386|i486|i586|i686) DLL_ENTRY="_dll_entry@12"
DEF_DLL_ENTRY="dll_entry@12"
ALLOCA="_alloca"
CONFIG_DIR="i386" ;;
powerpc*) DLL_ENTRY="dll_entry"
DEF_DLL_ENTRY="dll_entry"
ALLOCA=" __allocate_stack"
CONFIG_DIR="ppc" ;;
*) AC_MSG_ERROR(Invalid target processor \"$target_cpu\") ;;
esac
AC_SUBST(DLL_ENTRY)
AC_SUBST(DEF_DLL_ENTRY)
AC_SUBST(ALLOCA)
AC_SUBST(CONFIG_DIR)
AC_OUTPUT(Makefile cygwin.def:cygwin.din)