OSDN Git Service

Merge in g77-0.5.22.
[pf3gnuchains/gcc-fork.git] / libf2c / configure.in
1 # Process this file with autoconf to produce a configure script.
2 #   Copyright (C) 1995, 1997 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, 59 Temple Place - Suite 330, Boston, MA
20 #02111-1307, USA.
21
22 AC_INIT(libF77/Version.c)
23
24 AC_REVISION(1.10)
25
26 dnl AC_C_CROSS
27 dnl Gives misleading `(cached)' message from the check.
28 if test "$CROSS";then
29   if test "$CC_FOR_TARGET"; then
30     CC="$CC_FOR_TARGET"
31   else
32     CC="../../xgcc -B../../xgcc/"
33   fi
34   ac_cv_c_cross=yes
35 else
36   dnl Checks for programs.
37   # For g77 we'll set CC to point at the built gcc, but this will get it into
38   # the makefiles
39   AC_PROG_CC
40   ac_cv_c_cross=no
41 fi
42
43 dnl These should be inherited in the recursive make, but ensure they are
44 dnl defined:
45 test "$AR" || AR=ar
46 AC_SUBST(AR)
47 if test "$RANLIB"; then :
48   AC_SUBST(RANLIB)
49 dnl Make sure that RANLIB_TEST is set also.
50   if test -z "$RANLIB_TEST"; then
51     RANLIB_TEST=true
52   fi
53 else
54   RANLIB_TEST=true
55   AC_PROG_RANLIB
56 fi
57 AC_SUBST(RANLIB_TEST)
58
59 dnl not needed for g77?
60 dnl AC_PROG_MAKE_SET
61
62 dnl Checks for libraries.
63
64 dnl Checks for header files.
65 # Sanity check for the cross-compilation case:
66 AC_CHECK_HEADER(stdio.h,:,
67   [AC_MSG_ERROR([Can't find stdio.h.
68 You must have a usable C system for the target already installed, at least
69 including headers and, preferably, the library, before you can configure
70 the G77 runtime system.  If necessary, install gcc now with \`LANGUAGES=c',
71 then the target library, then build with \`LANGUAGES=f77'.])])
72
73 AC_HEADER_STDC
74 dnl We could do this if we didn't know we were using gcc
75 dnl AC_MSG_CHECKING(for prototype-savvy compiler)
76 dnl AC_CACHE_VAL(g77_cv_sys_proto,                
77 dnl   [AC_TRY_LINK(,                             
78 dnl dnl looks screwy because TRY_LINK expects a function body
79 dnl    [return 0;} int foo (int * bar) {],       
80 dnl    g77_cv_sys_proto=yes,                      
81 dnl    [g77_cv_sys_proto=no                       
82 dnl     AC_DEFINE(KR_headers)])])                
83 dnl AC_MSG_RESULT($g77_cv_sys_proto)              
84
85 dnl for U77
86 dnl AC_CHECK_HEADERS(unistd.h)
87
88 AC_MSG_CHECKING(for posix)
89 AC_CACHE_VAL(g77_cv_header_posix,
90   AC_EGREP_CPP(yes,
91   [#include <sys/types.h>
92 #include <unistd.h>
93 #ifdef _POSIX_VERSION
94   yes
95 #endif
96 ], 
97   g77_cv_header_posix=yes,
98   g77_cv_header_posix=no))
99 AC_MSG_RESULT($g77_cv_header_posix)
100
101 # We can rely on the GNU library being posix-ish.  I guess checking the 
102 # header isn't actually like checking the functions, though...
103 AC_MSG_CHECKING(for GNU library)
104 AC_CACHE_VAL(g77_cv_lib_gnu,
105   AC_EGREP_CPP(yes,
106     [#include <stdio.h>
107 #ifdef __GNU_LIBRARY__
108   yes
109 #endif
110 ], 
111   g77_cv_lib_gnu=yes, g77_cv_lib_gnu=no))
112 AC_MSG_RESULT($g77_cv_lib_gnu)
113
114 # Apparently cygwin needs to be special-cased.
115 AC_MSG_CHECKING([for cyg\`win'32])
116 AC_CACHE_VAL(g77_cv_sys_cygwin32,
117   AC_EGREP_CPP(yes,
118   [#ifdef __CYGWIN32__
119   yes
120 #endif
121 ],
122   g77_cv_sys_cygwin32=yes,
123   g77_cv_sys_cygwin32=no))
124 AC_MSG_RESULT($g77_cv_sys_cygwin32)
125
126 # ditto for mingw32.
127 AC_MSG_CHECKING([for mingw32])
128 AC_CACHE_VAL(g77_cv_sys_mingw32,
129   AC_EGREP_CPP(yes,
130   [#ifdef __MINGW32__
131   yes
132 #endif
133 ],
134   g77_cv_sys_mingw32=yes,
135   g77_cv_sys_mingw32=no))
136 AC_MSG_RESULT($g77_cv_sys_mingw32)
137
138
139 AC_CHECK_HEADER(fcntl.h,
140    test $g77_cv_header_posix = yes && AC_DEFINE(_POSIX_SOURCE),
141    AC_DEFINE(NO_FCNTL) AC_DEFINE(OPEN_DECL))
142
143 dnl Checks for typedefs, structures, and compiler characteristics.
144 AC_C_CONST
145 AC_TYPE_SIZE_T
146
147 dnl Checks for library functions.
148 AC_TYPE_SIGNAL
149 # we'll get atexit by default
150 if test $ac_cv_header_stdc != yes; then
151 AC_CHECK_FUNC(atexit,
152   AC_DEFINE(onexit,atexit),dnl just in case
153   [AC_DEFINE(NO_ONEXIT)
154   AC_CHECK_FUNC(onexit,,
155     [AC_CHECK_FUNC(on_exit,
156      AC_DEFINE(onexit,on_exit),)])])
157 else true
158 fi
159
160 # This should always succeed on unix.
161 # Apparently positive result on cygwin loses re. NON_UNIX_STDIO
162 # (as of cygwin b18). Likewise on mingw.
163 AC_CHECK_FUNC(fstat)
164 AC_MSG_CHECKING([need for NON_UNIX_STDIO])
165 if test $g77_cv_sys_cygwin32 = yes \
166   || test $g77_cv_sys_mingw32 = yes \
167   || test $ac_cv_func_fstat = no; then
168   AC_MSG_RESULT(yes)
169   AC_DEFINE(NON_UNIX_STDIO)
170 else
171   AC_MSG_RESULT(no)
172 fi
173
174 # This is necessary for e.g. Linux:
175 AC_MSG_CHECKING([for necessary members of struct FILE])
176 AC_CACHE_VAL(g77_cv_struct_FILE,
177 [AC_TRY_COMPILE([#include <stdio.h>],
178   [FILE s; s._ptr; s._base; s._flag;],g77_cv_struct_FILE=yes,
179   g77_cv_struct_FILE=no)])dnl
180 AC_MSG_RESULT($g77_cv_struct_FILE)
181 if test $g77_cv_struct_FILE = no; then
182   AC_DEFINE(MISSING_FILE_ELEMS)
183 fi
184
185 dnl perhaps should check also for remainder
186 dnl Unfortunately, the message implies we're just checking for -lm...
187 AC_CHECK_LIB(m,drem,AC_DEFINE(IEEE_drem))
188
189 dnl for U77:
190 dnl AC_CHECK_FUNCS(symlink getcwd lstat)
191 dnl test $ac_cv_func_symlink = yes && SYMLNK=symlnk_.o
192 dnl test $ac_cv_func_lstat = yes && SYMLNK="$SYMLNK lstat_.o"
193 dnl AC_SUBST(SYMLNK)
194
195 AC_CHECK_FUNCS(tempnam)
196
197 # posix will guarantee the right behaviour for sprintf, else we can't be
198 # sure; HEADER_STDC wouldn't be the right check in sunos4, for instance.
199 # However, on my sunos4/gcc setup unistd.h leads us wrongly to believe
200 # we're posix-conformant, so always do the test.
201 AC_MSG_CHECKING(for ansi/posix sprintf result)
202 dnl This loses if included as an argument to AC_CACHE_VAL because the
203 dnl changequote doesn't take effect and the [] vanish.
204 dnl fixme: use cached value
205 AC_TRY_RUN(changequote(<<, >>)dnl
206   <<#include <stdio.h>
207     /* does sprintf return the number of chars transferred? */
208     main () {char foo[2]; (sprintf(foo, "1") == 1) ? exit(0) : exit(1);}
209 >>changequote([, ]),
210     g77_cv_sys_sprintf_ansi=yes,
211     g77_cv_sys_sprintf_ansi=no,
212     g77_cv_sys_sprintf_ansi=no)
213 AC_CACHE_VAL(g77_cv_sys_sprintf_ansi,
214      g77_cv_sys_sprintf_ansi=$g77_cv_sys_sprintf_ansi)
215 dnl We get a misleading `(cached)' message...
216 if test $ac_cv_c_cross = no; then
217   AC_MSG_RESULT($g77_cv_sys_sprintf_ansi)
218 else
219   AC_MSG_RESULT([can't tell -- assuming no])
220 fi
221 # The cygwin patch takes steps to avoid defining USE_STRLEN here -- I don't
222 # understand why.
223 if test $g77_cv_sys_sprintf_ansi != yes; then 
224   AC_DEFINE(USE_STRLEN)
225 fi
226
227 # define NON_ANSI_RW_MODES on unix (can't hurt)
228 AC_MSG_CHECKING(NON_ANSI_RW_MODES)
229 AC_EGREP_CPP(yes,
230 [#ifdef unix
231   yes
232 #endif
233 #ifdef __unix
234   yes
235 #endif
236 #ifdef __unix__
237   yes
238 #endif
239 ], is_unix=yes, is_unix=no)
240 if test $g77_cv_sys_cygwin32 = yes || test $g77_cv_sys_mingw32 = yes; then
241   AC_MSG_RESULT(no)
242 else
243   if test $is_unix = yes; then
244     AC_DEFINE(NON_ANSI_RW_MODES)
245     AC_MSG_RESULT(yes)
246   else
247     AC_MSG_RESULT(no)
248   fi
249 fi
250
251 # We have to firkle with the info in hconfig.h to figure out suitable types
252 # (via com.h).  proj.h and com.h are in $srcdir/.., config.h which they need
253 # is in ../.. and the config files are in $srcdir/../../config.
254 AC_MSG_CHECKING(f2c integer type)
255 late_ac_cpp=$ac_cpp
256 ac_cpp="$late_ac_cpp -I$srcdir/../gcc/f -I../../gcc -I$srcdir/../gcc -I$srcdir/../gcc/config"
257 AC_CACHE_VAL(g77_cv_sys_f2cinteger,
258 AC_EGREP_CPP(F2C_INTEGER=long int,
259 [#include "proj.h"
260 #define FFECOM_DETERMINE_TYPES 1
261 #include "com.h"
262 #if FFECOM_f2cINTEGER == FFECOM_f2ccodeLONG
263 F2C_INTEGER=long int
264 #elif FFECOM_f2cINTEGER == FFECOM_f2ccodeINT
265 F2C_INTEGER=int
266 #else
267 #  error "Cannot find a suitable type for F2C_INTEGER"
268 #endif
269 ],
270  g77_cv_sys_f2cinteger="long int",)
271 if test "$g77_cv_sys_f2cinteger" = ""; then
272   AC_EGREP_CPP(F2C_INTEGER=int,
273 [#include "proj.h"
274 #define FFECOM_DETERMINE_TYPES 1
275 #include "com.h"
276 #if FFECOM_f2cINTEGER == FFECOM_f2ccodeLONG
277 F2C_INTEGER=long int
278 #elif FFECOM_f2cINTEGER == FFECOM_f2ccodeINT
279 F2C_INTEGER=int
280 #else
281 #  error "Cannot find a suitable type for F2C_INTEGER"
282 #endif
283 ],
284    g77_cv_sys_f2cinteger=int,)
285 fi
286 if test "$g77_cv_sys_f2cinteger" = ""; then
287   AC_MSG_RESULT("")
288   AC_MSG_ERROR([Can't determine type for f2c integer; config.log may help.])
289 fi
290 )
291 AC_MSG_RESULT($g77_cv_sys_f2cinteger)
292 F2C_INTEGER=$g77_cv_sys_f2cinteger
293 ac_cpp=$late_ac_cpp
294 AC_SUBST(F2C_INTEGER)
295
296 AC_MSG_CHECKING(f2c long int type)
297 late_ac_cpp=$ac_cpp
298 ac_cpp="$late_ac_cpp -I$srcdir/../gcc/f -I../../gcc -I$srcdir/../gcc -I$srcdir/../gcc/config"
299 AC_CACHE_VAL(g77_cv_sys_f2clongint,
300 AC_EGREP_CPP(F2C_LONGINT=long int,
301 [#include "proj.h"
302 #define FFECOM_DETERMINE_TYPES 1
303 #include "com.h"
304 #if FFECOM_f2cLONGINT == FFECOM_f2ccodeLONG
305 F2C_LONGINT=long int
306 #elif FFECOM_f2cLONGINT == FFECOM_f2ccodeLONGLONG
307 F2C_LONGINT=long long int
308 #else
309 #  error "Cannot find a suitable type for F2C_LONGINT"
310 #endif
311 ],
312  g77_cv_sys_f2clongint="long int",)
313 if test "$g77_cv_sys_f2clongint" = ""; then
314   AC_EGREP_CPP(F2C_LONGINT=long long int,
315 [#include "proj.h"
316 #define FFECOM_DETERMINE_TYPES 1
317 #include "com.h"
318 #if FFECOM_f2cLONGINT == FFECOM_f2ccodeLONG
319 F2C_LONGINT=long int
320 #elif FFECOM_f2cLONGINT == FFECOM_f2ccodeLONGLONG
321 F2C_LONGINT=long long int
322 #else
323 #  error "Cannot find a suitable type for F2C_LONGINT"
324 #endif
325 ],
326    g77_cv_sys_f2clongint="long long int",)
327 fi
328 if test "$g77_cv_sys_f2clongint" = ""; then
329   AC_MSG_RESULT("")
330   AC_MSG_ERROR([Can't determine type for f2c long int; config.log may help.])
331 fi
332 )
333 AC_MSG_RESULT($g77_cv_sys_f2clongint)
334 F2C_LONGINT=$g77_cv_sys_f2clongint
335 ac_cpp=$late_ac_cpp
336 AC_SUBST(F2C_LONGINT)
337
338 dnl maybe check for drem/remainder
339
340 AC_SUBST(CROSS)
341
342
343 # This EOF_CHAR is a misfeature on unix.
344 AC_DEFINE(NO_EOF_CHAR_CHECK)
345
346 AC_DEFINE(Skip_f2c_Undefs)
347
348 dnl Craig had these in f2c.h, but they're only relevant for building libf2c
349 dnl anyway.
350
351 dnl   For GNU Fortran (g77), we always enable the following behaviors for
352 dnl   libf2c, to make things easy on the programmer.  The alternate
353 dnl   behaviors have their uses, and g77 might provide them as compiler,
354 dnl   rather than library, options, so only a single copy of a shared libf2c
355 dnl   need be built for a system.
356
357 dnl   This makes unformatted I/O more consistent in relation to other
358 dnl   systems.  It is not required by the F77 standard.
359
360 AC_DEFINE(Pad_UDread)
361
362 dnl   This makes ERR= and IOSTAT= returns work properly in disk-full
363 dnl   situations, making things work more as expected.  It slows things
364 dnl   down, so g77 will probably someday choose the original implementation
365 dnl   on a case-by-case basis when it can be shown to not be necessary
366 dnl   (e.g. no ERR= or IOSTAT=) or when it is given the appropriate
367 dnl   compile-time option or, perhaps, source-code directive.
368
369 dnl AC_DEFINE(ALWAYS_FLUSH)
370
371 dnl   Most Fortran implementations do this, so to make it easier
372 dnl   to compare the output of g77-compiled programs to those compiled
373 dnl   by most other compilers, tell libf2c to put leading zeros in
374 dnl   appropriate places on output
375
376 AC_DEFINE(WANT_LEAD_0)
377
378 # avoid confusion in case the `makefile's from the f2c distribution have
379 # got put here
380 test -f libF77/makefile && mv libF77/makefile  libF77/makefile.ori
381 test -f libI77/makefile && mv libI77/makefile  libI77/makefile.ori
382 test -f libU77/makefile && mv libU77/makefile  libU77/makefile.ori
383
384 AC_CONFIG_SUBDIRS(libU77)
385 AC_OUTPUT(Makefile f2c.h libI77/Makefile libF77/Makefile)
386
387 dnl We might have configuration options to:
388 dnl * allow non-standard string concatenation (use libF77 s_catow.o,
389 dnl   not s_cat.o)
390 dnl * change unit preconnexion in libI77/err.c (f_init.c)
391 dnl * -DALWAYS_FLUSH in libI77
392 dnl * -DOMIT_BLANK_CC in libI77
393
394 dnl Local Variables:
395 dnl comment-start: "dnl "
396 dnl comment-end: ""
397 dnl comment-start-skip: "\\bdnl\\b\\s *"
398 dnl End: