X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=libf2c%2Fconfigure.in;h=ce3dcdc5092e20b137b3c1bc895d656db4c7c9c2;hb=19bec0b94ee74b051d7f21c33e47b6b33bf1e77b;hp=3320f483b8d12674afd3d1ab6afb99e6f9a5494a;hpb=084a724c9ac96e3b1fde301e1ba1820b8bc74674;p=pf3gnuchains%2Fgcc-fork.git diff --git a/libf2c/configure.in b/libf2c/configure.in index 3320f483b8d..ce3dcdc5092 100644 --- a/libf2c/configure.in +++ b/libf2c/configure.in @@ -1,5 +1,5 @@ # Process this file with autoconf to produce a configure script. -# Copyright (C) 1995, 1997 Free Software Foundation, Inc. +# Copyright (C) 1995, 1997, 1998, 1999 Free Software Foundation, Inc. # Contributed by Dave Love (d.love@dl.ac.uk). # #This file is part of GNU Fortran. @@ -19,47 +19,88 @@ #the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #02111-1307, USA. +AC_PREREQ(2.13) AC_INIT(libF77/Version.c) -AC_REVISION(1.10) - -dnl AC_C_CROSS -dnl Gives misleading `(cached)' message from the check. -if test "$CROSS";then - if test "$CC_FOR_TARGET"; then - CC="$CC_FOR_TARGET" +if test "${srcdir}" = "." ; then + if test "${with_target_subdir}" != "." ; then + topsrcdir=${with_multisrctop}../.. else - CC="../../xgcc -B../../xgcc/" + topsrcdir=${with_multisrctop}.. fi - ac_cv_c_cross=yes else - dnl Checks for programs. - # For g77 we'll set CC to point at the built gcc, but this will get it into - # the makefiles - AC_PROG_CC - ac_cv_c_cross=no + topsrcdir=${srcdir}/.. +fi +dnl This is needed for a multilibbed build in the source tree so +dnl that install-sh and config.sub get found. +AC_CONFIG_AUX_DIR($topsrcdir) + +# If the language specific compiler does not exist, but the "gcc" directory +# does, we do not build anything. Note, $r is set by the top-level Makefile. +# Note that when we look for the compiler, we search both with and without +# extension to handle cross and canadian cross builds. +compiler_name=f771 +rm -f skip-this-dir +AC_MSG_CHECKING(if compiler $compiler_name has been built) +AC_CACHE_VAL(g77_cv_compiler_exists, +[g77_cv_compiler_exists=yes +if test -n "$r"; then + if test -d "$r"/gcc; then + if test -f "$r"/gcc/$compiler_name \ + || test -f "$r"/gcc/$compiler_name.exe; then + true + else + g77_cv_compiler_exists=no + echo "rm -f config.cache config.log multilib.out" > skip-this-dir + fi + fi +fi +]) +AC_MSG_RESULT($g77_cv_compiler_exists) +if test x$g77_cv_compiler_exists = xno +then + rm -f Makefile conftest* confdefs* core + exit 0 fi +dnl Checks for programs. + +dnl FIXME AC_PROG_CC wants CC to be able to link things, but it may +dnl not be able to. +define([AC_PROG_CC_WORKS],[]) + +# We need AC_EXEEXT to keep automake happy in cygnus mode. However, +# at least currently, we never actually build a program, so we never +# need to use $(EXEEXT). Moreover, the test for EXEEXT normally +# fails, because we are probably configuring with a cross compiler +# which cant create executables. So we include AC_EXEEXT to keep +# automake happy, but we dont execute it, since we dont care about +# the result. +if false; then + # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands + # to nothing, so nothing would remain between `then' and `fi' if it + # were not for the `:' below. + : + AC_EXEEXT +fi + +# For g77 we'll set CC to point at the built gcc, but this will get it into +# the makefiles + +AC_PROG_CC +AM_PROG_LIBTOOL + dnl These should be inherited in the recursive make, but ensure they are dnl defined: test "$AR" || AR=ar AC_SUBST(AR) if test "$RANLIB"; then : AC_SUBST(RANLIB) -dnl Make sure that RANLIB_TEST is set also. - if test -z "$RANLIB_TEST"; then - RANLIB_TEST=true - fi else - RANLIB_TEST=true AC_PROG_RANLIB fi -AC_SUBST(RANLIB_TEST) - -dnl not needed for g77? -dnl AC_PROG_MAKE_SET - -dnl Checks for libraries. +AC_PROG_INSTALL +AC_PROG_MAKE_SET dnl Checks for header files. # Sanity check for the cross-compilation case: @@ -70,334 +111,67 @@ including headers and, preferably, the library, before you can configure the G77 runtime system. If necessary, install gcc now with \`LANGUAGES=c', then the target library, then build with \`LANGUAGES=f77'.])]) -AC_HEADER_STDC -dnl We could do this if we didn't know we were using gcc -dnl AC_MSG_CHECKING(for prototype-savvy compiler) -dnl AC_CACHE_VAL(g77_cv_sys_proto, -dnl [AC_TRY_LINK(, -dnl dnl looks screwy because TRY_LINK expects a function body -dnl [return 0;} int foo (int * bar) {], -dnl g77_cv_sys_proto=yes, -dnl [g77_cv_sys_proto=no -dnl AC_DEFINE(KR_headers)])]) -dnl AC_MSG_RESULT($g77_cv_sys_proto) - -dnl for U77 -dnl AC_CHECK_HEADERS(unistd.h) - -AC_MSG_CHECKING(for posix) -AC_CACHE_VAL(g77_cv_header_posix, - AC_EGREP_CPP(yes, - [#include -#include -#ifdef _POSIX_VERSION - yes -#endif -], - g77_cv_header_posix=yes, - g77_cv_header_posix=no)) -AC_MSG_RESULT($g77_cv_header_posix) - -# We can rely on the GNU library being posix-ish. I guess checking the -# header isn't actually like checking the functions, though... -AC_MSG_CHECKING(for GNU library) -AC_CACHE_VAL(g77_cv_lib_gnu, - AC_EGREP_CPP(yes, - [#include -#ifdef __GNU_LIBRARY__ - yes -#endif -], - g77_cv_lib_gnu=yes, g77_cv_lib_gnu=no)) -AC_MSG_RESULT($g77_cv_lib_gnu) - -# Apparently cygwin needs to be special-cased. -AC_MSG_CHECKING([for cyg\`win'32]) -AC_CACHE_VAL(g77_cv_sys_cygwin32, - AC_EGREP_CPP(yes, - [#ifdef __CYGWIN32__ - yes -#endif -], - g77_cv_sys_cygwin32=yes, - g77_cv_sys_cygwin32=no)) -AC_MSG_RESULT($g77_cv_sys_cygwin32) - -# ditto for mingw32. -AC_MSG_CHECKING([for mingw32]) -AC_CACHE_VAL(g77_cv_sys_mingw32, - AC_EGREP_CPP(yes, - [#ifdef __MINGW32__ - yes -#endif -], - g77_cv_sys_mingw32=yes, - g77_cv_sys_mingw32=no)) -AC_MSG_RESULT($g77_cv_sys_mingw32) - - -AC_CHECK_HEADER(fcntl.h, - test $g77_cv_header_posix = yes && AC_DEFINE(_POSIX_SOURCE), - AC_DEFINE(NO_FCNTL) AC_DEFINE(OPEN_DECL)) - -dnl Checks for typedefs, structures, and compiler characteristics. -AC_C_CONST -AC_TYPE_SIZE_T - -dnl Checks for library functions. -AC_TYPE_SIGNAL -# we'll get atexit by default -if test $ac_cv_header_stdc != yes; then -AC_CHECK_FUNC(atexit, - AC_DEFINE(onexit,atexit),dnl just in case - [AC_DEFINE(NO_ONEXIT) - AC_CHECK_FUNC(onexit,, - [AC_CHECK_FUNC(on_exit, - AC_DEFINE(onexit,on_exit),)])]) -else true +dnl Checks for g77 integer types built into gcc's C front end. +AC_MSG_CHECKING(for built-in g77 integer types) +AC_CACHE_VAL(libf2c_cv_has_g77_builtin_types, +[AC_TRY_COMPILE(, + [__g77_integer g77i; +__g77_uinteger g77ui; +__g77_longint g77l; +__g77_ulongint g77ul;], + libf2c_cv_has_g77_builtin_types=yes, + libf2c_cv_has_g77_builtin_types=no)]) +AC_MSG_RESULT($libf2c_cv_has_g77_builtin_types) +if test $libf2c_cv_has_g77_builtin_types = no; then + AC_MSG_ERROR([gcc doesn't define all of the built in types __g77_integer, +__g77_uinteger, __g77_longint, and __g77_ulongint. You may not be using +a new enough version of gcc, or your target may not have type sizes which +accommodate those types.]) fi -# This should always succeed on unix. -# Apparently positive result on cygwin loses re. NON_UNIX_STDIO -# (as of cygwin b18). Likewise on mingw. -AC_CHECK_FUNC(fstat) -AC_MSG_CHECKING([need for NON_UNIX_STDIO]) -if test $g77_cv_sys_cygwin32 = yes \ - || test $g77_cv_sys_mingw32 = yes \ - || test $ac_cv_func_fstat = no; then - AC_MSG_RESULT(yes) - AC_DEFINE(NON_UNIX_STDIO) -else - AC_MSG_RESULT(no) -fi - -# This is necessary for e.g. Linux: -AC_MSG_CHECKING([for necessary members of struct FILE]) -AC_CACHE_VAL(g77_cv_struct_FILE, -[AC_TRY_COMPILE([#include ], - [FILE s; s._ptr; s._base; s._flag;],g77_cv_struct_FILE=yes, - g77_cv_struct_FILE=no)])dnl -AC_MSG_RESULT($g77_cv_struct_FILE) -if test $g77_cv_struct_FILE = no; then - AC_DEFINE(MISSING_FILE_ELEMS) -fi - -dnl perhaps should check also for remainder -dnl Unfortunately, the message implies we're just checking for -lm... -AC_CHECK_LIB(m,drem,AC_DEFINE(IEEE_drem)) - -dnl for U77: -dnl AC_CHECK_FUNCS(symlink getcwd lstat) -dnl test $ac_cv_func_symlink = yes && SYMLNK=symlnk_.o -dnl test $ac_cv_func_lstat = yes && SYMLNK="$SYMLNK lstat_.o" -dnl AC_SUBST(SYMLNK) - -AC_CHECK_FUNCS(tempnam) - -# posix will guarantee the right behaviour for sprintf, else we can't be -# sure; HEADER_STDC wouldn't be the right check in sunos4, for instance. -# However, on my sunos4/gcc setup unistd.h leads us wrongly to believe -# we're posix-conformant, so always do the test. -AC_MSG_CHECKING(for ansi/posix sprintf result) -dnl This loses if included as an argument to AC_CACHE_VAL because the -dnl changequote doesn't take effect and the [] vanish. -dnl fixme: use cached value -AC_TRY_RUN(changequote(<<, >>)dnl - <<#include - /* does sprintf return the number of chars transferred? */ - main () {char foo[2]; (sprintf(foo, "1") == 1) ? exit(0) : exit(1);} ->>changequote([, ]), - g77_cv_sys_sprintf_ansi=yes, - g77_cv_sys_sprintf_ansi=no, - g77_cv_sys_sprintf_ansi=no) -AC_CACHE_VAL(g77_cv_sys_sprintf_ansi, - g77_cv_sys_sprintf_ansi=$g77_cv_sys_sprintf_ansi) -dnl We get a misleading `(cached)' message... -if test $ac_cv_c_cross = no; then - AC_MSG_RESULT($g77_cv_sys_sprintf_ansi) -else - AC_MSG_RESULT([can't tell -- assuming no]) -fi -# The cygwin patch takes steps to avoid defining USE_STRLEN here -- I don't -# understand why. -if test $g77_cv_sys_sprintf_ansi != yes; then - AC_DEFINE(USE_STRLEN) -fi - -# define NON_ANSI_RW_MODES on unix (can't hurt) -AC_MSG_CHECKING(NON_ANSI_RW_MODES) -AC_EGREP_CPP(yes, -[#ifdef unix - yes -#endif -#ifdef __unix - yes -#endif -#ifdef __unix__ - yes -#endif -], is_unix=yes, is_unix=no) -if test $g77_cv_sys_cygwin32 = yes || test $g77_cv_sys_mingw32 = yes; then - AC_MSG_RESULT(no) -else - if test $is_unix = yes; then - AC_DEFINE(NON_ANSI_RW_MODES) - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no) - fi -fi - -# We have to firkle with the info in hconfig.h to figure out suitable types -# (via com.h). proj.h and com.h are in $srcdir/.., config.h which they need -# is in ../.. and the config files are in $srcdir/../../config. -AC_MSG_CHECKING(f2c integer type) -late_ac_cpp=$ac_cpp -if test "$srcdir" = . ; then - ac_cpp="$late_ac_cpp -I../../gcc/f -I../../gcc -I../../gcc/config" -else - ac_cpp="$late_ac_cpp -I$srcdir/../gcc/f -I$srcdir/../gcc -I$srcdir/../gcc/config" -fi -AC_CACHE_VAL(g77_cv_sys_f2cinteger, -AC_EGREP_CPP(F2C_INTEGER=long int, -[#include "proj.h" -#define FFECOM_DETERMINE_TYPES 1 -#include "com.h" -#if FFECOM_f2cINTEGER == FFECOM_f2ccodeLONG -F2C_INTEGER=long int -#elif FFECOM_f2cINTEGER == FFECOM_f2ccodeINT -F2C_INTEGER=int -#else -# error "Cannot find a suitable type for F2C_INTEGER" -#endif -], - g77_cv_sys_f2cinteger="long int",) -if test "$g77_cv_sys_f2cinteger" = ""; then - AC_EGREP_CPP(F2C_INTEGER=int, -[#include "proj.h" -#define FFECOM_DETERMINE_TYPES 1 -#include "com.h" -#if FFECOM_f2cINTEGER == FFECOM_f2ccodeLONG -F2C_INTEGER=long int -#elif FFECOM_f2cINTEGER == FFECOM_f2ccodeINT -F2C_INTEGER=int -#else -# error "Cannot find a suitable type for F2C_INTEGER" -#endif -], - g77_cv_sys_f2cinteger=int,) -fi -if test "$g77_cv_sys_f2cinteger" = ""; then - AC_MSG_RESULT("") - AC_MSG_ERROR([Can't determine type for f2c integer; config.log may help.]) -fi -) -AC_MSG_RESULT($g77_cv_sys_f2cinteger) -F2C_INTEGER=$g77_cv_sys_f2cinteger -ac_cpp=$late_ac_cpp -AC_SUBST(F2C_INTEGER) - -AC_MSG_CHECKING(f2c long int type) -late_ac_cpp=$ac_cpp -if test "$srcdir" = . ; then - ac_cpp="$late_ac_cpp -I../../gcc/f -I../../gcc -I../../gcc/config" -else - ac_cpp="$late_ac_cpp -I$srcdir/../gcc/f -I$srcdir/../gcc -I$srcdir/../gcc/config" -fi -AC_CACHE_VAL(g77_cv_sys_f2clongint, -AC_EGREP_CPP(F2C_LONGINT=long int, -[#include "proj.h" -#define FFECOM_DETERMINE_TYPES 1 -#include "com.h" -#if FFECOM_f2cLONGINT == FFECOM_f2ccodeLONG -F2C_LONGINT=long int -#elif FFECOM_f2cLONGINT == FFECOM_f2ccodeLONGLONG -F2C_LONGINT=long long int -#else -# error "Cannot find a suitable type for F2C_LONGINT" -#endif -], - g77_cv_sys_f2clongint="long int",) -if test "$g77_cv_sys_f2clongint" = ""; then - AC_EGREP_CPP(F2C_LONGINT=long long int, -[#include "proj.h" -#define FFECOM_DETERMINE_TYPES 1 -#include "com.h" -#if FFECOM_f2cLONGINT == FFECOM_f2ccodeLONG -F2C_LONGINT=long int -#elif FFECOM_f2cLONGINT == FFECOM_f2ccodeLONGLONG -F2C_LONGINT=long long int -#else -# error "Cannot find a suitable type for F2C_LONGINT" -#endif -], - g77_cv_sys_f2clongint="long long int",) -fi -if test "$g77_cv_sys_f2clongint" = ""; then - AC_MSG_RESULT("") - AC_MSG_ERROR([Can't determine type for f2c long int; config.log may help.]) -fi -) -AC_MSG_RESULT($g77_cv_sys_f2clongint) -F2C_LONGINT=$g77_cv_sys_f2clongint -ac_cpp=$late_ac_cpp -AC_SUBST(F2C_LONGINT) - -dnl maybe check for drem/remainder - -AC_SUBST(CROSS) - - -# This EOF_CHAR is a misfeature on unix. -AC_DEFINE(NO_EOF_CHAR_CHECK) - -AC_DEFINE(Skip_f2c_Undefs) - -dnl Craig had these in f2c.h, but they're only relevant for building libf2c -dnl anyway. - -dnl For GNU Fortran (g77), we always enable the following behaviors for -dnl libf2c, to make things easy on the programmer. The alternate -dnl behaviors have their uses, and g77 might provide them as compiler, -dnl rather than library, options, so only a single copy of a shared libf2c -dnl need be built for a system. - -dnl This makes unformatted I/O more consistent in relation to other -dnl systems. It is not required by the F77 standard. - -AC_DEFINE(Pad_UDread) - -dnl This makes ERR= and IOSTAT= returns work properly in disk-full -dnl situations, making things work more as expected. It slows things -dnl down, so g77 will probably someday choose the original implementation -dnl on a case-by-case basis when it can be shown to not be necessary -dnl (e.g. no ERR= or IOSTAT=) or when it is given the appropriate -dnl compile-time option or, perhaps, source-code directive. - -dnl AC_DEFINE(ALWAYS_FLUSH) - -dnl Most Fortran implementations do this, so to make it easier -dnl to compare the output of g77-compiled programs to those compiled -dnl by most other compilers, tell libf2c to put leading zeros in -dnl appropriate places on output - -AC_DEFINE(WANT_LEAD_0) - # avoid confusion in case the `makefile's from the f2c distribution have # got put here test -f libF77/makefile && mv libF77/makefile libF77/makefile.ori test -f libI77/makefile && mv libI77/makefile libI77/makefile.ori test -f libU77/makefile && mv libU77/makefile libU77/makefile.ori -AC_CONFIG_SUBDIRS(libU77) -AC_OUTPUT(Makefile f2c.h libI77/Makefile libF77/Makefile) +# Get the version trigger filename from the toplevel +if [[ "${with_gcc_version_trigger+set}" = set ]]; then + gcc_version_trigger=$with_gcc_version_trigger + gcc_version=`grep version_string ${gcc_version_trigger} | sed -e 's/.*\"\([[^ \"]]*\)[[ \"]].*/\1/'` +else + gcc_version_trigger= + gcc_version=UNKNOWN +fi + +AC_SUBST(gcc_version) +AC_SUBST(gcc_version_trigger) +AC_CANONICAL_SYSTEM +AC_SUBST(target_alias) +AC_CONFIG_SUBDIRS(libU77 libI77 libF77) +# Do Makefile first since g2c.h depends on it and shouldn't get an +# earlier timestamp. Of course, it does when the multilib gunk below +# edits Makefile, sigh; see additional touch below. +AC_OUTPUT(Makefile g2c.h:g2c.hin, + [test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h +if test -n "$CONFIG_FILES"; then + if test -n "${with_target_subdir}"; then + # FIXME: We shouldn't need to set ac_file + ac_file=Makefile + . ${topsrcdir}/config-ml.in + touch g2c.h # to keep it more recent than Makefile + fi +fi], +srcdir=${srcdir} +host=${host} +target=${target} +with_target_subdir=${with_target_subdir} +with_multisubdir=${with_multisubdir} +ac_configure_args="--enable-multilib ${ac_configure_args}" +CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} +topsrcdir=${topsrcdir} +) -dnl We might have configuration options to: -dnl * allow non-standard string concatenation (use libF77 s_catow.o, -dnl not s_cat.o) -dnl * change unit preconnexion in libI77/err.c (f_init.c) -dnl * -DALWAYS_FLUSH in libI77 -dnl * -DOMIT_BLANK_CC in libI77 dnl Local Variables: dnl comment-start: "dnl "