source: trunk/configure.ac @ 635

Last change on this file since 635 was 635, checked in by MatthewWhiting, 15 years ago

Adding values.h to the include statements in GaussSmooth?.cc, and adding it to the searches in the configure script. This is necessary on some systems to find the MAXFLOAT value.

File size: 12.4 KB
Line 
1# -*- Autoconf -*-
2# Process this file with autoconf to produce a configure script.
3
4AC_PREREQ(2.57)
5AC_INIT([Duchamp], [1.2-beta], [Matthew.Whiting@csiro.au])
6AC_CONFIG_SRCDIR([src/duchamp.hh])
7AC_CONFIG_HEADER([src/config.h])
8AC_PREFIX_DEFAULT(/usr/local)
9
10# Checks for programs.
11AC_PROG_CXX
12AC_PROG_CC
13AC_PROG_CPP
14AC_PROG_F77
15AC_PROG_LN_S
16AC_CHECK_PROGS(INSTALL, install)
17
18# Check for maths library -- will add -lm to $LIBS
19AC_CHECK_LIB([m], [log])
20
21# Checks for header files.
22AC_HEADER_STDC
23AC_CHECK_HEADERS([unistd.h time.h math.h values.h iostream fstream sstream iomanip vector string algorithm functional])
24if test "x$ac_cv_header_stdc" = xno; then
25  AC_MSG_ERROR([
26    -------------------------------------------------------------------
27    An ANSI standard C library is required to build Duchamp. 
28    One of the ANSI C header files it requires is missing or unusable.
29
30    ERROR: Duchamp configuration failure.
31    -------------------------------------------------------------------], [1])
32fi
33
34# Checks for typedefs, structures, and compiler characteristics.
35AC_HEADER_STDBOOL
36AC_C_CONST
37AC_C_INLINE
38
39# Utilities.
40AC_PROG_RANLIB
41
42# Checks for library functions.
43AC_FUNC_STRTOD
44AC_CHECK_FUNCS([floor pow sqrt strtol log atan fabs])
45
46# Extra places to look for third-party include files and libraries.
47INCDIRS="$INCDIRS           \
48         /usr/include       \
49         /usr/local/include \
50         /usr/local/pgplot  \
51         /usr/local/cfitsio \
52         /usr/local/wcslib  \
53         /local/pgplot      \
54         /local/cfitsio     \
55         /opt/local/include"
56
57LIBDIRS="$LIBDIRS           \
58         /usr/lib           \
59         /usr/local/lib     \
60         /usr/local/pgplot  \
61         /usr/local/cfitsio \
62         /usr/local/wcslib  \
63         /local/lib         \
64         /local/pgplot      \
65         /local/cfitsio     \
66         /opt/SUNWspro/lib  \
67         /opt/local/lib"
68
69AC_MSG_NOTICE(LIBDIRS)
70
71for LIBDIR in $LIBDIRS ; do
72  AC_CHECK_FILE([$LIBDIR], [LDFLAGS="$LDFLAGS -L$LIBDIR"], [continue])
73done
74
75##########################################################################
76# Search for PGPLOT
77# use --with-cfitsio=directory to specify a particular PGPLOT directory.
78# or  --without-pgplot or --with-pgplot=no to do without it
79# else do the normal searching for libraries.
80
81AC_MSG_NOTICE([  -- PGPLOT -- ])
82AC_ARG_WITH(pgplot,
83[
84AC_HELP_STRING([--with-pgplot=no],
85               [Compile without PGPLOT graphics capabilities.])
86AC_HELP_STRING([--without-pgplot],
87               [Compile without PGPLOT graphics capabilities.])
88AC_HELP_STRING([--with-pgplot=<dir>],
89               [Compile with PGPLOT graphics capabilities, using the directory <dir> to specify the PGPLOT library.]),
90],
91[
92if test "x$withval" != xno; then
93AC_MSG_NOTICE([Using directory "$withval"])
94PGPLOTINCDIRS=$withval
95PGPLOTLIBDIRS=$withval
96LDFLAGS="$LDFLAGS -L$withval"
97fi
98],
99[
100PGPLOTINCDIRS=$INCDIRS
101PGPLOTLIBDIRS=$LIBDIRS
102])
103
104if test "x$PGPLOTLIBDIRS" = x; then
105  #the argument to --with-pgplot was no, so we don't look for it.
106  AC_MSG_NOTICE([Not enabling PGPLOT use.])
107  #This is the command to do the linking stage of the compilation
108  #If no pgplot, we can just link with g++ (or equivalent)
109  LINKER=$CXX
110#  AC_CHECK_LIB([stdc++], [main], [PGPLOTLIB="-lstdc++"])
111#  if test "x$F77" = xgfortran; then
112#    PGPLOTLIB="$PGPLOTLIB -bind_at_load"
113#  fi
114else
115
116  #Set up the PGPLOT-related libraries and includes.
117
118  for INCDIR in $PGPLOTINCDIRS ; do
119    AC_CHECK_FILE([$INCDIR/cpgplot.h], [PGPLOTINC=-I$INCDIR; break])
120    INCDIR=$INCDIR/pgplot
121    AC_CHECK_FILE([$INCDIR/cpgplot.h], [PGPLOTINC=-I$INCDIR; break])
122  done
123 
124  # PGPLOT compiled with a SUN compiler but linked with something else.
125  AC_CHECK_LIB([sunmath], [cosd],      [EXTRAPGLIB="-lsunmath $EXTRAPGLIB"],
126               [], [$EXTRAPGLIB $LIBS])
127  AC_CHECK_LIB([M77],     [iand_],     [EXTRAPGLIB="-lM77 $EXTRAPGLIB"],
128               [], [$EXTRAPGLIB $LIBS])
129  AC_CHECK_LIB([F77],     [f77_init],  [EXTRAPGLIB="-lF77 $EXTRAPGLIB"],
130               [], [$EXTRAPGLIB $LIBS])
131 
132  # Search for X11 includes and libraries.
133  AC_PATH_XTRA
134  # returns C compiler flags needed for X to X_CFLAGS and the X linker flags to X_LIBS
135  if test "x$X_LIBS" != x; then
136    LDFLAGS="$LDFLAGS $X_LIBS"
137    EXTRAPGLIB="$X_LIBS -lX11 $EXTRAPGLIB"
138  fi
139
140#  # Add pgplot libraries, if they exist to the lib path
141#  for LIBDIR in $PGPLOTLIBDIRS ; do
142#    AC_CHECK_FILE([$LIBDIR/libcpgplot.a], [PGPLOTLIB="-L$LIBDIR $PGPLOTLIB"; break])
143#  done
144 
145  # It is possible that other libraries may be required depending on what
146  # graphics drivers were installed with PGPLOT.
147  AC_CHECK_LIB([z],       [deflate],   [EXTRAPGLIB="$EXTRAPGLIB -lz"],
148               [], [$EXTRAPGLIB $LIBS])
149  AC_CHECK_LIB([png],     [png_error], [EXTRAPGLIB="$EXTRAPGLIB -lpng"],
150             [], [$EXTRAPGLIB $LIBS])
151
152  AC_LANG(Fortran 77)
153  AC_CHECK_LIB([pgplot],  [pgopen],    [PGPLOTLIB="-lpgplot"],
154               [], [$PGPLOTLIB $EXTRAPGLIB])
155  AC_LANG(C)
156  # Checks for extra libraries needed by PGPLOT -- will add -lg2c -lstdc++ to $LIBS
157  AC_CHECK_LIB([g2c], [gerror_])
158  AC_CHECK_LIB([stdc++], [main])
159  if test "x$F77" = xgfortran; then
160    PGPLOTLIB="-lcpgplot $PGPLOTLIB"
161    AC_MSG_NOTICE([ Using gfortran, so manually adding -lcpgplot to PGPLOTLIB string.])
162  else
163    AC_CHECK_LIB([cpgplot], [cpgopen],   [PGPLOTLIB="-lcpgplot $PGPLOTLIB"],
164                 [], [$PGPLOTLIB $LIBS $EXTRAPGLIB])
165  fi
166 
167  # If PGPLOT is not present, we give a warning message but still continue.
168  # The compilation is able to work without the PGPLOT-dependent files.
169  if test "x$PGPLOTLIB" = x; then
170    AC_MSG_NOTICE([
171      -------------------------------------------------------
172      WARNING! PGPLOT could not be found.
173      Compiling Duchamp without graphics capabilities.               
174      -------------------------------------------------------])
175    #We have no pgplot, so we just link with g++ (or equivalent)
176    LINKER=$CXX
177  else
178    #We are using pgplot, so link with the fortran compiler.
179    LINKER=$F77
180    PGPLOTLIB="$PGPLOTLIB $EXTRAPGLIB $LIBS"
181    AC_MSG_NOTICE([PGPLOT appears to be available.])
182    AC_DEFINE([HAVE_PGPLOT], [1], [Define to 1 if PGPLOT is available.])
183    for LIBDIR in $PGPLOTLIBDIRS ; do
184     AC_CHECK_FILE([$LIBDIR/libcpgplot.a], [PGPLOTLIB="-L$LIBDIR $PGPLOTLIB"; break])
185    done
186    if test "x$F77" = xgfortran; then
187      PGPLOTLIB="$PGPLOTLIB -bind_at_load"
188    fi
189  fi
190
191fi
192
193AC_SUBST([LINKER])
194AC_SUBST([PGPLOTINC])
195AC_SUBST([PGPLOTLIB])
196##########################################################################
197
198##########################################################################
199# Search for CFITSIO.
200# use --with-cfitsio=directory to specify a particular CFITSIO directory.
201# else do the normal searching for libraries.
202
203AC_MSG_NOTICE([  -- CFITSIO -- ])
204AC_ARG_WITH(cfitsio,
205        AC_HELP_STRING([--with-cfitsio=<dir>],
206                       [The CFITSIO library and include files are in directory <dir>.]),
207[ #if we specify a directory...
208if test "x$withval" = xno; then
209  AC_MSG_NOTICE([
210    The CFITSIO library is required.
211    Ignoring the "--with-cfitsio=no" and searching for the library.], [1])
212  CFITSIOINCDIRS=$INCDIRS
213  CFITSIOLIBDIRS=$LIBDIRS
214else
215  AC_MSG_NOTICE([Using directory "$withval"])
216  CFITSIOINCDIRS="$withval \
217              $withval/include"
218  CFITSIOLIBDIRS="$withval \
219              $withval/lib"
220  for LIBDIR in $CFITSIOLIBDIRS ; do
221    AC_CHECK_FILE([$LIBDIR], [LDFLAGS="$LDFLAGS -L$LIBDIR"], [continue])
222  done
223  for INCDIR in $CFITSIOINCDIRS ; do
224    AC_CHECK_FILE([$INCDIR], [CPPFLAGS="$CPPFLAGS -I$INCDIR"], [continue])
225  done
226fi
227],
228[ # if directory not specified, go searching.
229CFITSIOINCDIRS=$INCDIRS
230CFITSIOLIBDIRS=$LIBDIRS
231])
232
233for INCDIR in $CFITSIOINCDIRS ; do
234  AC_CHECK_FILE([$INCDIR/fitsio.h], [CFITSIOINC=-I$INCDIR; break])
235  INCDIR=$INCDIR/cfitsio
236  AC_CHECK_FILE([$INCDIR/fitsio.h], [CFITSIOINC=-I$INCDIR; break])
237done
238
239AC_CHECK_LIB([socket],  [recv],   [CFITSIOLIB="$CFITSIOLIB -lsocket"], [], [$LIBS])
240AC_CHECK_LIB([cfitsio], [ffopen], [CFITSIOLIB="$CFITSIOLIB -lcfitsio"], [],
241             [$CFITSIOLIB $LIBS])
242
243# CFITSIO is essential for Duchamp, so exit with error message if it
244#   is not present.
245if test "x$CFITSIOINC" = x -o "x$CFITSIOLIB" = x; then
246  AC_MSG_ERROR([
247    -------------------------------------------------------
248    Could not find the CFITSIO library.
249
250    ERROR: Duchamp configuration failure.
251    -------------------------------------------------------], [1])
252else
253  AC_MSG_NOTICE([CFITSIO appears to be available.])
254  AC_DEFINE([HAVE_CFITSIO], [1], [Define to 1 if CFITSIO is available.])
255for LIBDIR in $CFITSIOLIBDIRS ; do
256  AC_CHECK_FILE([$LIBDIR/libcfitsio.a], [CFITSIOLIB="-L$LIBDIR $CFITSIOLIB"; break])
257  LIBDIR=$LIBDIR/cfitsio
258  AC_CHECK_FILE([$LIBDIR/libcfitsio.a], [CFITSIOLIB="-L$LIBDIR $CFITSIOLIB"; break])
259done
260
261fi
262
263AC_SUBST([CFITSIOINC])
264AC_SUBST([CFITSIOLIB])
265##########################################################################
266
267##########################################################################
268# Search for WCSLIB.
269# use --with-wcslib=directory to specify a particular WCSLIB directory.
270# else do the normal searching for libraries.
271
272AC_MSG_NOTICE([  -- WCSLIB -- ])
273WCSINCDIR=""
274AC_ARG_WITH(wcslib,
275        AC_HELP_STRING([--with-wcslib=<dir>],
276                       [The WCSLIB library and include files are in directory <dir>.]),
277[ #if we specify a directory...
278if test "x$withval" = xno; then
279  AC_MSG_NOTICE([
280    The WCSLIB library is required.
281    Ignoring the "--with-wcslib=no" and searching for the library.], [1])
282  WCSINCDIRS=$INCDIRS
283  WCSLIBDIRS=$LIBDIRS
284else
285  AC_MSG_NOTICE([Using directory "$withval"])
286  WCSINCDIRS="$withval \
287              $withval/include"
288  WCSLIBDIRS="$withval \
289              $withval/lib"
290  for LIBDIR in $WCSLIBDIRS ; do
291    AC_CHECK_FILE([$LIBDIR], [LDFLAGS="$LDFLAGS -L$LIBDIR"], [continue])
292  done
293  for INCDIR in $WCSINCDIRS ; do
294    AC_CHECK_FILE([$INCDIR/wcslib],
295                  [CPPFLAGS="$CPPFLAGS -I$INCDIR"; WCSINCDIR=$INCDIR; break],
296                  [continue])
297  done
298fi
299],
300[ # if directory not specified, go searching.
301WCSINCDIRS=$INCDIRS
302WCSLIBDIRS=$LIBDIRS
303])
304
305
306if test "x$WCSINCDIR" = x; then
307  for INCBASE in $WCSINCDIRS ; do
308    AC_CHECK_FILE([$INCBASE/wcslib/wcs.h], [WCSINC="-I$INCBASE -I$INCBASE/wcslib $WCSINC"; break])
309  done
310else
311  AC_CHECK_FILE([$WCSINCDIR/wcslib/wcs.h], [WCSINC="-I$WCSINCDIR -I$WCSINCDIR/wcslib $WCSINC"])
312fi
313
314
315# Look for libwcs.a, and libpgsbox.a
316AC_CHECK_LIB([wcs], [wcss2p], [WCSLIB="$WCSLIB -lwcs"], [],
317             [$WCSLIB $LIBS $CFITSIOLIB $PGPLOTLIB])
318if test "x$F77" = xgfortran; then
319  WCSLIB="$WCSLIB -lpgsbox"
320  AC_MSG_NOTICE([ Using gfortran, so manually adding -lpgsbox to WCSLIB string.])
321else
322  AC_CHECK_LIB([pgsbox], [cpgsbox], [WCSLIB="$WCSLIB -lpgsbox"], [],
323               [$WCSLIB $LIBS $CFITSIOLIB $PGPLOTLIB])
324fi
325
326# WCSLIB is essential for Duchamp, so exit with error message if it
327#   is not present. Need at least libwcs to be available -- libpgsbox will
328#   depend on PGPLOT being available, but is not critical.
329if test "x$WCSINC" = x -o "x$WCSLIB" = x; then
330  AC_MSG_ERROR([
331    -------------------------------------------------------
332    Could not find the WCSLIB library.
333
334    ERROR: Duchamp configuration failure.
335    -------------------------------------------------------], [1])
336else
337  AC_MSG_NOTICE([WCSLIB appears to be available.])
338  AC_DEFINE([HAVE_WCSLIB], [1], [Define to 1 if WCSLIB is available.])
339# Now add the -L statements to start of WCSLIB.
340# Search for libwcs.a, and, if we find it, search for libpgsbox in same directory and
341#   then in other directories, keeping the appropriate order of -L calls.
342
343  DIRLIST=". \
344           wcs \
345           wcslib"
346
347  for LIBBASE in $WCSLIBDIRS ; do
348    for DIR in $DIRLIST; do
349      if test "x$DIR" = x.; then
350       LIBDIR=$LIBBASE
351      else
352       LIBDIR="$LIBBASE/$DIR"
353      fi
354      AC_CHECK_FILE([$LIBDIR/libwcs.a],
355             [WCSLIBFRONT="-L$LIBDIR";
356             AC_CHECK_FILE([$LIBDIR/libpgsbox.a], [], [
357               for LIBBASE2 in $WCSLIBDIRS ; do
358                for DIR2 in $DIRLIST; do
359                 if test "x$DIR" = x.; then
360                  LIBDIR=$LIBBASE
361                 else
362                  LIBDIR="$LIBBASE/$DIR"
363                 fi
364                 AC_CHECK_FILE([$LIBDIR2/libpgsbox.a],
365                               [WCSLIBFRONT="$WCSLIB -L$LIBDIR2"; break])
366                done
367               done])
368              break])
369    done
370  done
371  WCSLIB="$WCSLIBFRONT $WCSLIB"
372fi
373
374AC_SUBST([WCSINC])
375AC_SUBST([WCSLIB])
376##########################################################################
377
378AC_SUBST([LDFLAGS])
379
380AC_CONFIG_FILES([Makefile])
381AC_OUTPUT
Note: See TracBrowser for help on using the repository browser.