29d52c8a27
calculated mask in debugging output. * sigproc.h (set_signal_mask): Reflect above change in declaration. * path.cc (mount_item::build_win32): Take path apart before feeding it to fnmunge. Throughout, change use of _reent_winsup()-> to _my_tls.locals. instead. Throughout, remove obsolete MT_SAFE/_CYG_THREAD_FAILSAFE considerations. Througout, add cygtls.h include. * Makefile.in (DLL_OFILES): Add cygtls.o. Add some more objects to the -fomit-frame-pointer list. * acconfig.h: Remove obsolete settings. * config.h.in: Ditto. * bsdlib.cc: Add cygtls.h include. * configure.in: Remove --enable-extra-threadsafe-checking. * configure: Regenerate. * cygtls.h (_local_storage): New struct renamed from _winsup_t (sic). (_threadinfo:local_clib): Add new field. (_threadinfo::locals): Ditto. (_threadinfo::init_thread): Accept second _reent * argument. (_threadinfo::call): Define as regparm. (CYGTLS_PADSIZE): Remove unnecessary slop. (_getreent): Define as a macro. * thread.h: Remove _CYG_THREAD_FAILSAFE and MT_SAFE stuff. (_winsup_t): Move to cygtls.h. (ResourceLocks::ResourceLocks): Eliminate empty constructor. (MTinterface::reents): Eliminate. (MTinterface::thread_self_key): Eliminate. (MTinterface::MTinterface): Eliminate. * dcrt0.cc: Include stdio.h for _impure_ptr initialization. (do_global_ctors): Remove run_ctors_p (sic) considerations. Don't call atexit here. (__main): Initialize destructors for user here. (dll_crt0_1): Accept a dummy argument. Don't call init_thread here. Don't set _impure_ptr here. Call do_global_ctors after more things have been initialized. (_dll_crt0): Define zeros buffer as max of needed size of CYGTLS_PADSIZE so that it can be used for two purposes while minimizing stack usage. Initialize _impure_ptr specifically, for speed. Call dll_crt0_1 with buffer argument. (cygwin_dll_init): Call dll_crt0_1 with dummy argument. * dtable.cc (dtable::find_unused_handle): Remove call to AssertResourceOwner. * exceptions.cc: Move _threadinfo stuff to new file. * cygtls.cc: New file. * gentls_offsets: Accommodate increasing complexity of cygtls.h. * hires.h (hires_base::~hires_base): Remove. * init.cc (dll_entry): Remove setting of reents. * thread.cc: Remove syslog.h include. (__getreent): Simplify to use _my_tls. (_reent_winsup): Delete. (AssertResourceOwner): Delete. (MTinterface::Init): Remove setting of _clib and _winsup, with all that entails. (MTinterface::fixup_after_fork): Ditto. (pthread::thread_init_wrapper): Ditto. Also remove call to set_tls_self_pointer. (pthread::set_tls_self_pointer): Eliminate. (pthread::get_tls_self_pointer): Just return _my_tls.tid; (__reent_t::init_clib): Eliminate. * tlsoffsets.h: Regenerate.
187 lines
4.4 KiB
Plaintext
187 lines
4.4 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(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)
|