source: releases/0.5.16/coin.m4 @ 587

Last change on this file since 587 was 533, checked in by andreasw, 13 years ago

synchronized stable/0.5 with trunk rev 532

  • Property svn:keywords set to Author Date Id Revision
File size: 105.6 KB
Line 
1# Copyright (C) 2006, 2007 International Business Machines.
2# All Rights Reserved.
3# This file is distributed under the Common Public License.
4#
5## $Id: coin.m4 533 2007-08-20 04:38:20Z andreasw $
6#
7# Author: Andreas Wachter    IBM      2006-04-14
8
9# This file defines the common autoconf macros for COIN
10#
11
12# Check requirements
13AC_PREREQ(2.59)
14
15###########################################################################
16#                           COIN_MAIN_SUBDIRS                             #
17###########################################################################
18
19# This macro sets up the recursion into configure scripts into
20# subdirectories.  Each possible subdirectory should be provided as a
21# new argument to this macro.  The current limit is 10 subdirectories.
22# This automatically also checks for the Data subdirectory.
23
24AC_DEFUN([AC_COIN_MAIN_SUBDIRS],
25[AC_ARG_VAR([COIN_SKIP_PROJECTS],[Set to the subdirectories of projects that should be skipped in the configuration])
26
27m4_ifvaln([$1],[AC_MSG_CHECKING(whether directory $1 is available)
28                coin_skip=no
29                if test x"$COIN_SKIP_PROJECTS" != x; then
30                  for dir in $COIN_SKIP_PROJECTS; do
31                    if test $dir = $1; then
32                      coin_skip=yes
33                    fi
34                  done
35                fi
36                if test $coin_skip = yes; then
37                  AC_MSG_RESULT(skipping)
38                elif test -r $srcdir/$1/configure; then
39                  coin_subdirs="$coin_subdirs $1"
40                  AC_MSG_RESULT(yes)
41                  AC_CONFIG_SUBDIRS($1)
42                else
43                  AC_MSG_RESULT(no)
44                fi])
45m4_ifvaln([$2],[AC_MSG_CHECKING(whether directory $2 is available)
46                coin_skip=no
47                if test x"$COIN_SKIP_PROJECTS" != x; then
48                  for dir in $COIN_SKIP_PROJECTS; do
49                    if test $dir = $2; then
50                      coin_skip=yes
51                    fi
52                  done
53                fi
54                if test $coin_skip = yes; then
55                  AC_MSG_RESULT(skipping)
56                elif test -r $srcdir/$2/configure; then
57                  coin_subdirs="$coin_subdirs $2"
58                  AC_MSG_RESULT(yes)
59                  AC_CONFIG_SUBDIRS($2)
60                else
61                  AC_MSG_RESULT(no)
62                fi])
63m4_ifvaln([$3],[AC_MSG_CHECKING(whether directory $3 is available)
64                coin_skip=no
65                if test x"$COIN_SKIP_PROJECTS" != x; then
66                  for dir in $COIN_SKIP_PROJECTS; do
67                    if test $dir = $3; then
68                      coin_skip=yes
69                    fi
70                  done
71                fi
72                if test $coin_skip = yes; then
73                  AC_MSG_RESULT(skipping)
74                elif test -r $srcdir/$3/configure; then
75                  coin_subdirs="$coin_subdirs $3"
76                  AC_MSG_RESULT(yes)
77                  AC_CONFIG_SUBDIRS($3)
78                else
79                  AC_MSG_RESULT(no)
80                fi])
81m4_ifvaln([$4],[AC_MSG_CHECKING(whether directory $4 is available)
82                coin_skip=no
83                if test x"$COIN_SKIP_PROJECTS" != x; then
84                  for dir in $COIN_SKIP_PROJECTS; do
85                    if test $dir = $4; then
86                      coin_skip=yes
87                    fi
88                  done
89                fi
90                if test $coin_skip = yes; then
91                  AC_MSG_RESULT(skipping)
92                elif test -r $srcdir/$4/configure; then
93                  coin_subdirs="$coin_subdirs $4"
94                  AC_MSG_RESULT(yes)
95                  AC_CONFIG_SUBDIRS($4)
96                else
97                  AC_MSG_RESULT(no)
98                fi])
99m4_ifvaln([$5],[AC_MSG_CHECKING(whether directory $5 is available)
100                coin_skip=no
101                if test x"$COIN_SKIP_PROJECTS" != x; then
102                  for dir in $COIN_SKIP_PROJECTS; do
103                    if test $dir = $5; then
104                      coin_skip=yes
105                    fi
106                  done
107                fi
108                if test $coin_skip = yes; then
109                  AC_MSG_RESULT(skipping)
110                elif test -r $srcdir/$5/configure; then
111                  coin_subdirs="$coin_subdirs $5"
112                  AC_MSG_RESULT(yes)
113                  AC_CONFIG_SUBDIRS($5)
114                else
115                  AC_MSG_RESULT(no)
116                fi])
117m4_ifvaln([$6],[AC_MSG_CHECKING(whether directory $6 is available)
118                coin_skip=no
119                if test x"$COIN_SKIP_PROJECTS" != x; then
120                  for dir in $COIN_SKIP_PROJECTS; do
121                    if test $dir = $6; then
122                      coin_skip=yes
123                    fi
124                  done
125                fi
126                if test $coin_skip = yes; then
127                  AC_MSG_RESULT(skipping)
128                elif test -r $srcdir/$6/configure; then
129                  coin_subdirs="$coin_subdirs $6"
130                  AC_MSG_RESULT(yes)
131                  AC_CONFIG_SUBDIRS($6)
132                else
133                  AC_MSG_RESULT(no)
134                fi])
135m4_ifvaln([$7],[AC_MSG_CHECKING(whether directory $7 is available)
136                coin_skip=no
137                if test x"$COIN_SKIP_PROJECTS" != x; then
138                  for dir in $COIN_SKIP_PROJECTS; do
139                    if test $dir = $7; then
140                      coin_skip=yes
141                    fi
142                  done
143                fi
144                if test $coin_skip = yes; then
145                  AC_MSG_RESULT(skipping)
146                elif test -r $srcdir/$7/configure; then
147                  coin_subdirs="$coin_subdirs $7"
148                  AC_MSG_RESULT(yes)
149                  AC_CONFIG_SUBDIRS($7)
150                else
151                  AC_MSG_RESULT(no)
152                fi])
153m4_ifvaln([$8],[AC_MSG_CHECKING(whether directory $8 is available)
154                coin_skip=no
155                if test x"$COIN_SKIP_PROJECTS" != x; then
156                  for dir in $COIN_SKIP_PROJECTS; do
157                    if test $dir = $8; then
158                      coin_skip=yes
159                    fi
160                  done
161                fi
162                if test $coin_skip = yes; then
163                  AC_MSG_RESULT(skipping)
164                elif test -r $srcdir/$8/configure; then
165                  coin_subdirs="$coin_subdirs $8"
166                  AC_MSG_RESULT(yes)
167                  AC_CONFIG_SUBDIRS($8)
168                else
169                  AC_MSG_RESULT(no)
170                fi])
171m4_ifvaln([$9],[AC_MSG_CHECKING(whether directory $9 is available)
172                coin_skip=no
173                if test x"$COIN_SKIP_PROJECTS" != x; then
174                  for dir in $COIN_SKIP_PROJECTS; do
175                    if test $dir = $9; then
176                      coin_skip=yes
177                    fi
178                  done
179                fi
180                if test $coin_skip = yes; then
181                  AC_MSG_RESULT(skipping)
182                elif test -r $srcdir/$9/configure; then
183                  coin_subdirs="$coin_subdirs $9"
184                  AC_MSG_RESULT(yes)
185                  AC_CONFIG_SUBDIRS($9)
186                else
187                  AC_MSG_RESULT(no)
188                fi])
189m4_ifvaln([$10],[AC_MSG_CHECKING(whether directory $10 is available)
190                coin_skip=no
191                if test x"$COIN_SKIP_PROJECTS" != x; then
192                  for dir in $COIN_SKIP_PROJECTS; do
193                    if test $dir = $10; then
194                      coin_skip=yes
195                    fi
196                  done
197                fi
198                if test $coin_skip = yes; then
199                  AC_MSG_RESULT(skipping)
200                elif test -r $srcdir/$10/configure; then
201                  coin_subdirs="$coin_subdirs $10"
202                  AC_MSG_RESULT(yes)
203                  AC_CONFIG_SUBDIRS($10)
204                else
205                  AC_MSG_RESULT(no)
206                fi])
207]) # AC_COIN_MAIN_SUBDIRS
208
209###########################################################################
210#                            COIN_CHECK_FILE                              #
211###########################################################################
212
213# A simple replacement for AC_CHECK_FILE that works for cross compilation
214
215AC_DEFUN([AC_COIN_CHECK_FILE],
216[if test -r $1; then
217  $2
218  :
219else
220  $3
221  :
222fi
223])
224
225###########################################################################
226#                        COIN_THIRDPARTY_SUBDIRS                          #
227###########################################################################
228
229# This macro sets up the recursion into the configure script in a
230# subdirectory for compilation of third party code.  The first
231# argument is just the string that appears in the configure output.
232# The second argument is the directory with the configure script, and
233# the third one is a file that should exists in that directory.  If
234# this file does not exist, we assume that the user has not downloaded
235# the code, and we are not going to compile it
236
237AC_DEFUN([AC_COIN_THIRDPARTY_SUBDIRS],
238[AC_MSG_CHECKING(whether code for third party package $1 is available)
239coin_skip=no
240if test x"$COIN_SKIP_PROJECTS" != x; then
241  for dir in $COIN_SKIP_PROJECTS; do
242    if test $dir = $2; then
243      coin_skip=yes
244    fi
245  done
246fi
247if test $coin_skip = yes; then
248  AC_MSG_RESULT(skipping)
249else
250  coin_tmp=`echo $srcdir/$2/$3`
251  # There is probably a more elegant way to get the first thing out here...
252  for i in $coin_tmp; do
253    coin_tmp2=$i
254    #break 1
255  done
256  if test -r $coin_tmp2; then
257    coin_subdirs="$coin_subdirs $2"
258    AC_MSG_RESULT(yes)
259    AC_CONFIG_SUBDIRS($2)
260  else
261    AC_MSG_RESULT(no)
262  fi
263fi
264]) # AC_COIN_THIRDPARTY_SUBDIRS
265
266###########################################################################
267#                           COIN_CHECK_VPATH                              #
268###########################################################################
269
270# This macro sets the variable coin_vpath_config to true if this is a
271# VPATH configuration, otherwise it sets it to false.
272AC_DEFUN([AC_COIN_CHECK_VPATH],
273[AC_MSG_CHECKING(whether this is a VPATH configuration)
274if test `cd $srcdir; pwd` != `pwd`; then
275  coin_vpath_config=yes;
276else
277  coin_vpath_config=no;
278fi
279AC_MSG_RESULT($coin_vpath_config)
280]) # AC_COIN_CHECK_VPATH
281
282###########################################################################
283#                         COIN_PROJECTDIR_INIT                            #
284###########################################################################
285
286# This macro does everything that is required in the early part in the
287# configure script, such as defining a few variables.  This should only
288# be used in the main directory of a project directory (the one under
289# which src is)
290
291AC_DEFUN([AC_COIN_PROJECTDIR_INIT],
292[# Initialize the ADDLIBS variable
293ADDLIBS="-lm $LIBS"
294AC_SUBST(ADDLIBS)
295
296# Initialize the FADDLIBS variable (which is to be used with a fortran
297# compiler and will not include FLIBS)
298FADDLIBS="$LIBS"
299AC_SUBST(FADDLIBS)
300
301# A useful makefile conditional that is always false
302AM_CONDITIONAL(ALWAYS_FALSE, false)
303
304# We set the following variable so that we know later in AC_COIN_FINALIZE
305# that we are in a project main directory
306coin_projectdir=yes
307]) # AC_COIN_PROJECTDIR_INIT
308
309###########################################################################
310#                          COIN_DEBUG_COMPILE                             #
311###########################################################################
312
313# enable the configure flags --enable-debug and --enable-debug-prjct
314# (where prcjt is the name of the project in lower case) and set the
315# variable coin_debug_compile to true or false This is used by
316# COIN_PROG_CXX, COIN_PROG_CC and COIN_PROG_F77 to determine the
317# compilation flags.  This macro also makes the switches
318# --with-prjct-verbosity and --with-prjct-checklevel available, which
319# define the preprocessor macros COIN_PRJCT_VERBOSITY and
320# COIN_PRJCT_CHECKLEVEL to the specified value (default is 0).
321#
322# The project specific flags are only made available, if one gives the
323# name of the project as first argument to this macro.
324
325AC_DEFUN([AC_COIN_DEBUG_COMPILE],
326[AC_BEFORE([$0],[AC_COIN_PROG_CXX])dnl
327AC_BEFORE([$0],[AC_COIN_PROG_CC])dnl
328AC_BEFORE([$0],[AC_COIN_PROG_F77])dnl
329
330AC_MSG_CHECKING([whether we want to compile in debug mode])
331
332AC_ARG_ENABLE([debug],
333[AC_HELP_STRING([--enable-debug],
334                [compile all projects with debug options tests])],
335[case "${enableval}" in
336   yes) coin_debug_compile=true
337        if test "${enable_shared+set}" = set; then :; else
338          enable_shared=no
339        fi
340        ;;
341   no)  coin_debug_compile=false
342        ;;
343   *) AC_MSG_ERROR(bad value ${enableval} for --enable-debug)
344        ;;
345esac],
346[coin_debug_compile=false])
347
348m4_ifvaln([$1],
349[AC_ARG_ENABLE(debug-m4_tolower($1),
350 [AC_HELP_STRING([--enable-debug-m4_tolower($1)],
351                 [compile this project ($1) with debug options])],
352 [case "${enableval}" in
353    yes) coin_debug_compile=true
354         enable_shared=no
355         ;;
356    no)  coin_debug_compile=false
357         ;;
358    *) AC_MSG_ERROR(bad value ${enableval} for --enable-debug-m4_tolower($1))
359         ;;
360 esac],[:])
361]) # m4_ifvaln([$1],
362
363if test $coin_debug_compile = true; then
364  AC_MSG_RESULT([yes])
365else
366  AC_MSG_RESULT([no])
367fi
368
369m4_ifvaln([$1],
370[AC_ARG_WITH(m4_tolower($1)-verbosity,
371             AC_HELP_STRING([--with-m4_tolower($1)-verbosity],
372                            [specify the debug verbosity level for project $1]),
373             [if test "$withval" = yes; then
374                withval=1
375              fi
376              m4_tolower(coin_$1_verbosity)=$withval],
377             [m4_tolower(coin_$1_verbosity)=0])
378 AC_DEFINE_UNQUOTED(m4_toupper(COIN_$1_VERBOSITY),
379                    m4_tolower($coin_$1_verbosity),
380                    [Define to the debug verbosity level (0 is no output)])
381
382 AC_ARG_WITH(m4_tolower($1)-checklevel,
383             AC_HELP_STRING([--with-m4_tolower($1)-checklevel],
384                            [specify the sanity check level for project $1]),
385             [if test "$withval" = yes; then
386                withval=1
387              fi
388              m4_tolower(coin_$1_checklevel)=$withval],
389             [m4_tolower(coin_$1_checklevel)=0])
390 AC_DEFINE_UNQUOTED(m4_toupper(COIN_$1_CHECKLEVEL),
391                    m4_tolower($coin_$1_checklevel),
392                    [Define to the debug sanity check level (0 is no test)])
393
394# We use the following variable to have a string with the upper case
395# version of the project name
396COIN_PRJCT=m4_toupper($1)
397
398]) # m4_ifvaln([$1],
399 
400]) # AC_COIN_DEBUG_COMPILE
401
402###########################################################################
403#                          COIN_MINGW_LD_FIX                              #
404###########################################################################
405
406# This macro is included by any PROG_compiler macro, to set the LD
407# environment variable on MinGW to the correct value (link). But note that
408# if we're building in cygwin with -mno-cygwin, we still want ld! If we're
409# building from cygwin with MSVC tools (cl/link), then we do want link and
410# you'd better have your PATH variable straight, else you'll be doing file
411# links instead of code links! Arguably, LDFLAGS should include -mno-cygwin
412# but in practice all linking seems to be handled through the compilers, so
413# CFLAGS and CXXFLAGS suffice.
414
415AC_DEFUN([AC_COIN_MINGW_LD_FIX],
416[case $build in
417  *-mingw*)
418    if test "${LD+set}" = set; then :; else
419      LD=link
420    fi
421    ;;
422 esac
423 case $enable_doscompile in
424   msvc)
425     if test "x${LD+set}" = xset; then :; else
426       LD=link
427     fi
428     ;;
429 esac
430])
431
432###########################################################################
433#                        COIN_ENABLE_DOSCOMPILE                           #
434###########################################################################
435
436# This macro is invoked by any PROG_compiler macro to establish the
437# --enable-doscompile option, used when one wants to compile an executable
438# under Cygwin which also runs directly under DOS (without requiring
439# Cygwin1.dll). The job of this macro is to make sure the option is correct and
440# to set enable_doscompile. Legal values are mingw, msvc, and no (disabled).
441# mingw: Fake mingw under cygwin, using GCC tools and -mno-cygwin. The most
442#        important thing here is that preprocess, compile, and link steps
443#        *all* see -mno-cygwin.
444# msvc:  Assume the presence of cl/link. It's the user's responsibility to
445#        make sure their PATH is correct. In particular, that MSVC link is
446#        found and not cygwin link (we want to do code linking, not file
447#        linking).
448# It's the responsibility of individual PROG_compiler macros to ensure that
449# they correctly set the compiler search list and preprocess, compile, and
450# link flags. This is tied to compiler setup because in practice invocations
451# of the preprocessor and linker are made through the compiler.
452
453AC_DEFUN([AC_COIN_ENABLE_DOSCOMPILE],
454[AC_REQUIRE([AC_CANONICAL_BUILD])
455 AC_ARG_ENABLE([doscompile],
456  [AC_HELP_STRING([--enable-doscompile],
457                  [Under Cygwin, compile so that executables run under DOS.
458                   Set to mingw to use gcc/g++/ld with -mno-cygwin.
459                   Set to msvc to use cl/link.
460                   Default when mentioned: mingw.
461                   Default when not mentioned: disabled.])],
462  [if test "$enable_doscompile" != no; then
463     case $build in
464       *-cygwin* | *-mingw*) ;;
465       *) AC_MSG_ERROR([--enable-doscompile option makes sense only under Cygwin or MinGW]) ;;
466     esac
467   fi],
468  [enable_doscompile=no])
469 case "$enable_doscompile" in
470   mingw)
471     case $build in
472       *-mingw*) enable_doscompile=no ;;
473     esac
474     ;;
475   msvc|no) ;;
476   yes) enable_doscompile=mingw ;;
477   *) AC_MSG_ERROR([Invalid value $enable_doscompile for --enable-doscompile.
478                    Try configure --help=recursive.])
479      ;;
480  esac
481  if test "$enable_doscompile" != no ; then
482    AC_MSG_NOTICE([DOS compile style is: $enable_doscompile])
483  fi
484])
485
486###########################################################################
487#                             COIN_PROG_CXX                               #
488###########################################################################
489
490# Find the compile command by running AC_PROG_CXX (with compiler names for
491# different operating systems) and put it into CXX (unless it was given by the
492# user). Then find an appropriate value for CXXFLAGS. If either of CXXFLAGS or
493# PRJCT_CXXFLAGS is defined, that value is used (replace PRJCT with the upper
494# case name of this project).  It is possible to provide additional -D flags
495# in the variable CXXDEFS, and additional compilation flags with ADD_CXXFLAGS.
496
497AC_DEFUN([AC_COIN_PROG_CXX],
498[AC_REQUIRE([AC_COIN_PROG_CC]) #Let's try if that overcomes configuration problem with VC++ 6.0
499AC_REQUIRE([AC_COIN_ENABLE_DOSCOMPILE])
500AC_LANG_PUSH(C++)
501
502AC_ARG_VAR(CXXDEFS,[Additional -D flags to be used when compiling C++ code.])
503AC_ARG_VAR(ADD_CXXFLAGS,[Additional C++ compiler options])
504AC_ARG_VAR(DBG_CXXFLAGS,[Debug C++ compiler options])
505AC_ARG_VAR(OPT_CXXFLAGS,[Optimize C++ compiler options])
506
507coin_has_cxx=yes
508
509save_cxxflags="$CXXFLAGS"
510# For sparc-sun-solaris, promote Studio/Workshop compiler to front of list.
511case $build in
512  *-cygwin* | *-mingw*)
513             if test "$enable_doscompile" = msvc ; then
514               comps="cl"
515             else
516               comps="g++ cl"
517             fi ;;
518  sparc-sun-solaris*)
519             comps="CC xlC aCC g++ c++ pgCC icpc gpp cxx cc++ cl FCC KCC RCC" ;;
520  *-darwin*) comps="g++ c++ CC" ;;
521          *) comps="xlC aCC CC g++ c++ pgCC icpc gpp cxx cc++ cl FCC KCC RCC" ;;
522esac
523
524# We delete the cached value, since the test might not have been
525# performed with our choice of compilers earlier
526$as_unset ac_cv_prog_CXX || test "${ac_cv_prog_CXX+set}" != set || { ac_cv_prog_CXX=; export ac_cv_prog_CXX; }
527# AC_MSG_NOTICE([C++ compiler candidates: $comps])
528AC_PROG_CXX([$comps])
529if test -z "$CXX" ; then
530  AC_MSG_ERROR([Failed to find a C++ compiler!])
531fi
532
533# It seems that we need to cleanup something here for the Windows
534case "$CXX" in
535  cl* | */cl* | CL* | */CL* )
536    sed -e 's/^void exit (int);//' confdefs.h >> confdefs.hh
537    mv confdefs.hh confdefs.h
538    ;;
539esac
540
541# Autoconf incorrectly concludes that cl recognises -g. It doesn't.
542case "$CXX" in
543  cl* | */cl* | CL* | */CL* )
544    if test "$ac_cv_prog_cxx_g" = yes ; then
545      ac_cv_prog_cxx_g=no
546      AC_MSG_NOTICE([Overruling autoconf; cl does not recognise -g.])
547    fi ;;
548esac
549CXXFLAGS="$save_cxxflags"
550
551# Check if a project specific CXXFLAGS variable has been set
552if test x$COIN_PRJCT != x; then
553  eval coin_tmp=\${${COIN_PRJCT}_CXXFLAGS+set}
554  if test x$coin_tmp = xset; then
555    eval CXXFLAGS=\${${COIN_PRJCT}_CXXFLAGS}
556  fi
557fi
558
559if test x"$CXXFLAGS" = x; then
560
561# ToDo decide whether we want -DNDEBUG for optimization
562  coin_add_cxxflags=
563  coin_opt_cxxflags=
564  coin_dbg_cxxflags=
565  coin_warn_cxxflags=
566
567  if test "$GXX" = "yes"; then
568    case "$CXX" in
569      icpc* | */icpc*)
570        ;;
571      *)
572# ToDo decide about unroll-loops
573        coin_opt_cxxflags="-O3 -fomit-frame-pointer"
574        coin_add_cxxflags="-pipe"
575        coin_dbg_cxxflags="-g"
576        coin_warn_cxxflags="-pedantic-errors -Wimplicit -Wparentheses -Wreturn-type -Wcast-qual -Wall -Wpointer-arith -Wwrite-strings -Wconversion"
577        case $enable_doscompile in
578          mingw)
579            CXXFLAGS="-mno-cygwin"
580            AC_TRY_LINK(,[int i=0; i++;],
581                        [coin_add_cxxflags="-mno-cygwin $coin_add_cxxflags"])
582            CXXFLAGS=
583            ;;
584        esac
585    esac
586  fi
587
588# Note that we do not need to cover GCC in the following tests.
589
590  if test -z "$coin_opt_cxxflags"; then
591    case $build in
592      *-cygwin* | *-mingw*)
593        case "$CXX" in
594          cl* | */cl* | CL* | */CL*)
595            # The MT and MTd options are mutually exclusive
596            coin_opt_cxxflags='-MT -O2'
597            coin_add_cxxflags='-nologo -EHsc -GR -wd4996 -D_CRT_SECURE_NO_DEPRECATE'
598            coin_dbg_cxxflags='-MTd'
599            ;;
600        esac
601        ;;
602      *-linux-*)
603        case "$CXX" in
604          icpc* | */icpc*)
605            coin_opt_cxxflags="-O3 -ip"
606            coin_add_cxxflags=""
607            coin_dbg_cxxflags="-g"
608            # Check if -i_dynamic is necessary (for new glibc library)
609            CXXFLAGS=
610            AC_TRY_LINK(,[int i=0; i++;],[],
611                        [coin_add_cxxflags="-i_dynamic $coin_add_cxxflags"])
612            ;;
613          pgCC* | */pgCC*)
614            coin_opt_cxxflags="-fast"
615            coin_add_cxxflags="-Kieee -pc 64"
616            coin_dbg_cxxflags="-g"
617            ;;
618        esac
619        ;;
620      *-ibm-*)
621        case "$CXX" in
622          xlC* | */xlC* | mpxlC* | */mpxlC*)
623            coin_opt_cxxflags="-O3 -qarch=auto -qcache=auto -qtune=auto -qmaxmem=-1"
624            coin_add_cxxflags="-bmaxdata:0x80000000 -qrtti=dyna -qsuppress=1500-036 -qsuppress=1500-029"
625            coin_dbg_cxxflags="-g"
626            ;;
627        esac
628        ;;
629      *-hp-*)
630        case "$CXX" in
631          aCC* | */aCC* )
632            coin_opt_cxxflags="-O"
633            coin_add_cxxflags="-AA"
634            coin_dbg_cxxflags="-g"
635            ;;
636        esac
637        ;;
638      *-sun-*)
639          coin_opt_cxxflags="-O4"
640          coin_dbg_cxxflags="-g"
641        ;;
642    esac
643  fi
644
645# Generic flag settings. If these don't work, add a case above.
646
647  if test "$ac_cv_prog_cxx_g" = yes && test -z "$coin_dbg_cxxflags" ; then
648    coin_dbg_cxxflags="-g"
649  fi
650
651  if test -z "$coin_opt_cxxflags"; then
652    # Try if -O option works if nothing else is set
653    CXXFLAGS=-O
654    AC_TRY_LINK([],[int i=0; i++;],[coin_opt_cxxflags="-O"])
655  fi
656
657  # if PM doesn't want the warning messages, take them out
658  if test x"$coin_skip_warn_cxxflags" = xyes; then
659    coin_warn_cxxflags=
660  fi
661
662# Do final setup of flags based on values determined above.
663
664  if test x${DBG_CXXFLAGS+set} != xset; then
665    DBG_CXXFLAGS="$coin_dbg_cxxflags $coin_add_cxxflags $coin_warn_cxxflags"
666  fi
667  if test x${OPT_CXXFLAGS+set} != xset; then
668    OPT_CXXFLAGS="$coin_opt_cxxflags $coin_add_cxxflags -DNDEBUG $coin_warn_cxxflags"
669  fi
670
671  DBG_CXXFLAGS="$DBG_CXXFLAGS $ADD_CXXFLAGS $CXXDEFS"
672  OPT_CXXFLAGS="$OPT_CXXFLAGS $ADD_CXXFLAGS $CXXDEFS"
673
674  if test "$coin_debug_compile" = "true"; then
675    CXXFLAGS="$DBG_CXXFLAGS"
676  else
677    CXXFLAGS="$OPT_CXXFLAGS"
678  fi
679
680# Handle the case where CXXFLAGS was set externally.
681else
682  CXXFLAGS="$CXXFLAGS $ADD_CXXFLAGS $CXXDEFS"
683  if test x${DBG_CXXFLAGS+set} != xset; then
684    DBG_CXXFLAGS="$CXXFLAGS"
685  fi
686  if test x${OPT_CXXFLAGS+set} != xset; then
687    OPT_CXXFLAGS="$CXXFLAGS"
688  fi
689fi
690
691# If CXXFLAGS contains -mno-cygwin, CPPFLAGS must also have it.
692
693case "$CXXFLAGS" in
694  *-mno-cygwin*)
695    if test x${CPPFLAGS+set} != xset ; then
696      CPPFLAGS="-mno-cygwin"
697    else
698      case "$CPPFLAGS" in
699        *-mno-cygwin*)
700          ;;
701        *)
702          CPPFLAGS="$CPPFLAGS -mno-cygwin"
703          ;;
704      esac
705    fi ;;
706esac
707
708# Try if CXXFLAGS works
709save_CXXFLAGS="$CXXFLAGS"
710AC_TRY_LINK([],[int i=0; i++;],[],[CXXFLAGS=])
711if test -z "$CXXFLAGS"; then
712  AC_MSG_WARN([The flags CXXFLAGS="$save_CXXFLAGS" do not work.  I will now just try '-O', but you might want to set CXXFLAGS manually.])
713  CXXFLAGS='-O'
714  AC_TRY_LINK([],[int i=0; i++;],[],[CXXFLAGS=])
715  if test -z "$CXXFLAGS"; then
716    AC_MSG_WARN([This value for CXXFLAGS does not work.  I will continue with empty CXXFLAGS, but you might want to set CXXFLAGS manually.])
717  fi
718fi
719
720AC_MSG_NOTICE([C++ compiler options are: $CXXFLAGS])
721
722AC_ARG_VAR(MPICXX,[C++ MPI Compiler])
723if test x"$MPICXX" = x; then :; else
724  AC_MSG_NOTICE([Will use MPI C++ compiler $MPICXX])
725  CXX="$MPICXX"
726fi
727
728case "$CXX" in
729  cl* | */cl* | CL* | */CL* )
730    AC_COIN_MINGW_LD_FIX
731    ;;
732esac
733
734AC_LANG_POP(C++)
735]) # AC_COIN_PROG_CXX
736
737
738###########################################################################
739#                             COIN_CXXLIBS                                #
740###########################################################################
741
742# Determine the C++ runtime libraries required for linking a C++ library
743# with a Fortran or C compiler.  The result is available in CXXLIBS.
744
745AC_DEFUN([AC_COIN_CXXLIBS],
746[AC_REQUIRE([AC_PROG_CXX])dnl
747AC_LANG_PUSH(C++)
748AC_ARG_VAR(CXXLIBS,[Libraries necessary for linking C++ code with Fortran compiler])
749if test -z "$CXXLIBS"; then
750  if test "$GXX" = "yes"; then
751    case "$CXX" in
752      icpc* | */icpc*)
753        CXXLIBS=""
754        ;;
755      *)
756        CXXLIBS="-lstdc++ -lm" # -lgcc"
757        ;;
758    esac
759  else
760    case $build in
761     *-mingw32 | *-cygwin* )
762      case "$CXX" in
763      cl* | */cl* | CL* | */CL*)
764        CXXLIBS=nothing;;
765      esac;;
766     *-linux-*)
767      case "$CXX" in
768      icpc* | */icpc*)
769        CXXLIBS=""
770             ;;
771      pgCC* | */pgCC*)
772        CXXLIBS="-lstd -lC -lc"
773             ;;
774      esac;;
775    *-ibm-*)
776      CXXLIBS="-lC -lc"
777      ;;
778    *-hp-*)
779      CXXLIBS="-L/opt/aCC/lib -l++ -lstd_v2 -lCsup_v2 -lm -lcl -lc"
780      ;;
781    *-sun-*)
782      CXXLIBS="-lCstd -lCrun"
783    esac
784  fi
785fi
786if test -z "$CXXLIBS"; then
787  AC_MSG_WARN([Could not automatically determine CXXLIBS (C++ link libraries; necessary if main program is in Fortran or C).])
788else
789  AC_MSG_NOTICE([Assuming that CXXLIBS is \"$CXXLIBS\".])
790fi
791if test x"$CXXLIBS" = xnothing; then
792  CXXLIBS=
793fi
794AC_LANG_POP(C++)
795]) # AC_COIN_CXXLIBS
796
797###########################################################################
798#                           COIN_CHECK_HEADER                             #
799###########################################################################
800
801# This macro checks for a header file, but it does so without the
802# standard header.  This avoids warning messages like:
803#
804# configure: WARNING: dlfcn.h: present but cannot be compiled
805# configure: WARNING: dlfcn.h:     check for missing prerequisite headers?
806# configure: WARNING: dlfcn.h: see the Autoconf documentation
807# configure: WARNING: dlfcn.h:     section "Present But Cannot Be Compiled"
808# configure: WARNING: dlfcn.h: proceeding with the preprocessor's result
809# configure: WARNING: dlfcn.h: in the future, the compiler will take precedence
810
811# My guess that the problem lay with CPPFLAGS seems to be correct. With this
812# macro reduced to a direct call to AC_CHECK_HEADERS, there are no warnings
813# now that CPPFLAGS contains -mno-cygwin when it needs it. -- lh, 061214 --
814
815# AW 070609: I restored the previous version, since otherwise the warnings
816# still pop up for the cl compiler
817
818AC_DEFUN([AC_COIN_CHECK_HEADER],
819[#if test x"$4" = x; then
820#  hdr="#include <$1>"
821#else
822#  hdr="$4"
823#fi
824#AC_CHECK_HEADERS([$1],[$2],[$3],[$hdr])
825AC_CHECK_HEADERS([$1],[$2],[$3],[$4])
826]) # AC_COIN_CHECK_HEADER
827
828###########################################################################
829#                       COIN_CHECK_CXX_CHEADER                             #
830###########################################################################
831
832# This macro checks for C header files that are used from C++.  For a give
833# stub (e.g., math), it first checks if the C++ library (cmath) is available.
834# If it is, it defines HAVE_CMATH (or whatever the stub is).  If it is not
835# available, it checks for the old C head (math.h) and defines HAVE_MATH_H
836# if that one exists.
837
838AC_DEFUN([AC_COIN_CHECK_CXX_CHEADER],
839[AC_LANG_PUSH(C++)
840AC_COIN_CHECK_HEADER([c$1],[$2],[$3],[$4])
841if test "$ac_cv_header_c$1" != "yes"; then
842  AC_COIN_CHECK_HEADER([$1.h],[$2],[$3],[$4])
843fi
844AC_LANG_POP(C++)
845]) # AC_COIN_CHECK_CXX_CHEADER
846
847###########################################################################
848#                             COIN_PROG_CC                                #
849###########################################################################
850
851# Find the compile command by running AC_PROG_CC (with compiler names
852# for different operating systems) and put it into CC (unless it was
853# given my the user), and find an appropriate value for CFLAGS.  It is
854# possible to provide additional -D flags in the variable CDEFS.
855
856AC_DEFUN([AC_COIN_PROG_CC],
857[AC_REQUIRE([AC_COIN_MINGW_LD_FIX])
858AC_REQUIRE([AC_COIN_ENABLE_DOSCOMPILE])
859AC_LANG_PUSH(C)
860
861# For consistency, we set the C compiler to the same value of the C++
862# compiler, if the C++ is set, but the C compiler isn't (only for CXX=cl)
863if test x"$CXX" != x; then
864  case "$CXX" in
865    cl* | */cl* | CL* | */CL*)
866      if test x"$CC" = x; then
867        CC="$CXX"
868        AC_MSG_WARN([C++ compiler name provided as $CXX, but CC is unset. Setting CC to $CXX])
869      fi
870      ;;
871  esac
872fi
873
874AC_ARG_VAR(CDEFS,[Additional -D flags to be used when compiling C code.])
875AC_ARG_VAR(ADD_CFLAGS,[Additional C compiler options])
876AC_ARG_VAR(DBG_CFLAGS,[Debug C compiler options])
877AC_ARG_VAR(OPT_CFLAGS,[Optimize C compiler options])
878
879coin_has_cc=yes
880
881save_cflags="$CFLAGS"
882# For sparc-sun-solaris, promote Studio/Workshop compiler to front of list.
883# ToDo: If Studio/Workshop cc is not present, we may find /usr/ucb/cc, which
884# is likely to be a non-functional shell. But many installations will have
885# both cc and gcc, so promoting gcc isn't good either. How to test reliably?
886case $build in
887  *-cygwin* | *-mingw*)
888             if test "$enable_doscompile" = msvc ; then
889               comps="cl"
890             else
891               comps="gcc cl"
892             fi ;;
893  sparc-sun-solaris*)
894             comps="cc xlc gcc pgcc icc" ;;
895  *-linux-*) comps="xlc gcc cc pgcc icc" ;;
896  *)         comps="xlc_r xlc cc gcc pgcc icc" ;;
897esac
898
899# We delete the cached value, since the test might not have been
900# performed with our choice of compilers earlier
901$as_unset ac_cv_prog_CC || test "${ac_cv_prog_CC+set}" != set || { ac_cv_prog_CC=; export ac_cv_prog_CC; }
902# AC_MSG_NOTICE([C compiler candidates: $comps])
903AC_PROG_CC([$comps])
904if test -z "$CC" ; then
905  AC_MSG_ERROR([Failed to find a C compiler!])
906fi
907# Autoconf incorrectly concludes that cl recognises -g. It doesn't.
908case "$CC" in
909  cl* | */cl* | CL* | */CL* )
910    if test "$ac_cv_prog_cc_g" = yes ; then
911      ac_cv_prog_cc_g=no
912      AC_MSG_NOTICE([Overruling autoconf; cl does not recognise -g.])
913    fi ;;
914esac
915CFLAGS="$save_cflags"
916
917# Check if a project specific CFLAGS variable has been set
918if test x$COIN_PRJCT != x; then
919  eval coin_tmp=\${${COIN_PRJCT}_CFLAGS+set}
920  if test x$coin_tmp = xset; then
921    eval CFLAGS=\${${COIN_PRJCT}_CFLAGS}
922  fi
923fi
924
925if test x"$CFLAGS" = x; then
926
927  coin_add_cflags=
928  coin_opt_cflags=
929  coin_dbg_cflags=
930  coin_warn_cflags=
931
932  if test "$GCC" = "yes"; then
933    case "$CC" in
934      icc* | */icc*)
935        ;;
936      *)
937        coin_opt_cflags="-O3 -fomit-frame-pointer"
938        coin_add_cflags="-pipe"
939        coin_dbg_cflags="-g"
940        coin_warn_cflags="-pedantic-errors -Wimplicit -Wparentheses -Wsequence-point -Wreturn-type -Wcast-qual -Wall"
941        case $enable_doscompile in
942          mingw)
943            CFLAGS="-mno-cygwin"
944            AC_TRY_LINK([],[int i=0; i++;],
945                        [coin_add_cflags="-mno-cygwin $coin_add_cflags"])
946            CFLAGS=
947          ;;
948        esac
949    esac
950  fi
951  if test -z "$coin_opt_cflags"; then
952    case $build in
953      *-cygwin* | *-mingw*)
954        case "$CC" in
955          cl* | */cl* | CL* | */CL*)
956            coin_opt_cflags='-MT -O2'
957            coin_add_cflags='-nologo -wd4996 -D_CRT_SECURE_NO_DEPRECATE'
958            coin_dbg_cflags='-MTd'
959            ;;
960        esac
961        ;;
962      *-linux-*)
963        case "$CC" in
964          icc* | */icc*)
965            coin_opt_cflags="-O3 -ip"
966            coin_add_cflags=""
967            coin_dbg_cflags="-g"
968            # Check if -i_dynamic is necessary (for new glibc library)
969            CFLAGS=
970            AC_TRY_LINK([],[int i=0; i++;],[],
971                        [coin_add_cflags="-i_dynamic $coin_add_cflags"])
972            ;;
973          pgcc* | */pgcc*)
974            coin_opt_cflags="-fast"
975            coin_add_cflags="-Kieee -pc 64"
976            coin_dbg_cflags="-g"
977            ;;
978        esac
979        ;;
980      *-ibm-*)
981        case "$CC" in
982          xlc* | */xlc* | mpxlc* | */mpxlc*)
983            coin_opt_cflags="-O3 -qarch=auto -qcache=auto -qtune=auto -qmaxmem=-1"
984            coin_add_cflags="-bmaxdata:0x80000000 -qsuppress=1500-036 -qsuppress=1500-029"
985            coin_dbg_cflags="-g"
986          ;;
987        esac
988        ;;
989      *-hp-*)
990        coin_opt_cflags="-O"
991        coin_add_cflags="-Ae"
992        coin_dbg_cflags="-g"
993        ;;
994      *-sun-*)
995        coin_opt_cflags="-xO4"
996        coin_dbg_cflags="-g"
997        ;;
998      *-sgi-*)
999        coin_opt_cflags="-O -OPT:Olimit=0"
1000        coin_dbg_cflags="-g"
1001        ;;
1002    esac
1003  fi
1004
1005  if test "$ac_cv_prog_cc_g" = yes && test -z "$coin_dbg_cflags" ; then
1006    coin_dbg_cflags="-g"
1007  fi
1008
1009  if test -z "$coin_opt_cflags"; then
1010    # Try if -O option works if nothing else is set
1011    CFLAGS="-O"
1012    AC_TRY_LINK([],[int i=0; i++;],[coin_opt_cflags="-O"])
1013  fi
1014
1015  # if PM doesn't want the warning messages, take them out
1016  if test x"$coin_skip_warn_cflags" = xyes; then
1017    coin_warn_cflags=
1018  fi
1019
1020  if test x${DBG_CFLAGS+set} != xset; then
1021    DBG_CFLAGS="$coin_dbg_cflags $coin_add_cflags $coin_warn_cflags"
1022  fi
1023  if test x${OPT_CFLAGS+set} != xset; then
1024    OPT_CFLAGS="$coin_opt_cflags $coin_add_cflags -DNDEBUG $coin_warn_cflags"
1025  fi
1026
1027  DBG_CFLAGS="$DBG_CFLAGS $ADD_CFLAGS $CDEFS"
1028  OPT_CFLAGS="$OPT_CFLAGS $ADD_CFLAGS $CDEFS"
1029
1030  if test "$coin_debug_compile" = "true"; then
1031    CFLAGS="$DBG_CFLAGS"
1032  else
1033    CFLAGS="$OPT_CFLAGS"
1034  fi
1035else
1036  CFLAGS="$CFLAGS $ADD_CFLAGS $CDEFS"
1037  if test x${DBG_CFLAGS+set} != xset; then
1038    DBG_CFLAGS="$CFLAGS"
1039  fi
1040  if test x${OPT_CFLAGS+set} != xset; then
1041    OPT_CFLAGS="$CFLAGS"
1042  fi
1043fi
1044
1045# If CFLAGS contains -mno-cygwin, CPPFLAGS must also have it.
1046
1047case "$CFLAGS" in
1048  *-mno-cygwin*)
1049    if test x${CPPFLAGS+set} != xset ; then
1050      CPPFLAGS="-mno-cygwin"
1051    else
1052      case "$CPPFLAGS" in
1053        *-mno-cygwin*)
1054          ;;
1055        *)
1056          CPPFLAGS="$CPPFLAGS -mno-cygwin"
1057          ;;
1058      esac
1059    fi ;;
1060esac
1061
1062# Try if CFLAGS works
1063save_CFLAGS="$CFLAGS"
1064AC_TRY_LINK([],[int i=0; i++;],[],[CFLAGS=])
1065if test -z "$CFLAGS"; then
1066  AC_MSG_WARN([The value CFLAGS="$save_CFLAGS" do not work.  I will now just try '-O', but you might want to set CFLAGS manually.])
1067  CFLAGS='-O'
1068  AC_TRY_LINK([],[int i=0; i++;],[],[CFLAGS=])
1069  if test -z "$CFLAGS"; then
1070    AC_MSG_WARN([This value for CFLAGS does not work.  I will continue with empty CFLAGS, but you might want to set CFLAGS manually.])
1071  fi
1072fi
1073
1074AC_MSG_NOTICE([C compiler options are: $CFLAGS])
1075
1076AC_ARG_VAR(MPICC,[C MPI Compiler])
1077if test x"$MPICC" = x; then :; else
1078  AC_MSG_NOTICE([Will use MPI C compiler $MPICC])
1079  CC="$MPICC"
1080fi
1081
1082# Correct ADDLIBS initialization if we are using the MS compiler
1083case "$CC" in
1084  cl* | */cl* | CL* | */CL*)
1085    ADDLIBS=
1086    AC_COIN_MINGW_LD_FIX
1087    ;;
1088esac
1089
1090AC_LANG_POP(C)
1091]) # AC_COIN_PROG_CC
1092
1093###########################################################################
1094#                             COIN_PROG_F77                               #
1095###########################################################################
1096
1097# Find the compile command by running AC_PROG_F77 (with compiler names
1098# for different operating systems) and put it into F77 (unless it was
1099# given by the user), and find an appropriate value for FFLAGS
1100
1101AC_DEFUN([AC_COIN_PROG_F77],
1102[AC_REQUIRE([AC_COIN_MINGW_LD_FIX])
1103AC_REQUIRE([AC_COIN_ENABLE_DOSCOMPILE])
1104AC_REQUIRE([AC_COIN_PROG_CC])
1105AC_REQUIRE([AC_COIN_F77_COMPS])
1106AC_LANG_PUSH([Fortran 77])
1107
1108AC_ARG_VAR(ADD_FFLAGS,[Additional Fortran compiler options])
1109AC_ARG_VAR(DBG_FFLAGS,[Debug Fortran compiler options])
1110AC_ARG_VAR(OPT_FFLAGS,[Optimize Fortran compiler options])
1111
1112coin_has_f77=yes
1113
1114save_fflags="$FFLAGS"
1115
1116# We delete the cached value, since the test might not have been
1117# performed with our choice of compilers earlier
1118$as_unset ac_cv_prog_F77 || test "${ac_cv_prog_F77+set}" != set || { ac_cv_prog_F77=; export ac_cv_prog_F77; }
1119
1120# This is a real belt-and-suspenders approach. AC_COIN_FIND_F77 will use
1121# coin_f77_comps to see if there's a program that matches one of the names.
1122# If there's no such program, F77 = unavailable. If we match the name,
1123# feed AC_PROG_F77 the same search list, just to be sure it's a functioning
1124# compiler.
1125# AC_MSG_NOTICE([Fortran compiler candidates: $coin_f77_comps])
1126AC_COIN_FIND_F77
1127if test "$F77" != "unavailable" ; then
1128  AC_PROG_F77($coin_f77_comps)
1129else
1130  AC_MSG_WARN([Failed to find a Fortran compiler!])
1131fi
1132
1133FFLAGS="$save_fflags"
1134
1135# Check if a project specific FFLAGS variable has been set
1136if test x$COIN_PRJCT != x; then
1137  eval coin_tmp=\${${COIN_PRJCT}_FFLAGS+set}
1138  if test x$coin_tmp = xset; then
1139    eval FFLAGS=\${${COIN_PRJCT}_FFLAGS}
1140  fi
1141fi
1142
1143if test "$F77" != "unavailable" && test x"$FFLAGS" = x ; then
1144
1145  coin_add_fflags=
1146  coin_opt_fflags=
1147  coin_dbg_fflags=
1148  coin_warn_fflags=
1149
1150  if test "$G77" = "yes"; then
1151    coin_opt_fflags="-O3 -fomit-frame-pointer"
1152    coin_add_fflags="-pipe"
1153    coin_dbg_fflags="-g"
1154    case $enable_doscompile in
1155      mingw)
1156        FFLAGS="-mno-cygwin"
1157        AC_TRY_LINK(,[      write(*,*) 'Hello world'],
1158                    [coin_add_fflags="-mno-cygwin $coin_add_fflags"])
1159        FFLAGS=
1160      ;;
1161    esac
1162  else
1163    case $build in
1164      *-cygwin* | *-mingw*)
1165        case $F77 in
1166          ifort* | */ifort* | IFORT* | */IFORT* )
1167            coin_opt_fflags='-O3'
1168            coin_add_fflags='-fpp -nologo -MT'
1169            coin_dbg_fflags='-debug'
1170          ;;
1171          compile_f2c*)
1172            coin_opt_fflags='-MT -O2'
1173            coin_add_fflags='-nologo -wd4996'
1174            coin_dbg_fflags='-MTd'
1175          ;;
1176        esac
1177        ;;
1178      *-linux-*)
1179        case $F77 in
1180          ifc* | */ifc* | ifort* | */ifort*)
1181            coin_opt_fflags="-O3 -ip"
1182            coin_add_fflags="-cm -w90 -w95"
1183            coin_dbg_fflags="-g -CA -CB -CS"
1184            # Check if -i_dynamic is necessary (for new glibc library)
1185            FFLAGS=
1186            AC_TRY_LINK(,[      write(*,*) 'Hello world'],[],
1187                        [coin_add_fflags="-i_dynamic $coin_add_fflags"])
1188            ;;
1189          pgf77* | */pgf77* | pgf90* | */pgf90*)
1190            coin_opt_fflags="-fast"
1191            coin_add_fflags="-Kieee -pc 64"
1192            coin_dbg_fflags="-g"
1193          ;;
1194        esac
1195        ;;
1196      *-ibm-*)
1197        case "$F77" in
1198          xlf* | */xlf* | mpxlf* | */mpxlf* )
1199            coin_opt_fflags="-O3 -qarch=auto -qcache=auto -qtune=auto -qmaxmem=-1"
1200            coin_add_fflags="-bmaxdata:0x80000000 -qsuppress=1500-036 -qsuppress=1500-029"
1201            coin_dbg_fflags="-g -C"
1202            ;;
1203        esac
1204        ;;
1205      *-hp-*)
1206        coin_opt_fflags="+O3"
1207        coin_add_fflags="+U77"
1208        coin_dbg_fflags="-C -g"
1209        ;;
1210      *-sun-*)
1211        coin_opt_fflags="-O4"
1212        coin_dbg_fflags="-g"
1213        ;;
1214      *-sgi-*)
1215        coin_opt_fflags="-O5 -OPT:Olimit=0"
1216        coin_dbg_fflags="-g"
1217        ;;
1218    esac
1219  fi
1220
1221  if test "$ac_cv_prog_f77_g" = yes && test -z "$coin_dbg_fflags" ; then
1222    coin_dbg_fflags="-g"
1223  fi
1224
1225  if test -z "$coin_opt_fflags"; then
1226    # Try if -O option works if nothing else is set
1227    FFLAGS=-O
1228    AC_TRY_LINK(,[      integer i], [coin_opt_fflags="-O"])
1229  fi
1230
1231  # if PM doesn't want the warning messages, take them out
1232  if test x"$coin_skip_warn_fflags" = xyes; then
1233    coin_warn_fflags=
1234  fi
1235
1236  if test x${DBG_FFLAGS+set} != xset; then
1237    DBG_FFLAGS="$coin_dbg_fflags $coin_add_fflags $coin_warn_fflags"
1238  fi
1239  if test x${OPT_FFLAGS+set} != xset; then
1240    OPT_FFLAGS="$coin_opt_fflags $coin_add_fflags $coin_warn_fflags"
1241  fi
1242
1243  DBG_FFLAGS="$DBG_FFLAGS $ADD_FFLAGS"
1244  OPT_FFLAGS="$OPT_FFLAGS $ADD_FFLAGS"
1245
1246  if test "$coin_debug_compile" = "true"; then
1247    FFLAGS="$DBG_FFLAGS"
1248  else
1249    FFLAGS="$OPT_FFLAGS"
1250  fi
1251else
1252  FFLAGS="$FFLAGS $ADD_FFLAGS"
1253  if test x${DBG_FFLAGS+set} != xset; then
1254    DBG_FFLAGS="$FFLAGS"
1255  fi
1256  if test x${OPT_FFLAGS+set} != xset; then
1257    OPT_FFLAGS="$FFLAGS"
1258  fi
1259fi
1260
1261# If FFLAGS contains -mno-cygwin, CPPFLAGS must have it.
1262case "$FFLAGS" in
1263  *-mno-cygwin*)
1264    if test x${CPPFLAGS+set} != xset ; then
1265      CPPFLAGS="-mno-cygwin"
1266    else
1267      case "$CPPFLAGS" in
1268        *-mno-cygwin*)
1269          ;;
1270        *)
1271          CPPFLAGS="$CPPFLAGS -mno-cygwin"
1272          ;;
1273      esac
1274    fi ;;
1275esac
1276
1277# Try if FFLAGS works
1278if test "$F77" != "unavailable" ; then
1279  AC_TRY_LINK(,[      integer i],[],[FFLAGS=])
1280  if test -z "$FFLAGS"; then
1281    AC_MSG_WARN([The flags FFLAGS="$FFLAGS" do not work.  I will now just try '-O', but you might want to set FFLAGS manually.])
1282    FFLAGS='-O'
1283    AC_TRY_LINK(,[      integer i],[],[FFLAGS=])
1284    if test -z "$FFLAGS"; then
1285      AC_MSG_WARN([This value for FFLAGS does not work.  I will continue with empty FFLAGS, but you might want to set FFLAGS manually.])
1286    fi
1287  fi
1288fi
1289
1290AC_MSG_NOTICE([Fortran compiler options are: $FFLAGS])
1291
1292AC_ARG_VAR(MPIF77,[Fortran MPI Compiler])
1293if test x"$MPIF77" = x; then :; else
1294  AC_MSG_NOTICE([Will use MPI Fortran compiler $MPIF77])
1295  F77="$MPIF77"
1296fi
1297
1298case "$F77" in
1299  ifort* | */ifort* | IFORT* | */IFORT*)
1300    AC_COIN_MINGW_LD_FIX
1301    ;;
1302esac
1303
1304AC_LANG_POP([Fortran 77])
1305]) # AC_COIN_PROG_F77
1306
1307###########################################################################
1308#                           COIN_F77_WRAPPERS                             #
1309###########################################################################
1310
1311# Calls autoconfs AC_F77_WRAPPERS and does additional corrections to FLIBS
1312
1313AC_DEFUN([AC_COIN_F77_WRAPPERS],
1314[AC_BEFORE([AC_COIN_PROG_F77],[$0])dnl
1315AC_BEFORE([AC_PROG_F77],[$0])dnl
1316
1317AC_LANG_PUSH([Fortran 77])
1318
1319save_FLIBS="$FLIBS"
1320
1321AC_F77_WRAPPERS
1322
1323if test x"$save_FLIBS" != x; then
1324  FLIBS="$save_FLIBS"
1325else
1326  # This is to correct a missing exclusion in autoconf 2.59
1327  if test x"$FLIBS" != x; then
1328    my_flibs=
1329    for flag in $FLIBS; do
1330      case $flag in
1331        -lcrt*.o) ;;
1332               *) my_flibs="$my_flibs $flag" ;;
1333      esac
1334    done
1335    FLIBS="$my_flibs"
1336  fi
1337
1338  case $build in
1339  # The following is a fix to define FLIBS for ifort on Windows
1340     *-cygwin* | *-mingw*)
1341       case "$F77" in
1342         ifort* | */ifort* | IFORT* | */IFORT*)
1343           FLIBS="-link libifcorert.lib $LIBS /NODEFAULTLIB:libc.lib";;
1344         compile_f2c*)
1345           FLIBS=`$F77 -FLIBS` ;;
1346       esac;;
1347     *-hp-*)
1348         FLIBS="$FLIBS -lm";;
1349     *-ibm-*)
1350         FLIBS=`echo $FLIBS | sed 's/-lc)/-lc/g'` ;;
1351     *-linux-*)
1352       case "$F77" in
1353         pgf77* | */pgf77* | pgf90* | */pgf90*)
1354# ask linker to go through the archives multiple times
1355# (the Fortran compiler seems to do that automatically...
1356           FLIBS="-Wl,--start-group $FLIBS -Wl,--end-group" ;;
1357       esac
1358  esac
1359  ac_cv_f77_libs="$FLIBS"
1360fi
1361
1362AC_LANG_POP([Fortran 77])
1363
1364]) # AC_COIN_F77_WRAPPERS
1365
1366###########################################################################
1367#                             COIN_FIND_F77                               #
1368###########################################################################
1369
1370# Attempt to preempt autoconf by locating an appropriate F77 program. This
1371# macro will not trigger a fatal error if a suitable compiler cannot be
1372# found. It should be called before COIN_PROG_F77 or COIN_TRY_FLINK.
1373
1374AC_DEFUN([AC_COIN_FIND_F77],
1375[AC_REQUIRE([AC_COIN_ENABLE_DOSCOMPILE])
1376AC_REQUIRE([AC_COIN_F77_COMPS])
1377AC_MSG_NOTICE([Trying to determine Fortran compiler name])
1378AC_CHECK_PROGS([F77],[$coin_f77_comps],[unavailable])
1379])
1380
1381# Auxilliary macro to make sure both COIN_PROG_F77 and COIN_FIND_F77 use
1382# the same search lists for compiler names.
1383# For sparc-sun-solaris, promote Studio/Workshop compilers to front of list.
1384AC_DEFUN([AC_COIN_F77_COMPS],
1385[case $build in
1386  *-cygwin* | *-mingw*)
1387     if test "$enable_doscompile" = msvc ; then
1388       coin_f77_comps="ifort fl32 compile_f2c"
1389     else
1390       coin_f77_comps="gfortran g77 ifort fl32 compile_f2c"
1391     fi ;;
1392  sparc-sun-solaris*)
1393     coin_f77_comps="f95 f90 f77 xlf fort77 gfortran g77 pgf90 pgf77 ifort ifc frt af77" ;;
1394  *) coin_f77_comps="xlf fort77 gfortran f77 g77 pgf90 pgf77 ifort ifc frt af77" ;;
1395 esac
1396])
1397
1398###########################################################################
1399#                          COIN_INIT_AUTOMAKE                             #
1400###########################################################################
1401
1402# This macro calls the regular INIT_AUTOMAKE and MAINTAINER_MODE
1403# macros, and defines additional variables and makefile conditionals,
1404# that are used in the maintainer parts of the makfile.  It also
1405# checks if the correct versions of the autotools are used.
1406#
1407# This also defines the AC_SUBST variables:
1408# abs_source_dir     absolute path to source code for this package
1409# abs_bin_dir        absolute path to the directory where binaries are
1410#                    going to be installed (prefix/bin)
1411# abs_lib_dir        absolute path to the directory where libraries are
1412#                    going to be installed (prefix/lib)
1413# abs_include_dir    absolute path to the directory where the header files
1414#                    are installed (prefix/include)
1415
1416AC_DEFUN([AC_COIN_INIT_AUTOMAKE],
1417[AC_REQUIRE([AC_PROG_EGREP])
1418
1419# AC_MSG_NOTICE([Beginning automake initialisation.])
1420# Stuff for automake
1421AM_INIT_AUTOMAKE
1422AM_MAINTAINER_MODE
1423
1424coin_have_externals=no
1425if test "$enable_maintainer_mode" = yes; then
1426
1427  # If maintainer mode is chosen, we make sure that the correct versions
1428  # of the tools are used, and that we know where libtool.m4 is (to
1429  # recreate acinclude.m4)
1430
1431  AC_SUBST(LIBTOOLM4)
1432  LIBTOOLM4=
1433  # Normally, $HOME
1434  AUTOTOOLS_DFLT=$HOME
1435
1436  AC_CACHE_CHECK([whether we are using the correct autotools],
1437                 [ac_cv_use_correct_autotools],
1438                 [ac_cv_use_correct_autotools=check])
1439
1440  if test $ac_cv_use_correct_autotools = check; then
1441    ac_cv_use_correct_autotools=yes
1442    # Check if we have autoconf
1443    AC_CHECK_PROG([have_autoconf],[autoconf],[yes],[no])
1444    if test $have_autoconf = no; then
1445      AC_MSG_ERROR([You specified you want to use maintainer mode, but I cannot find autoconf in your path.])
1446    fi
1447
1448    # Check whether autoconf is the correct version
1449    correct_version='2.59'
1450    grep_version=`echo  $correct_version | sed -e 's/\\./\\\\\\./g'`
1451    AC_MSG_CHECKING([whether we are using the correct version ($correct_version) of autoconf])
1452    autoconf --version > confauto.out 2>&1
1453    if $EGREP $grep_version confauto.out >/dev/null 2>&1; then
1454      AC_MSG_RESULT([yes])
1455    else
1456      rm -f confauto.out
1457      AC_MSG_RESULT([no])
1458      AC_MSG_ERROR([You don't have the correct version of autoconf as the first one in your path.])
1459    fi
1460    rm -f confauto.out
1461
1462    # Check if the executable autoconf is picked up from the correct location
1463    AC_MSG_CHECKING([whether autoconf is coming from the correct location])
1464    autoconf_dir=`which autoconf | sed -e 's=/autoconf=='`
1465    autoconf_dir=`cd $autoconf_dir; pwd`
1466    if test x$AUTOTOOLS_DIR = x; then
1467      want_dir=$AUTOTOOLS_DFLT/bin
1468    else
1469      want_dir=$AUTOTOOLS_DIR/bin
1470    fi
1471    if test $autoconf_dir = `cd $want_dir; pwd`; then
1472      AC_MSG_RESULT([yes])
1473    else
1474      rm -f confauto.out
1475      AC_MSG_RESULT([no])
1476      AC_MSG_ERROR([The autoconf executable should be picked up from \$AUTOTOOLS_DFLT/bin or \$AUTOTOOLS_DIR/bin.])
1477    fi
1478
1479    # Check if we have automake
1480    AC_CHECK_PROG([have_automake],[automake],[yes],[no])
1481    if test $have_automake = no; then
1482      AC_MSG_ERROR([You specified you want to use maintainer mode, but I cannot find automake in your path.])
1483    fi
1484 
1485    # Check whether automake is the correct version
1486    correct_version='1.9.6'
1487    grep_version=`echo  $correct_version | sed -e 's/\\./\\\\\\./g'`
1488    AC_MSG_CHECKING([whether we are using the correct version ($correct_version) of automake])
1489    automake --version > confauto.out 2>&1
1490    if $EGREP $grep_version confauto.out >/dev/null 2>&1; then
1491      AC_MSG_RESULT([yes])
1492    else
1493      rm -f confauto.out
1494      AC_MSG_RESULT([no])
1495      AC_MSG_ERROR([You don't have the correct version of automake as the first one in your path.])
1496    fi
1497    rm -f confauto.out
1498
1499    # Check if the executable automake is picked up from the correct location
1500    AC_MSG_CHECKING([whether automake is coming from the correct location])
1501    automake_dir=`which automake | sed -e 's=/automake=='`
1502    automake_dir=`cd $automake_dir; pwd`
1503    if test x$AUTOTOOLS_DIR = x; then
1504      want_dir=$AUTOTOOLS_DFLT/bin
1505    else
1506      want_dir=$AUTOTOOLS_DIR/bin
1507    fi
1508    if test $automake_dir = `cd $want_dir; pwd`; then
1509      AC_MSG_RESULT([yes])
1510    else
1511      rm -f confauto.out
1512      AC_MSG_RESULT([no])
1513      AC_MSG_ERROR([The automake executable should be picked up from \$AUTOTOOLS_DFLT/bin or \$AUTOTOOLS_DIR/bin.])
1514    fi
1515
1516    # Check if this is the correct version of libtool (with escaped dots)
1517    if test x$AUTOTOOLS_DIR = x; then
1518      want_dir=$AUTOTOOLS_DFLT/share
1519    else
1520      want_dir=$AUTOTOOLS_DIR/share
1521    fi
1522    correct_version='1.5.22'
1523    grep_version=`echo  $correct_version | sed -e 's/\\./\\\\\\./g'`
1524    AC_COIN_CHECK_FILE([$want_dir/libtool/ltmain.sh],
1525                       [have_ltmain=yes],
1526                       [have_ltmain=no])
1527    AC_MSG_CHECKING([whether we are using the correct version ($correct_version) of libtool.])
1528    if test $have_ltmain = yes; then
1529    if $EGREP $grep_version $want_dir/libtool/ltmain.sh >/dev/null 2>&1; then
1530        AC_MSG_RESULT([yes])
1531      else
1532        AC_MSG_RESULT([no])
1533        AC_MSG_ERROR([You don't have the correct version of libtool.])
1534      fi
1535    else
1536      AC_MSG_RESULT([no])
1537      AC_MSG_ERROR([I cannot find the ltmain.sh file.])
1538    fi
1539  fi
1540
1541  # Check if we can find the libtool file
1542  if test x$AUTOTOOLS_DIR = x; then
1543    want_dir=$AUTOTOOLS_DFLT/share
1544  else
1545    want_dir=$AUTOTOOLS_DIR/share
1546  fi
1547  AC_COIN_CHECK_FILE([$want_dir/aclocal/libtool.m4],
1548                     [LIBTOOLM4="$want_dir/aclocal/libtool.m4"],
1549                     [AC_MSG_ERROR([I cannot find the libtool.m4 file.])])
1550
1551  # Check if we have an Externals file
1552  if test -r $srcdir/Externals; then
1553    coin_have_externals=yes
1554  fi
1555  # Check if subversion is installed and understands https
1556  AC_CHECK_PROG([have_svn],[svn],[yes],[no])
1557  if test x$have_svn = xyes; then
1558    AC_CACHE_CHECK([whether svn understands https],
1559                   [ac_cv_svn_understands_https],
1560                   [svn --version > confauto.out 2>&1
1561                    if $EGREP https confauto.out >/dev/null 2>&1; then
1562                      ac_cv_svn_understands_https=yes
1563                    else
1564                      ac_cv_svn_understands_https=no
1565                      have_svn=no
1566                      ac_cv_prog_have_svn=no
1567                    fi
1568                    rm -f confauto.out])
1569  fi
1570
1571  # Find the location of the BuildTools directory
1572  BUILDTOOLSDIR=
1573  if test -r $srcdir/BuildTools/coin.m4; then
1574    BUILDTOOLSDIR=$srcdir/BuildTools
1575  else
1576    if test -r $srcdir/../BuildTools/coin.m4; then
1577      BUILDTOOLSDIR=$srcdir/../BuildTools
1578    else
1579      if test -r $srcdir/../../BuildTools/coin.m4; then
1580        BUILDTOOLSDIR=$srcdir/../../BuildTools
1581      else
1582        AC_MSG_ERROR(Cannot find the BuildTools directory)
1583      fi
1584    fi
1585  fi
1586  AC_SUBST(BUILDTOOLSDIR)
1587
1588  # The following variable is set to the name of the directory where
1589  # the autotool scripts are located
1590  AC_SUBST(AUX_DIR)
1591  AUX_DIR=$ac_aux_dir
1592fi
1593
1594# helpful variable for the base directory of this package
1595abs_source_dir=`cd $srcdir; pwd`
1596AC_SUBST(abs_source_dir)
1597
1598# Stuff for example Makefiles
1599if test x$prefix = xNONE; then
1600  full_prefix=$ac_default_prefix
1601else
1602  full_prefix=$prefix
1603fi
1604full_prefix=`cd $full_prefix ; pwd`
1605AC_SUBST(abs_lib_dir)
1606abs_lib_dir=$full_prefix/lib
1607AC_SUBST(abs_include_dir)
1608abs_include_dir=$full_prefix/include
1609AC_SUBST(abs_bin_dir)
1610abs_bin_dir=$full_prefix/bin
1611
1612AM_CONDITIONAL(HAVE_EXTERNALS,
1613               test $coin_have_externals = yes && test x$have_svn = xyes)
1614
1615# AC_MSG_NOTICE([End automake initialisation.])
1616
1617]) # AC_COIN_INIT_AUTOMAKE
1618
1619###########################################################################
1620#                          COIN_CREATE_LIBTOOL                            #
1621###########################################################################
1622
1623# This does all the tests necessary to create the libtool script in the
1624# package base directory.  If this is used, then the COIN_INIT_AUTO_TOOLS
1625# test in the subdirectories will be able to skip the libtool tests and
1626# just use the one in the package base directory.
1627
1628m4_define([AC_COIN_CREATE_LIBTOOL],
1629[AC_CANONICAL_BUILD
1630
1631# Check if user wants to produce debugging code
1632AC_COIN_DEBUG_COMPILE
1633
1634# Get the name of the C compiler and appropriate compiler options
1635AC_COIN_PROG_CC
1636
1637# Get the name of the C++ compiler and appropriate compiler options
1638AC_COIN_PROG_CXX
1639
1640# Get the name of the Fortran compiler and appropriate compiler options
1641AC_COIN_PROG_F77
1642
1643# Initialize automake and libtool
1644# AC_MSG_NOTICE([Calling INIT_AUTO_TOOLS from CREATE_LIBTOOL.])
1645AC_COIN_INIT_AUTO_TOOLS
1646# AC_MSG_NOTICE([Finished INIT_AUTO_TOOLS from CREATE_LIBTOOL.])
1647])
1648
1649###########################################################################
1650#                         COIN_INIT_AUTO_TOOLS                            #
1651###########################################################################
1652
1653# Initialize the auto tools automake and libtool, with all
1654# modifications we want for COIN packages.
1655#
1656# RPATH_FLAGS        link flags for hardcoding path to shared objects
1657
1658# This is a trick to have this code before AC_COIN_PROG_LIBTOOL
1659AC_DEFUN([AC_COIN_DISABLE_STATIC],
1660[
1661# On Cygwin, building DLLs doesn't work
1662case $build in
1663  *-cygwin*)
1664    coin_disable_shared=yes
1665    platform=Cygwin
1666  ;;
1667  *-mingw*)
1668    coin_disable_shared=yes
1669    platform="Msys"
1670#    case "$CXX" in
1671#      cl*)
1672#        coin_disable_shared=yes
1673#        platform="Msys with cl"
1674#    ;;
1675#    esac
1676  ;;
1677esac
1678if test x"$coin_disable_shared" = xyes; then
1679  if test x"$enable_shared" = xyes; then
1680    AC_MSG_WARN([On $platform, shared objects are not supported. I'm disabling your choice.])
1681  fi
1682  enable_shared=no
1683fi
1684# By default, we only want the shared objects to be compiled
1685AC_DISABLE_STATIC
1686])
1687
1688m4_define([AC_COIN_INIT_AUTO_TOOLS],
1689[{AC_BEFORE([AC_COIN_PROG_CXX],[$0])
1690AC_BEFORE([AC_COIN_PROG_CC],[$0])
1691AC_BEFORE([AC_COIN_PROG_F77],[$0])
1692
1693# START
1694AC_COIN_DISABLE_STATIC
1695
1696# Initialize automake
1697AC_COIN_INIT_AUTOMAKE
1698
1699LIBTOOL=
1700if test -r ../libtool; then
1701  coin_config_dir=..
1702  LIBTOOL='$(SHELL) $(top_builddir)/../libtool'
1703fi
1704if test "x$LIBTOOL" = x; then
1705  if test -r ../../libtool; then
1706    coin_config_dir=../..
1707    LIBTOOL='$(SHELL) $(top_builddir)/../../libtool'
1708  fi
1709fi
1710
1711if test "x$LIBTOOL" = x; then
1712# AC_MSG_NOTICE([Creating libtool script (calling COIN_PROG_LIBTOOL).])
1713  # Stuff for libtool
1714  AC_COIN_PROG_LIBTOOL
1715# AC_MSG_NOTICE([Finished COIN_PROG_LIBTOOL.])
1716  # set RPATH_FLAGS to the compiler link flags required to hardcode location
1717  # of the shared objects
1718  AC_COIN_RPATH_FLAGS($abs_lib_dir)
1719
1720else
1721
1722  AC_MSG_NOTICE([Using libtool script in directory $coin_config_dir])
1723  # get all missing information from the config.log file
1724
1725  # output variables and defines
1726  as_save_IFS=$IFS
1727  IFS='
1728'
1729  for oneline in `cat $coin_config_dir/config.status`; do
1730    case "$oneline" in
1731         # First some automake conditionals
1732      s,@am__fastdep* | s,@AR@* | s,@CPP@*  | s,@CPPFLAGS@* | s,@CXXCPP@*  | \
1733      s,@RANLIB@* | s,@STRIP@* | s,@ac_ct_AR@* | s,@ac_ct_RANLIB@* | \
1734      s,@ac_ct_STRIP@* | s,@host* | s,@LN_S@* | s,@RPATH_FLAGS@* | \
1735      s,@ac_c_preproc_warn_flag@* |  s,@ac_cxx_preproc_warn_flag@* )
1736        command=`echo $oneline | sed -e 's/^s,@//' -e 's/@,/="/' -e 's/,;t t/"/'`
1737#        echo "$command"
1738        eval "$command"
1739        ;;
1740      s,@DEFS@* )
1741        command=`echo $oneline | sed -e 's/^s,@DEFS@,/defsline="/' -e 's/,;t t/"/'`
1742#        echo "$command"
1743        eval "$command"
1744        ;;
1745    esac
1746  done
1747  IFS=$as_save_IFS
1748
1749  # And some defines (assuming here that the packages base dir
1750  # doesn't have a config.h file
1751  for word in $defsline; do
1752#    echo word $word
1753    case $word in
1754      -DHAVE_@<:@A-Z_@:>@*_H=1 | -DSTDC_HEADERS=1 )
1755        i=`echo $word | sed -e 's/-D/#define /' -e 's/=/ /'`
1756#        echo dd $i
1757        echo $i >>confdefs.h
1758        ;;
1759    esac
1760  done
1761fi
1762
1763# AC_MSG_NOTICE([End of INIT_AUTO_TOOLS.])
1764
1765# ToDo
1766# For now, don't use the -no-undefined flag, since the Makefiles are
1767# not yet set up that way.  But we need to fix this, when we want
1768# to comile DLLs under Windows.
1769LT_LDFLAGS=
1770AC_SUBST(LT_LDFLAGS)
1771
1772#END
1773}])
1774
1775
1776###########################################################################
1777#                           COIN_PROG_LIBTOOL                             #
1778###########################################################################
1779
1780# Setup the libtool stuff together with any modifications to make it
1781# work on additional platforms
1782
1783AC_DEFUN([AC_COIN_LIBTOOL_WRAPPER],
1784[AC_BEFORE([AC_COIN_BLA],[$0])
1785AC_PROG_LIBTOOL])
1786
1787AC_DEFUN([AC_COIN_BLA],[echo bla])
1788
1789AC_DEFUN([AC_COIN_PROG_LIBTOOL],
1790[# No longer needed now that CPPFLAGS is correctly set -- lh, 061214 --
1791 # AC_REQUIRE([AC_COIN_DLFCN_H])
1792
1793# NEW: If libtool exists in the directory higher up, we use that one
1794#      instead of creating a new one
1795
1796# It turns out that the code for AC_PROG_LIBTOOL is somehow AC_REQUIRED
1797# out in front of this macro body. You'll notice that LIBTOOL is already
1798# defined here.  We'll have to count on this macro not being called if libtool
1799# already exists, or at least move the libtool fixes outside the conditional.
1800# AC_MSG_NOTICE([Entering coin_prog_libtool, LIBTOOL = "$LIBTOOL".])
1801# This test is therefore removed.  -- lh, 061214 --
1802# if test "x$LIBTOOL" = x; then
1803
1804# AC_MSG_NOTICE([Calling PROG_LIBTOOL.])
1805  AC_PROG_LIBTOOL
1806# AC_MSG_NOTICE([Finished PROG_LIBTOOL.])
1807  AC_SUBST(ac_c_preproc_warn_flag)
1808  AC_SUBST(ac_cxx_preproc_warn_flag)
1809
1810# Fix bugs in libtool script for Windows native compilation:
1811# - cygpath is not correctly quoted in fix_srcfile_path
1812# - paths generated for .lib files is not run through cygpath -w
1813
1814
1815# - lib includes subdirectory information; we want to replace
1816#
1817# old_archive_cmds="lib /OUT:\$oldlib\$oldobjs\$old_deplibs"
1818#
1819# by
1820#
1821# old_archive_cmds="echo \$oldlib | grep .libs >/dev/null; if test \$? = 0; then cd .libs; lib /OUT:\`echo \$oldlib\$oldobjs\$old_deplibs | sed -e s@\.libs/@@g\`; cd .. ; else lib /OUT:\$oldlib\$oldobjs\$old_deplibs ; fi"
1822#
1823#          -e 's%old_archive_cmds="lib /OUT:\\\$oldlib\\\$oldobjs\\\$old_deplibs"%old_archive_cmds="echo \\\$oldlib \| grep .libs >/dev/null; if test \\\$? = 0; then cd .libs; lib /OUT:\\\`echo \\\$oldlib\\\$oldobjs\\\$old_deplibs \| sed -e s@\\.libs/@@g\\\`; cd .. ; else lib /OUT:\\\$oldlib\\\$oldobjs\\\$old_deplibs; fi"%' \
1824
1825# The following was a hack for chaniing @BACKSLASH to \
1826#          -e 'sYcompile_command=`\$echo "X\$compile_command" | \$Xsed -e '"'"'s%@OUTPUT@%'"'"'"\$output"'"'"'%g'"'"'`Ycompile_command=`\$echo "X\$compile_command" | \$Xsed -e '"'"'s%@OUTPUT@%'"'"'"\$output"'"'"'%g'"'"' | \$Xsed -e '"'"'s%@BACKSLASH@%\\\\\\\\\\\\\\\\%g'"'"'`Y' \
1827
1828  # Correct cygpath for minGW (ToDo!)
1829  AC_MSG_NOTICE([Build is "$build".])
1830  mydos2unix='| dos2unix'
1831  case $build in
1832    *-mingw*)
1833      CYGPATH_W=echo
1834      mydos2unix=
1835      ;;
1836  esac
1837
1838  case $build in
1839    *x86_64-*)
1840# Here we need to check if -m32 is specified.  If so, we need to correct sys_lib_search_path_spec
1841      if test "$GCC" = yes && (echo $CXXFLAGS $CFLAGS $FFLAGS | $EGREP 'm32' >& /dev/null); then
1842        AC_MSG_NOTICE(Applying patches to libtool for 32bit compilation)
1843        sed -e 's|sys_lib_search_path_spec=".*"|sys_lib_search_path_spec="/lib /usr/lib"|' libtool > conftest.bla
1844        mv conftest.bla libtool
1845        chmod 755 libtool 
1846      fi
1847      ;;
1848    *-cygwin* | *-mingw*)
1849    case "$CXX" in
1850      cl* | */cl* | CL* | */CL*)
1851        AC_MSG_NOTICE(Applying patches to libtool for cl compiler)
1852        sed -e 's|fix_srcfile_path=\"`cygpath -w \"\$srcfile\"`\"|fix_srcfile_path=\"\\\`'"$CYGPATH_W"' \\\"\\$srcfile\\\"\\\`\"|' \
1853            -e 's|fix_srcfile_path=\"\"|fix_srcfile_path=\"\\\`'"$CYGPATH_W"' \\\"\\$srcfile\\\"\\\`\"|' \
1854            -e 's%compile_deplibs=\"\$dir/\$old_library \$compile_deplibs\"%compile_deplibs="'\`"$CYGPATH_W"' \$dir/\$old_library | sed -e '"'"'sY\\\\\\\\Y/Yg'"'"\`' \$compile_deplibs\"'% \
1855            -e 's%compile_deplibs=\"\$dir/\$linklib \$compile_deplibs\"%compile_deplibs="'\`"$CYGPATH_W"' \$dir/\$linklib | sed -e '"'"'sY\\\\\\\\Y/Yg'"'"\`' \$compile_deplibs\"'% \
1856            -e 's%lib /OUT:%lib -OUT:%' \
1857            -e "s%cygpath -w%$CYGPATH_W%" \
1858            -e 's%$AR x \\$f_ex_an_ar_oldlib%bla=\\`lib -nologo -list \\$f_ex_an_ar_oldlib | xargs echo '"$mydos2unix"'\\`; echo \\$bla; for i in \\$bla; do lib -nologo -extract:\\$i \\$f_ex_an_ar_oldlib; done%' \
1859            -e 's/$AR t/lib -nologo -list/' \
1860            -e 's%f_ex_an_ar_oldlib="\($?*1*\)"%f_ex_an_ar_oldlib='\`"$CYGPATH_W"' \1`%' \
1861            -e 's%^archive_cmds=.*%archive_cmds="\\$CC -o \\$lib \\$libobjs \\$compiler_flags \\\\\\`echo \\\\\\"\\$deplibs\\\\\\" | \\$SED -e '"\'"'s/ -lc\\$//'"\'"'\\\\\\` -link -dll~linknames="%' \
1862            -e 's%old_archive_cmds="lib -OUT:\\$oldlib\\$oldobjs\\$old_deplibs"%old_archive_cmds="if test -r \\$oldlib; then bla=\\"\\$oldlib\\"; else bla=; fi; lib -OUT:\\$oldlib \\\\\\$bla\\$oldobjs\\$old_deplibs"%' \
1863        libtool > conftest.bla
1864
1865        mv conftest.bla libtool
1866        chmod 755 libtool
1867        ;;
1868      *)
1869        AC_MSG_NOTICE(Applying patches to libtool for GNU compiler)
1870        sed -e 's|fix_srcfile_path=\"`cygpath -w \"\$srcfile\"`\"|fix_srcfile_path=\"\\\`'"$CYGPATH_W"' \\\"\\$srcfile\\\"\\\`\"|' \
1871            -e 's|"lib /OUT:\\$oldlib\\$oldobjs\\$old_deplibs"|"\\$AR \\$AR_FLAGS \\$oldlib\\$oldobjs\\$old_deplibs~\\$RANLIB \\$oldlib"|' \
1872            -e 's|libext="lib"|libext="a"|' \
1873        libtool > conftest.bla
1874
1875        mv conftest.bla libtool
1876        chmod 755 libtool
1877        ;;
1878    esac
1879    ;;
1880    *-darwin*)
1881      AC_MSG_NOTICE(Applying patches to libtool for Darwin)
1882      sed -e 's/verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"/verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"/' \
1883      libtool > conftest.bla
1884
1885      mv conftest.bla libtool
1886      chmod 755 libtool
1887      ;;
1888  esac
1889# This fi matches the commented `if test "x$LIBTOOL" = x;' up at the head of
1890# the macro. -- lh, 061214 --
1891# fi
1892
1893# AC_MSG_NOTICE([End libtool initialisation.])
1894]) # AC_COIN_PROG_LIBTOOL
1895
1896# This is a trick to force the check for the dlfcn header to be done before
1897# the checks for libtool
1898# No longer needed now that CPPFLAGS is correctly set.  -- lh, 061214 --
1899# ACDEFUN([AC_COIN_DLFCN_H],
1900# [AC_LANG_PUSH(C)
1901# AC_COIN_CHECK_HEADER([dlfcn.h])
1902# AC_LANG_POP(C)
1903# ]) # AC_COIN_DLFCN_H
1904
1905###########################################################################
1906#                            COIN_RPATH_FLAGS                             #
1907###########################################################################
1908
1909# This macro, in case shared objects are used, defines a variable
1910# RPATH_FLAGS that can be used by the linker to hardwire the library
1911# search path for the given directories.  This is useful for example
1912# Makefiles
1913
1914AC_DEFUN([AC_COIN_RPATH_FLAGS],
1915[RPATH_FLAGS=
1916
1917if test $enable_shared = yes; then
1918  case $build in
1919    *-linux-*)
1920      if test "$GXX" = "yes"; then
1921        RPATH_FLAGS=
1922        for dir in $1; do
1923          RPATH_FLAGS="$RPATH_FLAGS -Wl,--rpath -Wl,$dir"
1924        done
1925      fi ;;
1926    *-darwin*)
1927        RPATH_FLAGS=nothing ;;
1928    *-ibm-*)
1929      case "$CXX" in
1930      xlC* | */xlC* | mpxlC* | */mpxlC*)
1931        RPATH_FLAGS=nothing ;;
1932      esac ;;
1933    *-hp-*)
1934        RPATH_FLAGS=nothing ;;
1935    *-mingw32)
1936        RPATH_FLAGS=nothing ;;
1937    *-sun-*)
1938        RPATH_FLAGS=
1939        for dir in $1; do
1940          RPATH_FLAGS="$RPATH_FLAGS -R$dir"
1941        done
1942  esac
1943
1944  if test "$RPATH_FLAGS" = ""; then
1945    AC_MSG_WARN([Could not automatically determine how to tell the linker about automatic inclusion of the path for shared libraries.  The test examples might not work if you link against shared objects.  You will need to set the LD_LIBRARY_PATH, DYLP_LIBRARY_PATH, or LIBDIR variable manually.])
1946  fi
1947  if test "$RPATH_FLAGS" = "nothing"; then
1948    RPATH_FLAGS=
1949  fi
1950fi
1951
1952AC_SUBST(RPATH_FLAGS)
1953]) # AC_COIN_RPATH_FLAGS
1954
1955###########################################################################
1956#                        COIN_LINK_INPUT_CMD                              #
1957###########################################################################
1958
1959# This macro determines which command should be used to "link" files
1960# that are input to the generated executables.  On Windows, the codes
1961# using the native Windows system libraries, cannot understand symbolic
1962# links, and a copy should be used instead of 'ln -s'.
1963# The result is stored in coin_link_input_cmd
1964
1965AC_DEFUN([AC_COIN_LINK_INPUT_CMD],
1966[AC_REQUIRE([AC_PROG_LN_S])
1967AC_BEFORE([AC_COIN_PROG_CC], [$0])
1968AC_BEFORE([AC_COIN_ENABLE_DOSCOMPILE], [$0])
1969
1970AC_MSG_CHECKING([which command should be used to link input files])
1971coin_link_input_cmd="$LN_S"
1972if test "$enable_doscompile" = mingw; then
1973  coin_link_input_cmd=cp
1974fi
1975case "$CC" in
1976  cl* | */cl* | CL* | */CL*)
1977    coin_link_input_cmd=cp ;;
1978esac
1979AC_MSG_RESULT($coin_link_input_cmd)
1980])
1981
1982###########################################################################
1983#                              COIN_FINALIZE                              #
1984###########################################################################
1985
1986# This macro should be called at the very end of the configure.ac file.
1987# It creates the output files (by using AC_OUTPUT), and might do some other
1988# things (such as generating links to data files in a VPATH configuration).
1989# It also prints the "success" message.
1990# Note: If the variable coin_skip_ac_output is set to yes, then no output
1991# files are written.
1992
1993AC_DEFUN([AC_COIN_FINALIZE],
1994[
1995AC_REQUIRE([AC_COIN_LINK_INPUT_CMD])
1996if test x$coin_skip_ac_output != xyes; then
1997
1998  FADDLIBS="$ADDLIBS"
1999  if test x"$coin_need_flibs" = xyes; then
2000    ADDLIBS="$ADDLIBS $FLIBS"
2001  fi
2002
2003  # library extension
2004  AC_SUBST(LIBEXT)
2005  case "$CC" in
2006    cl* | */cl* | CL* | */CL*)
2007         LIBEXT=lib ;;
2008      *) LIBEXT=a ;;
2009  esac
2010
2011  # Define VPATH_DISTCLEANFILES to be everything that needs to be
2012  # cleaned for distclean in a vpath configuration
2013  AC_SUBST(VPATH_DISTCLEANFILES)
2014  VPATH_DISTCLEANFILES="$coin_vpath_link_files"
2015
2016  # Take out subdirectories if their configuration concluded that they
2017  # don't need to be compiled
2018  if test x"$coin_ac_skip_subdirs" != x; then
2019    new_subdirs=
2020    for i in $subdirs; do
2021      skipme=no
2022      for j in $coin_ac_skip_subdirs; do
2023        if test $i = $j; then
2024          skipme=yes;
2025        fi
2026      done
2027      if test $skipme = no; then
2028        new_subdirs="$new_subdirs $i"
2029      fi
2030    done
2031    subdirs="$new_subdirs"
2032  fi
2033
2034  AC_OUTPUT
2035
2036  if test x"$coin_vpath_link_files" = x; then : ; else
2037    lnkcmd="$coin_link_input_cmd"
2038    if test "$lnkcmd" = cp; then
2039      AC_MSG_NOTICE(Copying data files for VPATH configuration)
2040    else
2041      AC_MSG_NOTICE(Creating VPATH links for data files)
2042    fi
2043    for file in $coin_vpath_link_files; do
2044      dir=`AS_DIRNAME(["./$file"])`
2045      if test -d $dir; then : ; else
2046        AS_MKDIR_P($dir)
2047      fi
2048      rm -f $file
2049      $lnkcmd $abs_source_dir/$file $file
2050    done
2051  fi
2052
2053  if test x$coin_projectdir = xyes; then
2054    AC_MSG_NOTICE([Configuration of $PACKAGE_NAME successful])
2055  else
2056    AC_MSG_NOTICE([Main configuration of $PACKAGE_NAME successful])
2057  fi
2058else
2059  AC_MSG_NOTICE([No configuration of $PACKAGE_NAME necessary])
2060fi
2061
2062]) #AC_COIN_FINALIZE
2063
2064###########################################################################
2065#                             COIN_VPATH_LINK                             #
2066###########################################################################
2067
2068# This macro makes sure that a symbolic link is created to a file in
2069# the source code directory tree if we are in a VPATH compilation, and
2070# if this package is the main package to be installed
2071
2072AC_DEFUN([AC_COIN_VPATH_LINK],
2073[AC_REQUIRE([AC_COIN_CHECK_VPATH])
2074if test $coin_vpath_config = yes; then
2075  coin_vpath_link_files="$coin_vpath_link_files $1"
2076fi
2077]) #AC_COIN_VPATH_LINK
2078
2079###########################################################################
2080#                       COIN_ENABLE_GNU_PACKAGES                          #
2081###########################################################################
2082
2083# This macro defined the --enable-gnu-packages flag.  This can be used
2084# to check if a user wants to compile GNU packges (such as readline or
2085# zlib) into the executable.  By default, GNU packages are disabled.
2086# This also defines the automake conditional COIN_ENABLE_GNU_PACKAGES
2087
2088AC_DEFUN([AC_COIN_ENABLE_GNU_PACKAGES],
2089[AC_ARG_ENABLE([gnu-packages],
2090               [AC_HELP_STRING([--enable-gnu-packages],
2091                               [compile with GNU packages (disabled by default)])],
2092               [coin_enable_gnu=$enableval],
2093               [coin_enable_gnu=no])
2094]) # AC_COIN_ENABLE_GNU_PACKAGES
2095
2096###########################################################################
2097#                           COIN_CHECK_GNU_ZLIB                           #
2098###########################################################################
2099
2100# This macro checks for the libz library.
2101
2102AC_DEFUN([AC_COIN_CHECK_GNU_ZLIB],
2103[AC_REQUIRE([AC_COIN_ENABLE_GNU_PACKAGES])
2104AC_BEFORE([AC_COIN_PROG_CXX],[$0])
2105AC_BEFORE([AC_COIN_PROG_CC],[$0])
2106AC_BEFORE([AC_COIN_PROG_F77],[$0])
2107AC_BEFORE([$0],[AC_COIN_FINALIZE])
2108
2109coin_has_zlib=no
2110if test $coin_enable_gnu = yes; then
2111  AC_COIN_CHECK_HEADER([zlib.h],[coin_has_zlib=yes])
2112
2113  if test $coin_has_zlib = yes; then
2114    AC_CHECK_LIB([z],[gzopen],
2115                 [ADDLIBS="-lz $ADDLIBS"],
2116                 [coin_has_zlib=no])
2117  fi
2118
2119  if test $coin_has_zlib = yes; then
2120    AC_DEFINE([COIN_HAS_ZLIB],[1],[Define to 1 if zlib is available])
2121  fi
2122fi
2123
2124AM_CONDITIONAL(COIN_HAS_ZLIB,test x$coin_has_zlib = xyes)
2125]) # AC_COIN_CHECK_GNU_ZLIB
2126
2127
2128###########################################################################
2129#                          COIN_CHECK_GNU_BZLIB                           #
2130###########################################################################
2131
2132# This macro checks for the libbz2 library.
2133
2134AC_DEFUN([AC_COIN_CHECK_GNU_BZLIB],
2135[AC_REQUIRE([AC_COIN_ENABLE_GNU_PACKAGES])
2136AC_BEFORE([AC_COIN_PROG_CXX],[$0])
2137AC_BEFORE([AC_COIN_PROG_CC],[$0])
2138AC_BEFORE([AC_COIN_PROG_F77],[$0])
2139AC_BEFORE([$0],[AC_COIN_FINALIZE])
2140
2141coin_has_bzlib=no
2142if test $coin_enable_gnu = yes; then
2143  AC_COIN_CHECK_HEADER([bzlib.h],[coin_has_bzlib=yes])
2144
2145  if test $coin_has_bzlib = yes; then
2146    AC_CHECK_LIB([bz2],[BZ2_bzReadOpen],
2147                 [ADDLIBS="-lbz2 $ADDLIBS"],
2148                 [coin_has_bzlib=no])
2149  fi
2150
2151  if test $coin_has_bzlib = yes; then
2152    AC_DEFINE([COIN_HAS_BZLIB],[1],[Define to 1 if bzlib is available])
2153  fi
2154fi
2155]) # AC_COIN_CHECK_GNU_BZLIB
2156
2157
2158###########################################################################
2159#                         COIN_CHECK_GNU_READLINE                         #
2160###########################################################################
2161
2162# This macro checks for GNU's readline.  It verifies that the header
2163# readline/readline.h is available, and that the -lreadline library
2164# contains "readline".  It is assumed that #include <stdio.h> is included
2165# in the source file before the #include<readline/readline.h>
2166
2167AC_DEFUN([AC_COIN_CHECK_GNU_READLINE],
2168[AC_REQUIRE([AC_COIN_ENABLE_GNU_PACKAGES])
2169AC_BEFORE([AC_COIN_PROG_CXX],[$0])
2170AC_BEFORE([AC_COIN_PROG_CC],[$0])
2171AC_BEFORE([AC_COIN_PROG_F77],[$0])
2172AC_BEFORE([$0],[AC_COIN_FINALIZE])
2173
2174coin_has_readline=no
2175if test $coin_enable_gnu = yes; then
2176  AC_COIN_CHECK_HEADER([readline/readline.h],
2177                       [coin_has_readline=yes],[],
2178                       [#include <stdio.h>])
2179
2180  coin_save_LIBS="$LIBS"
2181  LIBS=
2182  # First we check if tputs and friends are available
2183  if test $coin_has_readline = yes; then
2184    AC_SEARCH_LIBS([tputs],[ncurses termcap curses],[],
2185                   [coin_has_readline=no])
2186  fi
2187
2188  # Now we check for readline
2189  if test $coin_has_readline = yes; then
2190    AC_CHECK_LIB([readline],[readline],
2191                 [ADDLIBS="-lreadline $LIBS $ADDLIBS"],
2192                 [coin_has_readline=no])
2193  fi
2194
2195  if test $coin_has_readline = yes; then
2196    AC_DEFINE([COIN_HAS_READLINE],[1],[Define to 1 if readline is available])
2197  fi
2198
2199  LIBS="$coin_save_LIBS"
2200fi
2201]) # AC_COIN_CHECK_GNU_READLINE
2202
2203###########################################################################
2204#                             COIN_DATA_PATH                              #
2205###########################################################################
2206
2207# This macro defines a preprocessor macro with the absolute path to a
2208# subdirectory of Data.  The argument of this macro is the name of the
2209# subdirectory (in correct case), and the name of the macro is
2210# COIN_DATA_DIR_PATH, where dir is replaced by the capitalized name of
2211# the directory.  The path ends with a separator ("/" for linux and
2212# '\\' for Windows).  The default value for this path can be
2213# overwritten with the input variable with the same name
2214# (COIN_DATA_DIR_PATH).  At this point we chech only for the
2215# $srcdir/../Data subdirectory.
2216
2217AC_DEFUN([AC_COIN_DATA_PATH],
2218[AC_MSG_CHECKING([absolute path to data directory $1])
2219
2220AC_ARG_VAR(m4_toupper(COIN_DATA_$1_PATH),[Set to absolute path to Data/$1 subdirectory])
2221
2222if test x"$m4_toupper(COIN_DATA_$1_PATH)" = x; then
2223  m4_toupper(COIN_DATA_$1_PATH)=`cd $srcdir/../Data/$1; pwd`
2224fi
2225
2226# Under Cygwin, use Windows path.  Add separator
2227case $build in
2228  *-cygwin*)
2229    m4_toupper(COIN_DATA_$1_PATH)=`cygwin -w $m4_toupper(COIN_DATA_$1_PATH)`\\
2230    ;;
2231  *)
2232    m4_toupper(COIN_DATA_$1_PATH)="$m4_toupper(COIN_DATA_$1_PATH)/"
2233    ;;
2234esac
2235
2236if test -r $m4_toupper(COIN_DATA_$1_PATH); then
2237  AC_DEFINE_UNQUOTED(m4_toupper(COIN_DATA_$1_PATH),["$m4_toupper(COIN_DATA_$1_PATH)"],
2238            [Define to absolute path for Data subdirectory $1])
2239  AC_MSG_RESULT($m4_toupper(COIN_DATA_$1_PATH))
2240else
2241  AC_MSG_ERROR(Directory $m4_toupper(COIN_DATA_$1_PATH) does not exist)
2242fi
2243]) # AC_COIN_HAS_DATA
2244
2245###########################################################################
2246#                       COIN_LINK_FROM_FILELIST                           #
2247###########################################################################
2248
2249# This macro creates links (or copies, if necessary) to files listed
2250# as content in a text file (second argument) into a target directory
2251# (first argument), which is created if it doesn't exist yet.  If s link
2252# already exists, nothing happens.
2253
2254AC_DEFUN([AC_COIN_LINKCOPY_FROM_FILELIST],
2255[cmd="$3"
2256if test -e $srcdir/$2 ; then
2257  my_target_dir="$1"
2258  my_link_files=`cat $srcdir/$2`
2259  my_dirname=`AS_DIRNAME($2)`
2260#  if test -e $my_target_dir; then : ; else
2261#    AS_MKDIR_P($my_target_dir)
2262#  fi
2263  for i in $my_link_files; do
2264    #rm -rf $my_target_dir/$i
2265    if test -e $my_target_dir/$i; then : ; else
2266      dirn2=`AS_DIRNAME($my_target_dir/$i)`
2267      if test -e $dirn2; then : ; else
2268        AS_MKDIR_P($dirn2)
2269      fi
2270      $cmd $abs_source_dir/$my_dirname/$i $my_target_dir/$i
2271    fi
2272  done
2273else
2274  AC_MSG_WARN([File list file $2 missing!])
2275fi
2276])
2277
2278AC_DEFUN([AC_COIN_LINK_FROM_FILELIST],
2279[
2280AC_REQUIRE([AC_COIN_LINK_INPUT_CMD])
2281echo Creating links in $1 ...
2282AC_COIN_LINKCOPY_FROM_FILELIST($1, $2, $coin_link_input_cmd)
2283])
2284
2285###########################################################################
2286#                       COIN_COPY_FROM_FILELIST                           #
2287###########################################################################
2288
2289# Like COIN_LINK_FROM_FILELIST, but copies the files.
2290
2291AC_DEFUN([AC_COIN_COPY_FROM_FILELIST],
2292[
2293echo Creating copies in $1 ...
2294AC_COIN_LINKCOPY_FROM_FILELIST($1, $2, [cp])
2295])
2296
2297###########################################################################
2298#                          COIN_EXAMPLE_FILES                             #
2299###########################################################################
2300
2301# This macro determines the names of the example files (using the
2302# argument in an "ls" command) and sets up the variables EXAMPLE_FILES
2303# and EXAMPLE_CLEAN_FILES.  If this is a VPATH configuration, it also
2304# creates soft links to the example files.
2305
2306AC_DEFUN([AC_COIN_EXAMPLE_FILES],
2307[AC_REQUIRE([AC_COIN_CHECK_GNU_ZLIB])
2308AC_REQUIRE([AC_COIN_CHECK_VPATH])
2309files=`cd $srcdir; ls $1`
2310# We need to do the following loop to make sure that are no newlines
2311# in the variable
2312for file in $files; do
2313  EXAMPLE_FILES="$EXAMPLE_FILES $file"
2314done
2315if test $coin_vpath_config = yes; then
2316  lnkcmd=
2317  if test "$enable_doscompile" != no; then
2318    lnkcmd=cp
2319  fi
2320  case "$CC" in
2321    cl* | */cl* | CL* | */CL*)
2322      lnkcmd=cp ;;
2323  esac
2324  if test "$lnkcmd" = cp; then
2325    AC_MSG_NOTICE([Copying example files ($1)])
2326  else
2327    AC_PROG_LN_S
2328    AC_MSG_NOTICE([Creating links to the example files ($1)])
2329    lnkcmd="$LN_S"
2330  fi
2331  for file in $EXAMPLE_FILES; do
2332    rm -f $file
2333    $lnkcmd $srcdir/$file $file
2334  done
2335  EXAMPLE_CLEAN_FILES='$1'
2336else
2337  EXAMPLE_CLEAN_FILES=
2338fi
2339
2340# In case there are compressed files, we create a variable with the
2341# uncompressed names
2342EXAMPLE_UNCOMPRESSED_FILES=
2343for file in $EXAMPLE_FILES; do
2344  case $file in
2345    *.gz)
2346      EXAMPLE_UNCOMPRESSED_FILES="$EXAMPLE_UNCOMPRESSED_FILES `echo $file | sed -e s/.gz//`"
2347      ;;
2348  esac
2349done
2350
2351AC_SUBST(EXAMPLE_UNCOMPRESSED_FILES)
2352AC_SUBST(EXAMPLE_FILES)
2353AC_SUBST(EXAMPLE_CLEAN_FILES)
2354]) #AC_COIN_EXAMPLE_FILES
2355
2356###########################################################################
2357#                            COIN_HAS_PROJECT                             #
2358###########################################################################
2359
2360# This macro sets up usage of a Coin package.  It defines the
2361# PKGSRCDIR and PKGOBJDIR variables, refering to the main source and
2362# object directory of the package, respectively.  It also defines
2363# a COIN_HAS_PKG preprocessor macro and makefile conditional.  The
2364# argument should be the name (Pkg) of the project (in correct lower
2365# and upper case)
2366
2367AC_DEFUN([AC_COIN_HAS_PROJECT],
2368[AC_MSG_CHECKING([for COIN project $1])
2369
2370# First check, if the sub-project is actually available (ToDo: allow
2371# other locations)
2372
2373m4_tolower(coin_has_$1)=unavailable
2374if test x"$COIN_SKIP_PROJECTS" != x; then
2375  for dir in $COIN_SKIP_PROJECTS; do
2376    if test $dir = $1; then
2377      m4_tolower(coin_has_$1)=skipping
2378    fi
2379  done
2380fi
2381
2382if test $m4_tolower(coin_has_$1) != skipping; then
2383  if test $PACKAGE_TARNAME = m4_tolower($1); then
2384    m4_tolower(coin_has_$1)=.
2385  else
2386    if test -d $srcdir/../$1; then
2387      m4_tolower(coin_has_$1)=../$1
2388    fi
2389  fi
2390fi
2391
2392if test $m4_tolower(coin_has_$1) != unavailable &&
2393   test $m4_tolower(coin_has_$1) != skipping; then
2394  # Set the #define if the component is available
2395  AC_DEFINE(m4_toupper(COIN_HAS_$1),[1],[Define to 1 if the $1 package is used])
2396
2397  # Set the variables for source and object code location
2398  AC_SUBST(m4_toupper($1SRCDIR))
2399  m4_toupper($1SRCDIR)=`cd $srcdir/$m4_tolower(coin_has_$1); pwd`
2400  AC_SUBST(m4_toupper($1OBJDIR))
2401  m4_toupper($1OBJDIR)=`pwd`/$m4_tolower(coin_has_$1)
2402fi
2403
2404  # Define the Makefile conditional
2405AM_CONDITIONAL(m4_toupper(COIN_HAS_$1),
2406               [test $m4_tolower(coin_has_$1) != unavailable &&
2407                test $m4_tolower(coin_has_$1) != skipping])
2408AC_MSG_RESULT([$m4_tolower(coin_has_$1)])
2409]) # AC_COIN_HAS_PROJECT
2410
2411###########################################################################
2412#                        COIN_HAS_USER_LIBRARY                            #
2413###########################################################################
2414# This macro sets up usage of a user library with header files. The assumption
2415# is that the header file(s) and library do not reside in standard system
2416# directories, hence both the include directory and link flags must be
2417# specified. There are two mandatory arguments and two optional arguments.
2418#
2419# The first argument (mandatory) should be a name (LibraryName) for the
2420# library.  The second argument (mandatory) should be an abbreviation in
2421# upper case letters (LBRY) for the library. Ultimately, the macro will
2422# specify two variables, LBRYINCDIR and LBRYLIB, to be substituted in files
2423# generated during configuration; a preprocessor symbol COIN_HAS_LBRY; and a
2424# matching automake conditional COIN_HAS_LBRY. LBRYINCDIR should specify the
2425# directory containing include files for the library. LBRYLIB should specify
2426# the flags necessary to link to the library. A variable coin_has_lbry will
2427# be set to true or false, as appropriate. A variable lbry_libcheck will be
2428# be set to yes or no; no indicates link checks should not be attempted.
2429#
2430# The macro defines three configure arguments, --with-libraryname-incdir,
2431# --with-libraryname-lib, and --disable-libraryname-libcheck, by converting
2432# LibraryName to lower case.
2433#
2434# LBRYINCDIR and LBRYLIB can be specified as environment variables or as
2435# part of the configure command using --with-libraryname-incdir and
2436# --with-libraryname-lib, respectively. Command line arguments override
2437# environment variables.
2438#
2439# If a third argument is given, it should specify a file in LBRYINCDIR.  The
2440# macro will check for the presence of the file. If a fourth argument is given,
2441# it should specify a function name, `fname'.  The macro will attempt to link a
2442# trivial program containing a parameterless call to the function, `fname()',
2443# using the LBRYLIB flags. The link check uses C as the language; this has been
2444# adequate to date but has limitations. It is possible to disable the link
2445# check by specifying --disable-libraryname-libcheck. This is a workaround for
2446# instances where the link check does not work properly, for whatever reason.
2447# If you're trying to link to a Fortran library, consider using F77_FUNC or
2448# FC_FUNC to obtain a mangled fname appropriate for use from C code. For a C++
2449# library, you're on your own unless the library declares some function with
2450# extern "C" linkage. Otherwise, you'll have to somehow find the mangled C++
2451# name.
2452
2453AC_DEFUN([AC_COIN_HAS_USER_LIBRARY],
2454[ AC_REQUIRE([AC_COIN_PROJECTDIR_INIT])
2455  AC_MSG_CHECKING(if user provides library for $1)
2456
2457# Check for header file directory
2458
2459  AC_ARG_WITH(m4_tolower($1)-incdir,
2460      AS_HELP_STRING([--with-m4_tolower($1)-incdir],
2461                     [specify the header file directory for library $1]),
2462      [$2INCDIR=`cd $withval; pwd`])
2463
2464# Check for library directory
2465
2466  AC_ARG_WITH(m4_tolower($1)-lib,
2467      AS_HELP_STRING([--with-m4_tolower($1)-lib],
2468                     [specify the flags used to link with the library $1]),
2469      [$2LIB=$withval])
2470
2471# Switch to disable library check if requested
2472
2473  AC_ARG_ENABLE(m4_tolower($1)-libcheck,
2474      AS_HELP_STRING([--enable-m4_tolower($1)-libcheck],
2475                     [use disable-m4_tolower($1)-libcheck to skip the link
2476                      check at configuration time]),
2477      [m4_tolower($1)_libcheck=$enableval],
2478      [m4_tolower($1)_libcheck=yes])
2479
2480# At this point, if we're going to use the library, both LBRYINCDIR and
2481# LBRYLIB must be defined and not empty.
2482
2483  if test x"$$2INCDIR" != x || test x"$$2LIB" != x; then
2484    if test x"$$2INCDIR" = x || test x"$$2LIB" = x; then
2485      AC_MSG_ERROR([You need to specify both an include directory and link flags to use library $1. Use --with-m4_tolower($1)-incdir of environment variable $$2INCDIR to specify the include directory. Use --with-m4_tolower($1)-lib or environment variable $$2LIB to specify link flags.])
2486    fi
2487    m4_tolower(coin_has_$2)=true
2488    AC_MSG_RESULT(yes)
2489  else
2490    m4_tolower(coin_has_$2)=false
2491    AC_MSG_RESULT(no)
2492  fi
2493
2494# If we have instructions for use, consider header and link checks.
2495
2496  if test $m4_tolower(coin_has_$2) = true; then
2497
2498# If argument 3 (file) is given, check for the file. Typically this will be a
2499# header file, but that's not assumed.
2500
2501    m4_ifval([$3],
2502        [AC_COIN_CHECK_FILE([$$2INCDIR/$3],[],
2503             [AC_MSG_ERROR([Cannot find file $3 in $$2INCDIR])])])
2504
2505# Now see if we can link the function. There are arguments for and against
2506# assuming argument 3 is a header file declaring the function. A correct
2507# function declaration is the main argument in favour. Having to cope with
2508# possible dependencies or other oddities are the main arguments against.
2509# Force the use of C as the best single choice amongst C++, C, and Fortran.
2510# Obviously, this has limits.
2511
2512    m4_ifvaln([$4],
2513        [if test x"$m4_tolower($1)_libcheck" != xno; then
2514           coin_save_LIBS="$LIBS"
2515           LIBS="$$2LIB $ADDLIBS"
2516           coin_$2_link=no
2517           AC_LANG_PUSH(C)
2518           for fnm in $4 ; do
2519             AC_MSG_CHECKING([whether symbol $fnm is available with $2])
2520             AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[$fnm()]])],
2521                 [AC_MSG_RESULT(yes)
2522                  coin_$2_link=yes
2523                  break],
2524                 [AC_MSG_RESULT(no)])
2525           done
2526           AC_LANG_POP(C)
2527           if test x"$coin_$2_link" = xyes ; then
2528             LIBS="$coin_save_LIBS"
2529           else
2530             AC_MSG_ERROR([Cannot find symbol(s) $4 with $2])
2531           fi
2532         fi])
2533
2534# If we make it this far, we've verified the file and linked the function. Add
2535# the necessary link flags to ADDLIBS and define the preprocessor symbol
2536# COIN_HAS_LBRY.
2537
2538    ADDLIBS="$$2LIB $ADDLIBS"
2539    AC_DEFINE(COIN_HAS_$2,[1],[Define to 1 if the $1 package is available])
2540  fi
2541
2542# Arrange for configure to substitute LBRYINCDIR and LBRYLIB and create the
2543# automake conditional. These actions must occur unconditionally.
2544
2545  AC_SUBST($2INCDIR)
2546  AC_SUBST($2LIB)
2547  AM_CONDITIONAL(COIN_HAS_$2, test $m4_tolower(coin_has_$2) = true)
2548]) #AC_COIN_HAS_USER_LIBRARY
2549
2550###########################################################################
2551#                               COIN_HAS_ASL                              #
2552###########################################################################
2553
2554# This macro checks if the user has provide arguments that say where
2555# the precompiled ASL files should be found (with the --with-asldir
2556# flag).  If this is not the case, we check if the ThirdParty/ASL
2557# directory has been configured, which indicates that the files will
2558# be in that directory and can be used.
2559
2560AC_DEFUN([AC_COIN_HAS_ASL],
2561[coin_aslobjdir=../ThirdParty/ASL
2562coin_aslsrcdir=$srcdir/$coin_aslobjdir
2563
2564# Determine the name of the ASL library
2565case "$CC" in
2566  cl* | */cl* | CL* | */CL*)
2567    ampllib=amplsolv.lib ;;
2568  *)
2569    ampllib=amplsolver.a ;;
2570esac
2571
2572AC_ARG_WITH([asldir],
2573            AC_HELP_STRING([--with-asldir],
2574                           [specify path to AMPL solver directory (or BUILD for compilation, or "no" for disabling AMPL)]),
2575            [use_asldir=$withval], [use_asldir=])
2576
2577if test "$use_asldir" = BUILD; then
2578  if test "$PACKAGE_NAME" != ThirdPartyASL; then
2579    # If we are configuring ThirdParty/ASL, don't check
2580    if test -r $coin_aslobjdir/.MakeOk; then :; else
2581      AC_MSG_ERROR([option \"BUILD\" specified for asldir, but directory is not configure (sources missing?)])
2582    fi
2583  fi
2584elif test -z "$use_asldir"; then
2585 # try to find sources - if not given don't compile
2586  if test "$PACKAGE_NAME" != ThirdPartyASL; then
2587    if test -r $coin_aslobjdir/.MakeOk; then
2588      use_asldir=BUILD
2589    else
2590      use_asldir=no
2591    fi
2592  else
2593    use_asldir=no
2594  fi
2595elif test "$use_asldir" != "no"; then
2596  AC_COIN_CHECK_FILE([$use_asldir/$ampllib],[],
2597                     [AC_MSG_ERROR([ASL directory \"$use_asldir\" specified, but library missing])])
2598  AC_COIN_CHECK_FILE([$use_asldir/asl.h],[],
2599                     [AC_MSG_ERROR([ASL directory \"$use_asldir\" specified, but header files are missing])])
2600  use_asldir=`cd $use_asldir; pwd`
2601  case $build in
2602    *-cygwin*) use_asldir=`cygpath -w $use_asldir | sed -e sX\\\\\\\\X/Xg` ;;
2603  esac
2604fi
2605
2606# Variable containing ASL library (including full path)
2607AC_SUBST(ASLLIB)
2608# Variable containing flags for including ASL header files
2609AC_SUBST(ASL_CPPFLAGS)
2610
2611if test "$use_asldir" = BUILD; then
2612  coin_aslobjdir=`cd $coin_aslobjdir; pwd`
2613  ASLLIB=`$CYGPATH_W $coin_aslobjdir/$ampllib | sed -e sX\\\\\\\\X/Xg`
2614  coin_aslsrcdir=`cd $coin_aslsrcdir; pwd`
2615  ASL_CPPFLAGS="-I"`$CYGPATH_W $coin_aslobjdir | sed -e sX\\\\\\\\X/Xg`" -I"`$CYGPATH_W $coin_aslsrcdir/solvers | sed -e sX\\\\\\\\X/Xg`
2616elif test "$use_asldir" != no; then
2617  ASLLIB=`$CYGPATH_W $use_asldir/$ampllib | sed -e sX\\\\\\\\X/Xg`
2618  ASL_CPPFLAGS="-I"`$CYGPATH_W $use_asldir | sed -e sX\\\\\\\\X/Xg`
2619fi
2620
2621if test "$use_asldir" != no; then
2622  AC_LANG_PUSH(C)
2623  AC_CHECK_LIB(dl,[dlopen],[ASLLIB="$ASLLIB -ldl"],[])
2624  coin_has_asl=yes
2625  AC_DEFINE([COIN_HAS_ASL],[1],
2626            [If defined, the Ampl Solver Library is available.])
2627  AC_LANG_POP(C)
2628else
2629  coin_has_asl=no
2630fi
2631AM_CONDITIONAL(COIN_HAS_ASL, test $coin_has_asl = yes)
2632]) # AC_COIN_HAS_ASL
2633
2634###########################################################################
2635#                            COIN_TRY_FLINK                               #
2636###########################################################################
2637
2638# Auxilliary macro to test if a Fortran function name can be linked,
2639# given the current settings of LIBS.  We determine from the context, what
2640# the currently active programming language is, and cast the name accordingly.
2641# The first argument is the name of the function/subroutine, in small letters,
2642# the second argument are the actions taken when the test works, and the
2643# third argument are the actions taken if the test fails.
2644
2645AC_DEFUN([AC_COIN_TRY_FLINK],
2646[case $ac_ext in
2647  f)
2648    AC_TRY_LINK(,[      call $1],[$2],[$3])
2649    ;;
2650  c)
2651    AC_F77_FUNC($1,cfunc$1)
2652    if test x"$coin_need_flibs" = xyes; then
2653      flink_try=no;
2654    else
2655      AC_TRY_LINK([void $cfunc$1();],[$cfunc$1()],
2656                  [flink_try=yes],[flink_try=no])
2657    fi
2658    if test $flink_try = yes; then
2659      $2
2660    else
2661      if test x"$FLIBS" != x; then
2662        flink_save_libs="$LIBS"
2663        LIBS="$LIBS $FLIBS"
2664        AC_TRY_LINK([void $cfunc$1();],[$cfunc$1()],
2665                    [LIBS="$flink_save_libs"
2666                     $2
2667                     coin_need_flibs=yes],
2668                    [LIBS="$flink_save_libs"
2669                     $3])
2670      else
2671        $3
2672      fi
2673    fi
2674    ;;
2675  cc|cpp)
2676    AC_F77_FUNC($1,cfunc$1)
2677    if test x"$coin_need_flibs" = xyes; then
2678      flink_try=no;
2679    else
2680      AC_TRY_LINK([extern "C" {void $cfunc$1();}],[$cfunc$1()],
2681                  [flink_try=yes],[flink_try=no])
2682    fi
2683    if test $flink_try = yes; then
2684      $2
2685    else
2686      if test x"$FLIBS" != x; then
2687        flink_save_libs="$LIBS"
2688        LIBS="$LIBS $FLIBS"
2689        AC_TRY_LINK([extern "C" {void $cfunc$1();}],[$cfunc$1()],
2690                    [LIBS="$flink_save_libs"
2691                     $2
2692                     coin_need_flibs=yes],
2693                    [LIBS="$flink_save_libs"
2694                     $3])
2695      else
2696        $3
2697      fi
2698    fi
2699    ;;
2700esac
2701]) # AC_COIN_TRY_FLINK
2702
2703###########################################################################
2704#                             COIN_HAS_BLAS                               #
2705###########################################################################
2706
2707# This macro checks for a library containing the BLAS library.  It
2708# tries standard libraries, and if none is found to be working, it
2709# checks whether the BLAS ThirdParty/Blas directory has been configured.
2710# It adds to ADDLIBS any flags required to link with an externally provided
2711# BLAS.  It defines the makefile conditional and preprocessor macro
2712# COIN_HAS_BLAS, if blas is available, and it defines the makefile conditional
2713# COIN_BUILD_BLAS, if blas is compiled within COIN.
2714
2715AC_DEFUN([AC_COIN_HAS_BLAS],
2716[if test "$PACKAGE_NAME" = ThirdPartyBlas || test "$PACKAGE_NAME" = ThirdPartyLapack; then
2717  coin_blasobjdir=../Blas
2718else
2719  coin_blasobjdir=../ThirdParty/Blas
2720fi
2721coin_blassrcdir=$srcdir/$coin_blasobjdir
2722
2723AC_ARG_WITH([blas],
2724            AC_HELP_STRING([--with-blas],
2725                           [specify BLAS library (or BUILD for compilation)]),
2726            [use_blas=$withval], [use_blas=])
2727
2728MAKEOKFILE=.MakeOk
2729# Check if user supplied option makes sense
2730if test x"$use_blas" != x; then
2731  if test "$use_blas" = "BUILD"; then
2732    # Don't check for course code if this is executed in ThirdParty/Blas
2733    if test "$PACKAGE_NAME" != ThirdPartyBlas; then
2734      if test -r $coin_blasobjdir/.MakeOk; then :; else
2735        AC_MSG_ERROR([option \"BUILD\" specified for Blas, but $coin_blasobjdir directory is not properly configured])
2736      fi
2737    fi
2738  elif test "$use_blas" != no ; then
2739    AC_MSG_CHECKING([whether user supplied BLASLIB=\"$use_blas\" works])
2740    LIBS="$use_blas $LIBS"
2741    ADDLIBS="$use_blas $ADDLIBS"
2742    AC_COIN_TRY_FLINK([daxpy],
2743                      [AC_MSG_RESULT([yes])],
2744                      [AC_MSG_RESULT([no])
2745                       AC_MSG_ERROR([user supplied BLAS library \"$use_blas\" does not work])])
2746  fi
2747else
2748# Try to autodetect the library for blas based on build system
2749  #AC_MSG_CHECKING([default locations for BLAS])
2750  skip_lblas_check=no
2751  case $build in
2752    *-sgi-*)
2753      SAVE_LIBS="$LIBS"
2754      AC_MSG_CHECKING([whether -lcomplib.sgimath has BLAS])
2755      LIBS="-lcomplib.sgimath $LIBS"
2756      AC_COIN_TRY_FLINK([daxpy],
2757                        [AC_MSG_RESULT([yes])
2758                         use_blas=-lcomplib.sgimath;
2759                         ADDLIBS="-lcomplib.sgimath $ADDLIBS"],
2760                        [AC_MSG_RESULT([no])
2761                         SAVE_LIBS="$LIBS"])
2762      ;;
2763    *-sun-*)
2764      SAVE_LIBS="$LIBS"
2765      AC_MSG_CHECKING([whether -xlic_lib=sunperf has BLAS])
2766      LIBS="-xlic_lib=sunperf $LIBS"
2767      AC_COIN_TRY_FLINK([daxpy],
2768                        [AC_MSG_RESULT([yes])
2769                         use_blas='-xlic_lib=sunperf'
2770                         ADDLIBS="-xlic_lib=sunperf $ADDLIBS"],
2771                        [AC_MSG_RESULT([no])
2772                         LIBS="$SAVE_LIBS"])
2773      ;;
2774# On cygwin, consider -lblas only if doscompile is disabled. The prebuilt
2775# library will want to link with cygwin, hence won't run standalone in DOS.
2776    *-cygwin*)
2777      if test "$enable_doscompile" = mingw; then
2778        skip_lblas_check=yes
2779      fi
2780      ;;
2781  esac
2782
2783  if test -z "$use_blas" && test $skip_lblas_check = no; then
2784    SAVE_LIBS="$LIBS"
2785    AC_MSG_CHECKING([whether -lblas has BLAS])
2786    LIBS="-lblas $LIBS"
2787    AC_COIN_TRY_FLINK([daxpy],
2788                      [AC_MSG_RESULT([yes])
2789                       ADDLIBS="-lblas $ADDLIBS"
2790                       use_blas='-lblas'],
2791                      [AC_MSG_RESULT([no])
2792                       LIBS="$SAVE_LIBS"])
2793  fi
2794
2795# If we have no other ideas, consider building BLAS.
2796  if test -z "$use_blas"; then
2797    if test "$PACKAGE_NAME" != ThirdPartyBlas; then
2798      if test -r $coin_blasobjdir/.MakeOk; then
2799        use_blas=BUILD
2800      fi
2801    fi
2802  fi
2803fi
2804
2805if test "$use_blas" = BUILD; then
2806  coin_need_flibs=yes
2807fi
2808
2809AM_CONDITIONAL([COIN_HAS_BLAS],[test x"$use_blas" != x])
2810AM_CONDITIONAL([COIN_BUILD_BLAS],[test "$use_blas" = BUILD])
2811
2812if test x"$use_blas" = x || test "$use_blas" = no; then
2813  coin_has_blas=no
2814else
2815  coin_has_blas=yes
2816  AC_DEFINE([COIN_HAS_BLAS],[1],
2817            [If defined, the BLAS Library is available.])
2818fi
2819]) # AC_COIN_HAS_BLAS
2820
2821###########################################################################
2822#                            COIN_HAS_LAPACK                              #
2823###########################################################################
2824
2825# This macro checks for a library containing the LAPACK library.  It
2826# tries standard libraries, and if none is found to be working, it
2827# checks whether the LAPACK ThirdParty/Lapack directory has been
2828# configured.  It adds to ADDLIBS any flags required to link with an
2829# externally provided LAPACK.  It defines the makefile conditional and
2830# preprocessor macro COIN_HAS_LAPACK, if lapack is available, and it
2831# defines the makefile conditional COIN_BUILD_LAPACK, if lapack is
2832# compiled within COIN.
2833
2834AC_DEFUN([AC_COIN_HAS_LAPACK],
2835[coin_lapackobjdir=../ThirdParty/Lapack
2836coin_lapacksrcdir=$srcdir/$coin_lapackobjdir
2837
2838AC_ARG_WITH([lapack],
2839            AC_HELP_STRING([--with-lapack],
2840                           [specify LAPACK library (or BUILD for compilation)]),
2841            [use_lapack=$withval], [use_lapack=])
2842
2843# Check if user supplied option makes sense
2844if test x"$use_lapack" != x; then
2845  if test "$use_lapack" = "BUILD"; then
2846    # Don't check for course code if this is executed in ThirdParty/Lapack
2847    if test "$PACKAGE_NAME" != ThirdPartyLapack; then
2848      if test -r $coin_lapackobjdir/.MakeOk; then :; else
2849        AC_MSG_ERROR([option \"BUILD\" specified for LAPACK, but $coin_lapackobjdir directory is not configured])
2850      fi
2851    fi
2852  else
2853    AC_MSG_CHECKING([whether user supplied LAPACKLIB=\"$use_lapack\" works])
2854    LIBS="$use_lapack $LIBS"
2855    ADDLIBS="$use_lapack $ADDLIBS"
2856    AC_COIN_TRY_FLINK([dsyev],
2857                      [AC_MSG_RESULT([yes])],
2858                      [AC_MSG_RESULT([no])
2859                       AC_MSG_ERROR([user supplied LAPACK library \"$use_lapack\" does not work])])
2860  fi
2861else
2862  if test x$coin_has_blas = xyes; then
2863    # First try to see if LAPACK is already available with BLAS library
2864    AC_MSG_CHECKING([whether LAPACK is already available with BLAS library])
2865    AC_COIN_TRY_FLINK([dsyev],
2866                      [AC_MSG_RESULT([yes]); use_lapack=ok],
2867                      [AC_MSG_RESULT([no])])
2868  fi
2869  skip_llapack_check=no
2870  if test -z "$use_lapack"; then
2871    # Try to autodetect the library for lapack based on build system
2872    case $build in
2873      *-sgi-*)
2874        SAVE_LIBS="$LIBS"
2875        AC_MSG_CHECKING([whether -lcomplib.sgimath has LAPACK])
2876        LIBS="-lcomplib.sgimath $LIBS"
2877        AC_COIN_TRY_FLINK([dsyev],
2878                          [AC_MSG_RESULT([yes])
2879                           use_lapack=-lcomplib.sgimath;
2880                           ADDLIBS="-lcomplib.sgimath $ADDLIBS"],
2881                          [AC_MSG_RESULT([no])
2882                           SAVE_LIBS="$LIBS"])
2883        ;;
2884      *-sun-*)
2885        SAVE_LIBS="$LIBS"
2886        AC_MSG_CHECKING([whether -xlic_lib=sunperf has LAPACK])
2887        LIBS="-xlic_lib=sunperf $LIBS"
2888        AC_COIN_TRY_FLINK([dsyev],
2889                          [AC_MSG_RESULT([yes])
2890                           use_lapack='-xlic_lib=sunperf'
2891                           ADDLIBS="-xlic_lib=sunperf $ADDLIBS"],
2892                          [AC_MSG_RESULT([no])
2893                           LIBS="$SAVE_LIBS"])
2894        ;;
2895# On cygwin, do this check only if doscompile is disabled. The prebuilt library
2896# will want to link with cygwin, hence won't run standalone in DOS.
2897      *-cygwin*)
2898        if test "$enable_doscompile" = mingw; then
2899          skip_llapack_check=yes
2900        fi
2901        ;;
2902    esac
2903  fi
2904
2905  if test -z "$use_lapack" && test $skip_llapack_check = no; then
2906    SAVE_LIBS="$LIBS"
2907    AC_MSG_CHECKING([whether -llapack has LAPACK])
2908    LIBS="-llapack $LIBS"
2909    AC_COIN_TRY_FLINK([dsyev],
2910                      [AC_MSG_RESULT([yes])
2911                       ADDLIBS="-llapack $ADDLIBS"
2912                       use_lapack='-llapack'],
2913                      [AC_MSG_RESULT([no])
2914                       LIBS="$SAVE_LIBS"])
2915  fi
2916
2917# If we have no other ideas, consider building LAPACK.
2918  if test -z "$use_lapack"; then
2919    if test "$PACKAGE_NAME" != ThirdPartyLapack; then
2920      if test -r $coin_lapackobjdir/.MakeOk; then
2921        use_lapack=BUILD
2922      fi
2923    fi
2924  fi
2925fi
2926
2927if test "$use_lapack" = BUILD; then
2928  coin_need_flibs=yes
2929fi
2930
2931AM_CONDITIONAL([COIN_HAS_LAPACK],[test x"$use_lapack" != x])
2932AM_CONDITIONAL([COIN_BUILD_LAPACK],[test "$use_lapack" = BUILD])
2933
2934if test x"$use_lapack" = x; then
2935  coin_has_lapack=no
2936else
2937  coin_has_lapack=yes
2938  AC_DEFINE([COIN_HAS_LAPACK],[1],
2939            [If defined, the LAPACK Library is available.])
2940fi
2941]) # AC_COIN_HAS_LAPACK
2942
2943###########################################################################
2944#                            COIN_HAS_MUMPS                               #
2945###########################################################################
2946
2947# This macro checks for a library containing the MUMPS library.  It
2948# checks if the user has provided an argument for the MUMPS library,
2949# and if not, it checks whether the MUMPS ThirdParty/Mumps directory has
2950# been configured.  It adds to ADDLIBS any flags required to link with
2951# an externally provided MUMPS.  It defines the makefile conditional
2952# and preprocessor macro COIN_HAS_MUMPS, if MUMPS is available, and it
2953# defines the makefile conditional COIN_BUILD_MUMPS, if MUMPS is
2954# compiled within COIN.
2955
2956AC_DEFUN([AC_COIN_HAS_MUMPS],
2957[
2958if test "$PACKAGE_NAME" = ThirdPartyMumps; then
2959  coin_mumpsobjdir=../Mumps
2960else
2961  coin_mumpsobjdir=../ThirdParty/Mumps
2962fi
2963coin_mumpssrcdir=$abs_source_dir/$coin_mumpsobjdir
2964
2965MAKEOKFILE=.MakeOk
2966
2967AC_ARG_WITH([mumps-dir],
2968            AC_HELP_STRING([--with-mumps-dir],
2969                           [specify directory where MUMPS is installed]),
2970            [use_mumps="$withval"], [use_mumps=no])
2971
2972if test "$use_mumps" != "no"; then
2973  if test -d $use_mumps; then :; else
2974    AC_MSG_ERROR([User provided MUMPS directory $use_mumps does not exist.])
2975  fi
2976  mumps_dir=`cd $use_mumps; pwd`
2977
2978  # library extension
2979  AC_LANG_PUSH(C)
2980  save_LIBS="$LIBS"
2981  LIBS="$LIBS $FLIBS"
2982  AC_CHECK_LIB([pthread],[pthread_create],[LIBS="-lpthread $save_LIBS"; ADDLIBS="-lpthread $ADDLIBS"],[LIBS="$save_LIBS"])
2983  AC_LANG_POP(C)
2984
2985  case "$CC" in
2986    cl* | */cl* | CL* | */CL*)
2987         libe=lib ;;
2988      *) libe=a ;;
2989  esac
2990
2991  # Check if hearders are there
2992  AC_COIN_CHECK_FILE([$mumps_dir/include/dmumps_c.h],
2993                     [],
2994                     [AC_MSG_ERROR([I cannot find headers for MUMPS])])
2995  LIBS="$mumps_dir/lib/libdmumps.$libe $mumps_dir/lib/libpord.$libe $mumps_dir/libseq/libmpiseq.$libe $LIBS"
2996  ADDLIBS="$mumps_dir/lib/libdmumps.$libe $mumps_dir/lib/libpord.$libe $mumps_dir/libseq/libmpiseq.$libe $ADDLIBS"
2997  # Check if MUMPS actually works
2998  AC_LANG_PUSH(C)
2999  save_LIBS="$LIBS"
3000  LIBS="$LIBS $FLIBS"
3001  AC_TRY_LINK([void dmumps_c();],[dmumps_c()],[],
3002              [AC_MSG_ERROR([User provided MUMPS library doesn't work])])
3003  LIBS="$save_LIBS"
3004  AC_LANG_POP(C)
3005  coin_mumpssrcdir="$mumps_dir"
3006
3007else
3008  use_mumps=BUILD
3009
3010  # Check if the MUMPS' ThirdParty project has been configured
3011  if test "$PACKAGE_NAME" != ThirdPartyMumps; then
3012    if test -r $coin_mumpsobjdir/.MakeOk; then
3013      use_mumps=BUILD
3014      # Mumps needs pthreads
3015      AC_LANG_PUSH(C)
3016      save_LIBS="$LIBS"
3017      LIBS="$LIBS $FLIBS"
3018      AC_CHECK_LIB([pthread],[pthread_create],[LIBS="-lpthread $save_LIBS"; ADDLIBS="-lpthread $ADDLIBS"],[LIBS="save_LIBS"])
3019      AC_LANG_POP(C)
3020    else
3021      use_mumps=
3022    fi
3023  fi
3024fi
3025
3026if test x"$use_mumps" != x; then
3027
3028  # and we need the Fortran runtime libraries if we want to link with C/C++
3029  coin_need_flibs=yes
3030
3031  MUMPS_INCFLAGS="-I\`\$(CYGPATH_W) $coin_mumpssrcdir/MUMPS/libseq\` -I\`\$(CYGPATH_W) $coin_mumpssrcdir/MUMPS/include\`"
3032  AC_SUBST(MUMPS_INCFLAGS)
3033fi
3034
3035AM_CONDITIONAL([COIN_HAS_MUMPS],[test x"$use_mumps" != x])
3036AM_CONDITIONAL([COIN_BUILD_MUMPS],[test "$use_mumps" = BUILD])
3037
3038AC_MSG_CHECKING([whether MUMPS is available])
3039
3040if test x"$use_mumps" = x || test "$use_mumps" = no; then
3041  coin_has_mumps=no
3042else
3043  coin_has_mumps=yes
3044  AC_DEFINE([COIN_HAS_MUMPS],[1],
3045            [If defined, the MUMPS Library is available.])
3046fi
3047AC_MSG_RESULT([$coin_has_mumps])
3048]) # AC_COIN_HAS_MUMPS
3049
3050###########################################################################
3051#                             COIN_HAS_GLPK                               #
3052###########################################################################
3053#
3054# This macro checks for the GLPK package. GLPK provides two capabilities,
3055# an LP and MIP solver (GLPK) and the GNU Mathprog modelling language (GMPL).
3056# The macro checks for either Glpk or Gmpl, according to the value specified as
3057# the parameter. Use one of Glpk or Gmpl. Use *exactly* these strings, eh?
3058#
3059#
3060# The macro first uses COIN_HAS_USER_LIBRARY to see if the user has specified
3061# a preexisting library (this allows the use of any glpk version, if the user
3062# is fussy). The macro then checks for ThirdParty/Glpk.
3063#
3064# This macro will define the following variables for Glpk:
3065#   coin_has_glpk       true or false
3066#   GLPKLIB             link flags for GLPK (if user supplied)
3067#   GLPKINCDIR          location of glpk include files
3068#   COIN_HAS_GLPK       Preprocessor symbol, defined to 1
3069#   COIN_HAS_GLPK       Automake conditional
3070#   COIN_BUILD_GLPK     Automake conditional, defined only if Glpk is to be
3071#                       built in ThirdParty/Glpk
3072#
3073# With the exception of COIN_BUILD_GLPK, an identical set of variables is
3074# defined for Gmpl.
3075
3076AC_DEFUN([AC_COIN_HAS_GLPK],
3077[
3078if test "$PACKAGE_NAME" = ThirdPartyGlpk; then
3079  coin_glpkobjdir=../Glpk
3080else
3081  coin_glpkobjdir=../ThirdParty/Glpk
3082fi
3083coin_glpksrcdir=$abs_source_dir/$coin_glpkobjdir
3084
3085use_thirdpartyglpk=no
3086
3087# Check for the requested component. If the user specified an external glpk
3088# library don't force a ThirdParty build, let the error propagate.
3089
3090m4_if([$1],[Glpk],
3091[AC_COIN_HAS_USER_LIBRARY([Glpk],[GLPK],[glpk.h],
3092    [_glp_lpx_simplex glp_lpx_simplex])
3093 if test x"$coin_has_glpk" = xfalse && test x"$GLPKLIB" = x ; then
3094   use_thirdpartyglpk=try
3095 fi])
3096m4_if([$1],[Gmpl],
3097[AC_COIN_HAS_USER_LIBRARY([Gmpl],[GMPL],[glpmpl.h],
3098    [_glp_mpl_initialize glp_mpl_initialize])
3099 if test x"$coin_has_gmpl" = xfalse && test x"$GMPLLIB" = x ; then
3100   use_thirdpartyglpk=try
3101 fi])
3102
3103# If the user has supplied an external library, use it. Otherwise, consider
3104# a build in ThirdParty/Glpk. If we build, assume we get both glpk and gmpl.
3105
3106if test x"$use_thirdpartyglpk" = xtry ; then
3107  MAKEOKFILE=.MakeOk
3108  # Check if the Glpk's ThirdParty project has been configured
3109  if test "$PACKAGE_NAME" != ThirdPartyGlpk; then
3110    if test -r $coin_glpkobjdir/.MakeOk; then
3111      use_thirdpartyglpk=build
3112    else
3113      use_thirdpartyglpk=no
3114    fi
3115  else
3116    use_thirdpartyglpk=build
3117  fi
3118
3119# If we're building, set the library and include directory variables, create a
3120# preprocessor symbol, define a variable that says we're using glpk/gmpl, and
3121# another to indicate a link check is a bad idea (hard to do before the library
3122# exists).
3123
3124  if test x"$use_thirdpartyglpk" = xbuild ; then
3125    m4_toupper($1INCDIR)="$coin_glpksrcdir/glpk/include"
3126    AC_SUBST(m4_toupper($1INCDIR))
3127    AC_DEFINE(m4_toupper(COIN_HAS_$1),[1],
3128              [Define to 1 if $1 package is available])
3129    m4_tolower(coin_has_$1)=true
3130    m4_tolower($1_libcheck)=no
3131    AC_MSG_NOTICE([Using $1 in ThirdParty/Glpk])
3132  fi
3133fi
3134
3135# Define the necessary automake conditionals.
3136
3137AM_CONDITIONAL(m4_toupper(COIN_HAS_$1),
3138               [test x"$m4_tolower(coin_has_$1)" = xtrue])
3139AM_CONDITIONAL([COIN_BUILD_GLPK],[test x"$use_thirdpartyglpk" = xbuild])
3140
3141]) # AC_COIN_HAS_GLPK
Note: See TracBrowser for help on using the repository browser.