83aac69883
It turned out that enabling the -Wmissing-include-dirs for libcpp did output too many warnings – at least as run with -B and similar options during the GCC build and warning for internal include dirs like finclude, unlikely of relevance to for a real-world user. This patch now only warns for -I and -J by default but permits to get the full warnings including libcpp ones with -Wmissing-include-dirs. It additionally documents this in the manual. With that change, the -Wno-missing-include-dirs could be removed from libgfortran's configure and libgomp's testsuite always cflags. This reverts those bits of the previous commit r12-3722-g417ea5c02cef7f000e66d1af22b066c2c1cda047 Additionally, it turned out that all call to load_file called exit explicitly - except for the main file via gfc_init -> gfc_new_file. The latter also output a file not existing fatal error, such that two errors where printed. Now exit is called in line with the other users of load_file. Finally, when compileing with "nonexisting/file.f90", first a warning that "nonexisting" does not exist as include path was printed before the file not found error was printed. Now the directory in which the physical file is located is added silently, relying on the file-not-found diagnostic for those. PR fortran/55534 gcc/ChangeLog: * doc/invoke.texi (-Wno-missing-include-dirs.): Document Fortran behavior. gcc/fortran/ChangeLog: * cpp.c (gfc_cpp_register_include_paths, gfc_cpp_post_options): Add new bool verbose_missing_dir_warn argument. * cpp.h (gfc_cpp_post_options): Update prototype. * f95-lang.c (gfc_init): Remove duplicated file-not found diag. * gfortran.h (gfc_check_include_dirs): Takes bool verbose_missing_dir_warn arg. (gfc_new_file): Returns now void. * options.c (gfc_post_options): Update to warn for -I and -J, only, by default but for all when user requested. * scanner.c (gfc_do_check_include_dir): (gfc_do_check_include_dirs, gfc_check_include_dirs): Take bool verbose warn arg and update to avoid printing the same message twice or never. (load_file): Fix indent. (gfc_new_file): Return void and exit when load_file failed as all other load_file users do. libgfortran/ChangeLog: * configure.ac (AM_FCFLAGS): Revert r12-3722 by removing -Wno-missing-include-dirs. * configure: Regenerate. libgomp/ChangeLog: * testsuite/libgomp.fortran/fortran.exp (ALWAYS_CFLAGS): Revert r12-3722 by removing -Wno-missing-include-dirs. * testsuite/libgomp.oacc-fortran/fortran.exp (ALWAYS_CFLAGS): Likewise. gcc/testsuite/ChangeLog: * gfortran.dg/include_14.f90: Add -J testcase and update dg-output. * gfortran.dg/include_15.f90: Likewise. * gfortran.dg/include_16.f90: Likewise. * gfortran.dg/include_17.f90: Likewise. * gfortran.dg/include_18.f90: Likewise. * gfortran.dg/include_19.f90: Likewise.
700 lines
22 KiB
Plaintext
700 lines
22 KiB
Plaintext
# Process this file with autoconf to produce a configure script, like so:
|
||
# aclocal && autoconf && autoheader && automake
|
||
|
||
AC_INIT([GNU Fortran Runtime Library], 0.3,,[libgfortran])
|
||
AC_CONFIG_HEADER(config.h)
|
||
GCC_TOPLEV_SUBDIRS
|
||
|
||
# -------
|
||
# Options
|
||
# -------
|
||
|
||
AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
|
||
AC_ARG_ENABLE(version-specific-runtime-libs,
|
||
AS_HELP_STRING([--enable-version-specific-runtime-libs],
|
||
[specify that runtime libraries should be installed in a compiler-specific directory]),
|
||
[case "$enableval" in
|
||
yes) version_specific_libs=yes ;;
|
||
no) version_specific_libs=no ;;
|
||
*) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
|
||
esac],
|
||
[version_specific_libs=no])
|
||
AC_MSG_RESULT($version_specific_libs)
|
||
|
||
# Build with intermodule optimisations
|
||
AC_MSG_CHECKING([for --enable-intermodule])
|
||
AC_ARG_ENABLE(intermodule,
|
||
AS_HELP_STRING([--enable-intermodule],[build the library in one step]),
|
||
[case "$enable_intermodule" in
|
||
yes) onestep="-onestep";;
|
||
*) onestep="";;
|
||
esac],
|
||
[onestep=""])
|
||
AC_MSG_RESULT($enable_intermodule)
|
||
AM_CONDITIONAL(onestep,[test x$onestep = x-onestep])
|
||
AC_SUBST(onestep)
|
||
|
||
# Gets build, host, target, *_vendor, *_cpu, *_os, etc.
|
||
#
|
||
# You will slowly go insane if you do not grok the following fact: when
|
||
# building this library, the top-level /target/ becomes the library's /host/.
|
||
#
|
||
# configure then causes --target to default to --host, exactly like any
|
||
# other package using autoconf. Therefore, 'target' and 'host' will
|
||
# always be the same. This makes sense both for native and cross compilers
|
||
# just think about it for a little while. :-)
|
||
#
|
||
# Also, if this library is being configured as part of a cross compiler, the
|
||
# top-level configure script will pass the "real" host as $with_cross_host.
|
||
#
|
||
# Do not delete or change the following two lines. For why, see
|
||
# http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html
|
||
AC_CANONICAL_SYSTEM
|
||
ACX_NONCANONICAL_TARGET
|
||
|
||
target_alias=${target_alias-$host_alias}
|
||
AC_SUBST(target_alias)
|
||
|
||
# Sets up automake. Must come after AC_CANONICAL_SYSTEM. Each of the
|
||
# following is magically included in AUTOMAKE_OPTIONS in each Makefile.am.
|
||
# 1.9.6: minimum required version
|
||
# no-define: PACKAGE and VERSION will not be #define'd in config.h (a bunch
|
||
# of other PACKAGE_* variables will, however, and there's nothing
|
||
# we can do about that; they come from AC_INIT).
|
||
# foreign: we don't follow the normal rules for GNU packages (no COPYING
|
||
# file in the top srcdir, etc, etc), so stop complaining.
|
||
# no-dist: we don't want 'dist' and related rules.
|
||
# -Wall: turns on all automake warnings...
|
||
# -Wno-portability: ...except this one, since GNU make is required.
|
||
AM_INIT_AUTOMAKE([1.9.6 no-define foreign no-dist -Wall -Wno-portability])
|
||
|
||
AM_MAINTAINER_MODE
|
||
AM_ENABLE_MULTILIB(, ..)
|
||
|
||
# Handy for debugging:
|
||
#AC_MSG_NOTICE($build / $host / $target / $host_alias / $target_alias); sleep 5
|
||
|
||
# Are we being configured with some form of cross compiler?
|
||
# NB: We don't actually need to know this just now, but when, say, a test
|
||
# suite is included, we'll have to know.
|
||
if test "$build" != "$host"; then
|
||
LIBGFOR_IS_NATIVE=false
|
||
GCC_NO_EXECUTABLES
|
||
else
|
||
LIBGFOR_IS_NATIVE=true
|
||
fi
|
||
|
||
AC_USE_SYSTEM_EXTENSIONS
|
||
|
||
GCC_WITH_TOOLEXECLIBDIR
|
||
|
||
# Calculate toolexeclibdir
|
||
# Also toolexecdir, though it's only used in toolexeclibdir
|
||
case ${version_specific_libs} in
|
||
yes)
|
||
# Need the gcc compiler version to know where to install libraries
|
||
# and header files if --enable-version-specific-runtime-libs option
|
||
# is selected.
|
||
toolexecdir='$(libdir)/gcc/$(target_alias)'
|
||
toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
|
||
;;
|
||
no)
|
||
if test -n "$with_cross_host" &&
|
||
test x"$with_cross_host" != x"no"; then
|
||
# Install a library built with a cross compiler in tooldir, not libdir.
|
||
toolexecdir='$(exec_prefix)/$(target_alias)'
|
||
case ${with_toolexeclibdir} in
|
||
no)
|
||
toolexeclibdir='$(toolexecdir)/lib'
|
||
;;
|
||
*)
|
||
toolexeclibdir=${with_toolexeclibdir}
|
||
;;
|
||
esac
|
||
else
|
||
toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
|
||
toolexeclibdir='$(libdir)'
|
||
fi
|
||
multi_os_directory=`$CC -print-multi-os-directory`
|
||
case $multi_os_directory in
|
||
.) ;; # Avoid trailing /.
|
||
*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
|
||
esac
|
||
;;
|
||
esac
|
||
AC_SUBST(toolexecdir)
|
||
AC_SUBST(toolexeclibdir)
|
||
|
||
# Create a spec file, so that compile/link tests don't fail
|
||
test -f libgfortran.spec || touch libgfortran.spec
|
||
|
||
AC_LANG_C
|
||
# Check the compiler.
|
||
# The same as in boehm-gc and libstdc++. Have to borrow it from there.
|
||
# We must force CC to /not/ be precious variables; otherwise
|
||
# the wrong, non-multilib-adjusted value will be used in multilibs.
|
||
# As a side effect, we have to subst CFLAGS ourselves.
|
||
|
||
m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS])
|
||
m4_define([_AC_ARG_VAR_PRECIOUS],[])
|
||
AC_PROG_CC
|
||
m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
|
||
|
||
AC_SUBST(CFLAGS)
|
||
|
||
AM_PROG_CC_C_O
|
||
|
||
# Add -Wall -fno-repack-arrays -fno-underscoring if we are using GCC.
|
||
if test "x$GCC" = "xyes"; then
|
||
AM_FCFLAGS="-I . -Wall -Werror -fimplicit-none -fno-repack-arrays -fno-underscoring"
|
||
## We like to use C11 and C99 routines when available. This makes
|
||
## sure that
|
||
## __STDC_VERSION__ is set such that libc includes make them available.
|
||
AM_CFLAGS="-std=gnu11 -Wall -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -Wextra -Wwrite-strings -Werror=implicit-function-declaration -Werror=vla"
|
||
## Compile the following tests with the same system header contents
|
||
## that we'll encounter when compiling our own source files.
|
||
CFLAGS="-std=gnu11 $CFLAGS"
|
||
fi
|
||
|
||
# Add CET specific flags if CET is enabled
|
||
GCC_CET_FLAGS(CET_FLAGS)
|
||
AM_FCFLAGS="$AM_FCFLAGS $CET_FLAGS"
|
||
AM_CFLAGS="$AM_CFLAGS $CET_FLAGS"
|
||
CFLAGS="$CFLAGS $CET_FLAGS"
|
||
|
||
AC_SUBST(AM_FCFLAGS)
|
||
AC_SUBST(AM_CFLAGS)
|
||
AC_SUBST(CFLAGS)
|
||
|
||
# Check for symbol versioning (copied from libssp).
|
||
AC_MSG_CHECKING([whether symbol versioning is supported])
|
||
AC_ARG_ENABLE(symvers,
|
||
AS_HELP_STRING([--disable-symvers],
|
||
[disable symbol versioning for libgfortran]),
|
||
gfortran_use_symver=$enableval,
|
||
gfortran_use_symver=yes)
|
||
if test "x$gfortran_use_symver" != xno; then
|
||
save_LDFLAGS="$LDFLAGS"
|
||
LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
|
||
cat > conftest.map <<EOF
|
||
FOO_1.0 {
|
||
global: *foo*; bar; local: *;
|
||
};
|
||
EOF
|
||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[int foo;]],[[]])],[gfortran_use_symver=gnu],[gfortran_use_symver=no])
|
||
if test x$gfortran_use_symver = xno; then
|
||
case "$target_os" in
|
||
solaris2*)
|
||
LDFLAGS="$save_LDFLAGS"
|
||
LDFLAGS="$LDFLAGS -fPIC -shared -Wl,-M,./conftest.map"
|
||
# Sun ld cannot handle wildcards and treats all entries as undefined.
|
||
cat > conftest.map <<EOF
|
||
FOO_1.0 {
|
||
global: foo; local: *;
|
||
};
|
||
EOF
|
||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[int foo;]],[[]])],[gfortran_use_symver=sun],[gfortran_use_symver=no])
|
||
;;
|
||
esac
|
||
fi
|
||
LDFLAGS="$save_LDFLAGS"
|
||
fi
|
||
AC_MSG_RESULT($gfortran_use_symver)
|
||
AM_CONDITIONAL(LIBGFOR_USE_SYMVER, [test "x$gfortran_use_symver" != xno])
|
||
AM_CONDITIONAL(LIBGFOR_USE_SYMVER_GNU, [test "x$gfortran_use_symver" = xgnu])
|
||
AM_CONDITIONAL(LIBGFOR_USE_SYMVER_SUN, [test "x$gfortran_use_symver" = xsun])
|
||
|
||
# For GPU offloading, not everything in libfortran can be supported.
|
||
# Currently, the only target that has this problem is nvptx. The
|
||
# following is a (partial) list of features that are unsupportable on
|
||
# this particular target:
|
||
# * Constructors
|
||
# * alloca
|
||
# * C library support for I/O, with printf as the one notable exception
|
||
# * C library support for other features such as signal, environment
|
||
# variables, time functions
|
||
|
||
AM_CONDITIONAL(LIBGFOR_MINIMAL, [test "x${target_cpu}" = xnvptx])
|
||
|
||
# Some compiler target support may have limited support for integer
|
||
# or floating point numbers – or may want to reduce the libgfortran size
|
||
# although they do have the support.
|
||
LIBGOMP_CHECKED_INT_KINDS="1 2 4 8 16"
|
||
LIBGOMP_CHECKED_REAL_KINDS="4 8 10 16"
|
||
|
||
AC_SUBST(LIBGOMP_CHECKED_INT_KINDS)
|
||
AC_SUBST(LIBGOMP_CHECKED_REAL_KINDS)
|
||
|
||
# Figure out whether the compiler supports "-ffunction-sections -fdata-sections",
|
||
# similarly to how libstdc++ does it
|
||
ac_test_CFLAGS="${CFLAGS+set}"
|
||
ac_save_CFLAGS="$CFLAGS"
|
||
|
||
# Check for -ffunction-sections -fdata-sections
|
||
AC_MSG_CHECKING([for gcc that supports -ffunction-sections -fdata-sections])
|
||
CFLAGS='-Werror -ffunction-sections -fdata-sections'
|
||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[int foo;]])], [ac_fdsections=yes], [ac_fdsections=no])
|
||
if test "$ac_test_CFLAGS" = set; then
|
||
CFLAGS="$ac_save_CFLAGS"
|
||
else
|
||
# this is the suspicious part
|
||
CFLAGS=""
|
||
fi
|
||
if test x"$ac_fdsections" = x"yes"; then
|
||
SECTION_FLAGS='-ffunction-sections -fdata-sections'
|
||
fi
|
||
AC_MSG_RESULT($ac_fdsections)
|
||
AC_SUBST(SECTION_FLAGS)
|
||
|
||
# Check linker hardware capability support.
|
||
GCC_CHECK_LINKER_HWCAP
|
||
|
||
# Find other programs we need.
|
||
AC_CHECK_TOOL(AS, as)
|
||
AC_CHECK_TOOL(AR, ar)
|
||
AC_CHECK_TOOL(RANLIB, ranlib, ranlib-not-found-in-path-error)
|
||
AC_PROG_MAKE_SET
|
||
AC_PROG_INSTALL
|
||
|
||
# Configure libtool
|
||
#AC_MSG_NOTICE([====== Starting libtool configuration])
|
||
AC_LIBTOOL_DLOPEN
|
||
AM_PROG_LIBTOOL
|
||
LT_LIB_M
|
||
ACX_LT_HOST_FLAGS
|
||
AC_SUBST(enable_shared)
|
||
AC_SUBST(enable_static)
|
||
#AC_MSG_NOTICE([====== Finished libtool configuration]) ; sleep 10
|
||
|
||
# We need gfortran to compile parts of the library
|
||
#AC_PROG_FC(gfortran)
|
||
FC="$GFORTRAN"
|
||
AC_PROG_FC(gfortran)
|
||
|
||
# extra LD Flags which are required for targets
|
||
case "${host}" in
|
||
*-darwin*)
|
||
# Darwin needs -single_module when linking libgfortran
|
||
extra_ldflags_libgfortran=-Wl,-single_module
|
||
;;
|
||
esac
|
||
AC_SUBST(extra_ldflags_libgfortran)
|
||
|
||
# We need a working compiler at that point, otherwise give a clear
|
||
# error message and bail out.
|
||
LIBGFOR_WORKING_GFORTRAN
|
||
|
||
AC_SYS_LARGEFILE
|
||
|
||
# Types
|
||
AC_TYPE_OFF_T
|
||
AC_TYPE_INTPTR_T
|
||
AC_TYPE_UINTPTR_T
|
||
AC_CHECK_TYPES([ptrdiff_t])
|
||
|
||
# check header files (we assume C89 is available, so don't check for that)
|
||
AC_CHECK_HEADERS_ONCE(unistd.h sys/random.h sys/time.h sys/times.h \
|
||
sys/resource.h sys/types.h sys/stat.h sys/uio.h sys/wait.h \
|
||
floatingpoint.h ieeefp.h fenv.h fptrap.h \
|
||
fpxcp.h pwd.h complex.h xlocale.h)
|
||
|
||
GCC_HEADER_STDINT(gstdint.h)
|
||
|
||
AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_blocks, struct stat.st_rdev])
|
||
|
||
case "${host}--x${with_newlib}" in
|
||
mips*--xyes)
|
||
hardwire_newlib=1;;
|
||
nvptx*--xyes)
|
||
hardwire_newlib=1;;
|
||
esac
|
||
|
||
# Check for library functions.
|
||
if test "${hardwire_newlib:-0}" -eq 1; then
|
||
# We are being configured with a cross compiler. AC_REPLACE_FUNCS
|
||
# may not work correctly, because the compiler may not be able to
|
||
# link executables.
|
||
AC_DEFINE(HAVE_MKSTEMP, 1, [Define if you have mkstemp.])
|
||
AC_DEFINE(HAVE_STRTOF, 1, [Define if you have strtof.])
|
||
AC_DEFINE(HAVE_SNPRINTF, 1, [Define if you have snprintf.])
|
||
AC_DEFINE(HAVE_VSNPRINTF, 1, [Define if you have vsnprintf.])
|
||
AC_DEFINE(HAVE_LOCALTIME_R, 1, [Define if you have localtime_r.])
|
||
AC_DEFINE(HAVE_GMTIME_R, 1, [Define if you have gmtime_r.])
|
||
AC_DEFINE(HAVE_STRNLEN, 1, [Define if you have strnlen.])
|
||
AC_DEFINE(HAVE_STRNDUP, 1, [Define if you have strndup.])
|
||
|
||
# At some point, we should differentiate between architectures
|
||
# like x86, which have long double versions, and alpha/powerpc/etc.,
|
||
# which don't. For the time being, punt.
|
||
if test x"long_double_math_on_this_cpu" = x"yes"; then
|
||
AC_DEFINE(HAVE_STRTOLD, 1, [Define if you have strtold.])
|
||
fi
|
||
else
|
||
AC_CHECK_FUNCS_ONCE(getrusage times mkstemp strtof strtold snprintf \
|
||
ftruncate chsize chdir getentropy getlogin gethostname kill link symlink \
|
||
sleep ttyname sigaction waitpid \
|
||
alarm access fork posix_spawn setmode fcntl writev \
|
||
gettimeofday stat fstat lstat getpwuid vsnprintf dup \
|
||
getcwd localtime_r gmtime_r getpwuid_r ttyname_r clock_gettime \
|
||
getgid getpid getuid geteuid umask getegid \
|
||
secure_getenv __secure_getenv mkostemp strnlen strndup newlocale \
|
||
freelocale uselocale strerror_l)
|
||
fi
|
||
|
||
# Check strerror_r, cannot be above as versions with two and three arguments exist
|
||
LIBGFOR_CHECK_STRERROR_R
|
||
|
||
# Check for C99 (and other IEEE) math functions
|
||
GCC_CHECK_MATH_FUNC([acosf])
|
||
GCC_CHECK_MATH_FUNC([acos])
|
||
GCC_CHECK_MATH_FUNC([acosl])
|
||
GCC_CHECK_MATH_FUNC([acoshf])
|
||
GCC_CHECK_MATH_FUNC([acosh])
|
||
GCC_CHECK_MATH_FUNC([acoshl])
|
||
GCC_CHECK_MATH_FUNC([asinf])
|
||
GCC_CHECK_MATH_FUNC([asin])
|
||
GCC_CHECK_MATH_FUNC([asinl])
|
||
GCC_CHECK_MATH_FUNC([asinhf])
|
||
GCC_CHECK_MATH_FUNC([asinh])
|
||
GCC_CHECK_MATH_FUNC([asinhl])
|
||
GCC_CHECK_MATH_FUNC([atan2f])
|
||
GCC_CHECK_MATH_FUNC([atan2])
|
||
GCC_CHECK_MATH_FUNC([atan2l])
|
||
GCC_CHECK_MATH_FUNC([atanf])
|
||
GCC_CHECK_MATH_FUNC([atan])
|
||
GCC_CHECK_MATH_FUNC([atanl])
|
||
GCC_CHECK_MATH_FUNC([atanhf])
|
||
GCC_CHECK_MATH_FUNC([atanh])
|
||
GCC_CHECK_MATH_FUNC([atanhl])
|
||
GCC_CHECK_MATH_FUNC([cargf])
|
||
GCC_CHECK_MATH_FUNC([carg])
|
||
GCC_CHECK_MATH_FUNC([cargl])
|
||
GCC_CHECK_MATH_FUNC([ceilf])
|
||
GCC_CHECK_MATH_FUNC([ceil])
|
||
GCC_CHECK_MATH_FUNC([ceill])
|
||
GCC_CHECK_MATH_FUNC([copysignf])
|
||
GCC_CHECK_MATH_FUNC([copysign])
|
||
GCC_CHECK_MATH_FUNC([copysignl])
|
||
GCC_CHECK_MATH_FUNC([cosf])
|
||
GCC_CHECK_MATH_FUNC([cos])
|
||
GCC_CHECK_MATH_FUNC([cosl])
|
||
GCC_CHECK_MATH_FUNC([ccosf])
|
||
GCC_CHECK_MATH_FUNC([ccos])
|
||
GCC_CHECK_MATH_FUNC([ccosl])
|
||
GCC_CHECK_MATH_FUNC([coshf])
|
||
GCC_CHECK_MATH_FUNC([cosh])
|
||
GCC_CHECK_MATH_FUNC([coshl])
|
||
GCC_CHECK_MATH_FUNC([ccoshf])
|
||
GCC_CHECK_MATH_FUNC([ccosh])
|
||
GCC_CHECK_MATH_FUNC([ccoshl])
|
||
GCC_CHECK_MATH_FUNC([expf])
|
||
GCC_CHECK_MATH_FUNC([exp])
|
||
GCC_CHECK_MATH_FUNC([expl])
|
||
GCC_CHECK_MATH_FUNC([cexpf])
|
||
GCC_CHECK_MATH_FUNC([cexp])
|
||
GCC_CHECK_MATH_FUNC([cexpl])
|
||
GCC_CHECK_MATH_FUNC([fabsf])
|
||
GCC_CHECK_MATH_FUNC([fabs])
|
||
GCC_CHECK_MATH_FUNC([fabsl])
|
||
GCC_CHECK_MATH_FUNC([cabsf])
|
||
GCC_CHECK_MATH_FUNC([cabs])
|
||
GCC_CHECK_MATH_FUNC([cabsl])
|
||
GCC_CHECK_MATH_FUNC([floorf])
|
||
GCC_CHECK_MATH_FUNC([floor])
|
||
GCC_CHECK_MATH_FUNC([floorl])
|
||
GCC_CHECK_MATH_FUNC([fmaf])
|
||
GCC_CHECK_MATH_FUNC([fma])
|
||
GCC_CHECK_MATH_FUNC([fmal])
|
||
GCC_CHECK_MATH_FUNC([fmodf])
|
||
GCC_CHECK_MATH_FUNC([fmod])
|
||
GCC_CHECK_MATH_FUNC([fmodl])
|
||
GCC_CHECK_MATH_FUNC([frexpf])
|
||
GCC_CHECK_MATH_FUNC([frexp])
|
||
GCC_CHECK_MATH_FUNC([frexpl])
|
||
GCC_CHECK_MATH_FUNC([hypotf])
|
||
GCC_CHECK_MATH_FUNC([hypot])
|
||
GCC_CHECK_MATH_FUNC([hypotl])
|
||
GCC_CHECK_MATH_FUNC([ldexpf])
|
||
GCC_CHECK_MATH_FUNC([ldexp])
|
||
GCC_CHECK_MATH_FUNC([ldexpl])
|
||
GCC_CHECK_MATH_FUNC([logf])
|
||
GCC_CHECK_MATH_FUNC([log])
|
||
GCC_CHECK_MATH_FUNC([logl])
|
||
GCC_CHECK_MATH_FUNC([clogf])
|
||
GCC_CHECK_MATH_FUNC([clog])
|
||
GCC_CHECK_MATH_FUNC([clogl])
|
||
GCC_CHECK_MATH_FUNC([log10f])
|
||
GCC_CHECK_MATH_FUNC([log10])
|
||
GCC_CHECK_MATH_FUNC([log10l])
|
||
GCC_CHECK_MATH_FUNC([clog10f])
|
||
GCC_CHECK_MATH_FUNC([clog10])
|
||
GCC_CHECK_MATH_FUNC([clog10l])
|
||
GCC_CHECK_MATH_FUNC([nextafterf])
|
||
GCC_CHECK_MATH_FUNC([nextafter])
|
||
GCC_CHECK_MATH_FUNC([nextafterl])
|
||
GCC_CHECK_MATH_FUNC([powf])
|
||
GCC_CHECK_MATH_FUNC([pow])
|
||
GCC_CHECK_MATH_FUNC([cpowf])
|
||
GCC_CHECK_MATH_FUNC([cpow])
|
||
GCC_CHECK_MATH_FUNC([cpowl])
|
||
GCC_CHECK_MATH_FUNC([roundf])
|
||
GCC_CHECK_MATH_FUNC([round])
|
||
GCC_CHECK_MATH_FUNC([roundl])
|
||
GCC_CHECK_MATH_FUNC([lroundf])
|
||
GCC_CHECK_MATH_FUNC([lround])
|
||
GCC_CHECK_MATH_FUNC([lroundl])
|
||
GCC_CHECK_MATH_FUNC([llroundf])
|
||
GCC_CHECK_MATH_FUNC([llround])
|
||
GCC_CHECK_MATH_FUNC([llroundl])
|
||
GCC_CHECK_MATH_FUNC([scalbnf])
|
||
GCC_CHECK_MATH_FUNC([scalbn])
|
||
GCC_CHECK_MATH_FUNC([scalbnl])
|
||
GCC_CHECK_MATH_FUNC([sinf])
|
||
GCC_CHECK_MATH_FUNC([sin])
|
||
GCC_CHECK_MATH_FUNC([sinl])
|
||
GCC_CHECK_MATH_FUNC([csinf])
|
||
GCC_CHECK_MATH_FUNC([csin])
|
||
GCC_CHECK_MATH_FUNC([csinl])
|
||
GCC_CHECK_MATH_FUNC([sinhf])
|
||
GCC_CHECK_MATH_FUNC([sinh])
|
||
GCC_CHECK_MATH_FUNC([sinhl])
|
||
GCC_CHECK_MATH_FUNC([csinhf])
|
||
GCC_CHECK_MATH_FUNC([csinh])
|
||
GCC_CHECK_MATH_FUNC([csinhl])
|
||
GCC_CHECK_MATH_FUNC([sqrtf])
|
||
GCC_CHECK_MATH_FUNC([sqrt])
|
||
GCC_CHECK_MATH_FUNC([sqrtl])
|
||
GCC_CHECK_MATH_FUNC([csqrtf])
|
||
GCC_CHECK_MATH_FUNC([csqrt])
|
||
GCC_CHECK_MATH_FUNC([csqrtl])
|
||
GCC_CHECK_MATH_FUNC([tanf])
|
||
GCC_CHECK_MATH_FUNC([tan])
|
||
GCC_CHECK_MATH_FUNC([tanl])
|
||
GCC_CHECK_MATH_FUNC([ctanf])
|
||
GCC_CHECK_MATH_FUNC([ctan])
|
||
GCC_CHECK_MATH_FUNC([ctanl])
|
||
GCC_CHECK_MATH_FUNC([tanhf])
|
||
GCC_CHECK_MATH_FUNC([tanh])
|
||
GCC_CHECK_MATH_FUNC([tanhl])
|
||
GCC_CHECK_MATH_FUNC([ctanhf])
|
||
GCC_CHECK_MATH_FUNC([ctanh])
|
||
GCC_CHECK_MATH_FUNC([ctanhl])
|
||
GCC_CHECK_MATH_FUNC([truncf])
|
||
GCC_CHECK_MATH_FUNC([trunc])
|
||
GCC_CHECK_MATH_FUNC([truncl])
|
||
GCC_CHECK_MATH_FUNC([erff])
|
||
GCC_CHECK_MATH_FUNC([erf])
|
||
GCC_CHECK_MATH_FUNC([erfcf])
|
||
GCC_CHECK_MATH_FUNC([erfc])
|
||
GCC_CHECK_MATH_FUNC([erfcl])
|
||
GCC_CHECK_MATH_FUNC([j0f])
|
||
GCC_CHECK_MATH_FUNC([j0])
|
||
GCC_CHECK_MATH_FUNC([j1f])
|
||
GCC_CHECK_MATH_FUNC([j1])
|
||
GCC_CHECK_MATH_FUNC([jnf])
|
||
GCC_CHECK_MATH_FUNC([jn])
|
||
GCC_CHECK_MATH_FUNC([jnl])
|
||
GCC_CHECK_MATH_FUNC([y0f])
|
||
GCC_CHECK_MATH_FUNC([y0])
|
||
GCC_CHECK_MATH_FUNC([y1f])
|
||
GCC_CHECK_MATH_FUNC([y1])
|
||
GCC_CHECK_MATH_FUNC([ynf])
|
||
GCC_CHECK_MATH_FUNC([yn])
|
||
GCC_CHECK_MATH_FUNC([ynl])
|
||
GCC_CHECK_MATH_FUNC([tgamma])
|
||
GCC_CHECK_MATH_FUNC([tgammaf])
|
||
GCC_CHECK_MATH_FUNC([lgamma])
|
||
GCC_CHECK_MATH_FUNC([lgammaf])
|
||
|
||
# Check for GFORTRAN_C99_1.1 funcs
|
||
GCC_CHECK_MATH_FUNC([cacos])
|
||
GCC_CHECK_MATH_FUNC([cacosf])
|
||
GCC_CHECK_MATH_FUNC([cacosh])
|
||
GCC_CHECK_MATH_FUNC([cacoshf])
|
||
GCC_CHECK_MATH_FUNC([cacoshl])
|
||
GCC_CHECK_MATH_FUNC([cacosl])
|
||
GCC_CHECK_MATH_FUNC([casin])
|
||
GCC_CHECK_MATH_FUNC([casinf])
|
||
GCC_CHECK_MATH_FUNC([casinh])
|
||
GCC_CHECK_MATH_FUNC([casinhf])
|
||
GCC_CHECK_MATH_FUNC([casinhl])
|
||
GCC_CHECK_MATH_FUNC([casinl])
|
||
GCC_CHECK_MATH_FUNC([catan])
|
||
GCC_CHECK_MATH_FUNC([catanf])
|
||
GCC_CHECK_MATH_FUNC([catanh])
|
||
GCC_CHECK_MATH_FUNC([catanhf])
|
||
GCC_CHECK_MATH_FUNC([catanhl])
|
||
GCC_CHECK_MATH_FUNC([catanl])
|
||
|
||
# On AIX, clog is present in libm as __clog
|
||
AC_CHECK_LIB([m],[__clog],[AC_DEFINE([HAVE_CLOG],[1],[libm includes clog])])
|
||
|
||
GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK2([copysign], [double])
|
||
GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK2([copysignl], [long double])
|
||
GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK1([fabs], [double])
|
||
GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK1([fabsl], [long double])
|
||
|
||
# Check whether the system has a working stat()
|
||
LIBGFOR_CHECK_WORKING_STAT
|
||
|
||
# Check whether __mingw_snprintf() is present
|
||
LIBGFOR_CHECK_MINGW_SNPRINTF
|
||
|
||
# Check whether libquadmath should be used
|
||
AC_ARG_ENABLE(libquadmath-support,
|
||
AS_HELP_STRING([--disable-libquadmath-support],
|
||
[disable libquadmath support for Fortran]),
|
||
ENABLE_LIBQUADMATH_SUPPORT=$enableval,
|
||
ENABLE_LIBQUADMATH_SUPPORT=yes)
|
||
enable_libquadmath_support=
|
||
if test "${ENABLE_LIBQUADMATH_SUPPORT}" = "no" ; then
|
||
enable_libquadmath_support=no
|
||
fi
|
||
|
||
# Check whether we have a __float128 type, depends on enable_libquadmath_support
|
||
LIBGFOR_CHECK_FLOAT128
|
||
|
||
# Check for GNU libc feenableexcept
|
||
AC_CHECK_LIB([m],[feenableexcept],[have_feenableexcept=yes AC_DEFINE([HAVE_FEENABLEEXCEPT],[1],[libm includes feenableexcept])])
|
||
|
||
# At least for glibc, clock_gettime is in librt. But don't
|
||
# pull that in if it still doesn't give us the function we want. This
|
||
# test is copied from libgomp, and modified to not link in -lrt as
|
||
# libgfortran calls clock_gettime via a weak reference if it's found
|
||
# in librt.
|
||
if test "$ac_cv_func_clock_gettime" = no; then
|
||
AC_CHECK_LIB(rt, clock_gettime,
|
||
[AC_DEFINE(HAVE_CLOCK_GETTIME_LIBRT, 1,
|
||
[Define to 1 if you have the `clock_gettime' function in librt.])])
|
||
fi
|
||
|
||
# Check for SysV fpsetmask
|
||
LIBGFOR_CHECK_FPSETMASK
|
||
AC_CHECK_TYPES([fp_except,fp_except_t], [], [], [[
|
||
#ifdef HAVE_IEEEFP_H
|
||
#include <ieeefp.h>
|
||
#endif
|
||
#include <math.h>
|
||
]])
|
||
AC_CHECK_TYPES([fp_rnd,fp_rnd_t], [], [], [[
|
||
#ifdef HAVE_IEEEFP_H
|
||
#include <ieeefp.h>
|
||
#endif
|
||
#include <math.h>
|
||
]])
|
||
|
||
# Check whether we have fpsetsticky or fpresetsticky
|
||
AC_CHECK_FUNC([fpsetsticky],[have_fpsetsticky=yes AC_DEFINE([HAVE_FPSETSTICKY],[1],[fpsetsticky is present])])
|
||
AC_CHECK_FUNC([fpresetsticky],[have_fpresetsticky=yes AC_DEFINE([HAVE_FPRESETSTICKY],[1],[fpresetsticky is present])])
|
||
|
||
# Check for AIX fp_trap and fp_enable
|
||
AC_CHECK_FUNC([fp_trap],[have_fp_trap=yes AC_DEFINE([HAVE_FP_TRAP],[1],[fp_trap is present])])
|
||
AC_CHECK_FUNC([fp_enable],[have_fp_enable=yes AC_DEFINE([HAVE_FP_ENABLE],[1],[fp_enable is present])])
|
||
|
||
# Check if _SOFT_FLOAT is defined
|
||
AC_CHECK_DEFINE([_SOFT_FLOAT],[have_soft_float=yes])
|
||
|
||
# Runs configure.host to set up necessary host-dependent shell variables.
|
||
# We then display a message about it, and propagate them through the
|
||
# build chain.
|
||
. ${srcdir}/configure.host
|
||
AC_MSG_NOTICE([FPU dependent file will be ${fpu_host}.h])
|
||
AC_MSG_NOTICE([Support for IEEE modules: ${ieee_support}])
|
||
FPU_HOST_HEADER=config/${fpu_host}.h
|
||
AC_SUBST(FPU_HOST_HEADER)
|
||
|
||
# Whether we will build the IEEE modules
|
||
AM_CONDITIONAL(IEEE_SUPPORT,[test x${ieee_support} = xyes])
|
||
AC_SUBST(IEEE_SUPPORT)
|
||
|
||
# Some targets require additional compiler options for IEEE compatibility.
|
||
IEEE_FLAGS="${ieee_flags}"
|
||
AC_SUBST(IEEE_FLAGS)
|
||
|
||
# Conditionalize the makefile for this target machine.
|
||
tmake_file_=
|
||
for f in ${tmake_file}
|
||
do
|
||
if test -f ${srcdir}/config/$f
|
||
then
|
||
tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
|
||
fi
|
||
done
|
||
tmake_file="${tmake_file_}"
|
||
AC_SUBST(tmake_file)
|
||
|
||
|
||
# Check for POSIX getpwuid_r
|
||
#
|
||
# There are two versions of getpwuid_r, the POSIX one with 5
|
||
# arguments, and another one with 4 arguments used by at least HP-UX
|
||
# 10.2.
|
||
if test "$ac_cv_func_getpwuid_r" = "yes"; then
|
||
AC_CACHE_CHECK([POSIX version of getpwuid_r with 5 arguments], libgfor_cv_posix_getpwuid_r, [
|
||
AC_LINK_IFELSE([AC_LANG_PROGRAM([
|
||
#include <stdio.h>
|
||
#include <sys/types.h>
|
||
#include <pwd.h>], [
|
||
getpwuid_r(0, NULL, NULL, 0, NULL);
|
||
])], [libgfor_cv_posix_getpwuid_r="yes"], [libgfor_cv_posix_getpwuid_r="no"])])
|
||
fi
|
||
if test "$libgfor_cv_posix_getpwuid_r" = "yes"; then
|
||
AC_DEFINE([HAVE_POSIX_GETPWUID_R], [1], [Define to 1 if we have POSIX getpwuid_r which takes 5 arguments.])
|
||
fi
|
||
|
||
|
||
# Check out attribute support.
|
||
LIBGFOR_CHECK_ATTRIBUTE_VISIBILITY
|
||
LIBGFOR_CHECK_ATTRIBUTE_ALIAS
|
||
|
||
# Check out atomic builtins support.
|
||
LIBGFOR_CHECK_ATOMIC_FETCH_ADD
|
||
|
||
# Check out #pragma weak.
|
||
LIBGFOR_GTHREAD_WEAK
|
||
|
||
# Check out weakref support.
|
||
LIBGFOR_CHECK_WEAKREF
|
||
|
||
# Various other checks on target
|
||
LIBGFOR_CHECK_UNLINK_OPEN_FILE
|
||
|
||
# Check whether line terminator is LF or CRLF
|
||
LIBGFOR_CHECK_CRLF
|
||
|
||
# Check whether we support AVX extensions
|
||
LIBGFOR_CHECK_AVX
|
||
|
||
# Check wether we support AVX2 extensions
|
||
LIBGFOR_CHECK_AVX2
|
||
|
||
# Check wether we support AVX512f extensions
|
||
LIBGFOR_CHECK_AVX512F
|
||
|
||
# Check for FMA3 extensions
|
||
LIBGFOR_CHECK_FMA3
|
||
|
||
# Check for FMA4 extensions
|
||
LIBGFOR_CHECK_FMA4
|
||
|
||
# Check if AVX128 works
|
||
LIBGFOR_CHECK_AVX128
|
||
|
||
# Determine what GCC version number to use in filesystem paths.
|
||
GCC_BASE_VER
|
||
|
||
AC_CACHE_SAVE
|
||
|
||
if test ${multilib} = yes; then
|
||
multilib_arg="--enable-multilib"
|
||
else
|
||
multilib_arg=
|
||
fi
|
||
|
||
# Write our Makefile and spec file.
|
||
AC_CONFIG_FILES([
|
||
Makefile
|
||
libgfortran.spec
|
||
])
|
||
AC_OUTPUT
|