230 lines
5.3 KiB
Plaintext
230 lines
5.3 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="-g -O2"
|
|
else
|
|
CFLAGS="-O2"
|
|
fi
|
|
if test "$ac_test_CXXFLAGS" != set; then
|
|
CXXFLAGS='$(CFLAGS)'
|
|
fi
|
|
else
|
|
GCC=
|
|
test "${CFLAGS+set}" = set || CFLAGS="-g"
|
|
fi
|
|
])
|
|
|
|
AC_CANONICAL_SYSTEM
|
|
|
|
LIB_AC_PROG_CC
|
|
|
|
AC_CHECK_TOOL(AR, ar, ar)
|
|
AC_SUBST(AR)
|
|
AC_CHECK_TOOL(AS, as, as)
|
|
AC_SUBST(AS)
|
|
AC_CHECK_TOOL(RANLIB, ranlib, ranlib)
|
|
AC_SUBST(RANLIB)
|
|
AC_CHECK_TOOL(LD, ld, ld)
|
|
AC_SUBST(LD)
|
|
AC_CHECK_TOOL(DLLTOOL, dlltool, dlltool)
|
|
AC_SUBST(DLLTOOL)
|
|
AC_CHECK_TOOL(WINDRES, windres, windres)
|
|
AC_SUBST(WINDRES)
|
|
|
|
AC_ALLOCA
|
|
AC_CONFIG_SUBDIRS(utils doc)
|
|
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(strace-hhmmss,
|
|
[ --enable-strace-hhmmss strace log output has date/time stamp],
|
|
[case "${enableval}" in
|
|
yes)
|
|
AC_DEFINE(STRACE_HHMMSS)
|
|
;;
|
|
no)
|
|
;;
|
|
*)
|
|
AC_MSG_ERROR(bad value ${enableval} given for enable-strace-hhmmss option)
|
|
;;
|
|
esac
|
|
])
|
|
|
|
dnl set default mt safeness and then process the options.
|
|
mt_safe_val=1
|
|
MT_SAFE=yes
|
|
PTH_ALLOW=''
|
|
|
|
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
|
|
PTH_ALLOW=';'
|
|
;;
|
|
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_SUBST(PTH_ALLOW)
|
|
|
|
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
|
|
])
|
|
|
|
|
|
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)
|
|
|