diff options
author | Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> | 2010-11-16 21:23:19 +0000 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2010-11-16 22:23:19 +0100 |
commit | 1ec601bf9fb0fbc39b3a6cb90450500f857adae8 (patch) | |
tree | e26ad385cfada5f1f2c55f92057a0259de8b98d2 /libgfortran/configure | |
parent | 07078664fd6fdcb046cee4adf01ee697e56fcbd3 (diff) | |
download | gcc-1ec601bf9fb0fbc39b3a6cb90450500f857adae8.zip gcc-1ec601bf9fb0fbc39b3a6cb90450500f857adae8.tar.gz gcc-1ec601bf9fb0fbc39b3a6cb90450500f857adae8.tar.bz2 |
re PR fortran/32049 (Support on x86_64 also kind=16)
/
2010-11-13 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
Tobias Burnus <burnus@net-b.de>
PR fortran/32049
* Makefile.def: Add libquadmath; build it with language=fortran.
* configure.ac: Add libquadmath.
* Makefile.tpl: Handle multiple libs in check-[+language+].
* Makefile.in: Regenerate.
* configure: Regenerate.
libquadmath/
2010-11-13 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
Tobias Burnus <burnus@net-b.de>
PR fortran/32049
Initial implementation and checkin.
gcc/fortran/
2010-11-13 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
Tobias Burnus <burnus@net-b.de>
PR fortran/32049
* gfortranspec.c (find_spec_file): New function.
(lang_specific_driver): Try to find .spec file and use it.
* trans-io.c (iocall): Define
* IOCALL_X_REAL128/COMPLEX128(,write).
(gfc_build_io_library_fndecls): Build decl for __float128 I/O.
(transfer_expr): Call __float128 I/O functions.
* trans-types.c (gfc_init_kinds): Allow kind-16 belonging
to __float128.
gcc/testsuite/
2010-11-13 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
Tobias Burnus <burnus@net-b.de>
PR fortran/32049
* gfortran.dg/quad_1.f90: New.
* lib/gcc-defs.exp (gcc-set-multilib-library-path): Use also
compiler arguments.
* lib/gfortran.exp (gfortran_link_flags): Add libquadmath to
library search path; call gcc-set-multilib-library-path with
arguments such that libgfortran.spec is found.
(gfortran_init): Add path for libgfortran.spec to
GFORTRAN_UNDER_TEST.
libgomp/
2010-11-13 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
Tobias Burnus <burnus@net-b.de>
PR fortran/32049
* configure.ac:
* configure: Regenerate.
libgfortran/
2010-11-13 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
Tobias Burnus <burnus@net-b.de>
PR fortran/32049
* Makefile.am: Add missing pow_r16_i4.c, add transfer128.c,
link libquadmath, if used.
* acinclude.m4 (LIBGFOR_CHECK_FLOAT128): Add.
* configure.ac: Use it, touch spec file.
* gfortran.map: Add pow_r16_i4 and
transfer_(real,complex)128(,write) functions.
* intrinsics/cshift0.c (cshift0): Handle __float128 type.
* intrinsics/erfc_scaled_inc.c: Ditto.
* intrinsics/pack_generic.c (pack): Ditto
* intrinsics/spread_generic.c (spread): Ditto.
* intrinsics/unpack_generic.c (unpack1): Ditto.
* io/read.c (convert_real): Ditto.
* io/transfer.c: Update comments.
* io/transfer128.c: New file.
* io/write_float.def (write_float): Handle __float128 type.
* libgfortran.h: #include quadmath_weak.h, define __builtin_infq
and nanq.
* m4/mtype.m4: Handle __float128 type.
* runtime/in_pack_generic.c (internal_pack): Ditto.
* runtime/in_unpack_generic.c (internal_unpack): Ditto.
* kinds-override.h: New file.
* libgfortran.spec.in: Ditto.
* generated/pow_r16_i4.c: Generated.
* Makefile.in: Regenerate.
* configure: Regenerate.
* config.h: Regenerate.
* bessel_r10.c: Regenerate.
* bessel_r16.c: Regenerate.
* bessel_r4.c: Regenerate.
* bessel_r8.c: Regenerate.
* exponent_r16.c: Regenerate.
* fraction_r16.c: Regenerate.
* nearest_r16.c: Regenerate.
* norm2_r10.c: Regenerate.
* norm2_r16.c: Regenerate.
* norm2_r4.c: Regenerate.
* norm2_r8.c: Regenerate.
* rrspacing_r16.c: Regenerate.
* set_exponent_r16.c: Regenerate.
* spacing_r16.c: Regenerate.
Co-Authored-By: Tobias Burnus <burnus@net-b.de>
From-SVN: r166825
Diffstat (limited to 'libgfortran/configure')
-rwxr-xr-x | libgfortran/configure | 148 |
1 files changed, 144 insertions, 4 deletions
diff --git a/libgfortran/configure b/libgfortran/configure index cf2b587..a9d8092 100755 --- a/libgfortran/configure +++ b/libgfortran/configure @@ -597,12 +597,19 @@ ac_includes_default="\ # include <unistd.h> #endif" +ac_c_werror_flag= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS IEEE_FLAGS FPU_HOST_HEADER +LIBGFOR_BUILD_QUAD_FALSE +LIBGFOR_BUILD_QUAD_TRUE +LIBQUADINCLUDE +LIBQUADLIB_DEP +LIBQUADLIB +LIBQUADSPEC extra_ldflags_libgfortran ac_ct_FC FCFLAGS @@ -3408,6 +3415,9 @@ esac +# Create a spec file, so that compile/link tests don't fail +test -f libgfortran.spec || touch libgfortran.spec + # 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 @@ -11362,7 +11372,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11365 "configure" +#line 11375 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11468,7 +11478,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11471 "configure" +#line 11481 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -24286,6 +24296,131 @@ $as_echo "#define HAVE_BROKEN_POWF 1" >>confdefs.h fi +# Check whether we have a __float128 type + + LIBQUADSPEC= + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we have a usable __float128 type" >&5 +$as_echo_n "checking whether we have a usable __float128 type... " >&6; } +if test "${libgfor_cv_have_float128+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + if test x$gcc_no_link = xyes; then + as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +fi +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* no header */ + +int +main () +{ + + typedef _Complex float __attribute__((mode(TC))) __complex128; + + __float128 x; + x = __builtin_huge_valq() - 2.e1000Q; + + __complex128 z1, z2; + z1 = x; + z2 = 2.Q; + + z1 /= z2; + z1 /= 7.Q; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + libgfor_cv_have_float128=yes +else + libgfor_cv_have_float128=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgfor_cv_have_float128" >&5 +$as_echo "$libgfor_cv_have_float128" >&6; } + + if test "x$libgfor_cv_have_float128" = xyes; then + +$as_echo "#define HAVE_FLOAT128 1" >>confdefs.h + + + ac_xsave_c_werror_flag=$ac_c_werror_flag + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether --as-needed works" >&5 +$as_echo_n "checking whether --as-needed works... " >&6; } +if test "${libgfor_cv_have_as_needed+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -Wl,--as-needed -lm -Wl,--no-as-needed" + libgfor_cv_have_as_needed=no + +ac_c_werror_flag=yes + if test x$gcc_no_link = xyes; then + as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +fi +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + libgfor_cv_have_as_needed=yes +else + libgfor_cv_have_as_needed=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + ac_c_werror_flag=$ac_xsave_c_werror_flag + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgfor_cv_have_as_needed" >&5 +$as_echo "$libgfor_cv_have_as_needed" >&6; } + + if test "x$libgfor_cv_have_as_needed" = xyes; then + LIBQUADSPEC="%{static-libgfortran:--as-needed} -lquadmath %{static-libgfortran:--no-as-needed}" + else + LIBQUADSPEC="-lquadmath" + fi + if test -f ../libquadmath/libquadmath.la; then + LIBQUADLIB=../libquadmath/libquadmath.la + LIBQUADLIB_DEP=../libquadmath/libquadmath.la + LIBQUADINCLUDE='-I$(srcdir)/../libquadmath' + else + LIBQUADLIB="-lquadmath" + LIBQUADLIB_DEP= + LIBQUADINCLUDE= + fi + fi + + + + + + + if test "x$libgfor_cv_have_float128" = xyes; then + LIBGFOR_BUILD_QUAD_TRUE= + LIBGFOR_BUILD_QUAD_FALSE='#' +else + LIBGFOR_BUILD_QUAD_TRUE='#' + LIBGFOR_BUILD_QUAD_FALSE= +fi + + + # Check for GNU libc feenableexcept { $as_echo "$as_me:${as_lineno-$LINENO}: checking for feenableexcept in -lm" >&5 $as_echo_n "checking for feenableexcept in -lm... " >&6; } @@ -24832,8 +24967,8 @@ else multilib_arg= fi -# Write our Makefile. -ac_config_files="$ac_config_files Makefile" +# Write our Makefile and spec file. +ac_config_files="$ac_config_files Makefile libgfortran.spec" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -24968,6 +25103,10 @@ if test -z "${LIBGFOR_USE_SYMVER_SUN_TRUE}" && test -z "${LIBGFOR_USE_SYMVER_SUN as_fn_error "conditional \"LIBGFOR_USE_SYMVER_SUN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${LIBGFOR_BUILD_QUAD_TRUE}" && test -z "${LIBGFOR_BUILD_QUAD_FALSE}"; then + as_fn_error "conditional \"LIBGFOR_BUILD_QUAD\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi : ${CONFIG_STATUS=./config.status} ac_write_fail=0 @@ -25961,6 +26100,7 @@ do "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "gstdint.h") CONFIG_COMMANDS="$CONFIG_COMMANDS gstdint.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "libgfortran.spec") CONFIG_FILES="$CONFIG_FILES libgfortran.spec" ;; *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac |