newlib/winsup/cygwin/configure.in
Christopher Faylor 9a4d574b8d Eliminate use of sigframe and sigthread throughout.
* Makefile.in (DLL_OFILES): Add sigfe.o.  Remove reliance on cygwin.def from
cygwin0.dll dependency since dependence on sigfe.o implies that.  Generate def
file on the fly using 'gendef'.
* configure.in: Don't auto-generate cygwin.def.
* configure: Regenerate.
* cygwin.din: Add SIGFE stuff where appropriate.
* dcrt0.cc (dll_crt0_1): Initialize cygwin tls early in process startup.  Set
_main_tls to address of the main thread's cygwin tls.
* debug.h: Remove now unneeded WFSO and WFMO declarations.
* exceptions.cc (_last_thread): Define.
(set_thread_state_for_signals): New function.
(reset_thread_exception_for_signals): Ditto.
(init_thread_for_signals): Ditto.
(delete_thread_for_signals): Ditto.
(capture_thread_for_signals): Ditto.
(handle_exceptions): Set return address explicitly for exceptions prior to
calling sig_send.
(interrupt_on_return): Eliminate.
(setup_handler): Add preliminary implementation for dealing with
thread-specific signals by querying _main_tls.
(signal_exit): Use cygthread::main_thread_id instead of mainthread.id.
(call_signal_handler_now): For now, just handle the main thread.
* fork.cc (vfork): Save and restore main _my_tls.
* gendef: New file.  Generates def file and sigfe.s file.
* gentls_offsets: New file.  Generates offsets for perl to use in sigfe.s.
* how-signals-work.txt: Mention that info is obsolete.
* init.cc (dll_entry): Initialize cygwin tls storage here.
* miscfuncs.cc (low_priority_sleep): Make a C function for easier calling from
asm.
* perthread.h (vfork_save::tls): New element.
* signal.cc (nanosleep): Replace previous use of
sigframe.call_signal_handler_now with straight call to call_signal_handler_now.
(abort): Ditto.
* syscalls.cc (readv): Ditto.
* termios.cc (tcsetattr): Ditto.
* wait.cc (wait4): Ditto.
* sigproc.cc (sig_dispatch_pending): Ditto.
(sig_send): Ditto.
* sigproc.h: Declare call_signal_handler_now.
* thread.cc (pthread::thread_init_wrapper): Initialize cygwin tls.  Remove
obsolete and unworking signal stuff.
* thread.h (verifyable_object::sigs): Eliminate.
(verifyable_object::sigmask): Eliminate.
(verifyable_object::sigtodo): Eliminate.
(verifyable_object::exit): Make attribute noreturn.
(verifyable_object::thread_init_wrapper): Ditto.
(pthread_null::exit): Ditto.
* winbase.h (__stackbase): Always define.
* winsup.h (low_priority_sleep): Declare as a "C" function.
* include/cygwin/version.h: Bump API version to reflect sigwait export.
* include/sys/queue.h: Protect SLIST_ENTRY from previous declaration.
* signal.cc (sigwait): Implement.
* select.cc (fhandler_base::ready_for_read): Add debugging output.
* devices.h: Define more device pointers via their storage.
* devices.in: Don't parse things like /dev/inet/tcp, as they really have no
meaning.
* devices.cc: Regenerate.
* gendevices: Set proper protection for output file.
* cygtls.h: New file.
* gendef: New file.
* gentls_offsets: New file.
* tlsoffsets.h: New file.  Autogenerated.
* config/i386/longjmp.c: Remove.  File subsumed by gendef output.
* config/i386/makefrag: Remove obsolete file.
* fhandler.cc: Remove spurious access_worker declaration.
* spawn.cc (spawnve): Make debugging output more accurate.
* cygwin-gperf: Remove.
* devices.cc: Remove.
2003-11-28 20:55:59 +00:00

201 lines
4.8 KiB
Plaintext

dnl Autoconf configure script for Cygwin.
dnl Copyright 1996, 1997, 1998, 2000, 2001, 2002, 2003 Red Hat, Inc.
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)
INSTALL="/bin/sh "`cd $srcdir/../..; echo $(pwd)/install-sh -c`
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"
LIBSERVER='$(bupdir)/cygserver/libcygserver.a'
;;
*)
all_host=
install_host=
LIBSERVER=
;;
esac
test -n "$LIBSERVER" && AC_DEFINE(USE_SERVER)
AC_SUBST(all_host)
AC_SUBST(install_host)
AC_CHECK_TOOL(AR, ar, ar)
AC_CHECK_TOOL(AS, as, as)
AC_CHECK_TOOL(RANLIB, ranlib, ranlib)
AC_CHECK_TOOL(LD, ld, ld)
AC_CHECK_TOOL(NM, nm, nm)
AC_CHECK_TOOL(DLLTOOL, dlltool, dlltool)
AC_CHECK_TOOL(WINDRES, windres, 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
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
])
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(server,
[ --enable-server Build a cygwin DLL which can communicate with cygserver],
[case "${enableval}" in
yes) ;;
no) LIBSERVER=;;
esac
])
MALLOC_OFILES=malloc.o
AC_ARG_ENABLE(malloc-debugging,
[ --enable-malloc-debugging Build a cygwin DLL with heap sanity checking (this is very slow, use only if you have heap corruption problems)],
[case "${enableval}" in
yes) AC_DEFINE(MALLOC_DEBUG)
MALLOC_OFILES=dlmalloc.o
;;
no) ;;
esac
])
AC_ARG_ENABLE(vfork,
[ --enable-vfork Build a cygwin DLL which uses experimental vfork code],
vfork="${enableval}"
])
case "$vfork" in
no) ;;
yes|*) AC_DEFINE_UNQUOTED(NEWVFORK) ;;
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
case "$target_cpu" in
i?86) DLL_ENTRY="_dll_entry@12"
DEF_DLL_ENTRY="dll_entry@12"
ALLOCA="_alloca"
CONFIG_DIR="i386" ;;
*) AC_MSG_ERROR(Invalid target processor \"$target_cpu\") ;;
esac
AC_SUBST(MALLOC_OFILES)
AC_SUBST(LIBSERVER)
AC_SUBST(DLL_ENTRY)
AC_SUBST(DEF_DLL_ENTRY)
AC_SUBST(ALLOCA)
AC_SUBST(CONFIG_DIR)
AC_OUTPUT(Makefile)