| # -*- 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.69]) |
| 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_HEADER([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 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*],[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.])])]) |
| |
| 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*],[ |
| 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]) |
| |
| # Checks for features. |
| |
| AC_MSG_CHECKING([whether to use genlib]) |
| AC_ARG_WITH([genlib], |
| [AS_HELP_STRING([--with-genlib=PATH], |
| [Whether to build import libraries via the genlib tool (default: no)])], |
| [], |
| [with_genlib=no]) |
| AS_CASE([$with_genlib], |
| [yes],[AC_CHECK_TOOL([GENLIB], [genlib], [:])], |
| [no],[], |
| [AS_VAR_SET([GENLIB], [$with_genlib])]) |
| AM_CONDITIONAL([WITH_GENLIB], [AS_VAR_TEST_SET([GENLIB])]) |
| AC_MSG_RESULT([$with_genlib]) |
| |
| 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 private exports]) |
| AC_ARG_ENABLE([private-exports], |
| [AS_HELP_STRING([--enable-private-exports], |
| [Enable exporting private internal functions])], |
| [], |
| [enable_private_exports=no]) |
| AS_CASE([$enable_private_exports], |
| [yes],[], |
| [no],[], |
| [AC_MSG_ERROR([Please only use --enable-private-exports or --disable-private-exports, without any additional arguments.])]) |
| AM_CONDITIONAL([PRIVATE_EXPORTS],[test $enable_private_exports = yes]) |
| AC_MSG_RESULT([$enable_private_exports]) |
| |
| 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: msvcrt-os)])], |
| [], |
| [with_default_msvcrt=msvcrt-os]) |
| 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 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, registeredprintf, softmath.])], |
| [experimental_features=$enable_experimental], |
| [experimental_features="no"]) |
| |
| enable_dfp=no |
| enable_printf128=no |
| enable_registeredprintf=no |
| enable_softmath=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], |
| [registeredprintf],[enable_registeredprintf=yes], |
| [softmath],[enable_softmath=yes], |
| [all], [enable_dfp=yes; enable_printf128=yes; enable_registeredprintf=yes; enable_softmath=yes; ], |
| [yes], [enable_dfp=yes; enable_printf128=yes; enable_registeredprintf=yes; enable_softmath=yes; ], |
| [no], [enable_dfp=no; enable_printf128=no; enable_registeredprintf=no; enable_softmath=no; ], |
| [AC_MSG_ERROR([Unknown option \"$experiment\"])] |
| ) |
| done |
| |
| AC_MSG_RESULT([$experimental_features]) |
| AM_CONDITIONAL([ENABLE_DFP],[ test "$enable_dfp" = "yes" ]) |
| AM_CONDITIONAL([ENABLE_PRINTF128],[ test "$enable_printf128" = "yes" ]) |
| AM_CONDITIONAL([ENABLE_REGISTEREDPRINTF],[ test "$enable_registeredprintf" = "yes" ]) |
| AM_CONDITIONAL([ENABLE_SOFTMATH],[ test "$enable_softmath" = "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])]) |
| AM_COND_IF([ENABLE_REGISTEREDPRINTF],[AC_DEFINE([__ENABLE_REGISTEREDPRINTF],[1],[Build DFP support])]) |
| AM_COND_IF([ENABLE_SOFTMATH],[AC_DEFINE([__ENABLE_SOFTMATH],[1],[Build softmath routines])]) |
| |
| 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]) |
| |
| 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 -Wpacked -Winline" |
| ADD_C_ONLY_WARNING_FLAGS="-Wimplicit-function-declaration"], |
| [3],[ |
| ADD_C_CXX_WARNING_FLAGS="-Wall -Wextra -Wformat -Wstrict-aliasing -Wshadow -Wpacked -Winline" |
| 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 -Wpacked -Winline -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 -Wpacked -Wredundant-decls -Winline -Werror -Wfatal-errors -pedantic -pedantic-errors" |
| ADD_C_ONLY_WARNING_FLAGS="-Wimplicit-function-declaration -Wmissing-noreturn -Wmissing-prototypes"] |
| ) |
| |
| AC_SUBST(ADD_C_ONLY_WARNING_FLAGS) |
| AC_SUBST(ADD_C_CXX_WARNING_FLAGS) |
| AC_SUBST(ADD_CXX_ONLY_WARNING_FLAGS) |
| |
| AC_CONFIG_FILES([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([ C++ Warning Flags....: $ADD_CXX_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([]) |
| AC_MSG_NOTICE([ DFP printf...........: $enable_dfp]) |
| AC_MSG_NOTICE([ 128-bit printf.......: $enable_printf128]) |
| AC_MSG_NOTICE([ Custom printf........: $enable_registeredprintf]) |
| AC_MSG_NOTICE([ Softhmath............: $enable_softmath]) |
| AC_MSG_NOTICE([]) |
| |
| |