source: tags/release-1.1.12/configure.ac @ 1455

Last change on this file since 1455 was 836, checked in by MatthewWhiting, 13 years ago

Moving version number to 1.1.12 in preparation for new release. Also updating CHANGES file.

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