mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-29 18:55:40 +08:00
56a0044b23
From-SVN: r18188
397 lines
12 KiB
Plaintext
397 lines
12 KiB
Plaintext
# Process this file with autoconf to produce a configure script.
|
|
# Copyright (C) 1995, 1997 Free Software Foundation, Inc.
|
|
# Contributed by Dave Love (d.love@dl.ac.uk).
|
|
#
|
|
#This file is part of GNU Fortran.
|
|
#
|
|
#GNU Fortran is free software; you can redistribute it and/or modify
|
|
#it under the terms of the GNU General Public License as published by
|
|
#the Free Software Foundation; either version 2, or (at your option)
|
|
#any later version.
|
|
#
|
|
#GNU Fortran is distributed in the hope that it will be useful,
|
|
#but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
#GNU General Public License for more details.
|
|
#
|
|
#You should have received a copy of the GNU General Public License
|
|
#along with GNU Fortran; see the file COPYING. If not, write to
|
|
#the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
|
#02111-1307, USA.
|
|
|
|
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"
|
|
else
|
|
CC="../../xgcc -B../../xgcc/"
|
|
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
|
|
fi
|
|
|
|
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.
|
|
|
|
dnl Checks for header files.
|
|
# Sanity check for the cross-compilation case:
|
|
AC_CHECK_HEADER(stdio.h,:,
|
|
[AC_MSG_ERROR([Can't find stdio.h.
|
|
You must have a usable C system for the target already installed, at least
|
|
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 <sys/types.h>
|
|
#include <unistd.h>
|
|
#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 <stdio.h>
|
|
#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
|
|
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 <stdio.h>],
|
|
[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)
|
|
|
|
# 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 <stdio.h>
|
|
/* 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
|
|
ac_cpp="$late_ac_cpp -I$srcdir/../gcc/f -I../../gcc -I$srcdir/../gcc -I$srcdir/../gcc/config"
|
|
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
|
|
ac_cpp="$late_ac_cpp -I$srcdir/../gcc/f -I../../gcc -I$srcdir/../gcc -I$srcdir/../gcc/config"
|
|
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)
|
|
|
|
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 "
|
|
dnl comment-end: ""
|
|
dnl comment-start-skip: "\\bdnl\\b\\s *"
|
|
dnl End:
|