home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / g77-0.5.15-src.tgz / tar.out / fsf / g77 / f / runtime / configure.in < prev    next >
Text File  |  1996-09-28  |  9KB  |  272 lines

  1. # Process this file with autoconf to produce a configure script.
  2. #   Copyright (C) 1995 Free Software Foundation, Inc.
  3. #   Contributed by Dave Love (d.love@dl.ac.uk).
  4. #
  5. #This file is part of GNU Fortran.
  6. #
  7. #GNU Fortran is free software; you can redistribute it and/or modify
  8. #it under the terms of the GNU General Public License as published by
  9. #the Free Software Foundation; either version 2, or (at your option)
  10. #any later version.
  11. #
  12. #GNU Fortran is distributed in the hope that it will be useful,
  13. #but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. #GNU General Public License for more details.
  16. #
  17. #You should have received a copy of the GNU General Public License
  18. #along with GNU Fortran; see the file COPYING.  If not, write to
  19. #the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  20.  
  21. AC_INIT(libF77/Version.c)
  22.  
  23. AC_REVISION(1.10)
  24.  
  25. dnl Checks for programs.
  26. # For g77 we'll set CC to point at the built gcc, but this will get it into
  27. # the makefiles
  28. AC_PROG_CC
  29. dnl AC_C_CROSS
  30. dnl Gives misleading `(cached)' message from the check.
  31. if test "$CROSS";then
  32.   ac_cv_c_cross=yes
  33. else
  34.   ac_cv_c_cross=no
  35. fi
  36.  
  37. dnl for g77 build maybe use $(RANLIB_FOR_TARGET) always (like wise AR)
  38. if test "$ac_cv_c_cross" = yes; then
  39.   RANLIB=$RANLIB_FOR_TARGET
  40.   AR=$AR_FOR_TARGET
  41.   AC_SUBST(RANLIB)
  42. else
  43.   AC_PROG_RANLIB
  44.   AR=ar
  45.   RANLIB_TEST_FOR_TARGET=true
  46. fi
  47. AC_SUBST(AR)
  48. AC_SUBST(AR_FOR_TARGET)
  49. AC_SUBST(RANLIB_FOR_TARGET)
  50. AC_SUBST(RANLIB_TEST_FOR_TARGET)
  51. dnl not needed for g77?
  52. dnl AC_PROG_MAKE_SET
  53.  
  54. dnl Checks for libraries.
  55.  
  56. dnl Checks for header files.
  57. AC_HEADER_STDC
  58. dnl We could do this if we didn't know we were using gcc
  59. dnl AC_MSG_CHECKING(for prototype-savvy compiler)
  60. dnl AC_CACHE_VAL(ac_cv_sys_proto,                
  61. dnl   [AC_TRY_LINK(,                             
  62. dnl dnl looks screwy because TRY_LINK expects a function body
  63. dnl    [return 0;} int foo (int * bar) {],       
  64. dnl    ac_cv_sys_proto=yes,                      
  65. dnl    [ac_cv_sys_proto=no                       
  66. dnl     AC_DEFINE(KR_headers)])])                
  67. dnl AC_MSG_RESULT($ac_cv_sys_proto)              
  68.  
  69. dnl for U77
  70. dnl AC_CHECK_HEADERS(unistd.h)
  71.  
  72. AC_MSG_CHECKING(for posix)
  73. AC_CACHE_VAL(ac_cv_header_posix,
  74.   AC_EGREP_CPP(yes,
  75.   [#include <sys/types.h>
  76. #include <unistd.h>
  77. #ifdef _POSIX_VERSION
  78.   yes
  79. #endif
  80. ], 
  81.   ac_cv_header_posix=yes,
  82.   ac_cv_header_posix=no))
  83. AC_MSG_RESULT($ac_cv_header_posix)
  84.  
  85. # We can rely on the GNU library being posix-ish.  I guess checking the 
  86. # header isn't actually like checking the functions, though...
  87. AC_MSG_CHECKING(for GNU library)
  88. AC_CACHE_VAL(ac_cv_lib_gnu,
  89.   AC_EGREP_CPP(yes,
  90.     [#include <features.h>
  91. #ifdef __GNU_LIBRARY__
  92.   yes
  93. #endif
  94. ], 
  95.   ac_cv_lib_gnu=yes, ac_cv_lib_gnu=no))
  96. AC_MSG_RESULT($ac_cv_lib_gnu)
  97.  
  98. AC_CHECK_HEADER(fcntl.h,
  99.    test $ac_cv_header_posix = yes && AC_DEFINE(_POSIX_SOURCE),
  100.    AC_DEFINE(NO_FCNTL) AC_DEFINE(OPEN_DECL))
  101.  
  102. dnl Checks for typedefs, structures, and compiler characteristics.
  103. AC_C_CONST
  104. AC_TYPE_SIZE_T
  105.  
  106. dnl Checks for library functions.
  107. AC_TYPE_SIGNAL
  108. # we'll get atexit by default
  109. if test $ac_cv_header_stdc != yes; then
  110. AC_CHECK_FUNC(atexit,
  111.   AC_DEFINE(onexit,atexit),dnl just in case
  112.   [AC_DEFINE(NO_ONEXIT)
  113.   AC_CHECK_FUNC(onexit,,
  114.     [AC_CHECK_FUNC(on_exit,
  115.      AC_DEFINE(onexit,on_exit),)])])
  116. else true
  117. fi
  118.  
  119. # This should always succeed on unix:
  120. dnl Unfortunately, the mesage implies we're just checking for -lm...
  121. AC_CHECK_FUNC(fstat,,AC_DEFINE(NON_UNIX_STDIO))
  122. # This is necessary for e.g. Linux:
  123. AC_MSG_CHECKING([for necessary members of struct FILE])
  124. AC_CACHE_VAL(ac_cv_struct_FILE,
  125. [AC_TRY_COMPILE([#include <stdio.h>],
  126.   [FILE s; s._ptr; s._base; s._flag;],ac_cv_struct_FILE=yes,
  127.   ac_cv_struct_FILE=no)])dnl
  128. AC_MSG_RESULT($ac_cv_struct_FILE)
  129. if test $ac_cv_struct_FILE = no; then
  130.   AC_DEFINE(MISSING_FILE_ELEMS)
  131. fi
  132.  
  133. dnl perhaps should check also for remainder
  134. AC_CHECK_LIB(m,drem,AC_DEFINE(IEEE_drem))
  135.  
  136. dnl for U77:
  137. dnl AC_CHECK_FUNCS(symlink getcwd lstat)
  138. dnl test $ac_cv_func_symlink = yes && SYMLNK=symlnk_.o
  139. dnl test $ac_cv_func_lstat = yes && SYMLNK="$SYMLNK lstat_.o"
  140. dnl AC_SUBST(SYMLNK)
  141.  
  142. # posix will guarantee the right behaviour for sprintf, else we can't be
  143. # sure; HEADER_STDC wouldn't be the right check in sunos4, for instance.
  144. # However, on my sunos4/gcc setup unistd.h leads us wrongly to believe
  145. # we're posix-conformant, so always do the test.
  146. AC_MSG_CHECKING(for ansi/posix sprintf result)
  147. dnl This loses if included as an argument to AC_CACHE_VAL because the
  148. dnl changequote doesn't take effect and the [] vanish.
  149. dnl fixme: use cached value
  150. AC_TRY_RUN(changequote(<<, >>)dnl
  151.   <<#include <stdio.h>
  152.     /* does sprintf return the number of chars transferred? */
  153.     main () {char foo[2]; (sprintf(foo, "1") == 1) ? exit(0) : exit(1);}
  154. >>changequote([, ]),
  155.     ac_cv_sys_sprintf_ansi=yes,
  156.     ac_cv_sys_sprintf_ansi=no,
  157.     ac_cv_sys_sprintf_ansi=no)
  158. AC_CACHE_VAL(ac_cv_sys_sprintf_ansi,
  159.      ac_cv_sys_sprintf_ansi=$ac_cv_sys_sprintf_ansi)
  160. dnl We get a misleading `(cached)' message...
  161. if test $ac_cv_c_cross = no; then
  162.   AC_MSG_RESULT($ac_cv_sys_sprintf_ansi)
  163. else
  164.   AC_MSG_RESULT([can't tell -- assuming no])
  165. fi
  166. if test $ac_cv_sys_sprintf_ansi != yes; then 
  167.   AC_DEFINE(USE_STRLEN)
  168. fi
  169.  
  170. # define NON_ANSI_RW_MODES on unix (can't hurt)
  171. AC_EGREP_CPP(yes,
  172. [#ifdef unix
  173.   yes
  174. #endif
  175. #ifdef __unix
  176.   yes
  177. #endif
  178. #ifdef __unix__
  179.   yes
  180. #endif
  181. ], is_unix=yes, is_unix=no)
  182. test $is_unix = yes && AC_DEFINE(NON_ANSI_RW_MODES)
  183.  
  184. # We have to firkle with the info in hconfig.h to figure out suitable types
  185. # (via com.h).  proj.h and com.h are in $srcdir/.., config.h which they need
  186. # is in ../.. and the config files are in $srcdir/../../config.
  187. AC_MSG_CHECKING(f2c integer type)
  188. late_ac_cpp=$ac_cpp
  189. ac_cpp="$late_ac_cpp -I$srcdir/.. -I../.. -I$srcdir/../../config"
  190. AC_CACHE_VAL(ac_cv_sys_f2cinteger,
  191. AC_EGREP_CPP(F2C_INTEGER=long int,
  192. [#include "proj.h"
  193. #define FFECOM_DETERMINE_TYPES 1
  194. #include "com.h"
  195. #if FFECOM_f2cINTEGER == FFECOM_f2ccodeLONG
  196. F2C_INTEGER=long int
  197. #elif FFECOM_f2cINTEGER == FFECOM_f2ccodeINT
  198. F2C_INTEGER=int
  199. #else
  200. #  error Cannot find a suitable type for F2C_INTEGER
  201. #endif
  202. ],
  203.  ac_cv_sys_f2cinteger="long int",)
  204. if test "$ac_cv_sys_f2cinteger" = ""; then
  205.   AC_EGREP_CPP(F2C_INTEGER=int,
  206. [#include "proj.h"
  207. #define FFECOM_DETERMINE_TYPES 1
  208. #include "com.h"
  209. #if FFECOM_f2cINTEGER == FFECOM_f2ccodeLONG
  210. F2C_INTEGER=long int
  211. #elif FFECOM_f2cINTEGER == FFECOM_f2ccodeINT
  212. F2C_INTEGER=int
  213. #else
  214. #  error Cannot find a suitable type for F2C_INTEGER
  215. #endif
  216. ],
  217.    ac_cv_sys_f2cinteger=int,)
  218. fi
  219. if test "$ac_cv_sys_f2cinteger" = ""; then
  220.   AC_MSG_RESULT("")
  221.   AC_MSG_ERROR([Can't determine type for f2c integer; config.log may help.])
  222. fi
  223. )
  224. AC_MSG_RESULT($ac_cv_sys_f2cinteger)
  225. F2C_INTEGER=$ac_cv_sys_f2cinteger
  226. ac_cpp=late_ac_cpp
  227. AC_SUBST(F2C_INTEGER)
  228.  
  229. dnl maybe check for drem/remainder
  230.  
  231. AC_SUBST(CROSS)
  232. AC_SUBST(RANLIB_FOR_TARGET)
  233. AC_SUBST(RANLIB_TEST_FOR_TARGET)
  234.  
  235. dnl Craig had these in f2c.h, but they're only relevant for building libf2c
  236. dnl anyway.
  237.  
  238. dnl   For GNU Fortran (g77), we always enable the following behaviors for
  239. dnl   libf2c, to make things easy on the programmer.  The alternate
  240. dnl   behaviors have their uses, and g77 might provide them as compiler,
  241. dnl   rather than library, options, so only a single copy of a shared libf2c
  242. dnl   need be built for a system.
  243.  
  244. dnl   This makes unformatted I/O more consistent in relation to other
  245. dnl   systems.  It is not required by the F77 standard.
  246.  
  247. AC_DEFINE(Pad_UDread)
  248.  
  249. dnl   This makes ERR= and IOSTAT= returns work properly in disk-full
  250. dnl   situations, making things work more as expected.  It slows things
  251. dnl   down, so g77 will probably someday choose the original implementation
  252. dnl   on a case-by-case basis when it can be shown to not be necessary
  253. dnl   (e.g. no ERR= or IOSTAT=) or when it is given the appropriate
  254. dnl   compile-time option or, perhaps, source-code directive.
  255.  
  256. AC_DEFINE(ALWAYS_FLUSH)
  257.  
  258.  
  259. # avoid confusion in case the `makefile's from the f2c distribution have
  260. # got put here
  261. test -f libF77/makefile && mv libF77/makefile  libF77/makefile.ori
  262. test -f libI77/makefile && mv libI77/makefile  libI77/makefile.ori
  263.  
  264. AC_OUTPUT(Makefile ../../include/f2c.h:f2c.h.in libI77/Makefile libF77/Makefile)
  265.  
  266. dnl We might have configuration options to:
  267. dnl * allow non-standard string concatenation (use libF77 s_catow.o,
  268. dnl   not s_cat.o)
  269. dnl * change unit preconnexion in libI77/err.c (f_init.c)
  270. dnl * -DALWAYS_FLUSH in libI77
  271. dnl * -DOMIT_BLANK_CC in libI77
  272.