source: trunk/configure.ac @ 402

Last change on this file since 402 was 402, checked in by MatthewWhiting, 16 years ago

Fixed configure script so that the location of the wcslib include files is determined properly.

File size: 12.3 KB
Line 
1# -*- Autoconf -*-
2# Process this file with autoconf to produce a configure script.
3
4AC_PREREQ(2.57)
5AC_INIT([Duchamp], [1.1.2], [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 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_X
134  if test "x$ac_x_libraries" != x; then
135    LDFLAGS="$LDFLAGS -L$ac_x_libraries"
136    EXTRAPGLIB="-L$ac_x_libraries -lX11 $EXTRAPGLIB"
137  fi
138
139#  # Add pgplot libraries, if they exist to the lib path
140#  for LIBDIR in $PGPLOTLIBDIRS ; do
141#    AC_CHECK_FILE([$LIBDIR/libcpgplot.a], [PGPLOTLIB="-L$LIBDIR $PGPLOTLIB"; break])
142#  done
143 
144  # It is possible that other libraries may be required depending on what
145  # graphics drivers were installed with PGPLOT.
146  AC_CHECK_LIB([z],       [deflate],   [EXTRAPGLIB="$EXTRAPGLIB -lz"],
147               [], [$EXTRAPGLIB $LIBS])
148  AC_CHECK_LIB([png],     [png_error], [EXTRAPGLIB="$EXTRAPGLIB -lpng"],
149             [], [$EXTRAPGLIB $LIBS])
150
151  AC_LANG(Fortran 77)
152  AC_CHECK_LIB([pgplot],  [pgopen],    [PGPLOTLIB="-lpgplot"],
153               [], [$PGPLOTLIB $EXTRAPGLIB])
154  AC_LANG(C)
155  # Checks for extra libraries needed by PGPLOT -- will add -lg2c -lstdc++ to $LIBS
156  AC_CHECK_LIB([g2c], [gerror_])
157  AC_CHECK_LIB([stdc++], [main])
158  if test "x$F77" = xgfortran; then
159    PGPLOTLIB="-lcpgplot $PGPLOTLIB"
160    AC_MSG_NOTICE([ Using gfortran, so manually adding -lcpgplot to PGPLOTLIB string.])
161  else
162    AC_CHECK_LIB([cpgplot], [cpgopen],   [PGPLOTLIB="-lcpgplot $PGPLOTLIB"],
163                 [], [$PGPLOTLIB $LIBS $EXTRAPGLIB])
164  fi
165 
166  # If PGPLOT is not present, we give a warning message but still continue.
167  # The compilation is able to work without the PGPLOT-dependent files.
168  if test "x$PGPLOTLIB" = x; then
169    AC_MSG_NOTICE([
170      -------------------------------------------------------
171      WARNING! PGPLOT could not be found.
172      Compiling Duchamp without graphics capabilities.               
173      -------------------------------------------------------])
174    #We have no pgplot, so we just link with g++ (or equivalent)
175    LINKER=$CXX
176  else
177    #We are using pgplot, so link with the fortran compiler.
178    LINKER=$F77
179    PGPLOTLIB="$PGPLOTLIB $EXTRAPGLIB $LIBS"
180    AC_MSG_NOTICE([PGPLOT appears to be available.])
181    AC_DEFINE([HAVE_PGPLOT], [1], [Define to 1 if PGPLOT is available.])
182    for LIBDIR in $PGPLOTLIBDIRS ; do
183     AC_CHECK_FILE([$LIBDIR/libcpgplot.a], [PGPLOTLIB="-L$LIBDIR $PGPLOTLIB"; break])
184    done
185    if test "x$F77" = xgfortran; then
186      PGPLOTLIB="$PGPLOTLIB -bind_at_load"
187    fi
188  fi
189
190fi
191
192AC_SUBST([LINKER])
193AC_SUBST([PGPLOTINC])
194AC_SUBST([PGPLOTLIB])
195##########################################################################
196
197##########################################################################
198# Search for CFITSIO.
199# use --with-cfitsio=directory to specify a particular CFITSIO directory.
200# else do the normal searching for libraries.
201
202AC_MSG_NOTICE([  -- CFITSIO -- ])
203AC_ARG_WITH(cfitsio,
204        AC_HELP_STRING([--with-cfitsio=<dir>],
205                       [The CFITSIO library and include files are in directory <dir>.]),
206[ #if we specify a directory...
207if test "x$withval" = xno; then
208  AC_MSG_NOTICE([
209    The CFITSIO library is required.
210    Ignoring the "--with-cfitsio=no" and searching for the library.], [1])
211  CFITSIOINCDIRS=$INCDIRS
212  CFITSIOLIBDIRS=$LIBDIRS
213else
214  AC_MSG_NOTICE([Using directory "$withval"])
215  CFITSIOINCDIRS="$withval \
216              $withval/include"
217  CFITSIOLIBDIRS="$withval \
218              $withval/lib"
219  for LIBDIR in $CFITSIOLIBDIRS ; do
220    AC_CHECK_FILE([$LIBDIR], [LDFLAGS="$LDFLAGS -L$LIBDIR"], [continue])
221  done
222  for INCDIR in $CFITSIOINCDIRS ; do
223    AC_CHECK_FILE([$INCDIR], [CPPFLAGS="$CPPFLAGS -I$INCDIR"], [continue])
224  done
225fi
226],
227[ # if directory not specified, go searching.
228CFITSIOINCDIRS=$INCDIRS
229CFITSIOLIBDIRS=$LIBDIRS
230])
231
232for INCDIR in $CFITSIOINCDIRS ; do
233  AC_CHECK_FILE([$INCDIR/fitsio.h], [CFITSIOINC=-I$INCDIR; break])
234  INCDIR=$INCDIR/cfitsio
235  AC_CHECK_FILE([$INCDIR/fitsio.h], [CFITSIOINC=-I$INCDIR; break])
236done
237
238AC_CHECK_LIB([socket],  [recv],   [CFITSIOLIB="$CFITSIOLIB -lsocket"], [], [$LIBS])
239AC_CHECK_LIB([cfitsio], [ffopen], [CFITSIOLIB="$CFITSIOLIB -lcfitsio"], [],
240             [$CFITSIOLIB $LIBS])
241
242# CFITSIO is essential for Duchamp, so exit with error message if it
243#   is not present.
244if test "x$CFITSIOINC" = x -o "x$CFITSIOLIB" = x; then
245  AC_MSG_ERROR([
246    -------------------------------------------------------
247    Could not find the CFITSIO library.
248
249    ERROR: Duchamp configuration failure.
250    -------------------------------------------------------], [1])
251else
252  AC_MSG_NOTICE([CFITSIO appears to be available.])
253  AC_DEFINE([HAVE_CFITSIO], [1], [Define to 1 if CFITSIO is available.])
254for LIBDIR in $CFITSIOLIBDIRS ; do
255  AC_CHECK_FILE([$LIBDIR/libcfitsio.a], [CFITSIOLIB="-L$LIBDIR $CFITSIOLIB"; break])
256  LIBDIR=$LIBDIR/cfitsio
257  AC_CHECK_FILE([$LIBDIR/libcfitsio.a], [CFITSIOLIB="-L$LIBDIR $CFITSIOLIB"; break])
258done
259
260fi
261
262AC_SUBST([CFITSIOINC])
263AC_SUBST([CFITSIOLIB])
264##########################################################################
265
266##########################################################################
267# Search for WCSLIB.
268# use --with-wcslib=directory to specify a particular WCSLIB directory.
269# else do the normal searching for libraries.
270
271AC_MSG_NOTICE([  -- WCSLIB -- ])
272WCSINCDIR=""
273AC_ARG_WITH(wcslib,
274        AC_HELP_STRING([--with-wcslib=<dir>],
275                       [The WCSLIB library and include files are in directory <dir>.]),
276[ #if we specify a directory...
277if test "x$withval" = xno; then
278  AC_MSG_NOTICE([
279    The WCSLIB library is required.
280    Ignoring the "--with-wcslib=no" and searching for the library.], [1])
281  WCSINCDIRS=$INCDIRS
282  WCSLIBDIRS=$LIBDIRS
283else
284  AC_MSG_NOTICE([Using directory "$withval"])
285  WCSINCDIRS="$withval \
286              $withval/include"
287  WCSLIBDIRS="$withval \
288              $withval/lib"
289  for LIBDIR in $WCSLIBDIRS ; do
290    AC_CHECK_FILE([$LIBDIR], [LDFLAGS="$LDFLAGS -L$LIBDIR"], [continue])
291  done
292  for INCDIR in $WCSINCDIRS ; do
293    AC_CHECK_FILE([$INCDIR/wcslib],
294                  [CPPFLAGS="$CPPFLAGS -I$INCDIR"; WCSINCDIR=$INCDIR; break],
295                  [continue])
296  done
297fi
298],
299[ # if directory not specified, go searching.
300WCSINCDIRS=$INCDIRS
301WCSLIBDIRS=$LIBDIRS
302])
303
304
305if test "x$WCSINCDIR" = x; then
306  for INCBASE in $WCSINCDIRS ; do
307    AC_CHECK_FILE([$INCBASE/wcslib/wcs.h], [WCSINC="-I$INCBASE $WCSINC"; break])
308  done
309else
310  AC_CHECK_FILE([$WCSINCDIR/wcslib/wcs.h], [WCSINC="-I$WCSINCDIR $WCSINC"])
311fi
312
313
314# Look for libwcs.a, and libpgsbox.a
315AC_CHECK_LIB([wcs], [wcss2p], [WCSLIB="$WCSLIB -lwcs"], [],
316             [$WCSLIB $LIBS $CFITSIOLIB $PGPLOTLIB])
317if test "x$F77" = xgfortran; then
318  WCSLIB="$WCSLIB -lpgsbox"
319  AC_MSG_NOTICE([ Using gfortran, so manually adding -lpgsbox to WCSLIB string.])
320else
321  AC_CHECK_LIB([pgsbox], [cpgsbox], [WCSLIB="$WCSLIB -lpgsbox"], [],
322               [$WCSLIB $LIBS $CFITSIOLIB $PGPLOTLIB])
323fi
324
325# WCSLIB is essential for Duchamp, so exit with error message if it
326#   is not present. Need at least libwcs to be available -- libpgsbox will
327#   depend on PGPLOT being available, but is not critical.
328if test "x$WCSINC" = x -o "x$WCSLIB" = x; then
329  AC_MSG_ERROR([
330    -------------------------------------------------------
331    Could not find the WCSLIB library.
332
333    ERROR: Duchamp configuration failure.
334    -------------------------------------------------------], [1])
335else
336  AC_MSG_NOTICE([WCSLIB appears to be available.])
337  AC_DEFINE([HAVE_WCSLIB], [1], [Define to 1 if WCSLIB is available.])
338# Now add the -L statements to start of WCSLIB.
339# Search for libwcs.a, and, if we find it, search for libpgsbox in same directory and
340#   then in other directories, keeping the appropriate order of -L calls.
341
342  DIRLIST=". \
343           wcs \
344           wcslib"
345
346  for LIBBASE in $WCSLIBDIRS ; do
347    for DIR in $DIRLIST; do
348      if test "x$DIR" = x.; then
349       LIBDIR=$LIBBASE
350      else
351       LIBDIR="$LIBBASE/$DIR"
352      fi
353      AC_CHECK_FILE([$LIBDIR/libwcs.a],
354             [WCSLIBFRONT="-L$LIBDIR";
355             AC_CHECK_FILE([$LIBDIR/libpgsbox.a], [], [
356               for LIBBASE2 in $WCSLIBDIRS ; do
357                for DIR2 in $DIRLIST; do
358                 if test "x$DIR" = x.; then
359                  LIBDIR=$LIBBASE
360                 else
361                  LIBDIR="$LIBBASE/$DIR"
362                 fi
363                 AC_CHECK_FILE([$LIBDIR2/libpgsbox.a],
364                               [WCSLIBFRONT="$WCSLIB -L$LIBDIR2"; break])
365                done
366               done])
367              break])
368    done
369  done
370  WCSLIB="$WCSLIBFRONT $WCSLIB"
371fi
372
373AC_SUBST([WCSINC])
374AC_SUBST([WCSLIB])
375##########################################################################
376
377AC_SUBST([LDFLAGS])
378
379AC_CONFIG_FILES([Makefile])
380AC_OUTPUT
Note: See TracBrowser for help on using the repository browser.