source: trunk/coin.m4 @ 664

Last change on this file since 664 was 664, checked in by lou, 12 years ago

Patch libtool for 64-bit GCC build on Solaris. Do a better job of ignoring
/usr/ucb/cc on Solaris. Pull cygwin libtool patches into their own macro for
clarity. Remove some lines that've been commented out for a while.

  • Property svn:keywords set to Author Date Id Revision
File size: 106.5 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 664 2007-10-22 21:34:55Z lou $
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 *-*-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  *-*-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      *-*-solaris*)
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    *-*-solaris*)
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
883# For *-*-solaris*, promote Studio/Workshop cc compiler to front of list.
884# Depending on the user's PATH, when Studio/Workshop cc is not present we may
885# find /usr/ucb/cc, which is likely to be a non-functional shell. The test used
886# here is the same as that used in /usr/ucb/cc. This doesn't entirely solve the
887# problem, as the user may still need to force the issue if /usr/ucb/cc and gcc
888# both work and the user's PATH leads to /usr/ucb/cc before gcc.
889
890case $build in
891  *-cygwin* | *-mingw*)
892             if test "$enable_doscompile" = msvc ; then
893               comps="cl"
894             else
895               comps="gcc cl"
896             fi ;;
897  *-*-solaris*)
898             if test -f /usr/ccs/bin/ucbcc ; then
899               comps="cc xlc gcc pgcc icc"
900             else
901               comps="xlc gcc pgcc icc"
902             fi
903             ;;
904  *-linux-*) comps="xlc gcc cc pgcc icc" ;;
905  *)         comps="xlc_r xlc cc gcc pgcc icc" ;;
906esac
907
908# We delete the cached value, since the test might not have been
909# performed with our choice of compilers earlier
910$as_unset ac_cv_prog_CC || test "${ac_cv_prog_CC+set}" != set || { ac_cv_prog_CC=; export ac_cv_prog_CC; }
911# AC_MSG_NOTICE([C compiler candidates: $comps])
912AC_PROG_CC([$comps])
913if test -z "$CC" ; then
914  AC_MSG_ERROR([Failed to find a C compiler!])
915fi
916# Autoconf incorrectly concludes that cl recognises -g. It doesn't.
917case "$CC" in
918  cl* | */cl* | CL* | */CL* )
919    if test "$ac_cv_prog_cc_g" = yes ; then
920      ac_cv_prog_cc_g=no
921      AC_MSG_NOTICE([Overruling autoconf; cl does not recognise -g.])
922    fi ;;
923esac
924CFLAGS="$save_cflags"
925
926# Check if a project specific CFLAGS variable has been set
927if test x$COIN_PRJCT != x; then
928  eval coin_tmp=\${${COIN_PRJCT}_CFLAGS+set}
929  if test x$coin_tmp = xset; then
930    eval CFLAGS=\${${COIN_PRJCT}_CFLAGS}
931  fi
932fi
933
934if test x"$CFLAGS" = x; then
935
936  coin_add_cflags=
937  coin_opt_cflags=
938  coin_dbg_cflags=
939  coin_warn_cflags=
940
941  if test "$GCC" = "yes"; then
942    case "$CC" in
943      icc* | */icc*)
944        ;;
945      *)
946        coin_opt_cflags="-O3 -fomit-frame-pointer"
947        coin_add_cflags="-pipe"
948        coin_dbg_cflags="-g"
949        coin_warn_cflags="-pedantic-errors -Wimplicit -Wparentheses -Wsequence-point -Wreturn-type -Wcast-qual -Wall"
950        case $enable_doscompile in
951          mingw)
952            CFLAGS="-mno-cygwin"
953            AC_TRY_LINK([],[int i=0; i++;],
954                        [coin_add_cflags="-mno-cygwin $coin_add_cflags"])
955            CFLAGS=
956          ;;
957        esac
958    esac
959  fi
960  if test -z "$coin_opt_cflags"; then
961    case $build in
962      *-cygwin* | *-mingw*)
963        case "$CC" in
964          cl* | */cl* | CL* | */CL*)
965            coin_opt_cflags='-MT -O2'
966            coin_add_cflags='-nologo -wd4996 -D_CRT_SECURE_NO_DEPRECATE'
967            coin_dbg_cflags='-MTd'
968            ;;
969        esac
970        ;;
971      *-linux-*)
972        case "$CC" in
973          icc* | */icc*)
974            coin_opt_cflags="-O3 -ip"
975            coin_add_cflags=""
976            coin_dbg_cflags="-g"
977            # Check if -i_dynamic is necessary (for new glibc library)
978            CFLAGS=
979            AC_TRY_LINK([],[int i=0; i++;],[],
980                        [coin_add_cflags="-i_dynamic $coin_add_cflags"])
981            ;;
982          pgcc* | */pgcc*)
983            coin_opt_cflags="-fast"
984            coin_add_cflags="-Kieee -pc 64"
985            coin_dbg_cflags="-g"
986            ;;
987        esac
988        ;;
989      *-ibm-*)
990        case "$CC" in
991          xlc* | */xlc* | mpxlc* | */mpxlc*)
992            coin_opt_cflags="-O3 -qarch=auto -qcache=auto -qtune=auto -qmaxmem=-1"
993            coin_add_cflags="-bmaxdata:0x80000000 -qsuppress=1500-036 -qsuppress=1500-029"
994            coin_dbg_cflags="-g"
995          ;;
996        esac
997        ;;
998      *-hp-*)
999        coin_opt_cflags="-O"
1000        coin_add_cflags="-Ae"
1001        coin_dbg_cflags="-g"
1002        ;;
1003      *-*-solaris*)
1004        coin_opt_cflags="-xO4"
1005        coin_dbg_cflags="-g"
1006        ;;
1007      *-sgi-*)
1008        coin_opt_cflags="-O -OPT:Olimit=0"
1009        coin_dbg_cflags="-g"
1010        ;;
1011    esac
1012  fi
1013
1014  if test "$ac_cv_prog_cc_g" = yes && test -z "$coin_dbg_cflags" ; then
1015    coin_dbg_cflags="-g"
1016  fi
1017
1018  if test -z "$coin_opt_cflags"; then
1019    # Try if -O option works if nothing else is set
1020    CFLAGS="-O"
1021    AC_TRY_LINK([],[int i=0; i++;],[coin_opt_cflags="-O"])
1022  fi
1023
1024  # if PM doesn't want the warning messages, take them out
1025  if test x"$coin_skip_warn_cflags" = xyes; then
1026    coin_warn_cflags=
1027  fi
1028
1029  if test x${DBG_CFLAGS+set} != xset; then
1030    DBG_CFLAGS="$coin_dbg_cflags $coin_add_cflags $coin_warn_cflags"
1031  fi
1032  if test x${OPT_CFLAGS+set} != xset; then
1033    OPT_CFLAGS="$coin_opt_cflags $coin_add_cflags -DNDEBUG $coin_warn_cflags"
1034  fi
1035
1036  DBG_CFLAGS="$DBG_CFLAGS $ADD_CFLAGS $CDEFS"
1037  OPT_CFLAGS="$OPT_CFLAGS $ADD_CFLAGS $CDEFS"
1038
1039  if test "$coin_debug_compile" = "true"; then
1040    CFLAGS="$DBG_CFLAGS"
1041  else
1042    CFLAGS="$OPT_CFLAGS"
1043  fi
1044else
1045  CFLAGS="$CFLAGS $ADD_CFLAGS $CDEFS"
1046  if test x${DBG_CFLAGS+set} != xset; then
1047    DBG_CFLAGS="$CFLAGS"
1048  fi
1049  if test x${OPT_CFLAGS+set} != xset; then
1050    OPT_CFLAGS="$CFLAGS"
1051  fi
1052fi
1053
1054# If CFLAGS contains -mno-cygwin, CPPFLAGS must also have it.
1055
1056case "$CFLAGS" in
1057  *-mno-cygwin*)
1058    if test x${CPPFLAGS+set} != xset ; then
1059      CPPFLAGS="-mno-cygwin"
1060    else
1061      case "$CPPFLAGS" in
1062        *-mno-cygwin*)
1063          ;;
1064        *)
1065          CPPFLAGS="$CPPFLAGS -mno-cygwin"
1066          ;;
1067      esac
1068    fi ;;
1069esac
1070
1071# Try if CFLAGS works
1072save_CFLAGS="$CFLAGS"
1073AC_TRY_LINK([],[int i=0; i++;],[],[CFLAGS=])
1074if test -z "$CFLAGS"; then
1075  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.])
1076  CFLAGS='-O'
1077  AC_TRY_LINK([],[int i=0; i++;],[],[CFLAGS=])
1078  if test -z "$CFLAGS"; then
1079    AC_MSG_WARN([This value for CFLAGS does not work.  I will continue with empty CFLAGS, but you might want to set CFLAGS manually.])
1080  fi
1081fi
1082
1083AC_MSG_NOTICE([C compiler options are: $CFLAGS])
1084
1085AC_ARG_VAR(MPICC,[C MPI Compiler])
1086if test x"$MPICC" = x; then :; else
1087  AC_MSG_NOTICE([Will use MPI C compiler $MPICC])
1088  CC="$MPICC"
1089fi
1090
1091# Correct ADDLIBS initialization if we are using the MS compiler
1092case "$CC" in
1093  cl* | */cl* | CL* | */CL*)
1094    ADDLIBS=
1095    AC_COIN_MINGW_LD_FIX
1096    ;;
1097esac
1098
1099AC_LANG_POP(C)
1100]) # AC_COIN_PROG_CC
1101
1102###########################################################################
1103#                             COIN_PROG_F77                               #
1104###########################################################################
1105
1106# Find the compile command by running AC_PROG_F77 (with compiler names
1107# for different operating systems) and put it into F77 (unless it was
1108# given by the user), and find an appropriate value for FFLAGS
1109
1110AC_DEFUN([AC_COIN_PROG_F77],
1111[AC_REQUIRE([AC_COIN_MINGW_LD_FIX])
1112AC_REQUIRE([AC_COIN_ENABLE_DOSCOMPILE])
1113AC_REQUIRE([AC_COIN_PROG_CC])
1114AC_REQUIRE([AC_COIN_F77_COMPS])
1115AC_LANG_PUSH([Fortran 77])
1116
1117AC_ARG_VAR(ADD_FFLAGS,[Additional Fortran compiler options])
1118AC_ARG_VAR(DBG_FFLAGS,[Debug Fortran compiler options])
1119AC_ARG_VAR(OPT_FFLAGS,[Optimize Fortran compiler options])
1120
1121coin_has_f77=yes
1122
1123save_fflags="$FFLAGS"
1124
1125# We delete the cached value, since the test might not have been
1126# performed with our choice of compilers earlier
1127$as_unset ac_cv_prog_F77 || test "${ac_cv_prog_F77+set}" != set || { ac_cv_prog_F77=; export ac_cv_prog_F77; }
1128
1129# This is a real belt-and-suspenders approach. AC_COIN_FIND_F77 will use
1130# coin_f77_comps to see if there's a program that matches one of the names.
1131# If there's no such program, F77 = unavailable. If we match the name,
1132# feed AC_PROG_F77 the same search list, just to be sure it's a functioning
1133# compiler.
1134# AC_MSG_NOTICE([Fortran compiler candidates: $coin_f77_comps])
1135AC_COIN_FIND_F77
1136if test "$F77" != "unavailable" ; then
1137  AC_PROG_F77($coin_f77_comps)
1138else
1139  AC_MSG_WARN([Failed to find a Fortran compiler!])
1140fi
1141
1142FFLAGS="$save_fflags"
1143
1144# Check if a project specific FFLAGS variable has been set
1145if test x$COIN_PRJCT != x; then
1146  eval coin_tmp=\${${COIN_PRJCT}_FFLAGS+set}
1147  if test x$coin_tmp = xset; then
1148    eval FFLAGS=\${${COIN_PRJCT}_FFLAGS}
1149  fi
1150fi
1151
1152if test "$F77" != "unavailable" && test x"$FFLAGS" = x ; then
1153
1154  coin_add_fflags=
1155  coin_opt_fflags=
1156  coin_dbg_fflags=
1157  coin_warn_fflags=
1158
1159  if test "$G77" = "yes"; then
1160    coin_opt_fflags="-O3 -fomit-frame-pointer"
1161    coin_add_fflags="-pipe"
1162    coin_dbg_fflags="-g"
1163    case $enable_doscompile in
1164      mingw)
1165        FFLAGS="-mno-cygwin"
1166        AC_TRY_LINK(,[      write(*,*) 'Hello world'],
1167                    [coin_add_fflags="-mno-cygwin $coin_add_fflags"])
1168        FFLAGS=
1169      ;;
1170    esac
1171  else
1172    case $build in
1173      *-cygwin* | *-mingw*)
1174        case $F77 in
1175          ifort* | */ifort* | IFORT* | */IFORT* )
1176            coin_opt_fflags='-O3'
1177            coin_add_fflags='-fpp -nologo -MT'
1178            coin_dbg_fflags='-debug'
1179          ;;
1180          compile_f2c*)
1181            coin_opt_fflags='-MT -O2'
1182            coin_add_fflags='-nologo -wd4996'
1183            coin_dbg_fflags='-MTd'
1184          ;;
1185        esac
1186        ;;
1187      *-linux-*)
1188        case $F77 in
1189          ifc* | */ifc* | ifort* | */ifort*)
1190            coin_opt_fflags="-O3 -ip"
1191            coin_add_fflags="-cm -w90 -w95"
1192            coin_dbg_fflags="-g -CA -CB -CS"
1193            # Check if -i_dynamic is necessary (for new glibc library)
1194            FFLAGS=
1195            AC_TRY_LINK(,[      write(*,*) 'Hello world'],[],
1196                        [coin_add_fflags="-i_dynamic $coin_add_fflags"])
1197            ;;
1198          pgf77* | */pgf77* | pgf90* | */pgf90*)
1199            coin_opt_fflags="-fast"
1200            coin_add_fflags="-Kieee -pc 64"
1201            coin_dbg_fflags="-g"
1202          ;;
1203        esac
1204        ;;
1205      *-ibm-*)
1206        case "$F77" in
1207          xlf* | */xlf* | mpxlf* | */mpxlf* )
1208            coin_opt_fflags="-O3 -qarch=auto -qcache=auto -qtune=auto -qmaxmem=-1"
1209            coin_add_fflags="-bmaxdata:0x80000000 -qsuppress=1500-036 -qsuppress=1500-029"
1210            coin_dbg_fflags="-g -C"
1211            ;;
1212        esac
1213        ;;
1214      *-hp-*)
1215        coin_opt_fflags="+O3"
1216        coin_add_fflags="+U77"
1217        coin_dbg_fflags="-C -g"
1218        ;;
1219      *-*-solaris*)
1220        coin_opt_fflags="-O4"
1221        coin_dbg_fflags="-g"
1222        ;;
1223      *-sgi-*)
1224        coin_opt_fflags="-O5 -OPT:Olimit=0"
1225        coin_dbg_fflags="-g"
1226        ;;
1227    esac
1228  fi
1229
1230  if test "$ac_cv_prog_f77_g" = yes && test -z "$coin_dbg_fflags" ; then
1231    coin_dbg_fflags="-g"
1232  fi
1233
1234  if test -z "$coin_opt_fflags"; then
1235    # Try if -O option works if nothing else is set
1236    FFLAGS=-O
1237    AC_TRY_LINK(,[      integer i], [coin_opt_fflags="-O"])
1238  fi
1239
1240  # if PM doesn't want the warning messages, take them out
1241  if test x"$coin_skip_warn_fflags" = xyes; then
1242    coin_warn_fflags=
1243  fi
1244
1245  if test x${DBG_FFLAGS+set} != xset; then
1246    DBG_FFLAGS="$coin_dbg_fflags $coin_add_fflags $coin_warn_fflags"
1247  fi
1248  if test x${OPT_FFLAGS+set} != xset; then
1249    OPT_FFLAGS="$coin_opt_fflags $coin_add_fflags $coin_warn_fflags"
1250  fi
1251
1252  DBG_FFLAGS="$DBG_FFLAGS $ADD_FFLAGS"
1253  OPT_FFLAGS="$OPT_FFLAGS $ADD_FFLAGS"
1254
1255  if test "$coin_debug_compile" = "true"; then
1256    FFLAGS="$DBG_FFLAGS"
1257  else
1258    FFLAGS="$OPT_FFLAGS"
1259  fi
1260else
1261  FFLAGS="$FFLAGS $ADD_FFLAGS"
1262  if test x${DBG_FFLAGS+set} != xset; then
1263    DBG_FFLAGS="$FFLAGS"
1264  fi
1265  if test x${OPT_FFLAGS+set} != xset; then
1266    OPT_FFLAGS="$FFLAGS"
1267  fi
1268fi
1269
1270# If FFLAGS contains -mno-cygwin, CPPFLAGS must have it.
1271case "$FFLAGS" in
1272  *-mno-cygwin*)
1273    if test x${CPPFLAGS+set} != xset ; then
1274      CPPFLAGS="-mno-cygwin"
1275    else
1276      case "$CPPFLAGS" in
1277        *-mno-cygwin*)
1278          ;;
1279        *)
1280          CPPFLAGS="$CPPFLAGS -mno-cygwin"
1281          ;;
1282      esac
1283    fi ;;
1284esac
1285
1286# Try if FFLAGS works
1287if test "$F77" != "unavailable" ; then
1288  AC_TRY_LINK(,[      integer i],[],[FFLAGS=])
1289  if test -z "$FFLAGS"; then
1290    AC_MSG_WARN([The flags FFLAGS="$FFLAGS" do not work.  I will now just try '-O', but you might want to set FFLAGS manually.])
1291    FFLAGS='-O'
1292    AC_TRY_LINK(,[      integer i],[],[FFLAGS=])
1293    if test -z "$FFLAGS"; then
1294      AC_MSG_WARN([This value for FFLAGS does not work.  I will continue with empty FFLAGS, but you might want to set FFLAGS manually.])
1295    fi
1296  fi
1297fi
1298
1299AC_MSG_NOTICE([Fortran compiler options are: $FFLAGS])
1300
1301AC_ARG_VAR(MPIF77,[Fortran MPI Compiler])
1302if test x"$MPIF77" = x; then :; else
1303  AC_MSG_NOTICE([Will use MPI Fortran compiler $MPIF77])
1304  F77="$MPIF77"
1305fi
1306
1307case "$F77" in
1308  ifort* | */ifort* | IFORT* | */IFORT*)
1309    AC_COIN_MINGW_LD_FIX
1310    ;;
1311esac
1312
1313AC_LANG_POP([Fortran 77])
1314]) # AC_COIN_PROG_F77
1315
1316###########################################################################
1317#                           COIN_F77_WRAPPERS                             #
1318###########################################################################
1319
1320# Calls autoconfs AC_F77_WRAPPERS and does additional corrections to FLIBS
1321
1322AC_DEFUN([AC_COIN_F77_WRAPPERS],
1323[AC_BEFORE([AC_COIN_PROG_F77],[$0])dnl
1324AC_BEFORE([AC_PROG_F77],[$0])dnl
1325
1326AC_LANG_PUSH([Fortran 77])
1327
1328save_FLIBS="$FLIBS"
1329
1330AC_F77_WRAPPERS
1331
1332if test x"$save_FLIBS" != x; then
1333  FLIBS="$save_FLIBS"
1334else
1335  # This is to correct a missing exclusion in autoconf 2.59
1336  if test x"$FLIBS" != x; then
1337    my_flibs=
1338    for flag in $FLIBS; do
1339      case $flag in
1340        -lcrt*.o) ;;
1341               *) my_flibs="$my_flibs $flag" ;;
1342      esac
1343    done
1344    FLIBS="$my_flibs"
1345  fi
1346
1347  case $build in
1348  # The following is a fix to define FLIBS for ifort on Windows
1349     *-cygwin* | *-mingw*)
1350       case "$F77" in
1351         ifort* | */ifort* | IFORT* | */IFORT*)
1352           FLIBS="-link libifcorert.lib $LIBS /NODEFAULTLIB:libc.lib";;
1353         compile_f2c*)
1354           FLIBS=`$F77 -FLIBS` ;;
1355       esac;;
1356     *-hp-*)
1357         FLIBS="$FLIBS -lm";;
1358     *-ibm-*)
1359         FLIBS=`echo $FLIBS | sed 's/-lc)/-lc/g'` ;;
1360     *-linux-*)
1361       case "$F77" in
1362         pgf77* | */pgf77* | pgf90* | */pgf90*)
1363# ask linker to go through the archives multiple times
1364# (the Fortran compiler seems to do that automatically...
1365           FLIBS="-Wl,--start-group $FLIBS -Wl,--end-group" ;;
1366       esac
1367  esac
1368  ac_cv_f77_libs="$FLIBS"
1369fi
1370
1371AC_LANG_POP([Fortran 77])
1372
1373]) # AC_COIN_F77_WRAPPERS
1374
1375###########################################################################
1376#                             COIN_FIND_F77                               #
1377###########################################################################
1378
1379# Attempt to preempt autoconf by locating an appropriate F77 program. This
1380# macro will not trigger a fatal error if a suitable compiler cannot be
1381# found. It should be called before COIN_PROG_F77 or COIN_TRY_FLINK.
1382
1383AC_DEFUN([AC_COIN_FIND_F77],
1384[AC_REQUIRE([AC_COIN_ENABLE_DOSCOMPILE])
1385AC_REQUIRE([AC_COIN_F77_COMPS])
1386AC_MSG_NOTICE([Trying to determine Fortran compiler name])
1387AC_CHECK_PROGS([F77],[$coin_f77_comps],[unavailable])
1388])
1389
1390# Auxilliary macro to make sure both COIN_PROG_F77 and COIN_FIND_F77 use
1391# the same search lists for compiler names.
1392# For *-*-solaris*, promote Studio/Workshop compilers to front of list.
1393AC_DEFUN([AC_COIN_F77_COMPS],
1394[case $build in
1395  *-cygwin* | *-mingw*)
1396     if test "$enable_doscompile" = msvc ; then
1397       coin_f77_comps="ifort fl32 compile_f2c"
1398     else
1399       coin_f77_comps="gfortran g77 ifort fl32 compile_f2c"
1400     fi ;;
1401  *-*-solaris*)
1402     coin_f77_comps="f95 f90 f77 xlf fort77 gfortran g77 pgf90 pgf77 ifort ifc frt af77" ;;
1403  *) coin_f77_comps="xlf fort77 gfortran f77 g77 pgf90 pgf77 ifort ifc frt af77" ;;
1404 esac
1405])
1406
1407###########################################################################
1408#                          COIN_INIT_AUTOMAKE                             #
1409###########################################################################
1410
1411# This macro calls the regular INIT_AUTOMAKE and MAINTAINER_MODE
1412# macros, and defines additional variables and makefile conditionals,
1413# that are used in the maintainer parts of the makfile.  It also
1414# checks if the correct versions of the autotools are used.
1415#
1416# This also defines the AC_SUBST variables:
1417# abs_source_dir     absolute path to source code for this package
1418# abs_bin_dir        absolute path to the directory where binaries are
1419#                    going to be installed (prefix/bin)
1420# abs_lib_dir        absolute path to the directory where libraries are
1421#                    going to be installed (prefix/lib)
1422# abs_include_dir    absolute path to the directory where the header files
1423#                    are installed (prefix/include)
1424
1425AC_DEFUN([AC_COIN_INIT_AUTOMAKE],
1426[AC_REQUIRE([AC_PROG_EGREP])
1427
1428# AC_MSG_NOTICE([Beginning automake initialisation.])
1429# Stuff for automake
1430AM_INIT_AUTOMAKE
1431AM_MAINTAINER_MODE
1432
1433coin_have_externals=no
1434if test "$enable_maintainer_mode" = yes; then
1435
1436  # If maintainer mode is chosen, we make sure that the correct versions
1437  # of the tools are used, and that we know where libtool.m4 is (to
1438  # recreate acinclude.m4)
1439
1440  AC_SUBST(LIBTOOLM4)
1441  LIBTOOLM4=
1442  # Normally, $HOME
1443  AUTOTOOLS_DFLT=$HOME
1444
1445  AC_CACHE_CHECK([whether we are using the correct autotools],
1446                 [ac_cv_use_correct_autotools],
1447                 [ac_cv_use_correct_autotools=check])
1448
1449  if test $ac_cv_use_correct_autotools = check; then
1450    ac_cv_use_correct_autotools=yes
1451    # Check if we have autoconf
1452    AC_CHECK_PROG([have_autoconf],[autoconf],[yes],[no])
1453    if test $have_autoconf = no; then
1454      AC_MSG_ERROR([You specified you want to use maintainer mode, but I cannot find autoconf in your path.])
1455    fi
1456
1457    # Check whether autoconf is the correct version
1458    correct_version='2.59'
1459    grep_version=`echo  $correct_version | sed -e 's/\\./\\\\\\./g'`
1460    AC_MSG_CHECKING([whether we are using the correct version ($correct_version) of autoconf])
1461    autoconf --version > confauto.out 2>&1
1462    if $EGREP $grep_version confauto.out >/dev/null 2>&1; then
1463      AC_MSG_RESULT([yes])
1464    else
1465      rm -f confauto.out
1466      AC_MSG_RESULT([no])
1467      AC_MSG_ERROR([You don't have the correct version of autoconf as the first one in your path.])
1468    fi
1469    rm -f confauto.out
1470
1471    # Check if the executable autoconf is picked up from the correct location
1472    AC_MSG_CHECKING([whether autoconf is coming from the correct location])
1473    autoconf_dir=`which autoconf | sed -e 's=/autoconf=='`
1474    autoconf_dir=`cd $autoconf_dir; pwd`
1475    if test x$AUTOTOOLS_DIR = x; then
1476      want_dir=$AUTOTOOLS_DFLT/bin
1477    else
1478      want_dir=$AUTOTOOLS_DIR/bin
1479    fi
1480    if test $autoconf_dir = `cd $want_dir; pwd`; then
1481      AC_MSG_RESULT([yes])
1482    else
1483      rm -f confauto.out
1484      AC_MSG_RESULT([no])
1485      AC_MSG_ERROR([The autoconf executable should be picked up from \$AUTOTOOLS_DFLT/bin or \$AUTOTOOLS_DIR/bin.])
1486    fi
1487
1488    # Check if we have automake
1489    AC_CHECK_PROG([have_automake],[automake],[yes],[no])
1490    if test $have_automake = no; then
1491      AC_MSG_ERROR([You specified you want to use maintainer mode, but I cannot find automake in your path.])
1492    fi
1493 
1494    # Check whether automake is the correct version
1495    correct_version='1.9.6'
1496    grep_version=`echo  $correct_version | sed -e 's/\\./\\\\\\./g'`
1497    AC_MSG_CHECKING([whether we are using the correct version ($correct_version) of automake])
1498    automake --version > confauto.out 2>&1
1499    if $EGREP $grep_version confauto.out >/dev/null 2>&1; then
1500      AC_MSG_RESULT([yes])
1501    else
1502      rm -f confauto.out
1503      AC_MSG_RESULT([no])
1504      AC_MSG_ERROR([You don't have the correct version of automake as the first one in your path.])
1505    fi
1506    rm -f confauto.out
1507
1508    # Check if the executable automake is picked up from the correct location
1509    AC_MSG_CHECKING([whether automake is coming from the correct location])
1510    automake_dir=`which automake | sed -e 's=/automake=='`
1511    automake_dir=`cd $automake_dir; pwd`
1512    if test x$AUTOTOOLS_DIR = x; then
1513      want_dir=$AUTOTOOLS_DFLT/bin
1514    else
1515      want_dir=$AUTOTOOLS_DIR/bin
1516    fi
1517    if test $automake_dir = `cd $want_dir; pwd`; then
1518      AC_MSG_RESULT([yes])
1519    else
1520      rm -f confauto.out
1521      AC_MSG_RESULT([no])
1522      AC_MSG_ERROR([The automake executable should be picked up from \$AUTOTOOLS_DFLT/bin or \$AUTOTOOLS_DIR/bin.])
1523    fi
1524
1525    # Check if this is the correct version of libtool (with escaped dots)
1526    if test x$AUTOTOOLS_DIR = x; then
1527      want_dir=$AUTOTOOLS_DFLT/share
1528    else
1529      want_dir=$AUTOTOOLS_DIR/share
1530    fi
1531    correct_version='1.5.22'
1532    grep_version=`echo  $correct_version | sed -e 's/\\./\\\\\\./g'`
1533    AC_COIN_CHECK_FILE([$want_dir/libtool/ltmain.sh],
1534                       [have_ltmain=yes],
1535                       [have_ltmain=no])
1536    AC_MSG_CHECKING([whether we are using the correct version ($correct_version) of libtool.])
1537    if test $have_ltmain = yes; then
1538    if $EGREP $grep_version $want_dir/libtool/ltmain.sh >/dev/null 2>&1; then
1539        AC_MSG_RESULT([yes])
1540      else
1541        AC_MSG_RESULT([no])
1542        AC_MSG_ERROR([You don't have the correct version of libtool.])
1543      fi
1544    else
1545      AC_MSG_RESULT([no])
1546      AC_MSG_ERROR([I cannot find the ltmain.sh file.])
1547    fi
1548  fi
1549
1550  # Check if we can find the libtool file
1551  if test x$AUTOTOOLS_DIR = x; then
1552    want_dir=$AUTOTOOLS_DFLT/share
1553  else
1554    want_dir=$AUTOTOOLS_DIR/share
1555  fi
1556  AC_COIN_CHECK_FILE([$want_dir/aclocal/libtool.m4],
1557                     [LIBTOOLM4="$want_dir/aclocal/libtool.m4"],
1558                     [AC_MSG_ERROR([I cannot find the libtool.m4 file.])])
1559
1560  # Check if we have an Externals file
1561  if test -r $srcdir/Externals; then
1562    coin_have_externals=yes
1563  fi
1564  # Check if subversion is installed and understands https
1565  AC_CHECK_PROG([have_svn],[svn],[yes],[no])
1566  if test x$have_svn = xyes; then
1567    AC_CACHE_CHECK([whether svn understands https],
1568                   [ac_cv_svn_understands_https],
1569                   [svn --version > confauto.out 2>&1
1570                    if $EGREP https confauto.out >/dev/null 2>&1; then
1571                      ac_cv_svn_understands_https=yes
1572                    else
1573                      ac_cv_svn_understands_https=no
1574                      have_svn=no
1575                      ac_cv_prog_have_svn=no
1576                    fi
1577                    rm -f confauto.out])
1578  fi
1579
1580  # Find the location of the BuildTools directory
1581  BUILDTOOLSDIR=
1582  if test -r $srcdir/BuildTools/coin.m4; then
1583    BUILDTOOLSDIR=$srcdir/BuildTools
1584  else
1585    if test -r $srcdir/../BuildTools/coin.m4; then
1586      BUILDTOOLSDIR=$srcdir/../BuildTools
1587    else
1588      if test -r $srcdir/../../BuildTools/coin.m4; then
1589        BUILDTOOLSDIR=$srcdir/../../BuildTools
1590      else
1591        AC_MSG_ERROR(Cannot find the BuildTools directory)
1592      fi
1593    fi
1594  fi
1595  AC_SUBST(BUILDTOOLSDIR)
1596
1597  # The following variable is set to the name of the directory where
1598  # the autotool scripts are located
1599  AC_SUBST(AUX_DIR)
1600  AUX_DIR=$ac_aux_dir
1601fi
1602
1603# helpful variable for the base directory of this package
1604abs_source_dir=`cd $srcdir; pwd`
1605AC_SUBST(abs_source_dir)
1606
1607# Stuff for example Makefiles
1608if test x$prefix = xNONE; then
1609  full_prefix=$ac_default_prefix
1610else
1611  full_prefix=$prefix
1612fi
1613full_prefix=`cd $full_prefix ; pwd`
1614AC_SUBST(abs_lib_dir)
1615abs_lib_dir=$full_prefix/lib
1616AC_SUBST(abs_include_dir)
1617abs_include_dir=$full_prefix/include
1618AC_SUBST(abs_bin_dir)
1619abs_bin_dir=$full_prefix/bin
1620
1621AM_CONDITIONAL(HAVE_EXTERNALS,
1622               test $coin_have_externals = yes && test x$have_svn = xyes)
1623
1624# AC_MSG_NOTICE([End automake initialisation.])
1625
1626]) # AC_COIN_INIT_AUTOMAKE
1627
1628###########################################################################
1629#                          COIN_CREATE_LIBTOOL                            #
1630###########################################################################
1631
1632# This does all the tests necessary to create the libtool script in the
1633# package base directory.  If this is used, then the COIN_INIT_AUTO_TOOLS
1634# test in the subdirectories will be able to skip the libtool tests and
1635# just use the one in the package base directory.
1636
1637m4_define([AC_COIN_CREATE_LIBTOOL],
1638[AC_CANONICAL_BUILD
1639
1640# Check if user wants to produce debugging code
1641AC_COIN_DEBUG_COMPILE
1642
1643# Get the name of the C compiler and appropriate compiler options
1644AC_COIN_PROG_CC
1645
1646# Get the name of the C++ compiler and appropriate compiler options
1647AC_COIN_PROG_CXX
1648
1649# Get the name of the Fortran compiler and appropriate compiler options
1650AC_COIN_PROG_F77
1651
1652# Initialize automake and libtool
1653# AC_MSG_NOTICE([Calling INIT_AUTO_TOOLS from CREATE_LIBTOOL.])
1654AC_COIN_INIT_AUTO_TOOLS
1655# AC_MSG_NOTICE([Finished INIT_AUTO_TOOLS from CREATE_LIBTOOL.])
1656])
1657
1658###########################################################################
1659#                         COIN_INIT_AUTO_TOOLS                            #
1660###########################################################################
1661
1662# Initialize the auto tools automake and libtool, with all
1663# modifications we want for COIN packages.
1664#
1665# RPATH_FLAGS        link flags for hardcoding path to shared objects
1666
1667# This is a trick to have this code before AC_COIN_PROG_LIBTOOL
1668AC_DEFUN([AC_COIN_DISABLE_STATIC],
1669[
1670# On Cygwin, building DLLs doesn't work
1671case $build in
1672  *-cygwin*)
1673    coin_disable_shared=yes
1674    platform=Cygwin
1675  ;;
1676  *-mingw*)
1677    coin_disable_shared=yes
1678    platform="Msys"
1679#    case "$CXX" in
1680#      cl*)
1681#        coin_disable_shared=yes
1682#        platform="Msys with cl"
1683#    ;;
1684#    esac
1685  ;;
1686esac
1687if test x"$coin_disable_shared" = xyes; then
1688  if test x"$enable_shared" = xyes; then
1689    AC_MSG_WARN([On $platform, shared objects are not supported. I'm disabling your choice.])
1690  fi
1691  enable_shared=no
1692fi
1693# By default, we only want the shared objects to be compiled
1694AC_DISABLE_STATIC
1695])
1696
1697m4_define([AC_COIN_INIT_AUTO_TOOLS],
1698[{AC_BEFORE([AC_COIN_PROG_CXX],[$0])
1699AC_BEFORE([AC_COIN_PROG_CC],[$0])
1700AC_BEFORE([AC_COIN_PROG_F77],[$0])
1701
1702# START
1703AC_COIN_DISABLE_STATIC
1704
1705# Initialize automake
1706AC_COIN_INIT_AUTOMAKE
1707
1708LIBTOOL=
1709if test -r ../libtool; then
1710  coin_config_dir=..
1711  LIBTOOL='$(SHELL) $(top_builddir)/../libtool'
1712fi
1713if test "x$LIBTOOL" = x; then
1714  if test -r ../../libtool; then
1715    coin_config_dir=../..
1716    LIBTOOL='$(SHELL) $(top_builddir)/../../libtool'
1717  fi
1718fi
1719
1720if test "x$LIBTOOL" = x; then
1721# AC_MSG_NOTICE([Creating libtool script (calling COIN_PROG_LIBTOOL).])
1722  # Stuff for libtool
1723  AC_COIN_PROG_LIBTOOL
1724# AC_MSG_NOTICE([Finished COIN_PROG_LIBTOOL.])
1725  # set RPATH_FLAGS to the compiler link flags required to hardcode location
1726  # of the shared objects
1727  AC_COIN_RPATH_FLAGS($abs_lib_dir)
1728
1729else
1730
1731  AC_MSG_NOTICE([Using libtool script in directory $coin_config_dir])
1732  # get all missing information from the config.log file
1733
1734  # output variables and defines
1735  as_save_IFS=$IFS
1736  IFS='
1737'
1738  for oneline in `cat $coin_config_dir/config.status`; do
1739    case "$oneline" in
1740         # First some automake conditionals
1741      s,@am__fastdep* | s,@AR@* | s,@CPP@*  | s,@CPPFLAGS@* | s,@CXXCPP@*  | \
1742      s,@RANLIB@* | s,@STRIP@* | s,@ac_ct_AR@* | s,@ac_ct_RANLIB@* | \
1743      s,@ac_ct_STRIP@* | s,@host* | s,@LN_S@* | s,@RPATH_FLAGS@* | \
1744      s,@ac_c_preproc_warn_flag@* |  s,@ac_cxx_preproc_warn_flag@* )
1745        command=`echo $oneline | sed -e 's/^s,@//' -e 's/@,/="/' -e 's/,;t t/"/'`
1746#        echo "$command"
1747        eval "$command"
1748        ;;
1749      s,@DEFS@* )
1750        command=`echo $oneline | sed -e 's/^s,@DEFS@,/defsline="/' -e 's/,;t t/"/'`
1751#        echo "$command"
1752        eval "$command"
1753        ;;
1754    esac
1755  done
1756  IFS=$as_save_IFS
1757
1758  # And some defines (assuming here that the packages base dir
1759  # doesn't have a config.h file
1760  for word in $defsline; do
1761#    echo word $word
1762    case $word in
1763      -DHAVE_@<:@A-Z_@:>@*_H=1 | -DSTDC_HEADERS=1 )
1764        i=`echo $word | sed -e 's/-D/#define /' -e 's/=/ /'`
1765#        echo dd $i
1766        echo $i >>confdefs.h
1767        ;;
1768    esac
1769  done
1770fi
1771
1772# AC_MSG_NOTICE([End of INIT_AUTO_TOOLS.])
1773
1774# ToDo
1775# For now, don't use the -no-undefined flag, since the Makefiles are
1776# not yet set up that way.  But we need to fix this, when we want
1777# to comile DLLs under Windows.
1778LT_LDFLAGS=
1779AC_SUBST(LT_LDFLAGS)
1780
1781#END
1782}])
1783
1784
1785###########################################################################
1786#                      COIN_PATCH_LIBTOOL_CYGWIN                          #
1787###########################################################################
1788
1789# Patches to libtool for cygwin. Lots for cl, a few for GCC.
1790# For cl:
1791# - cygpath is not correctly quoted in fix_srcfile_path
1792# - paths generated for .lib files is not run through cygpath -w
1793
1794
1795AC_DEFUN([AC_COIN_PATCH_LIBTOOL_CYGWIN],
1796[ case "$CXX" in
1797    cl* | */cl* | CL* | */CL*)
1798      AC_MSG_NOTICE(Applying patches to libtool for cl compiler)
1799      sed -e 's|fix_srcfile_path=\"`cygpath -w \"\$srcfile\"`\"|fix_srcfile_path=\"\\\`'"$CYGPATH_W"' \\\"\\$srcfile\\\"\\\`\"|' \
1800          -e 's|fix_srcfile_path=\"\"|fix_srcfile_path=\"\\\`'"$CYGPATH_W"' \\\"\\$srcfile\\\"\\\`\"|' \
1801          -e 's%compile_deplibs=\"\$dir/\$old_library \$compile_deplibs\"%compile_deplibs="'\`"$CYGPATH_W"' \$dir/\$old_library | sed -e '"'"'sY\\\\\\\\Y/Yg'"'"\`' \$compile_deplibs\"'% \
1802          -e 's%compile_deplibs=\"\$dir/\$linklib \$compile_deplibs\"%compile_deplibs="'\`"$CYGPATH_W"' \$dir/\$linklib | sed -e '"'"'sY\\\\\\\\Y/Yg'"'"\`' \$compile_deplibs\"'% \
1803          -e 's%lib /OUT:%lib -OUT:%' \
1804          -e "s%cygpath -w%$CYGPATH_W%" \
1805          -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%' \
1806          -e 's/$AR t/lib -nologo -list/' \
1807          -e 's%f_ex_an_ar_oldlib="\($?*1*\)"%f_ex_an_ar_oldlib='\`"$CYGPATH_W"' \1`%' \
1808          -e 's%^archive_cmds=.*%archive_cmds="\\$CC -o \\$lib \\$libobjs \\$compiler_flags \\\\\\`echo \\\\\\"\\$deplibs\\\\\\" | \\$SED -e '"\'"'s/ -lc\\$//'"\'"'\\\\\\` -link -dll~linknames="%' \
1809          -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"%' \
1810      libtool > conftest.bla
1811
1812      mv conftest.bla libtool
1813      chmod 755 libtool
1814      ;;
1815    *)
1816      AC_MSG_NOTICE(Applying patches to libtool for GNU compiler)
1817      sed -e 's|fix_srcfile_path=\"`cygpath -w \"\$srcfile\"`\"|fix_srcfile_path=\"\\\`'"$CYGPATH_W"' \\\"\\$srcfile\\\"\\\`\"|' \
1818          -e 's|"lib /OUT:\\$oldlib\\$oldobjs\\$old_deplibs"|"\\$AR \\$AR_FLAGS \\$oldlib\\$oldobjs\\$old_deplibs~\\$RANLIB \\$oldlib"|' \
1819          -e 's|libext="lib"|libext="a"|' \
1820      libtool > conftest.bla
1821
1822      mv conftest.bla libtool
1823      chmod 755 libtool
1824      ;;
1825  esac ]) # COIN_PATCH_LIBTOOL_CYGWIN
1826
1827###########################################################################
1828#                           COIN_PROG_LIBTOOL                             #
1829###########################################################################
1830
1831# Setup the libtool stuff together with any modifications to make it
1832# work on additional platforms
1833
1834AC_DEFUN([AC_COIN_LIBTOOL_WRAPPER],
1835[AC_BEFORE([AC_COIN_BLA],[$0])
1836AC_PROG_LIBTOOL])
1837
1838AC_DEFUN([AC_COIN_BLA],[echo bla])
1839
1840AC_DEFUN([AC_COIN_PROG_LIBTOOL],
1841[# No longer needed now that CPPFLAGS is correctly set -- lh, 061214 --
1842 # AC_REQUIRE([AC_COIN_DLFCN_H])
1843
1844# NEW: If libtool exists in the directory higher up, we use that one
1845#      instead of creating a new one
1846
1847# It turns out that the code for AC_PROG_LIBTOOL is somehow AC_REQUIRED
1848# out in front of this macro body. You'll notice that LIBTOOL is already
1849# defined here.  We'll have to count on this macro not being called if libtool
1850# already exists, or at least move the libtool fixes outside the conditional.
1851# AC_MSG_NOTICE([Entering coin_prog_libtool, LIBTOOL = "$LIBTOOL".])
1852# This test is therefore removed.  -- lh, 061214 --
1853# if test "x$LIBTOOL" = x; then
1854
1855# AC_MSG_NOTICE([Calling PROG_LIBTOOL.])
1856  AC_PROG_LIBTOOL
1857# AC_MSG_NOTICE([Finished PROG_LIBTOOL.])
1858  AC_SUBST(ac_c_preproc_warn_flag)
1859  AC_SUBST(ac_cxx_preproc_warn_flag)
1860
1861  AC_MSG_NOTICE([Build is "$build".])
1862  mydos2unix='| dos2unix'
1863  case $build in
1864    *-mingw*)
1865      CYGPATH_W=echo
1866      mydos2unix=
1867      ;;
1868  esac
1869
1870  case $build in
1871    # Here we need to check if -m32 is specified.  If so, we need to correct
1872    # sys_lib_search_path_spec
1873    *x86_64-*)
1874      if test "$GCC" = yes && (echo $CXXFLAGS $CFLAGS $FFLAGS | $EGREP 'm32' >& /dev/null); then
1875        AC_MSG_NOTICE(Applying patches to libtool for 32bit compilation)
1876        sed -e 's|sys_lib_search_path_spec=".*"|sys_lib_search_path_spec="/lib /usr/lib"|' libtool > conftest.bla
1877        mv conftest.bla libtool
1878        chmod 755 libtool 
1879      fi
1880      ;;
1881    # The opposite problem: if we want to do a 64-bit build, the system search
1882    # libraries need to point to the sparcv9 subdirectories. If they do not
1883    # already do that, fix them.
1884    sparc-sun-solaris*)
1885      if test "$GCC" = yes && \
1886         (echo $CXXFLAGS $CFLAGS $FFLAGS | $EGREP 'm64' >/dev/null 2>&1) ; then
1887        fixlibtmp=`$CC -print-search-dirs | $EGREP '^libraries:'`
1888        if `echo "$fixlibtmp" | $EGREP -v sparcv9  >/dev/null 2>&1` ; then
1889          AC_MSG_NOTICE([Applying patches to libtool for 64-bit compilation])
1890          fixlibtmp=`echo $fixlibtmp | sed -e 's/libraries: =//' -e 's/:/ /g'`
1891          v9syslibpath=
1892          for lib in $fixlibtmp ; do
1893            if test -d "${lib}sparcv9" ; then
1894              v9syslibpath="$v9syslibpath ${lib}sparcv9/"
1895            fi
1896          done
1897          sed -e 's|sys_lib_search_path_spec=".*"|sys_lib_search_path_spec="'"$v9syslibpath"'"|' libtool > conftest.bla
1898          mv conftest.bla libtool
1899          chmod 755 libtool 
1900        fi
1901      fi
1902      ;;
1903    # Cygwin. Ah, cygwin. Too big and ugly to inline; see the macro.
1904    *-cygwin* | *-mingw*)
1905      AC_COIN_PATCH_LIBTOOL_CYGWIN
1906      ;;
1907    *-darwin*)
1908      AC_MSG_NOTICE(Applying patches to libtool for Darwin)
1909      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"/' \
1910      libtool > conftest.bla
1911
1912      mv conftest.bla libtool
1913      chmod 755 libtool
1914      ;;
1915  esac
1916# This fi matches the commented `if test "x$LIBTOOL" = x;' up at the head of
1917# the macro. -- lh, 061214 --
1918# fi
1919
1920# AC_MSG_NOTICE([End libtool initialisation.])
1921]) # AC_COIN_PROG_LIBTOOL
1922
1923# This is a trick to force the check for the dlfcn header to be done before
1924# the checks for libtool
1925# No longer needed now that CPPFLAGS is correctly set.  -- lh, 061214 --
1926# ACDEFUN([AC_COIN_DLFCN_H],
1927# [AC_LANG_PUSH(C)
1928# AC_COIN_CHECK_HEADER([dlfcn.h])
1929# AC_LANG_POP(C)
1930# ]) # AC_COIN_DLFCN_H
1931
1932###########################################################################
1933#                            COIN_RPATH_FLAGS                             #
1934###########################################################################
1935
1936# This macro, in case shared objects are used, defines a variable
1937# RPATH_FLAGS that can be used by the linker to hardwire the library
1938# search path for the given directories.  This is useful for example
1939# Makefiles
1940
1941AC_DEFUN([AC_COIN_RPATH_FLAGS],
1942[RPATH_FLAGS=
1943
1944if test $enable_shared = yes; then
1945  case $build in
1946    *-linux-*)
1947      if test "$GXX" = "yes"; then
1948        RPATH_FLAGS=
1949        for dir in $1; do
1950          RPATH_FLAGS="$RPATH_FLAGS -Wl,--rpath -Wl,$dir"
1951        done
1952      fi ;;
1953    *-darwin*)
1954        RPATH_FLAGS=nothing ;;
1955    *-ibm-*)
1956      case "$CXX" in
1957      xlC* | */xlC* | mpxlC* | */mpxlC*)
1958        RPATH_FLAGS=nothing ;;
1959      esac ;;
1960    *-hp-*)
1961        RPATH_FLAGS=nothing ;;
1962    *-mingw32)
1963        RPATH_FLAGS=nothing ;;
1964    *-*-solaris*)
1965        RPATH_FLAGS=
1966        for dir in $1; do
1967          RPATH_FLAGS="$RPATH_FLAGS -R$dir"
1968        done
1969  esac
1970
1971  if test "$RPATH_FLAGS" = ""; then
1972    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.])
1973  fi
1974  if test "$RPATH_FLAGS" = "nothing"; then
1975    RPATH_FLAGS=
1976  fi
1977fi
1978
1979AC_SUBST(RPATH_FLAGS)
1980]) # AC_COIN_RPATH_FLAGS
1981
1982###########################################################################
1983#                        COIN_LINK_INPUT_CMD                              #
1984###########################################################################
1985
1986# This macro determines which command should be used to "link" files
1987# that are input to the generated executables.  On Windows, the codes
1988# using the native Windows system libraries, cannot understand symbolic
1989# links, and a copy should be used instead of 'ln -s'.
1990# The result is stored in coin_link_input_cmd
1991
1992AC_DEFUN([AC_COIN_LINK_INPUT_CMD],
1993[AC_REQUIRE([AC_PROG_LN_S])
1994AC_BEFORE([AC_COIN_PROG_CC], [$0])
1995AC_BEFORE([AC_COIN_ENABLE_DOSCOMPILE], [$0])
1996
1997AC_MSG_CHECKING([which command should be used to link input files])
1998coin_link_input_cmd="$LN_S"
1999if test "$enable_doscompile" = mingw; then
2000  coin_link_input_cmd=cp
2001fi
2002case "$CC" in
2003  cl* | */cl* | CL* | */CL*)
2004    coin_link_input_cmd=cp ;;
2005esac
2006AC_MSG_RESULT($coin_link_input_cmd)
2007])
2008
2009###########################################################################
2010#                              COIN_FINALIZE                              #
2011###########################################################################
2012
2013# This macro should be called at the very end of the configure.ac file.
2014# It creates the output files (by using AC_OUTPUT), and might do some other
2015# things (such as generating links to data files in a VPATH configuration).
2016# It also prints the "success" message.
2017# Note: If the variable coin_skip_ac_output is set to yes, then no output
2018# files are written.
2019
2020AC_DEFUN([AC_COIN_FINALIZE],
2021[
2022AC_REQUIRE([AC_COIN_LINK_INPUT_CMD])
2023if test x$coin_skip_ac_output != xyes; then
2024
2025  FADDLIBS="$ADDLIBS"
2026  if test x"$coin_need_flibs" = xyes; then
2027    ADDLIBS="$ADDLIBS $FLIBS"
2028  fi
2029
2030  # library extension
2031  AC_SUBST(LIBEXT)
2032  case "$CC" in
2033    cl* | */cl* | CL* | */CL*)
2034         LIBEXT=lib ;;
2035      *) LIBEXT=a ;;
2036  esac
2037
2038  # Define VPATH_DISTCLEANFILES to be everything that needs to be
2039  # cleaned for distclean in a vpath configuration
2040  AC_SUBST(VPATH_DISTCLEANFILES)
2041  VPATH_DISTCLEANFILES="$coin_vpath_link_files"
2042
2043  # Take out subdirectories if their configuration concluded that they
2044  # don't need to be compiled
2045  if test x"$coin_ac_skip_subdirs" != x; then
2046    new_subdirs=
2047    for i in $subdirs; do
2048      skipme=no
2049      for j in $coin_ac_skip_subdirs; do
2050        if test $i = $j; then
2051          skipme=yes;
2052        fi
2053      done
2054      if test $skipme = no; then
2055        new_subdirs="$new_subdirs $i"
2056      fi
2057    done
2058    subdirs="$new_subdirs"
2059  fi
2060
2061  AC_OUTPUT
2062
2063  if test x"$coin_vpath_link_files" = x; then : ; else
2064    lnkcmd="$coin_link_input_cmd"
2065    if test "$lnkcmd" = cp; then
2066      AC_MSG_NOTICE(Copying data files for VPATH configuration)
2067    else
2068      AC_MSG_NOTICE(Creating VPATH links for data files)
2069    fi
2070    for file in $coin_vpath_link_files; do
2071      dir=`AS_DIRNAME(["./$file"])`
2072      if test -d $dir; then : ; else
2073        AS_MKDIR_P($dir)
2074      fi
2075      rm -f $file
2076      $lnkcmd $abs_source_dir/$file $file
2077    done
2078  fi
2079
2080  if test x$coin_projectdir = xyes; then
2081    AC_MSG_NOTICE([Configuration of $PACKAGE_NAME successful])
2082  else
2083    AC_MSG_NOTICE([Main configuration of $PACKAGE_NAME successful])
2084  fi
2085else
2086  AC_MSG_NOTICE([No configuration of $PACKAGE_NAME necessary])
2087fi
2088
2089]) #AC_COIN_FINALIZE
2090
2091###########################################################################
2092#                             COIN_VPATH_LINK                             #
2093###########################################################################
2094
2095# This macro makes sure that a symbolic link is created to a file in
2096# the source code directory tree if we are in a VPATH compilation, and
2097# if this package is the main package to be installed
2098
2099AC_DEFUN([AC_COIN_VPATH_LINK],
2100[AC_REQUIRE([AC_COIN_CHECK_VPATH])
2101if test $coin_vpath_config = yes; then
2102  coin_vpath_link_files="$coin_vpath_link_files $1"
2103fi
2104]) #AC_COIN_VPATH_LINK
2105
2106###########################################################################
2107#                       COIN_ENABLE_GNU_PACKAGES                          #
2108###########################################################################
2109
2110# This macro defined the --enable-gnu-packages flag.  This can be used
2111# to check if a user wants to compile GNU packges (such as readline or
2112# zlib) into the executable.  By default, GNU packages are disabled.
2113# This also defines the automake conditional COIN_ENABLE_GNU_PACKAGES
2114
2115AC_DEFUN([AC_COIN_ENABLE_GNU_PACKAGES],
2116[AC_ARG_ENABLE([gnu-packages],
2117               [AC_HELP_STRING([--enable-gnu-packages],
2118                               [compile with GNU packages (disabled by default)])],
2119               [coin_enable_gnu=$enableval],
2120               [coin_enable_gnu=no])
2121]) # AC_COIN_ENABLE_GNU_PACKAGES
2122
2123###########################################################################
2124#                           COIN_CHECK_GNU_ZLIB                           #
2125###########################################################################
2126
2127# This macro checks for the libz library.
2128
2129AC_DEFUN([AC_COIN_CHECK_GNU_ZLIB],
2130[AC_REQUIRE([AC_COIN_ENABLE_GNU_PACKAGES])
2131AC_BEFORE([AC_COIN_PROG_CXX],[$0])
2132AC_BEFORE([AC_COIN_PROG_CC],[$0])
2133AC_BEFORE([AC_COIN_PROG_F77],[$0])
2134AC_BEFORE([$0],[AC_COIN_FINALIZE])
2135
2136coin_has_zlib=no
2137if test $coin_enable_gnu = yes; then
2138  AC_COIN_CHECK_HEADER([zlib.h],[coin_has_zlib=yes])
2139
2140  if test $coin_has_zlib = yes; then
2141    AC_CHECK_LIB([z],[gzopen],
2142                 [ADDLIBS="-lz $ADDLIBS"],
2143                 [coin_has_zlib=no])
2144  fi
2145
2146  if test $coin_has_zlib = yes; then
2147    AC_DEFINE([COIN_HAS_ZLIB],[1],[Define to 1 if zlib is available])
2148  fi
2149fi
2150
2151AM_CONDITIONAL(COIN_HAS_ZLIB,test x$coin_has_zlib = xyes)
2152]) # AC_COIN_CHECK_GNU_ZLIB
2153
2154
2155###########################################################################
2156#                          COIN_CHECK_GNU_BZLIB                           #
2157###########################################################################
2158
2159# This macro checks for the libbz2 library.
2160
2161AC_DEFUN([AC_COIN_CHECK_GNU_BZLIB],
2162[AC_REQUIRE([AC_COIN_ENABLE_GNU_PACKAGES])
2163AC_BEFORE([AC_COIN_PROG_CXX],[$0])
2164AC_BEFORE([AC_COIN_PROG_CC],[$0])
2165AC_BEFORE([AC_COIN_PROG_F77],[$0])
2166AC_BEFORE([$0],[AC_COIN_FINALIZE])
2167
2168coin_has_bzlib=no
2169if test $coin_enable_gnu = yes; then
2170  AC_COIN_CHECK_HEADER([bzlib.h],[coin_has_bzlib=yes])
2171
2172  if test $coin_has_bzlib = yes; then
2173    AC_CHECK_LIB([bz2],[BZ2_bzReadOpen],
2174                 [ADDLIBS="-lbz2 $ADDLIBS"],
2175                 [coin_has_bzlib=no])
2176  fi
2177
2178  if test $coin_has_bzlib = yes; then
2179    AC_DEFINE([COIN_HAS_BZLIB],[1],[Define to 1 if bzlib is available])
2180  fi
2181fi
2182]) # AC_COIN_CHECK_GNU_BZLIB
2183
2184
2185###########################################################################
2186#                         COIN_CHECK_GNU_READLINE                         #
2187###########################################################################
2188
2189# This macro checks for GNU's readline.  It verifies that the header
2190# readline/readline.h is available, and that the -lreadline library
2191# contains "readline".  It is assumed that #include <stdio.h> is included
2192# in the source file before the #include<readline/readline.h>
2193
2194AC_DEFUN([AC_COIN_CHECK_GNU_READLINE],
2195[AC_REQUIRE([AC_COIN_ENABLE_GNU_PACKAGES])
2196AC_BEFORE([AC_COIN_PROG_CXX],[$0])
2197AC_BEFORE([AC_COIN_PROG_CC],[$0])
2198AC_BEFORE([AC_COIN_PROG_F77],[$0])
2199AC_BEFORE([$0],[AC_COIN_FINALIZE])
2200
2201coin_has_readline=no
2202if test $coin_enable_gnu = yes; then
2203  AC_COIN_CHECK_HEADER([readline/readline.h],
2204                       [coin_has_readline=yes],[],
2205                       [#include <stdio.h>])
2206
2207  coin_save_LIBS="$LIBS"
2208  LIBS=
2209  # First we check if tputs and friends are available
2210  if test $coin_has_readline = yes; then
2211    AC_SEARCH_LIBS([tputs],[ncurses termcap curses],[],
2212                   [coin_has_readline=no])
2213  fi
2214
2215  # Now we check for readline
2216  if test $coin_has_readline = yes; then
2217    AC_CHECK_LIB([readline],[readline],
2218                 [ADDLIBS="-lreadline $LIBS $ADDLIBS"],
2219                 [coin_has_readline=no])
2220  fi
2221
2222  if test $coin_has_readline = yes; then
2223    AC_DEFINE([COIN_HAS_READLINE],[1],[Define to 1 if readline is available])
2224  fi
2225
2226  LIBS="$coin_save_LIBS"
2227fi
2228]) # AC_COIN_CHECK_GNU_READLINE
2229
2230###########################################################################
2231#                             COIN_DATA_PATH                              #
2232###########################################################################
2233
2234# This macro defines a preprocessor macro with the absolute path to a
2235# subdirectory of Data.  The argument of this macro is the name of the
2236# subdirectory (in correct case), and the name of the macro is
2237# COIN_DATA_DIR_PATH, where dir is replaced by the capitalized name of
2238# the directory.  The path ends with a separator ("/" for linux and
2239# '\\' for Windows).  The default value for this path can be
2240# overwritten with the input variable with the same name
2241# (COIN_DATA_DIR_PATH).  At this point we chech only for the
2242# $srcdir/../Data subdirectory.
2243
2244AC_DEFUN([AC_COIN_DATA_PATH],
2245[AC_MSG_CHECKING([absolute path to data directory $1])
2246
2247AC_ARG_VAR(m4_toupper(COIN_DATA_$1_PATH),[Set to absolute path to Data/$1 subdirectory])
2248
2249if test x"$m4_toupper(COIN_DATA_$1_PATH)" = x; then
2250  m4_toupper(COIN_DATA_$1_PATH)=`cd $srcdir/../Data/$1; pwd`
2251fi
2252
2253# Under Cygwin, use Windows path.  Add separator
2254case $build in
2255  *-cygwin*)
2256    m4_toupper(COIN_DATA_$1_PATH)=`cygwin -w $m4_toupper(COIN_DATA_$1_PATH)`\\
2257    ;;
2258  *)
2259    m4_toupper(COIN_DATA_$1_PATH)="$m4_toupper(COIN_DATA_$1_PATH)/"
2260    ;;
2261esac
2262
2263if test -r $m4_toupper(COIN_DATA_$1_PATH); then
2264  AC_DEFINE_UNQUOTED(m4_toupper(COIN_DATA_$1_PATH),["$m4_toupper(COIN_DATA_$1_PATH)"],
2265            [Define to absolute path for Data subdirectory $1])
2266  AC_MSG_RESULT($m4_toupper(COIN_DATA_$1_PATH))
2267else
2268  AC_MSG_ERROR(Directory $m4_toupper(COIN_DATA_$1_PATH) does not exist)
2269fi
2270]) # AC_COIN_HAS_DATA
2271
2272###########################################################################
2273#                       COIN_LINK_FROM_FILELIST                           #
2274###########################################################################
2275
2276# This macro creates links (or copies, if necessary) to files listed
2277# as content in a text file (second argument) into a target directory
2278# (first argument), which is created if it doesn't exist yet.  If s link
2279# already exists, nothing happens.
2280
2281AC_DEFUN([AC_COIN_LINKCOPY_FROM_FILELIST],
2282[cmd="$3"
2283if test -e $srcdir/$2 ; then
2284  my_target_dir="$1"
2285  my_link_files=`cat $srcdir/$2`
2286  my_dirname=`AS_DIRNAME($2)`
2287#  if test -e $my_target_dir; then : ; else
2288#    AS_MKDIR_P($my_target_dir)
2289#  fi
2290  for i in $my_link_files; do
2291    #rm -rf $my_target_dir/$i
2292    if test -e $my_target_dir/$i; then : ; else
2293      dirn2=`AS_DIRNAME($my_target_dir/$i)`
2294      if test -e $dirn2; then : ; else
2295        AS_MKDIR_P($dirn2)
2296      fi
2297      $cmd $abs_source_dir/$my_dirname/$i $my_target_dir/$i
2298    fi
2299  done
2300else
2301  AC_MSG_WARN([File list file $2 missing!])
2302fi
2303])
2304
2305AC_DEFUN([AC_COIN_LINK_FROM_FILELIST],
2306[
2307AC_REQUIRE([AC_COIN_LINK_INPUT_CMD])
2308echo Creating links in $1 ...
2309AC_COIN_LINKCOPY_FROM_FILELIST($1, $2, $coin_link_input_cmd)
2310])
2311
2312###########################################################################
2313#                       COIN_COPY_FROM_FILELIST                           #
2314###########################################################################
2315
2316# Like COIN_LINK_FROM_FILELIST, but copies the files.
2317
2318AC_DEFUN([AC_COIN_COPY_FROM_FILELIST],
2319[
2320echo Creating copies in $1 ...
2321AC_COIN_LINKCOPY_FROM_FILELIST($1, $2, [cp])
2322])
2323
2324###########################################################################
2325#                          COIN_EXAMPLE_FILES                             #
2326###########################################################################
2327
2328# This macro determines the names of the example files (using the
2329# argument in an "ls" command) and sets up the variables EXAMPLE_FILES
2330# and EXAMPLE_CLEAN_FILES.  If this is a VPATH configuration, it also
2331# creates soft links to the example files.
2332
2333AC_DEFUN([AC_COIN_EXAMPLE_FILES],
2334[AC_REQUIRE([AC_COIN_CHECK_GNU_ZLIB])
2335AC_REQUIRE([AC_COIN_CHECK_VPATH])
2336files=`cd $srcdir; ls $1`
2337# We need to do the following loop to make sure that are no newlines
2338# in the variable
2339for file in $files; do
2340  EXAMPLE_FILES="$EXAMPLE_FILES $file"
2341done
2342if test $coin_vpath_config = yes; then
2343  lnkcmd=
2344  if test "$enable_doscompile" != no; then
2345    lnkcmd=cp
2346  fi
2347  case "$CC" in
2348    cl* | */cl* | CL* | */CL*)
2349      lnkcmd=cp ;;
2350  esac
2351  if test "$lnkcmd" = cp; then
2352    AC_MSG_NOTICE([Copying example files ($1)])
2353  else
2354    AC_PROG_LN_S
2355    AC_MSG_NOTICE([Creating links to the example files ($1)])
2356    lnkcmd="$LN_S"
2357  fi
2358  for file in $EXAMPLE_FILES; do
2359    rm -f $file
2360    $lnkcmd $srcdir/$file $file
2361  done
2362  EXAMPLE_CLEAN_FILES='$1'
2363else
2364  EXAMPLE_CLEAN_FILES=
2365fi
2366
2367# In case there are compressed files, we create a variable with the
2368# uncompressed names
2369EXAMPLE_UNCOMPRESSED_FILES=
2370for file in $EXAMPLE_FILES; do
2371  case $file in
2372    *.gz)
2373      EXAMPLE_UNCOMPRESSED_FILES="$EXAMPLE_UNCOMPRESSED_FILES `echo $file | sed -e s/.gz//`"
2374      ;;
2375  esac
2376done
2377
2378AC_SUBST(EXAMPLE_UNCOMPRESSED_FILES)
2379AC_SUBST(EXAMPLE_FILES)
2380AC_SUBST(EXAMPLE_CLEAN_FILES)
2381]) #AC_COIN_EXAMPLE_FILES
2382
2383###########################################################################
2384#                            COIN_HAS_PROJECT                             #
2385###########################################################################
2386
2387# This macro sets up usage of a Coin package.  It defines the
2388# PKGSRCDIR and PKGOBJDIR variables, refering to the main source and
2389# object directory of the package, respectively.  It also defines
2390# a COIN_HAS_PKG preprocessor macro and makefile conditional.  The
2391# argument should be the name (Pkg) of the project (in correct lower
2392# and upper case)
2393
2394AC_DEFUN([AC_COIN_HAS_PROJECT],
2395[AC_MSG_CHECKING([for COIN project $1])
2396
2397# First check, if the sub-project is actually available (ToDo: allow
2398# other locations)
2399
2400m4_tolower(coin_has_$1)=unavailable
2401if test x"$COIN_SKIP_PROJECTS" != x; then
2402  for dir in $COIN_SKIP_PROJECTS; do
2403    if test $dir = $1; then
2404      m4_tolower(coin_has_$1)=skipping
2405    fi
2406  done
2407fi
2408
2409if test $m4_tolower(coin_has_$1) != skipping; then
2410  if test $PACKAGE_TARNAME = m4_tolower($1); then
2411    m4_tolower(coin_has_$1)=.
2412  else
2413    if test -d $srcdir/../$1; then
2414      m4_tolower(coin_has_$1)=../$1
2415    fi
2416  fi
2417fi
2418
2419if test $m4_tolower(coin_has_$1) != unavailable &&
2420   test $m4_tolower(coin_has_$1) != skipping; then
2421  # Set the #define if the component is available
2422  AC_DEFINE(m4_toupper(COIN_HAS_$1),[1],[Define to 1 if the $1 package is used])
2423
2424  # Set the variables for source and object code location
2425  AC_SUBST(m4_toupper($1SRCDIR))
2426  m4_toupper($1SRCDIR)=`cd $srcdir/$m4_tolower(coin_has_$1); pwd`
2427  AC_SUBST(m4_toupper($1OBJDIR))
2428  m4_toupper($1OBJDIR)=`pwd`/$m4_tolower(coin_has_$1)
2429fi
2430
2431  # Define the Makefile conditional
2432AM_CONDITIONAL(m4_toupper(COIN_HAS_$1),
2433               [test $m4_tolower(coin_has_$1) != unavailable &&
2434                test $m4_tolower(coin_has_$1) != skipping])
2435AC_MSG_RESULT([$m4_tolower(coin_has_$1)])
2436]) # AC_COIN_HAS_PROJECT
2437
2438###########################################################################
2439#                        COIN_HAS_USER_LIBRARY                            #
2440###########################################################################
2441# This macro sets up usage of a user library with header files. The assumption
2442# is that the header file(s) and library do not reside in standard system
2443# directories, hence both the include directory and link flags must be
2444# specified. There are two mandatory arguments and two optional arguments.
2445#
2446# The first argument (mandatory) should be a name (LibraryName) for the
2447# library.  The second argument (mandatory) should be an abbreviation in
2448# upper case letters (LBRY) for the library. Ultimately, the macro will
2449# specify two variables, LBRYINCDIR and LBRYLIB, to be substituted in files
2450# generated during configuration; a preprocessor symbol COIN_HAS_LBRY; and a
2451# matching automake conditional COIN_HAS_LBRY. LBRYINCDIR should specify the
2452# directory containing include files for the library. LBRYLIB should specify
2453# the flags necessary to link to the library. A variable coin_has_lbry will
2454# be set to true or false, as appropriate. A variable lbry_libcheck will be
2455# be set to yes or no; no indicates link checks should not be attempted.
2456#
2457# The macro defines three configure arguments, --with-libraryname-incdir,
2458# --with-libraryname-lib, and --disable-libraryname-libcheck, by converting
2459# LibraryName to lower case.
2460#
2461# LBRYINCDIR and LBRYLIB can be specified as environment variables or as
2462# part of the configure command using --with-libraryname-incdir and
2463# --with-libraryname-lib, respectively. Command line arguments override
2464# environment variables.
2465#
2466# If a third argument is given, it should specify a file in LBRYINCDIR.  The
2467# macro will check for the presence of the file. If a fourth argument is given,
2468# it should specify a function name, `fname'.  The macro will attempt to link a
2469# trivial program containing a parameterless call to the function, `fname()',
2470# using the LBRYLIB flags. The link check uses C as the language; this has been
2471# adequate to date but has limitations. It is possible to disable the link
2472# check by specifying --disable-libraryname-libcheck. This is a workaround for
2473# instances where the link check does not work properly, for whatever reason.
2474# If you're trying to link to a Fortran library, consider using F77_FUNC or
2475# FC_FUNC to obtain a mangled fname appropriate for use from C code. For a C++
2476# library, you're on your own unless the library declares some function with
2477# extern "C" linkage. Otherwise, you'll have to somehow find the mangled C++
2478# name.
2479
2480AC_DEFUN([AC_COIN_HAS_USER_LIBRARY],
2481[ AC_REQUIRE([AC_COIN_PROJECTDIR_INIT])
2482  AC_MSG_CHECKING(if user provides library for $1)
2483
2484# Check for header file directory
2485
2486  AC_ARG_WITH(m4_tolower($1)-incdir,
2487      AS_HELP_STRING([--with-m4_tolower($1)-incdir],
2488                     [specify the header file directory for library $1]),
2489      [$2INCDIR=`cd $withval; pwd`])
2490
2491# Check for library directory
2492
2493  AC_ARG_WITH(m4_tolower($1)-lib,
2494      AS_HELP_STRING([--with-m4_tolower($1)-lib],
2495                     [specify the flags used to link with the library $1]),
2496      [$2LIB=$withval])
2497
2498# Switch to disable library check if requested
2499
2500  AC_ARG_ENABLE(m4_tolower($1)-libcheck,
2501      AS_HELP_STRING([--enable-m4_tolower($1)-libcheck],
2502                     [use disable-m4_tolower($1)-libcheck to skip the link
2503                      check at configuration time]),
2504      [m4_tolower($1)_libcheck=$enableval],
2505      [m4_tolower($1)_libcheck=yes])
2506
2507# At this point, if we're going to use the library, both LBRYINCDIR and
2508# LBRYLIB must be defined and not empty.
2509
2510  if test x"$$2INCDIR" != x || test x"$$2LIB" != x; then
2511    if test x"$$2INCDIR" = x || test x"$$2LIB" = x; then
2512      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.])
2513    fi
2514    m4_tolower(coin_has_$2)=true
2515    AC_MSG_RESULT(yes)
2516  else
2517    m4_tolower(coin_has_$2)=false
2518    AC_MSG_RESULT(no)
2519  fi
2520
2521# If we have instructions for use, consider header and link checks.
2522
2523  if test $m4_tolower(coin_has_$2) = true; then
2524
2525# If argument 3 (file) is given, check for the file. Typically this will be a
2526# header file, but that's not assumed.
2527
2528    m4_ifval([$3],
2529        [AC_COIN_CHECK_FILE([$$2INCDIR/$3],[],
2530             [AC_MSG_ERROR([Cannot find file $3 in $$2INCDIR])])])
2531
2532# Now see if we can link the function. There are arguments for and against
2533# assuming argument 3 is a header file declaring the function. A correct
2534# function declaration is the main argument in favour. Having to cope with
2535# possible dependencies or other oddities are the main arguments against.
2536# Force the use of C as the best single choice amongst C++, C, and Fortran.
2537# Obviously, this has limits.
2538
2539    m4_ifvaln([$4],
2540        [if test x"$m4_tolower($1)_libcheck" != xno; then
2541           coin_save_LIBS="$LIBS"
2542           LIBS="$$2LIB $ADDLIBS"
2543           coin_$2_link=no
2544           AC_LANG_PUSH(C)
2545           for fnm in $4 ; do
2546             AC_MSG_CHECKING([whether symbol $fnm is available with $2])
2547             AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[$fnm()]])],
2548                 [AC_MSG_RESULT(yes)
2549                  coin_$2_link=yes
2550                  break],
2551                 [AC_MSG_RESULT(no)])
2552           done
2553           AC_LANG_POP(C)
2554           if test x"$coin_$2_link" = xyes ; then
2555             LIBS="$coin_save_LIBS"
2556           else
2557             AC_MSG_ERROR([Cannot find symbol(s) $4 with $2])
2558           fi
2559         fi])
2560
2561# If we make it this far, we've verified the file and linked the function. Add
2562# the necessary link flags to ADDLIBS and define the preprocessor symbol
2563# COIN_HAS_LBRY.
2564
2565    ADDLIBS="$$2LIB $ADDLIBS"
2566    AC_DEFINE(COIN_HAS_$2,[1],[Define to 1 if the $1 package is available])
2567  fi
2568
2569# Arrange for configure to substitute LBRYINCDIR and LBRYLIB and create the
2570# automake conditional. These actions must occur unconditionally.
2571
2572  AC_SUBST($2INCDIR)
2573  AC_SUBST($2LIB)
2574  AM_CONDITIONAL(COIN_HAS_$2, test $m4_tolower(coin_has_$2) = true)
2575]) #AC_COIN_HAS_USER_LIBRARY
2576
2577###########################################################################
2578#                               COIN_HAS_ASL                              #
2579###########################################################################
2580
2581# This macro checks if the user has provide arguments that say where
2582# the precompiled ASL files should be found (with the --with-asldir
2583# flag).  If this is not the case, we check if the ThirdParty/ASL
2584# directory has been configured, which indicates that the files will
2585# be in that directory and can be used.
2586
2587AC_DEFUN([AC_COIN_HAS_ASL],
2588[coin_aslobjdir=../ThirdParty/ASL
2589coin_aslsrcdir=$srcdir/$coin_aslobjdir
2590
2591# Determine the name of the ASL library
2592case "$CC" in
2593  cl* | */cl* | CL* | */CL*)
2594    ampllib=amplsolv.lib ;;
2595  *)
2596    ampllib=amplsolver.a ;;
2597esac
2598
2599AC_ARG_WITH([asldir],
2600            AC_HELP_STRING([--with-asldir],
2601                           [specify path to AMPL solver directory (or BUILD for compilation, or "no" for disabling AMPL)]),
2602            [use_asldir=$withval], [use_asldir=])
2603
2604if test "$use_asldir" = BUILD; then
2605  if test "$PACKAGE_NAME" != ThirdPartyASL; then
2606    # If we are configuring ThirdParty/ASL, don't check
2607    if test -r $coin_aslobjdir/.MakeOk; then :; else
2608      AC_MSG_ERROR([option \"BUILD\" specified for asldir, but directory is not configure (sources missing?)])
2609    fi
2610  fi
2611elif test -z "$use_asldir"; then
2612 # try to find sources - if not given don't compile
2613  if test "$PACKAGE_NAME" != ThirdPartyASL; then
2614    if test -r $coin_aslobjdir/.MakeOk; then
2615      use_asldir=BUILD
2616    else
2617      use_asldir=no
2618    fi
2619  else
2620    use_asldir=no
2621  fi
2622elif test "$use_asldir" != "no"; then
2623  AC_COIN_CHECK_FILE([$use_asldir/$ampllib],[],
2624                     [AC_MSG_ERROR([ASL directory \"$use_asldir\" specified, but library missing])])
2625  AC_COIN_CHECK_FILE([$use_asldir/asl.h],[],
2626                     [AC_MSG_ERROR([ASL directory \"$use_asldir\" specified, but header files are missing])])
2627  use_asldir=`cd $use_asldir; pwd`
2628  case $build in
2629    *-cygwin*) use_asldir=`cygpath -w $use_asldir | sed -e sX\\\\\\\\X/Xg` ;;
2630  esac
2631fi
2632
2633# Variable containing ASL library (including full path)
2634AC_SUBST(ASLLIB)
2635# Variable containing flags for including ASL header files
2636AC_SUBST(ASL_CPPFLAGS)
2637
2638if test "$use_asldir" = BUILD; then
2639  coin_aslobjdir=`cd $coin_aslobjdir; pwd`
2640  ASLLIB=`$CYGPATH_W $coin_aslobjdir/$ampllib | sed -e sX\\\\\\\\X/Xg`
2641  coin_aslsrcdir=`cd $coin_aslsrcdir; pwd`
2642  ASL_CPPFLAGS="-I"`$CYGPATH_W $coin_aslobjdir | sed -e sX\\\\\\\\X/Xg`" -I"`$CYGPATH_W $coin_aslsrcdir/solvers | sed -e sX\\\\\\\\X/Xg`
2643elif test "$use_asldir" != no; then
2644  ASLLIB=`$CYGPATH_W $use_asldir/$ampllib | sed -e sX\\\\\\\\X/Xg`
2645  ASL_CPPFLAGS="-I"`$CYGPATH_W $use_asldir | sed -e sX\\\\\\\\X/Xg`
2646fi
2647
2648if test "$use_asldir" != no; then
2649  AC_LANG_PUSH(C)
2650  AC_CHECK_LIB(dl,[dlopen],[ASLLIB="$ASLLIB -ldl"],[])
2651  coin_has_asl=yes
2652  AC_DEFINE([COIN_HAS_ASL],[1],
2653            [If defined, the Ampl Solver Library is available.])
2654  AC_LANG_POP(C)
2655else
2656  coin_has_asl=no
2657fi
2658AM_CONDITIONAL(COIN_HAS_ASL, test $coin_has_asl = yes)
2659]) # AC_COIN_HAS_ASL
2660
2661###########################################################################
2662#                            COIN_TRY_FLINK                               #
2663###########################################################################
2664
2665# Auxilliary macro to test if a Fortran function name can be linked,
2666# given the current settings of LIBS.  We determine from the context, what
2667# the currently active programming language is, and cast the name accordingly.
2668# The first argument is the name of the function/subroutine, in small letters,
2669# the second argument are the actions taken when the test works, and the
2670# third argument are the actions taken if the test fails.
2671
2672AC_DEFUN([AC_COIN_TRY_FLINK],
2673[case $ac_ext in
2674  f)
2675    AC_TRY_LINK(,[      call $1],[$2],[$3])
2676    ;;
2677  c)
2678    AC_F77_FUNC($1,cfunc$1)
2679    if test x"$coin_need_flibs" = xyes; then
2680      flink_try=no;
2681    else
2682      AC_TRY_LINK([void $cfunc$1();],[$cfunc$1()],
2683                  [flink_try=yes],[flink_try=no])
2684    fi
2685    if test $flink_try = yes; then
2686      $2
2687    else
2688      if test x"$FLIBS" != x; then
2689        flink_save_libs="$LIBS"
2690        LIBS="$LIBS $FLIBS"
2691        AC_TRY_LINK([void $cfunc$1();],[$cfunc$1()],
2692                    [LIBS="$flink_save_libs"
2693                     $2
2694                     coin_need_flibs=yes],
2695                    [LIBS="$flink_save_libs"
2696                     $3])
2697      else
2698        $3
2699      fi
2700    fi
2701    ;;
2702  cc|cpp)
2703    AC_F77_FUNC($1,cfunc$1)
2704    if test x"$coin_need_flibs" = xyes; then
2705      flink_try=no;
2706    else
2707      AC_TRY_LINK([extern "C" {void $cfunc$1();}],[$cfunc$1()],
2708                  [flink_try=yes],[flink_try=no])
2709    fi
2710    if test $flink_try = yes; then
2711      $2
2712    else
2713      if test x"$FLIBS" != x; then
2714        flink_save_libs="$LIBS"
2715        LIBS="$LIBS $FLIBS"
2716        AC_TRY_LINK([extern "C" {void $cfunc$1();}],[$cfunc$1()],
2717                    [LIBS="$flink_save_libs"
2718                     $2
2719                     coin_need_flibs=yes],
2720                    [LIBS="$flink_save_libs"
2721                     $3])
2722      else
2723        $3
2724      fi
2725    fi
2726    ;;
2727esac
2728]) # AC_COIN_TRY_FLINK
2729
2730###########################################################################
2731#                             COIN_HAS_BLAS                               #
2732###########################################################################
2733
2734# This macro checks for a library containing the BLAS library.  It
2735# tries standard libraries, and if none is found to be working, it
2736# checks whether the BLAS ThirdParty/Blas directory has been configured.
2737# It adds to ADDLIBS any flags required to link with an externally provided
2738# BLAS.  It defines the makefile conditional and preprocessor macro
2739# COIN_HAS_BLAS, if blas is available, and it defines the makefile conditional
2740# COIN_BUILD_BLAS, if blas is compiled within COIN.
2741
2742AC_DEFUN([AC_COIN_HAS_BLAS],
2743[if test "$PACKAGE_NAME" = ThirdPartyBlas || test "$PACKAGE_NAME" = ThirdPartyLapack; then
2744  coin_blasobjdir=../Blas
2745else
2746  coin_blasobjdir=../ThirdParty/Blas
2747fi
2748coin_blassrcdir=$srcdir/$coin_blasobjdir
2749
2750AC_ARG_WITH([blas],
2751            AC_HELP_STRING([--with-blas],
2752                           [specify BLAS library (or BUILD for compilation)]),
2753            [use_blas=$withval], [use_blas=])
2754
2755MAKEOKFILE=.MakeOk
2756# Check if user supplied option makes sense
2757if test x"$use_blas" != x; then
2758  if test "$use_blas" = "BUILD"; then
2759    # Don't check for course code if this is executed in ThirdParty/Blas
2760    if test "$PACKAGE_NAME" != ThirdPartyBlas; then
2761      if test -r $coin_blasobjdir/.MakeOk; then :; else
2762        AC_MSG_ERROR([option \"BUILD\" specified for Blas, but $coin_blasobjdir directory is not properly configured])
2763      fi
2764    fi
2765  elif test "$use_blas" != no ; then
2766    AC_MSG_CHECKING([whether user supplied BLASLIB=\"$use_blas\" works])
2767    LIBS="$use_blas $LIBS"
2768    ADDLIBS="$use_blas $ADDLIBS"
2769    AC_COIN_TRY_FLINK([daxpy],
2770                      [AC_MSG_RESULT([yes])],
2771                      [AC_MSG_RESULT([no])
2772                       AC_MSG_ERROR([user supplied BLAS library \"$use_blas\" does not work])])
2773  fi
2774else
2775# Try to autodetect the library for blas based on build system
2776  #AC_MSG_CHECKING([default locations for BLAS])
2777  skip_lblas_check=no
2778  case $build in
2779    *-sgi-*)
2780      SAVE_LIBS="$LIBS"
2781      AC_MSG_CHECKING([whether -lcomplib.sgimath has BLAS])
2782      LIBS="-lcomplib.sgimath $LIBS"
2783      AC_COIN_TRY_FLINK([daxpy],
2784                        [AC_MSG_RESULT([yes])
2785                         use_blas=-lcomplib.sgimath;
2786                         ADDLIBS="-lcomplib.sgimath $ADDLIBS"],
2787                        [AC_MSG_RESULT([no])
2788                         SAVE_LIBS="$LIBS"])
2789      ;;
2790
2791# Ideally, we'd use -library=sunperf, but it's an imperfect world. Studio
2792# cc doesn't recognise -library, it wants -xlic_lib. Studio 12 CC doesn't
2793# recognise -xlic_lib. Libtool doesn't like -xlic_lib anyway. Sun claims
2794# that CC and cc will understand -library in Studio 13. The main extra
2795# function of -xlic_lib and -library is to arrange for the Fortran run-time
2796# libraries to be linked for C++ and C. We can arrange that explicitly.
2797    *-*-solaris*)
2798      SAVE_LIBS="$LIBS"
2799      AC_MSG_CHECKING([for BLAS in libsunperf])
2800      LIBS="-lsunperf $FLIBS $LIBS"
2801      AC_COIN_TRY_FLINK([daxpy],
2802                        [AC_MSG_RESULT([yes])
2803                         use_blas='-lsunperf'
2804                         ADDLIBS="-lsunperf $ADDLIBS"
2805                         coin_need_flibs=yes],
2806                        [AC_MSG_RESULT([no])
2807                         LIBS="$SAVE_LIBS"])
2808      ;;
2809# On cygwin, consider -lblas only if doscompile is disabled. The prebuilt
2810# library will want to link with cygwin, hence won't run standalone in DOS.
2811    *-cygwin*)
2812      if test "$enable_doscompile" = mingw; then
2813        skip_lblas_check=yes
2814      fi
2815      ;;
2816  esac
2817
2818  if test -z "$use_blas" && test $skip_lblas_check = no; then
2819    SAVE_LIBS="$LIBS"
2820    AC_MSG_CHECKING([whether -lblas has BLAS])
2821    LIBS="-lblas $LIBS"
2822    AC_COIN_TRY_FLINK([daxpy],
2823                      [AC_MSG_RESULT([yes])
2824                       ADDLIBS="-lblas $ADDLIBS"
2825                       use_blas='-lblas'],
2826                      [AC_MSG_RESULT([no])
2827                       LIBS="$SAVE_LIBS"])
2828  fi
2829
2830# If we have no other ideas, consider building BLAS.
2831  if test -z "$use_blas"; then
2832    if test "$PACKAGE_NAME" != ThirdPartyBlas; then
2833      if test -r $coin_blasobjdir/.MakeOk; then
2834        use_blas=BUILD
2835      fi
2836    fi
2837  fi
2838fi
2839
2840if test "$use_blas" = BUILD; then
2841  coin_need_flibs=yes
2842fi
2843
2844AM_CONDITIONAL([COIN_HAS_BLAS],[test x"$use_blas" != x])
2845AM_CONDITIONAL([COIN_BUILD_BLAS],[test "$use_blas" = BUILD])
2846
2847if test x"$use_blas" = x || test "$use_blas" = no; then
2848  coin_has_blas=no
2849else
2850  coin_has_blas=yes
2851  AC_DEFINE([COIN_HAS_BLAS],[1],
2852            [If defined, the BLAS Library is available.])
2853fi
2854]) # AC_COIN_HAS_BLAS
2855
2856###########################################################################
2857#                            COIN_HAS_LAPACK                              #
2858###########################################################################
2859
2860# This macro checks for a library containing the LAPACK library.  It
2861# tries standard libraries, and if none is found to be working, it
2862# checks whether the LAPACK ThirdParty/Lapack directory has been
2863# configured.  It adds to ADDLIBS any flags required to link with an
2864# externally provided LAPACK.  It defines the makefile conditional and
2865# preprocessor macro COIN_HAS_LAPACK, if lapack is available, and it
2866# defines the makefile conditional COIN_BUILD_LAPACK, if lapack is
2867# compiled within COIN.
2868
2869AC_DEFUN([AC_COIN_HAS_LAPACK],
2870[coin_lapackobjdir=../ThirdParty/Lapack
2871coin_lapacksrcdir=$srcdir/$coin_lapackobjdir
2872
2873AC_ARG_WITH([lapack],
2874            AC_HELP_STRING([--with-lapack],
2875                           [specify LAPACK library (or BUILD for compilation)]),
2876            [use_lapack=$withval], [use_lapack=])
2877
2878# Check if user supplied option makes sense
2879if test x"$use_lapack" != x; then
2880  if test "$use_lapack" = "BUILD"; then
2881    # Don't check for course code if this is executed in ThirdParty/Lapack
2882    if test "$PACKAGE_NAME" != ThirdPartyLapack; then
2883      if test -r $coin_lapackobjdir/.MakeOk; then :; else
2884        AC_MSG_ERROR([option \"BUILD\" specified for LAPACK, but $coin_lapackobjdir directory is not configured])
2885      fi
2886    fi
2887  else
2888    AC_MSG_CHECKING([whether user supplied LAPACKLIB=\"$use_lapack\" works])
2889    LIBS="$use_lapack $LIBS"
2890    ADDLIBS="$use_lapack $ADDLIBS"
2891    AC_COIN_TRY_FLINK([dsyev],
2892                      [AC_MSG_RESULT([yes])],
2893                      [AC_MSG_RESULT([no])
2894                       AC_MSG_ERROR([user supplied LAPACK library \"$use_lapack\" does not work])])
2895  fi
2896else
2897  if test x$coin_has_blas = xyes; then
2898    # First try to see if LAPACK is already available with BLAS library
2899    AC_MSG_CHECKING([whether LAPACK is already available with BLAS library])
2900    AC_COIN_TRY_FLINK([dsyev],
2901                      [AC_MSG_RESULT([yes]); use_lapack=ok],
2902                      [AC_MSG_RESULT([no])])
2903  fi
2904  skip_llapack_check=no
2905  if test -z "$use_lapack"; then
2906    # Try to autodetect the library for lapack based on build system
2907    case $build in
2908      *-sgi-*)
2909        SAVE_LIBS="$LIBS"
2910        AC_MSG_CHECKING([whether -lcomplib.sgimath has LAPACK])
2911        LIBS="-lcomplib.sgimath $LIBS"
2912        AC_COIN_TRY_FLINK([dsyev],
2913                          [AC_MSG_RESULT([yes])
2914                           use_lapack=-lcomplib.sgimath;
2915                           ADDLIBS="-lcomplib.sgimath $ADDLIBS"],
2916                          [AC_MSG_RESULT([no])
2917                           SAVE_LIBS="$LIBS"])
2918        ;;
2919
2920# See comments in COIN_HAS_BLAS.
2921      *-*-solaris*)
2922      SAVE_LIBS="$LIBS"
2923      AC_MSG_CHECKING([for LAPACK in libsunperf])
2924      LIBS="-lsunperf $FLIBS $LIBS"
2925      AC_COIN_TRY_FLINK([dsyev],
2926                        [AC_MSG_RESULT([yes])
2927                         use_blas='-lsunperf'
2928                         ADDLIBS="-lsunperf $ADDLIBS"
2929                         coin_need_flibs=yes],
2930                        [AC_MSG_RESULT([no])
2931                         LIBS="$SAVE_LIBS"])
2932        ;;
2933# On cygwin, do this check only if doscompile is disabled. The prebuilt library
2934# will want to link with cygwin, hence won't run standalone in DOS.
2935      *-cygwin*)
2936        if test "$enable_doscompile" = mingw; then
2937          skip_llapack_check=yes
2938        fi
2939        ;;
2940    esac
2941  fi
2942
2943  if test -z "$use_lapack" && test $skip_llapack_check = no; then
2944    SAVE_LIBS="$LIBS"
2945    AC_MSG_CHECKING([whether -llapack has LAPACK])
2946    LIBS="-llapack $LIBS"
2947    AC_COIN_TRY_FLINK([dsyev],
2948                      [AC_MSG_RESULT([yes])
2949                       ADDLIBS="-llapack $ADDLIBS"
2950                       use_lapack='-llapack'],
2951                      [AC_MSG_RESULT([no])
2952                       LIBS="$SAVE_LIBS"])
2953  fi
2954
2955# If we have no other ideas, consider building LAPACK.
2956  if test -z "$use_lapack"; then
2957    if test "$PACKAGE_NAME" != ThirdPartyLapack; then
2958      if test -r $coin_lapackobjdir/.MakeOk; then
2959        use_lapack=BUILD
2960      fi
2961    fi
2962  fi
2963fi
2964
2965if test "$use_lapack" = BUILD; then
2966  coin_need_flibs=yes
2967fi
2968
2969AM_CONDITIONAL([COIN_HAS_LAPACK],[test x"$use_lapack" != x])
2970AM_CONDITIONAL([COIN_BUILD_LAPACK],[test "$use_lapack" = BUILD])
2971
2972if test x"$use_lapack" = x; then
2973  coin_has_lapack=no
2974else
2975  coin_has_lapack=yes
2976  AC_DEFINE([COIN_HAS_LAPACK],[1],
2977            [If defined, the LAPACK Library is available.])
2978fi
2979]) # AC_COIN_HAS_LAPACK
2980
2981###########################################################################
2982#                            COIN_HAS_MUMPS                               #
2983###########################################################################
2984
2985# This macro checks for a library containing the MUMPS library.  It
2986# checks if the user has provided an argument for the MUMPS library,
2987# and if not, it checks whether the MUMPS ThirdParty/Mumps directory has
2988# been configured.  It adds to ADDLIBS any flags required to link with
2989# an externally provided MUMPS.  It defines the makefile conditional
2990# and preprocessor macro COIN_HAS_MUMPS, if MUMPS is available, and it
2991# defines the makefile conditional COIN_BUILD_MUMPS, if MUMPS is
2992# compiled within COIN.
2993
2994AC_DEFUN([AC_COIN_HAS_MUMPS],
2995[
2996if test "$PACKAGE_NAME" = ThirdPartyMumps; then
2997  coin_mumpsobjdir=../Mumps
2998else
2999  coin_mumpsobjdir=../ThirdParty/Mumps
3000fi
3001coin_mumpssrcdir=$abs_source_dir/$coin_mumpsobjdir
3002
3003MAKEOKFILE=.MakeOk
3004
3005AC_ARG_WITH([mumps-dir],
3006            AC_HELP_STRING([--with-mumps-dir],
3007                           [specify directory where MUMPS is installed]),
3008            [use_mumps="$withval"], [use_mumps=no])
3009
3010if test "$use_mumps" != "no"; then
3011  if test -d $use_mumps; then :; else
3012    AC_MSG_ERROR([User provided MUMPS directory $use_mumps does not exist.])
3013  fi
3014  mumps_dir=`cd $use_mumps; pwd`
3015
3016  # library extension
3017  AC_LANG_PUSH(C)
3018  save_LIBS="$LIBS"
3019  LIBS="$LIBS $FLIBS"
3020  AC_CHECK_LIB([pthread],[pthread_create],[LIBS="-lpthread $save_LIBS"; ADDLIBS="-lpthread $ADDLIBS"],[LIBS="$save_LIBS"])
3021  AC_LANG_POP(C)
3022
3023  case "$CC" in
3024    cl* | */cl* | CL* | */CL*)
3025         libe=lib ;;
3026      *) libe=a ;;
3027  esac
3028
3029  # Check if hearders are there
3030  AC_COIN_CHECK_FILE([$mumps_dir/include/dmumps_c.h],
3031                     [],
3032                     [AC_MSG_ERROR([I cannot find headers for MUMPS])])
3033  LIBS="$mumps_dir/lib/libdmumps.$libe $mumps_dir/lib/libpord.$libe $mumps_dir/libseq/libmpiseq.$libe $LIBS"
3034  ADDLIBS="$mumps_dir/lib/libdmumps.$libe $mumps_dir/lib/libpord.$libe $mumps_dir/libseq/libmpiseq.$libe $ADDLIBS"
3035  # Check if MUMPS actually works
3036  AC_LANG_PUSH(C)
3037  save_LIBS="$LIBS"
3038  LIBS="$LIBS $FLIBS"
3039  AC_TRY_LINK([void dmumps_c();],[dmumps_c()],[],
3040              [AC_MSG_ERROR([User provided MUMPS library doesn't work])])
3041  LIBS="$save_LIBS"
3042  AC_LANG_POP(C)
3043  coin_mumpssrcdir="$mumps_dir"
3044
3045else
3046  use_mumps=BUILD
3047
3048  # Check if the MUMPS' ThirdParty project has been configured
3049  if test "$PACKAGE_NAME" != ThirdPartyMumps; then
3050    if test -r $coin_mumpsobjdir/.MakeOk; then
3051      use_mumps=BUILD
3052      # Mumps needs pthreads
3053      AC_LANG_PUSH(C)
3054      save_LIBS="$LIBS"
3055      LIBS="$LIBS $FLIBS"
3056      AC_CHECK_LIB([pthread],[pthread_create],[LIBS="-lpthread $save_LIBS"; ADDLIBS="-lpthread $ADDLIBS"],[LIBS="save_LIBS"])
3057      AC_LANG_POP(C)
3058    else
3059      use_mumps=
3060    fi
3061  fi
3062fi
3063
3064if test x"$use_mumps" != x; then
3065
3066  # and we need the Fortran runtime libraries if we want to link with C/C++
3067  coin_need_flibs=yes
3068
3069  MUMPS_INCFLAGS="-I\`\$(CYGPATH_W) $coin_mumpssrcdir/MUMPS/libseq\` -I\`\$(CYGPATH_W) $coin_mumpssrcdir/MUMPS/include\`"
3070  AC_SUBST(MUMPS_INCFLAGS)
3071fi
3072
3073AM_CONDITIONAL([COIN_HAS_MUMPS],[test x"$use_mumps" != x])
3074AM_CONDITIONAL([COIN_BUILD_MUMPS],[test "$use_mumps" = BUILD])
3075
3076AC_MSG_CHECKING([whether MUMPS is available])
3077
3078if test x"$use_mumps" = x || test "$use_mumps" = no; then
3079  coin_has_mumps=no
3080else
3081  coin_has_mumps=yes
3082  AC_DEFINE([COIN_HAS_MUMPS],[1],
3083            [If defined, the MUMPS Library is available.])
3084fi
3085AC_MSG_RESULT([$coin_has_mumps])
3086]) # AC_COIN_HAS_MUMPS
3087
3088###########################################################################
3089#                             COIN_HAS_GLPK                               #
3090###########################################################################
3091#
3092# This macro checks for the GLPK package. GLPK provides two capabilities,
3093# an LP and MIP solver (GLPK) and the GNU Mathprog modelling language (GMPL).
3094# The macro checks for either Glpk or Gmpl, according to the value specified as
3095# the parameter. Use one of Glpk or Gmpl. Use *exactly* these strings, eh?
3096#
3097#
3098# The macro first uses COIN_HAS_USER_LIBRARY to see if the user has specified
3099# a preexisting library (this allows the use of any glpk version, if the user
3100# is fussy). The macro then checks for ThirdParty/Glpk.
3101#
3102# This macro will define the following variables for Glpk:
3103#   coin_has_glpk       true or false
3104#   GLPKLIB             link flags for GLPK (if user supplied)
3105#   GLPKINCDIR          location of glpk include files
3106#   COIN_HAS_GLPK       Preprocessor symbol, defined to 1
3107#   COIN_HAS_GLPK       Automake conditional
3108#   COIN_BUILD_GLPK     Automake conditional, defined only if Glpk is to be
3109#                       built in ThirdParty/Glpk
3110#
3111# With the exception of COIN_BUILD_GLPK, an identical set of variables is
3112# defined for Gmpl.
3113
3114AC_DEFUN([AC_COIN_HAS_GLPK],
3115[
3116if test "$PACKAGE_NAME" = ThirdPartyGlpk; then
3117  coin_glpkobjdir=../Glpk
3118else
3119  coin_glpkobjdir=../ThirdParty/Glpk
3120fi
3121coin_glpksrcdir=$abs_source_dir/$coin_glpkobjdir
3122
3123use_thirdpartyglpk=no
3124
3125# Check for the requested component. If the user specified an external glpk
3126# library don't force a ThirdParty build, let the error propagate.
3127
3128m4_if([$1],[Glpk],
3129[AC_COIN_HAS_USER_LIBRARY([Glpk],[GLPK],[glpk.h],
3130    [_glp_lpx_simplex glp_lpx_simplex])
3131 if test x"$coin_has_glpk" = xfalse && test x"$GLPKLIB" = x ; then
3132   use_thirdpartyglpk=try
3133 fi])
3134m4_if([$1],[Gmpl],
3135[AC_COIN_HAS_USER_LIBRARY([Gmpl],[GMPL],[glpmpl.h],
3136    [_glp_mpl_initialize glp_mpl_initialize])
3137 if test x"$coin_has_gmpl" = xfalse && test x"$GMPLLIB" = x ; then
3138   use_thirdpartyglpk=try
3139 fi])
3140
3141# If the user has supplied an external library, use it. Otherwise, consider
3142# a build in ThirdParty/Glpk. If we build, assume we get both glpk and gmpl.
3143
3144if test x"$use_thirdpartyglpk" = xtry ; then
3145  MAKEOKFILE=.MakeOk
3146  # Check if the Glpk's ThirdParty project has been configured
3147  if test "$PACKAGE_NAME" != ThirdPartyGlpk; then
3148    if test -r $coin_glpkobjdir/.MakeOk; then
3149      use_thirdpartyglpk=build
3150    else
3151      use_thirdpartyglpk=no
3152    fi
3153  else
3154    use_thirdpartyglpk=build
3155  fi
3156
3157# If we're building, set the library and include directory variables, create a
3158# preprocessor symbol, define a variable that says we're using glpk/gmpl, and
3159# another to indicate a link check is a bad idea (hard to do before the library
3160# exists).
3161
3162  if test x"$use_thirdpartyglpk" = xbuild ; then
3163    m4_toupper($1INCDIR)="$coin_glpksrcdir/glpk/include"
3164    AC_SUBST(m4_toupper($1INCDIR))
3165    AC_DEFINE(m4_toupper(COIN_HAS_$1),[1],
3166              [Define to 1 if $1 package is available])
3167    m4_tolower(coin_has_$1)=true
3168    m4_tolower($1_libcheck)=no
3169    AC_MSG_NOTICE([Using $1 in ThirdParty/Glpk])
3170  fi
3171fi
3172
3173# Define the necessary automake conditionals.
3174
3175AM_CONDITIONAL(m4_toupper(COIN_HAS_$1),
3176               [test x"$m4_tolower(coin_has_$1)" = xtrue])
3177AM_CONDITIONAL([COIN_BUILD_GLPK],[test x"$use_thirdpartyglpk" = xbuild])
3178
3179]) # AC_COIN_HAS_GLPK
Note: See TracBrowser for help on using the repository browser.