#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
# Use AM_MAINTANER_MODE somewhere in this file once reconfigurations settle down.

AC_PREREQ([2.71])
AC_INIT([mingw-w64-runtime],[4.0b],[mingw-w64-public@lists.sourceforge.net])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_SRCDIR([ChangeLog])
AC_CONFIG_HEADERS([config.h])

AM_INIT_AUTOMAKE([1.14 foreign subdir-objects])
AM_MAINTAINER_MODE

AC_CANONICAL_HOST

AC_MSG_CHECKING([for sysroot])
AC_ARG_WITH([sysroot],
  [AS_HELP_STRING([--with-sysroot=DIR],
    [Search for headers within DIR/include (default: prefix)])],
  [],
  [AS_VAR_SET([with_sysroot],[yes])])
AS_CASE([$with_sysroot],
  [no],[],
  [yes],[AS_VAR_SET([with_sysroot],[$prefix])],
  [])
AC_MSG_RESULT([$with_sysroot])
AS_VAR_IF([with_sysroot],[no],[],[AS_VAR_SET([TARGET_SYSTEM_ROOT],[$with_sysroot])])
AC_SUBST([TARGET_SYSTEM_ROOT])
AM_CONDITIONAL([WITHSYSROOT],[AS_VAR_TEST_SET([TARGET_SYSTEM_ROOT])])


# Checks for programs.
# Checks for headers, libs, etc need to utilize the sysroot... no idea how
AC_NO_EXECUTABLES
AC_PROG_SED
AC_PROG_AWK
AC_PROG_CC
AC_PROG_CXX
AC_PROG_CPP
AC_PROG_INSTALL
AC_PROG_RANLIB
AC_CHECK_TOOL([DLLTOOL], [dlltool], [:])
AM_PROG_AR
AM_PROG_AS
dnl Remove this once automake fixes the bug where AS is not defined according to $host
AC_CHECK_TOOL([AS], [as], [:])
dnl ---
AM_PROG_CC_C_O

AC_MSG_CHECKING([whether dlltool supports --temp-prefix])
cat > test.def <<EOF
LIBRARY test.dll
EXPORTS
myfunc
EOF

AS_VAR_SET([test_dlltool_flags],[])
AC_DEFUN([TEST_DLLTOOL], [
  test_dlltool_flags_save="$test_dlltool_flags"
  test_dlltool_flags="$test_dlltool_flags $1"
  AS_ECHO([["$DLLTOOL $test_dlltool_flags -d test.def -l libtest.a"]]) >&AS_MESSAGE_LOG_FD
  AS_IF($DLLTOOL $test_dlltool_flags -d test.def -l libtest.a >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD, [
    $2
  ], [
    test_dlltool_flags="$test_dlltool_flags_save"
  ])
])

# First check if $DLLTOOL supports the -m option. LLVM dlltool might not
# have a default arch (in older versions), so make sure we specify one.
TEST_DLLTOOL([--as-flags=--64 -m i386:x86-64])
# Now check if --temp-prefix is supported. GNU dlltool supports it,
# LLVM dlltool doesn't, yet at least (but doesn't need it either).
AS_VAR_SET([dlltool_has_temp_prefix],[no])
TEST_DLLTOOL([--temp-prefix myprefix], [dlltool_has_temp_prefix=yes])

rm -f test.def libtest.a
AC_MSG_RESULT([$dlltool_has_temp_prefix])
AM_CONDITIONAL([DLLTOOL_HAS_TEMP_PREFIX],[test $dlltool_has_temp_prefix = yes])

# Find libgcc for testcases/t_global_ctors.
AS_VAR_SET([TARGET_LIBGCC_FILE_NAME], [`$CC -print-libgcc-file-name`])
AC_SUBST([TARGET_LIBGCC_FILE_NAME])

AC_MSG_CHECKING([whether to build a w32api package for Cygwin])
AC_ARG_ENABLE([w32api],
  [AS_HELP_STRING([--enable-w32api],
    [Enable building a w32api package for Cygwin])],
  [],
  [AS_VAR_SET([enable_w32api],[no])])
AC_MSG_RESULT([$enable_w32api])
AS_CASE([$enable_w32api],
  [no],[],
  [yes],[AS_VAR_SET([W32API])
	 AS_VAR_SET([includedir],[${prefix}/include/w32api])],
  [AC_MSG_ERROR([invalid argument.  Must be either yes or no.])])
AM_CONDITIONAL([W32API], [AS_VAR_TEST_SET([W32API])])

AC_MSG_CHECKING([whether to build the Win32 libraries])
AC_ARG_ENABLE([lib32],
  [AS_HELP_STRING([--enable-lib32],
    [Build the Win32 libraries])],
  [],
  [
    _save_CFLAGS="$CFLAGS"
    CFLAGS="$CFLAGS -m32"
    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[const char test[(sizeof(void*)==4)?0:-1];]],[])],
      [enable_lib32=yes],
      [enable_lib32=no])
    CFLAGS="$_save_CFLAGS"])
AC_MSG_RESULT([$enable_lib32])
AS_CASE([$enable_lib32],
  [no],[],
  [yes],[AS_VAR_SET([LIB32])],
  [AC_MSG_ERROR([invalid argument.  Must be either yes or no.])])
AM_CONDITIONAL([LIB32], [AS_VAR_TEST_SET([LIB32])])

AC_MSG_CHECKING([whether to build the Win64 libraries])
AC_ARG_ENABLE([lib64],
  [AS_HELP_STRING([--enable-lib64],
    [Build the Win64 libraries])],
  [],
  [
    _save_CFLAGS="$CFLAGS"
    CFLAGS="$CFLAGS -m64"
    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[const char test[(sizeof(void*)==8)?0:-1];]],[])],
      [enable_lib64=yes],
      [enable_lib64=no])
    CFLAGS="$_save_CFLAGS"])
AC_MSG_RESULT([$enable_lib64])
AS_CASE([$enable_lib64],
  [no],[],
  [yes],[AS_VAR_SET([LIB64])],
  [AC_MSG_ERROR([invalid argument.  Must be either yes or no.])])
AM_CONDITIONAL([LIB64], [AS_VAR_TEST_SET([LIB64])])

AC_MSG_CHECKING([whether to build the WinARM32 libraries])
AC_ARG_ENABLE([libarm32],
  [AS_HELP_STRING([--enable-libarm32],
    [Build the WinARM32 libraries])],
  [],
  [AS_CASE([$host_cpu],
    [armv7*],[enable_libarm32=yes],
    [*],[enable_libarm32=no])
  ])
AC_MSG_RESULT([$enable_libarm32])
AS_CASE([$enable_libarm32],
  [no],[],
  [yes],[AS_VAR_SET([LIBARM32])],
  [AC_MSG_ERROR([invalid argument.  Must be either yes or no.])])
AM_CONDITIONAL([LIBARM32], [AS_VAR_TEST_SET([LIBARM32])])

AS_VAR_IF([enable_libarm32],[yes],[
  AS_IF([AS_VAR_TEST_SET([LIB32]) || AS_VAR_TEST_SET([LIB64])],
    [AC_MSG_WARN([Building the runtime to use libarm32 with lib32 or lib64 is unsupported.])])])

AC_MSG_CHECKING([whether to build the WinARM64 libraries])
AC_ARG_ENABLE([libarm64],
  [AS_HELP_STRING([--enable-libarm64],
    [Build the WinARM64 libraries])],
  [],
  [AS_CASE([$host_cpu],
    [aarch64* | arm64*],[enable_libarm64=yes],
    [*],[enable_libarm64=no])
  ])
AC_MSG_RESULT([$enable_libarm64])
AS_CASE([$enable_libarm64],
  [no],[],
  [yes],[AS_VAR_SET([LIBARM64])],
  [AC_MSG_ERROR([invalid argument.  Must be either yes or no.])])
AM_CONDITIONAL([LIBARM64], [AS_VAR_TEST_SET([LIBARM64])])

AS_VAR_IF([enable_libarm64],[yes],[
  AS_IF([AS_VAR_TEST_SET([LIB32]) || AS_VAR_TEST_SET([LIB64]) || AS_VAR_TEST_SET([LIBARM32])],
    [AC_MSG_WARN([Building the runtime to use libarm64 with lib32, lib64 or libarm32 is unsupported.])])])

AC_MSG_CHECKING([whether to build the ARM64X libraries])
AC_ARG_ENABLE([arm64x],
  [AS_HELP_STRING([--enable-arm64x], [Enable hybrid ARM64X (ARM64 and ARM64EC) libraries])],
  [],
  [AS_VAR_SET([enable_arm64x],[no])])
AC_MSG_RESULT([$enable_arm64x])
AS_CASE([$enable_arm64x],
  [no],[],
  [yes],[AS_VAR_SET([ARM64X])],
  [AC_MSG_ERROR([invalid argument.  Must be either yes or no.])])
AM_CONDITIONAL([ARM64X], [AS_VAR_TEST_SET([ARM64X])])

AS_CASE([$host_cpu],
  [x86_64],[
    libx8664suffx=lib
    libx8632suffx=lib32
    libarm64suffx=libarm64
    libarm32suffx=libarm32],
  [i*86],[
    libx8664suffx=lib64
    libx8632suffx=lib
    libarm64suffx=libarm64
    libarm32suffx=libarm32],
  [aarch64* | arm64*],[
    libx8664suffx=libx8664
    libx8632suffx=libx8632
    libarm64suffx=lib
    libarm32suffx=lib32],
  [armv7*],[
    libx8664suffx=libx8664
    libx8632suffx=libx8632
    libarm64suffx=lib64
    libarm32suffx=lib],
  [
    libx8664suffx=libx8664
    libx8632suffx=libx8632
    libarm64suffx=libarm64
    libarm32suffx=libarm32]
)

AS_VAR_IF([enable_w32api],[yes],[
  libx8664suffx=$libx8664suffx/w32api
  libx8632suffx=$libx8632suffx/w32api
  libarm64suffx=$libarm64suffx/w32api
  libarm32suffx=$libarm32suffx/w32api
])

AC_SUBST([LIBX8664SUFFIXDIR],[$libx8664suffx])
AC_SUBST([LIBX8632SUFFIXDIR],[$libx8632suffx])
AC_SUBST([LIBARM64SUFFIXDIR],[$libarm64suffx])
AC_SUBST([LIBARM32SUFFIXDIR],[$libarm32suffx])

AM_CONDITIONAL([ARM64EC],[test $host_cpu = arm64ec -o x$enable_arm64x = xyes])

# Checks for features.

AC_MSG_CHECKING([whether to enable globbing])
AC_ARG_ENABLE([wildcard],
  [AS_HELP_STRING([--enable-wildcard],
    [Enable command line globbing])],
  [],
  [enable_wildcard=no])
AS_CASE([$enable_wildcard],
  [yes],[enable_wildcard_value=-1],
  [no],[enable_wildcard_value=0],
  [AC_MSG_ERROR([Please only use --enable-wildcard or --disable-wildcard, without any additional arguments.])])
AC_DEFINE_UNQUOTED([__ENABLE_GLOBBING],[$enable_wildcard_value],[Define as -1 to enable command line globbing or 0 to disable it.])
AC_MSG_RESULT([$enable_wildcard])

AC_MSG_CHECKING([whether to enable delay import libs])
AC_ARG_ENABLE([delay-import-libs],
  [AS_HELP_STRING([--enable-delay-import-libs],
    [Enable creation of delay-import libraries])],
  [],
  [enable_delay_import_libs=no])
AS_CASE([$enable_delay_import_libs],
  [yes],[],
  [no],[],
  [AC_MSG_ERROR([Please only use --enable-delay-import-libs  or --disable-delay-import-libs, without any additional arguments.])])
AM_CONDITIONAL([DELAY_IMPORT_LIBS],[test $enable_delay_import_libs = yes])
AC_MSG_RESULT([$enable_delay_import_libs])

AC_MSG_CHECKING([what to provide as libmsvcrt.a])
AC_ARG_WITH([default-msvcrt],
  [AS_HELP_STRING([--with-default-msvcrt=LIB],
    [Lib to provide as libmsvcrt.a (default: ucrt)])],
  [],
  [with_default_msvcrt=ucrt])
if test "$with_default_msvcrt" = "msvcrt"; then
  with_default_msvcrt=msvcrt-os
fi
AC_MSG_RESULT([$with_default_msvcrt])
AS_VAR_SET([MSVCRT_LIB],[lib${with_default_msvcrt}.a])
AC_SUBST([MSVCRT_LIB])

AC_MSG_CHECKING([whether to include support for Control Flow Guard])
AC_ARG_ENABLE([cfguard],
  [AS_HELP_STRING([--enable-cfguard],
    [Enable building with Control Flow Guard support (Clang)])],
  [],
  [AS_VAR_SET([enable_cfguard],[no])])
AC_MSG_RESULT([$enable_cfguard])
AS_CASE([$enable_cfguard],
  [no],[],
  [yes],[AS_VAR_SET([CFGUARD_CFLAGS],["-mguard=cf -DHAS_CFGUARD"])],
  [AC_MSG_ERROR([invalid argument.  Must be either yes or no.])])
AC_SUBST([CFGUARD_CFLAGS])

AC_MSG_CHECKING([whether to enable experimental features])
AC_ARG_ENABLE([experimental],
  [AS_HELP_STRING([--enable-experimental],
    [Enable experimental features, valid options are comma separated combination of all, dfp, printf128.])],
    [experimental_features=$enable_experimental],
    [experimental_features="no"])

enable_dfp=no
enable_printf128=no
experiment_list=$($AWK 'BEGIN{OFS=" "; len = split(ARGV@<:@1@:>@,str,","); for(; len != 0; len--) print str@<:@len@:>@ }' "$experimental_features")

for arg in $experiment_list
do
AS_CASE([$arg],
  [dfp],[enable_dfp=yes],
  [printf128],[enable_printf128=yes],
  [all], [enable_dfp=yes; enable_printf128=yes; ],
  [yes], [enable_dfp=yes; enable_printf128=yes; ],
  [no],  [enable_dfp=no; enable_printf128=no; ],
  [AC_MSG_ERROR([Unknown option "$arg"])]
)
done

AC_MSG_RESULT([$experimental_features])
AM_CONDITIONAL([ENABLE_DFP],[ test "$enable_dfp" = "yes" ])
AM_CONDITIONAL([ENABLE_PRINTF128],[ test "$enable_printf128" = "yes" ])
AM_COND_IF([ENABLE_DFP],[AC_DEFINE([__ENABLE_DFP],[1],[Build DFP support])])
AM_COND_IF([ENABLE_PRINTF128],[AC_DEFINE([__ENABLE_PRINTF128],[1],[Build DFP support])])

AC_MSG_CHECKING([whether the compiler supports -municode])
AC_ARG_ENABLE([tests-unicode],
  [AS_HELP_STRING([--enable-tests-unicode],
    [Enable the unicode testsuite without testing the compiler for support.])],
  [],[
    saved_CFLAGS="$CFLAGS"
    CFLAGS="$CFLAGS -municode"
    AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
#ifndef UNICODE
# error UNICODE not defined with -municode
#endif
    ]])],
    [enable_tests_unicode=yes],
    [enable_tests_unicode=no])
    CFLAGS="$saved_CFLAGS"])
AM_CONDITIONAL([ENABLE_TESTS_UNICODE],[test x$enable_tests_unicode = xyes])
AC_MSG_RESULT([$enable_tests_unicode])

# Checks for libraries.

# Checks for header files.
#AC_HEADER_DIRENT
#AC_HEADER_STDC
#AC_CHECK_HEADERS([fcntl.h fenv.h float.h inttypes.h limits.h locale.h malloc.h stddef.h stdint.h stdlib.h string.h sys/ioctl.h sys/time.h sys/timeb.h termios.h unistd.h wchar.h wctype.h])

# Checks for typedefs, structures, and compiler characteristics.
#AC_C_INLINE
#AC_HEADER_TIME
#AC_C_VOLATILE
#AC_CHECK_TYPES([ptrdiff_t])

# Checks for library functions.
#AC_FUNC_MALLOC
#AC_FUNC_MBRTOWC
#AC_FUNC_REALLOC
#AC_FUNC_STRTOD
#AC_FUNC_VPRINTF
#AC_CHECK_FUNCS([alarm atexit btowc fesetround floor ftruncate gettimeofday isascii localeconv mbrlen memmove memset pow rint setlocale sqrt strcasecmp strchr strncasecmp strtoull strtoumax])

# Check for __ImageBase linker symbol.
AC_MSG_CHECKING([whether the linker provides __ImageBase symbol])
# Run this test manually instead of wrapping it in AC_LINK_IFELSE; when
# bootstrapping an environment, an earlier linking test will have failed,
# which both causes autoconf to refuse to run any linker test at all,
# and even if $ac_no_link is overridden, the linker test iteslf will explicitly
# check that the linker actually produced output in the given output file.
# If $ac_exeext is empty, as it is when the earlier linker test failed, gcc
# will behave differently depending on version. If run with "gcc conftest.c
# -o conftest", old versions will produce explicitly a file named "conftest",
# while modern GCC versions will produce "conftest.exe". AC_LINK_IFELSE will
# explicitly look for the output file named "conftest$ac_exeext", which isn't
# found, and the test fails even though linking succeeded.
#
# Therefore, just do a manual test; run the linking command and check the return
# code whether it was successful or not.
#
# This test uses both mainCRTStartup and main functions, to let lld deduce
# entry point and subsystem automatically without having to manually specify,
# anything. And as long as main() is provided, we need to implicitly provide
# __main as well, since the compiler injects a call to it.

cat <<_ACEOF >conftest.$ac_ext
extern unsigned char __ImageBase[[]];

// Define a dummy call helper to satisfy the linker on ARM64EC
void *__os_arm64x_dispatch_ret = 0;

void __main(void) {
}
int main(void) {
  return __ImageBase[[0]];
}
int mainCRTStartup(void) {
  return main();
}
_ACEOF

echo "$as_me:$LINENO: $CC conftest.$ac_ext $LDFLAGS -nostdlib -o conftest$ac_exeext" >&AS_MESSAGE_LOG_FD
# Doing the link test with -nosdlib, to avoid trying to link in any libraries
# which might not exist yet at this point.
if $CC conftest.$ac_ext $LDFLAGS -nostdlib -o conftest$ac_exeext >&AS_MESSAGE_LOG_FD 2>&1; then
  ld_provides_imagebase=yes
else
  ld_provides_imagebase=no
fi
rm -f conftest$ac_exeext conftest.$ac_ext
AC_MSG_RESULT([$ld_provides_imagebase])
AS_CASE([$ld_provides_imagebase],
  [no],[AS_VAR_SET([IMAGEBASE_CFLAGS],["-D__ImageBase=__MINGW_LSYMBOL\(_image_base__\)"])],
  [AS_VAR_SET([IMAGEBASE_CFLAGS])])
AC_SUBST([IMAGEBASE_CFLAGS])

AC_CHECK_HEADER([_mingw_mac.h], [], [AC_MSG_ERROR([Please check if the mingw-w64 header set and the build/host option are set properly.])])

#Warnings and errors, default level is 3
AC_MSG_CHECKING([for warning levels])
AC_ARG_ENABLE([warnings],
  [AS_HELP_STRING([[--enable-warnings[=0-5]]],
    [Enable compile time warnings @<:@default=3@:>@])],
  [AS_CASE([$enableval],
    [yes], [warning_level=3],
    [no],  [warning_level=0],
    [[[0-5]]], [warning_level="$enableval"],
    [warning_level=3])],
  [warning_level=3])
AC_MSG_RESULT([Level $warning_level])

#Add warning flags as appropriate. Level 4 and above are only for testing purpose.
AS_CASE([$warning_level],
  [0],[ADD_C_CXX_WARNING_FLAGS="-Wall"],
  [1],[
    ADD_C_CXX_WARNING_FLAGS="-Wall -Wextra"
    ADD_C_ONLY_WARNING_FLAGS="-Wimplicit-function-declaration"],
  [2],[
    ADD_C_CXX_WARNING_FLAGS="-Wall -Wextra -Wformat -Wstrict-aliasing -Wshadow"
    ADD_C_ONLY_WARNING_FLAGS="-Wimplicit-function-declaration"],
  [3],[
    ADD_C_CXX_WARNING_FLAGS="-Wall -Wextra -Wformat -Wstrict-aliasing -Wshadow"
    ADD_C_ONLY_WARNING_FLAGS="-Wimplicit-function-declaration -Wmissing-noreturn -Wmissing-prototypes"],
  [4],[
    ADD_C_CXX_WARNING_FLAGS="-Wall -Wextra -Wformat -Wstrict-aliasing=2 -Wsystem-headers -Wshadow -Wmissing-declarations -Werror -pedantic"
    ADD_C_ONLY_WARNING_FLAGS="-Wimplicit-function-declaration -Wmissing-noreturn -Wmissing-prototypes"],
  [5],[
    ADD_C_CXX_WARNING_FLAGS="-Wall -Wextra -Wformat -Wstrict-aliasing=2 -Wsystem-headers -Wshadow -Wmissing-declarations -Wredundant-decls -Werror -Wfatal-errors -pedantic -pedantic-errors"
    ADD_C_ONLY_WARNING_FLAGS="-Wimplicit-function-declaration -Wmissing-noreturn -Wmissing-prototypes"]
   )

saved_CFLAGS="$CFLAGS"
AC_MSG_CHECKING([whether the compiler supports -Warray-bounds])
CFLAGS="$CFLAGS -Warray-bounds"
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])],
    [supports_warray_bounds=yes],[supports_warray_bounds=no])
AC_MSG_RESULT([$supports_warray_bounds])
if test "$supports_warray_bounds" = "yes"; then
    ADD_C_CXX_WARNING_FLAGS="$ADD_C_CXX_WARNING_FLAGS -Wno-array-bounds"
fi
CFLAGS="$saved_CFLAGS"

AC_SUBST(ADD_C_ONLY_WARNING_FLAGS)
AC_SUBST(ADD_C_CXX_WARNING_FLAGS)

AC_CONFIG_FILES([Makefile testcases/Makefile])
AC_OUTPUT

AC_MSG_NOTICE([])
AC_MSG_NOTICE([])
AC_MSG_NOTICE([])
AC_MSG_NOTICE([------------------------------------------------------------------------])
AC_MSG_NOTICE([$PACKAGE $VERSION])
AC_MSG_NOTICE([------------------------------------------------------------------------])
AC_MSG_NOTICE([])
AC_MSG_NOTICE([])
AC_MSG_NOTICE([Configuration Options Summary:])
AC_MSG_NOTICE([])
AC_MSG_NOTICE([  WinARM32 runtime.....: $enable_libarm32])
AC_MSG_NOTICE([  WinARM64 runtime.....: $enable_libarm64])
AC_MSG_NOTICE([  Win32 runtime........: $enable_lib32])
AC_MSG_NOTICE([  Win64 runtime........: $enable_lib64])
AC_MSG_NOTICE([  C Warning Flags......: $ADD_C_ONLY_WARNING_FLAGS])
AC_MSG_NOTICE([  Common Warning Flags.: $ADD_C_CXX_WARNING_FLAGS])
AC_MSG_NOTICE([  Default msvcrt.......: $with_default_msvcrt])
AC_MSG_NOTICE([  Control Flow Guard...: $enable_cfguard])
AC_MSG_NOTICE([])
AC_MSG_NOTICE([  DFP printf...........: $enable_dfp])
AC_MSG_NOTICE([  128-bit printf.......: $enable_printf128])
AC_MSG_NOTICE([])


