diff options
author | Jeff Law <law@gcc.gnu.org> | 1998-01-31 18:37:08 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1998-01-31 18:37:08 -0700 |
commit | 81fea2b1d147752f431b46c08f4c12a18a2d78bc (patch) | |
tree | 4b30cdf598ee6a8b24903fba52bb3e0c06bf459b /libf2c/configure.in | |
parent | 0dfb6849ef1d4c8b5bf178d7add69ab297fab8fa (diff) | |
download | gcc-81fea2b1d147752f431b46c08f4c12a18a2d78bc.zip gcc-81fea2b1d147752f431b46c08f4c12a18a2d78bc.tar.gz gcc-81fea2b1d147752f431b46c08f4c12a18a2d78bc.tar.bz2 |
* Previous contents of gcc/f/runtime moved into toplevel
"libf2c" directory.
From-SVN: r17568
Diffstat (limited to 'libf2c/configure.in')
-rw-r--r-- | libf2c/configure.in | 391 |
1 files changed, 391 insertions, 0 deletions
diff --git a/libf2c/configure.in b/libf2c/configure.in new file mode 100644 index 0000000..1c93ff3 --- /dev/null +++ b/libf2c/configure.in @@ -0,0 +1,391 @@ +# 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) +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/.. -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_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: |