* configure: Regenerate. * dcrt0.cc: Conditionalize vfork stuff throughout. * dtable.cc: Ditto. * perthread.h: Ditto. * pipe.cc (fhandler_pipe::close): Ditto. * spawn.cc (spawnve): Ditto. * syscalls.cc (setsid): Ditto. * exceptions.cc (sigpacket::process): Use macro to refer to vfork pid. * debug.cc (verify_handle): Define new function. * debug.h (VerifyHandle): Define new macro. (verify_handle): Declare new function * fhandler.cc (fhandler_base::dup): Verify that dup'ed handle is not supposed to be in use. (fhandler_base::set_inheritance): Ditto. (fhandler_base::fork_fixup): Ditto. * fhandler_socket.cc (fhandler_socket::dup): Ditto. * fhandler_tty.cc (fhandler_tty_slave::open): Ditto. * net.cc (set_socket_inheritance): Ditto. * pinfo.cc (pinfo_fixup_after_exec): Ditto. * sigproc.cc (proc_subproc): Ditto. (sig_send): Ditto. * spawn.cc (spawn_guts): Ditto. * thread.cc (pthread::init_mainthread): Ditto. * pipe.cc (fhandler_pipe::close): Close read_state with ForceCloseHandle since it was protected. (fhandler_pipe::fixup_after_exec): Protect read_state handle. (fhandler_pipe::dup): Correctly close open handles on error condition. Verify that dup'ed handle is not supposed to be in use. (fhandler_pipe::create): Protect read_state.
		
			
				
	
	
		
			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)
 |