aboutsummaryrefslogtreecommitdiff
path: root/gcc/f/runtime/configure.in
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/f/runtime/configure.in')
-rw-r--r--gcc/f/runtime/configure.in371
1 files changed, 371 insertions, 0 deletions
diff --git a/gcc/f/runtime/configure.in b/gcc/f/runtime/configure.in
new file mode 100644
index 00000000000..d2bcebae865
--- /dev/null
+++ b/gcc/f/runtime/configure.in
@@ -0,0 +1,371 @@
+# 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 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
+dnl AC_C_CROSS
+dnl Gives misleading `(cached)' message from the check.
+if test "$CROSS";then
+ ac_cv_c_cross=yes
+else
+ 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)
+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)
+
+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).
+AC_CHECK_FUNC(fstat)
+AC_MSG_CHECKING([need for NON_UNIX_STDIO])
+if test $g77_cv_sys_cygwin32 = 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; 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/.. -I../.. -I$srcdir/../.. -I$srcdir/../../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/.. -I../.. -I$srcdir/../.. -I$srcdir/../../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_OUTPUT(Makefile ../../include/f2c.h:f2c.h.in libI77/Makefile libF77/Makefile libU77/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: