source: git/configure.ac @ 6e1fa79

RELEASE/1.2debug-cidebug-ci-sanitisersfaster-cavernloglog-selectstereostereo-2025walls-datawalls-data-hanging-as-warningwarn-only-for-hanging-survey
Last change on this file since 6e1fa79 was 9d1503d, checked in by Olly Betts <olly@…>, 10 years ago

configure.ac,lib/,src/message.c,src/msvc/config.h.in: Stop trying to
catch and report signals. The only real reason to do it is so we
can say "Bug in program detected! Please report this to the authors"
before we exit, but when the program crashes that's pretty obvious.
In aven we try to pop up a message box for this message, which may
fail due to whatever caused the signal, while with the command line
tools there's no great benefit over just letting the shell report
the signal.

  • Property mode set to 100644
File size: 12.6 KB
RevLine 
[c746b4d]1dnl Process this file with autoconf to produce a configure script
[483ac4e]2
[a884696]3dnl Need autoconf 2.50 or later for AC_ARG_VAR.  2.59 has been around for
4dnl long enough, that we might as well just require that.
5AC_PREREQ(2.59)
[3f02aa4]6AC_INIT([survex], [1.2.18], [http://trac.survex.com/])
[6e0cdc2c]7AM_INIT_AUTOMAKE([1.5 gnu -Wall -Wportability -Werror])
[191536f]8RELEASE=1
[79b37a4c]9
[5636835]10AC_SUBST(RELEASE)
[e02a6a6]11AC_CONFIG_HEADERS([config.h])
[5b7b184]12AC_CONFIG_SRCDIR([src/aven.cc])
[96cc0ab]13
[ad05888]14COPYRIGHT_MSG="Copyright (C) 1990-2015 Olly Betts"
[920b066]15AVEN_COPYRIGHT_MSG="Copyright (C) 1999-2003,2005,2006 Mark R. Shinwell"
[55302e3]16
[8c05f13]17AC_DEFINE_UNQUOTED(COPYRIGHT_MSG, ["$COPYRIGHT_MSG"], [Copyright Message])
18AC_DEFINE_UNQUOTED(AVEN_COPYRIGHT_MSG, ["$AVEN_COPYRIGHT_MSG"],
[99f252b]19                   [Copyright Message for Aven])
20
21AC_SUBST(COPYRIGHT_MSG)
22AC_SUBST(AVEN_COPYRIGHT_MSG)
[706b033]23
[5627cbb]24COPYRIGHT_MSG_UTF8=`echo "$COPYRIGHT_MSG"|sed 's/(C)/©/'`
25AVEN_COPYRIGHT_MSG_UTF8=`echo "$AVEN_COPYRIGHT_MSG"|sed 's/(C)/©/'`
26
27AC_DEFINE_UNQUOTED(COPYRIGHT_MSG_UTF8, ["$COPYRIGHT_MSG_UTF8"],
28                   [Copyright Message in UTF-8])
29AC_DEFINE_UNQUOTED(AVEN_COPYRIGHT_MSG_UTF8, ["$AVEN_COPYRIGHT_MSG_UTF8"],
30                   [Copyright Message for Aven in UTF-8])
31
[1d43ee5]32dnl set PRETTYPACKAGE to PACKAGE with the first character capitalised
[21fbe7d]33PRETTYPACKAGE=`echo "$PACKAGE"|cut -b1|tr a-z A-Z``echo "$PACKAGE"|cut -b2-`
[82afbc4]34AC_DEFINE_UNQUOTED(PRETTYPACKAGE, "$PRETTYPACKAGE",
[99f252b]35                   [Name of package (capitalised)])
[aa931b2]36AC_SUBST(PRETTYPACKAGE)
37
[e2546c0]38dnl set COMMAVERSION to VERSION with the dots replaced by commas -
39dnl e.g. "0,99" or "1,0,22"
[21fbe7d]40COMMAVERSION=`echo "$VERSION"|tr '.' ','`
[e2546c0]41AC_DEFINE_UNQUOTED(COMMAVERSION, $COMMAVERSION,
[1db3fa5]42                   [Version number of package (comma-separated)])
[e2546c0]43AC_SUBST(COMMAVERSION)
44
[d0a7bba]45PKGDOCDIR='${prefix}/share/doc/${PACKAGE}'
[4b4bd47]46AC_ARG_ENABLE(docdir,
47[  --enable-docdir=DIR Set directory for installing documentation to DIR],
[21fbe7d]48[case $enableval in
[4b4bd47]49 yes|no)
50  AC_MSG_ERROR([configure: Syntax: configure --enable-docdir=DIR]) ;;
51esac
[ab27074]52PKGDOCDIR="$enableval"
[4b4bd47]53]
54)
[21fbe7d]55PKGDOCDIR_EXPANDED=`(
56 test NONE = "$prefix" && prefix="$ac_default_prefix"
57 test NONE = "$exec_prefix" && exec_prefix="$prefix"
58 eval echo "$PKGDOCDIR"
59)`
[4b4bd47]60AC_SUBST(PKGDOCDIR)
[9b579156]61AC_SUBST(PKGDOCDIR_EXPANDED)
[4b4bd47]62
[4d0204a]63AC_CANONICAL_HOST
[984f49e]64
[55302e3]65dnl Checks for programs.
66AC_PROG_CC
[f78ad72]67AC_PROG_CPP
[5809313]68
[f665d6e]69AC_PROG_CXX
70AC_PROG_CXXCPP
[039fb01]71
[c13d1930]72AM_PROG_CC_C_O
73
[0fd7598]74AC_LANG_C
[55302e3]75
[5dd874a]76AC_C_INLINE
77
[96cc0ab]78AC_EXEEXT
79AC_OBJEXT
80
[2032841]81mswindows=no
82macosx=no
[21fbe7d]83case $host_os in
[2032841]84darwin*) macosx=yes ;;
[4d0204a]85*mingw*|*cygwin*|windows*) mswindows=yes ;;
86esac
87
[21c226e]88AC_C_BIGENDIAN
[bd63572]89
[c746b4d]90AC_ARG_VAR(STRIP, [Command for discarding symbols from object files])
[4a6f8f6]91AC_PATH_TOOL(STRIP, strip, [echo "not stripping "])
[55302e3]92
[647407d]93AC_CHECK_LIB(m, sqrt)
94
[665029b9]95AC_PATH_XTRA
96
[c1a9449]97OSPROGS=
[d5cc724]98dnl AC_MSG_CHECKING([for OS-specific programs to build])
99dnl if test yes = "$mswindows"; then
100dnl   OSPROGS=
101dnl elif test yes = "$macosx"; then
102dnl   OSPROGS=
103dnl fi
104dnl AC_MSG_RESULT([${OSPROGS:-none}])
[c1a9449]105AC_SUBST([OSPROGS])
[55b7334]106
[7e2f708]107dnl The wxWidgets libraries we need:
108wx_libs="core,gl,html"
109
[a3f519b]110AC_ARG_VAR(WXCONFIG, [Old name for WX_CONFIG, accepted for compatibility])
111AC_ARG_VAR(WX_CONFIG, [wxWidgets configuration script to use to build Aven])
112: ${WX_CONFIG="$WXCONFIG"}
[bd9730c]113
[ab27074]114AM_CONDITIONAL(WIN32, [test yes = "$mswindows"])
[4d0204a]115AM_CONDITIONAL(MACOSX, [test yes = "$macosx"])
[b9bd864]116
[a3f519b]117if test -n "$WX_CONFIG" ; then
118  dnl WX_CONFIG specified - sanity check the value
[f665d6e]119  dnl don't check for --ldflags - older wx-config didn't do that
[7e2f708]120  if (exec >&5 2>&5;$WX_CONFIG --libs --cflags --cxxflags "$wx_libs";exit $?) then
[f665d6e]121    :
[b9bd864]122  else
[5297c43]123    AC_MSG_ERROR(['$WX_CONFIG --libs --cflags --cxxflags "$wx_libs"' does not work, bailing out])
[f665d6e]124  fi
125else
126  if test yes = "$macosx" ; then
127    wxdef=__WXMAC__
128  elif test yes = "$mswindows" ; then
129    wxdef=__WXMSW__
130  else
131    wxdef=__WXGTK__
132  fi
[5297c43]133  dnl See if wx-config exists and is for the correct version.
134  AC_PATH_PROGS(WX_CONFIG, [wx-config])
135  if test -n "$WX_CONFIG" ; then
136    if (exec >&5 2>&5;$WX_CONFIG --cflags "$wx_libs"|grep -e -D"$wxdef";exit $?) then
137      :
138    else
139      AC_MSG_ERROR([wxWidgets not for the right toolkit.  Run ./configure WX_CONFIG=/path/to/wx-config])
[b9bd864]140    fi
[5297c43]141  else
[a3f519b]142    AC_MSG_ERROR([wxWidgets not found.  Run ./configure WX_CONFIG=/path/to/wx-config])
[b9bd864]143  fi
[5809313]144fi
[0fd7598]145
[5627cbb]146dnl Unless the user has explicitly specified a --unicode setting, prefer
147dnl --unicode=yes if we can get it.
148case $WX_CONFIG in
149  *--unicode=*) ;;
150  *)
[7e2f708]151    if (exec >&5 2>&5;$WX_CONFIG --unicode=yes --version "$wx_libs";exit $?) ; then
[5627cbb]152      WX_CONFIG="$WX_CONFIG --unicode=yes"
[7e2f708]153    elif (exec >&5 2>&5;$WX_CONFIG --unicode=no --version "$wx_libs";exit $?) ; then
[5627cbb]154      WX_CONFIG="$WX_CONFIG --unicode=no"
155    fi ;;
156esac
[7092fcb]157
[7e2f708]158WX_LIBS=`$WX_CONFIG --libs "$wx_libs"`
[f665d6e]159dnl Needed for nvidia drivers on linux (for some setups anyway).
160AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryVersion, [WX_LIBS="$WX_LIBS -lXxf86vm"], [], [$WX_LIBS])
[5c9f6c2]161dnl We use functions from libGLU so always link -lGLU explicitly if it's
162dnl present.
[9c0b089]163AC_CHECK_LIB([GLU], [gluProject], [WX_LIBS="$WX_LIBS -lGLU"], [], [$WX_LIBS])
[5c9f6c2]164dnl We use functions from libGL so always link -lGL explicitly if it's
165dnl present.
166AC_CHECK_LIB([GL], [glPushMatrix], [WX_LIBS="$WX_LIBS -lGL"], [], [$WX_LIBS])
[f665d6e]167AC_SUBST(WX_LIBS)
[ee63994]168dnl Mac OS X has OpenGL/gl.h.
169AC_CHECK_HEADERS([GL/gl.h OpenGL/gl.h], [], [], [ ])
[de4b099]170dnl The Debian mingw-w64 packages lack GL/glext.h; Mac OS X has OpenGL/glext.h.
[ee63994]171AC_CHECK_HEADERS([GL/glext.h OpenGL/glext.h], [], [], [#include <GL/gl.h>])
[9c0b089]172
[8c87227]173dnl Older wx-config didn't support --ldflags (2.6.3 doesn't), and neither do
174dnl newer ones (3.0.1 doesn't) but presumably some in between did - error goes
175dnl to stderr, with nothing to stdout, so just ignore stderr.
[7e2f708]176WX_LDFLAGS=`$WX_CONFIG --ldflags "$wx_libs" 2> /dev/null`
[f665d6e]177AC_SUBST(WX_LDFLAGS)
[7e2f708]178WX_CFLAGS=`$WX_CONFIG --cflags "$wx_libs"`
[f665d6e]179AC_SUBST(WX_CFLAGS)
[7e2f708]180WX_CXXFLAGS=`$WX_CONFIG --cxxflags "$wx_libs"`
[f665d6e]181AC_SUBST(WX_CXXFLAGS)
182
[30b66b5]183AC_LANG_C
[a5d615f]184save_CFLAGS=$CFLAGS
185CFLAGS="$CFLAGS $WX_CFLAGS"
186AC_CHECK_SIZEOF([wxChar], [], [
187  #include <wx/defs.h>
[631fa17]188  #if wxCHECK_VERSION(2,9,0)
189  #include <wx/chartype.h>
190  #else
[a5d615f]191  #include <wx/wxchar.h>
[631fa17]192  #endif
[a5d615f]193])
194CFLAGS=$save_CFLAGS
[30b66b5]195
[c527c6e]196AVEN_LIBS=
197AC_SUBST(AVEN_LIBS)
198
[57c4012]199dnl Check for ffmpeg or libav
[64d06c0]200AC_CHECK_LIB(avcodec, avcodec_register_all,
[f665d6e]201  [AC_CHECK_LIB(avformat, av_register_all,
[9e516d0d]202    [AC_CHECK_LIB(swscale, sws_scale,
[7831cef]203      [AC_CHECK_LIB(avutil, av_malloc,
204        [AC_CHECK_HEADERS([libavformat/avformat.h],
[c527c6e]205          [AVEN_LIBS="-lswscale -lavformat -lavcodec -lavutil"
[7831cef]206          save_LIBS=$LIBS
[c527c6e]207          LIBS="$LIBS $AVEN_LIBS"
[8364c65f]208          AC_CHECK_FUNCS([av_guess_format avio_open avio_close avformat_write_header avcodec_encode_video2 avcodec_free_frame avcodec_open2 avformat_new_stream av_frame_alloc av_frame_free])
[7831cef]209          AC_CHECK_DECLS([AVMEDIA_TYPE_VIDEO], [], [], [#include <libavcodec/avcodec.h>])
[8364c65f]210          AC_CHECK_DECLS([AV_CODEC_ID_NONE], [], [], [#include <libavcodec/avcodec.h>])
[64d06c0]211          AC_CHECK_DECLS([AV_PIX_FMT_YUV420P], [], [], [#include <libavutil/pixfmt.h>])
[7831cef]212          LIBS=$save_LIBS])],
213        [], [-lavformat -lavcodec -lswscale $WX_LIBS])],
[9e516d0d]214      [], [-lavformat -lavcodec $WX_LIBS])],
215    [], [-lavcodec $WX_LIBS])
216])
[c527c6e]217
218dnl Check for libproj
[8c87227]219PROJ_LIBS=
220AC_CHECK_LIB([proj], [pj_init_plus],
221  [PROJ_LIBS=-lproj],
222  [AC_MSG_ERROR([PROJ4 required for coordinate transformations])])
223AC_SUBST([PROJ_LIBS])
[63dc4eb]224
[b6f16ea]225dnl Checks for header files.
[55302e3]226AC_HEADER_STDC
[f78ad72]227dnl don't use AC_CHECK_FUNCS for setjmp - mingw #define-s it to _setjmp
[6bec10c]228AC_CHECK_HEADERS(limits.h string.h setjmp.h sys/select.h)
[55302e3]229
230dnl Checks for typedefs, structures, and compiler characteristics.
231AC_TYPE_SIZE_T
232AC_STRUCT_TM
233AC_TYPE_SIGNAL
234
[4d0204a]235dnl check if CLOCKS_PER_SEC is defined by time.h (as ANSI says it should be)
236dnl if it isn't, assume it is 1000000, as it is on SunOS 4
237AC_TRY_COMPILE([#include <time.h>],[
238#ifndef CLOCKS_PER_SEC
239choke me
240#endif
241], , AC_DEFINE(CLOCKS_PER_SEC, 1000000, [For old systems which don't define it themselves]))
242
[8c45eea]243dnl Check for 16-bit and 32-bit integer types.
244AC_TYPE_INT16_T
245AC_TYPE_INT32_T
[647407d]246
[55302e3]247dnl Checks for library functions.
248AC_FUNC_STRFTIME
[ab27074]249if test yes != "$ac_cv_func_strftime"; then
[ad4eaf3f]250  AC_LIBOBJ(strftime)
[f017df0]251fi
[55302e3]252AC_FUNC_VPRINTF
[0a9b040]253dnl Check if there's a declaration of lround().  Below we also check for
254dnl lround() with AC_CHECK_FUNCS, which just checks if it can be linked
255dnl against.  Some platforms are missing a prototype for lround(), so
[6b536b3]256dnl both checks are useful.
[0a9b040]257AC_CHECK_DECLS([lround], [], [], [[#include <math.h>]])
[ad4eaf3f]258dnl check for strcasecmp here as well as below - this one is to get
259dnl HAVE_STRCASECMP defined if appropriate (for img.c)
[9d1503d]260AC_CHECK_FUNCS([popen getpwuid lround strcasecmp hypot lstat mmap])
[f66c708]261
[55302e3]262dnl difftime seems to be an ANSI invention
[96cc0ab]263AC_CHECK_FUNCS(difftime)
[55302e3]264
[e02a6a6]265dnl Much faster than using getc()/putc(), at least on Linux.
266AC_CHECK_FUNCS([getc_unlocked putc_unlocked])
[0a85859]267
[c891a7e]268AC_CHECK_FUNCS([setenv unsetenv])
269
[55302e3]270dnl try to find a case-insensitive compare
271
272strcasecmp=no
[b9bd864]273dnl The order of these tests is important.
[f665d6e]274AC_CHECK_FUNC(strcasecmp, [strcasecmp=strcasecmp])
[ab27074]275if test no = "$strcasecmp"; then
[f665d6e]276  AC_CHECK_FUNC(stricmp, [strcasecmp=stricmp])
[55302e3]277fi
[ab27074]278if test no = "$strcasecmp"; then
[f665d6e]279  AC_CHECK_FUNC(strcmpi, [strcasecmp=strcmpi])
[55302e3]280fi
[18f4759]281
[f665d6e]282AC_MSG_CHECKING([how to compare strings ignoring case])
[21fbe7d]283case $strcasecmp in
[18f4759]284no)
[ad4eaf3f]285  AC_LIBOBJ(strcasecmp)
[f665d6e]286  AC_MSG_RESULT([using own implementation of strcasecmp]) ;;
287strcasecmp)
288  AC_MSG_RESULT([strcasecmp]) ;;
[18f4759]289*)
290  AC_DEFINE_UNQUOTED(strcasecmp, "$strcasecmp",
[f665d6e]291    [strcasecmp define for systems which call it something else])
292  AC_MSG_RESULT([$strcasecmp]) ;;
[18f4759]293esac
294
[091efc6]295AC_MSG_CHECKING(for sgmltools v2 or v3)
[ec84716]296if test : != "$SGMLTOOLS" ; then
297  : ${SGMLTOOLS=sgmltools}
298  case `(exec 2>&5 ; $SGMLTOOLS --version)` in
[181bb65]299  *" version 3"*)
300    AC_MSG_RESULT([$SGMLTOOLS]) ;;
301  *" version 2"*)
[84d66990]302    AC_MSG_RESULT([$SGMLTOOLS]) ;;
[ec84716]303  *)
304    SGMLTOOLS="$MISSING sgmltools"
[84d66990]305    AC_MSG_RESULT(not found) ;;
[ec84716]306  esac
[84d66990]307else
308  AC_MSG_RESULT([$SGMLTOOLS])
[ec84716]309fi
310AC_SUBST(SGMLTOOLS)
[84d66990]311AC_ARG_VAR(SGMLTOOLS, [sgmltools command])
312
313AC_MSG_CHECKING(for docbook-to-man)
314if test : != "$DOCBOOK_TO_MAN" ; then
315  : ${DOCBOOK_TO_MAN=docbook-to-man}
316  $DOCBOOK_TO_MAN 2> /dev/null
317  if test $? = 1 ; then
318    AC_MSG_RESULT([$DOCBOOK_TO_MAN])
319  else
320    DOCBOOK_TO_MAN="$MISSING docbook-to-man"
321    AC_MSG_RESULT([not found])
322  fi
323else
324  AC_MSG_RESULT([$DOCBOOK_TO_MAN])
325fi
326AC_SUBST(DOCBOOK_TO_MAN)
327AC_ARG_VAR(DOCBOOK_TO_MAN, [docbook-to-man command])
[788ed2e]328
[b4fe9fb]329dnl extra warning flags for building with GCC
[ab27074]330if test yes = "$GCC"; then
331  if test yes = "$cross_compiling"; then
[331b3aa]332dnl    AM_CFLAGS="$AM_CFLAGS -Werror -Wall -Wunused -Wpointer-arith\
333dnl      -Wwrite-strings -Wcast-align"
[75f9a82]334dnl -Wsign-compare causes a warning with the mingw FD_SET macro, so we have
335dnl to disable it for mingw builds.
[331b3aa]336    AM_CFLAGS="$AM_CFLAGS -Wall -Wunused -Wpointer-arith\
[1809849]337      -Wwrite-strings -Wcast-align"
[b960c63]338    AM_CXXFLAGS="$AM_CXXFLAGS -Wall -Wunused -Wpointer-arith\
[75f9a82]339      -Wwrite-strings -Wcast-align -Wno-sign-compare"
[d5bd3a7]340  else
[ab27074]341    AM_CFLAGS="$AM_CFLAGS -Wall -W -Wunused -Wshadow -Wpointer-arith\
342      -Wmissing-prototypes -Wwrite-strings -Wredundant-decls -Wnested-externs\
[c70e8d2]343      -Wcast-align"
[41cfc8c]344    AM_CXXFLAGS="$AM_CXXFLAGS -Wall -W -Wunused -Wshadow -Wpointer-arith\
[0580c6a]345      -Wwrite-strings -Wcast-align"
[d5bd3a7]346  fi
[b9bd864]347  dnl too many complaints from headers, etc: -Wconversion
[96cc0ab]348fi
[b4fe9fb]349AC_SUBST(AM_CFLAGS)
350AC_SUBST(AM_CXXFLAGS)
[55302e3]351
[8c0bfb4]352dnl See if large file support is available.  Survex is unlikely to need to
353dnl process files > 2GB in size, but LFS is also needed for stat() to work
354dnl on filing systems which return 64 bit inode values, such as CIFS mounts.
355AC_SYS_LARGEFILE
356
[5341d94]357AC_ARG_ENABLE(profiling,
358[  --enable-profiling Build binaries to generate profiling information],
[21fbe7d]359[case $enableval in
[984f49e]360  yes) AM_CXXFLAGS="$AM_CXXFLAGS -pg"
[b4fe9fb]361       AM_CFLAGS="$AM_CFLAGS -pg"
[5876fcb]362       AC_MSG_RESULT(building binaries to generate profiling information);;
[5341d94]363  no) ;;
[ab27074]364  *) AC_MSG_ERROR(bad value $enableval for --enable-profiling) ;;
[5341d94]365esac])
366
[43ddd8b]367HTMLFILES="AUTHORS.htm HACKING.htm NEWS.htm OLDNEWS.htm TODO.htm index.htm 3dformat.htm 3dformat-old.htm"
[5636835]368AC_SUBST(HTMLFILES)
369
370EXTRA_TEXT="AUTHORS COPYING NEWS TODO ChangeLog"
371AC_SUBST(EXTRA_TEXT)
372
[96c5d34]373AC_SUBST_FILE(DESC)
374DESC=desc.txt
375AC_SUBST_FILE(AVENDESC)
376AVENDESC=desc-aven.txt
[27b8b59]377AC_SUBST_FILE(SVXEDITDESC)
378SVXEDITDESC=desc-svxedit.txt
[96c5d34]379
[f665d6e]380dnl Don't define DATADIR if building for MS Windows - it won't be used, and
381dnl can conflict with the DATADIR typedef in objidl.h
[4d0204a]382if test no = "$mswindows"; then
383  AC_DEFINE_DIR(DATADIR, datadir, [Location of platform independent support files])
384fi
[18f4759]385
[e02a6a6]386AH_BOTTOM(
387[/* Use getc_unlocked() and putc_unlocked() where available, since they are
388 * faster, and we don't multithread file accesses.
389 */
390
391#ifdef HAVE_GETC_UNLOCKED
392# define GETC(F) getc_unlocked(F)
393#else
394# define GETC(F) getc(F)
395#endif
396#ifdef HAVE_PUTC_UNLOCKED
397# define PUTC(C, F) putc_unlocked(C, F)
398#else
399# define PUTC(C, F) putc(C, F)
400#endif
401])
402
[f542bda]403AC_CONFIG_FILES([
404 Makefile src/Makefile doc/Makefile lib/Makefile lib/icons/Makefile
[09dfd18]405 lib/images/Makefile
[04aa63b]406 tests/Makefile vim/Makefile survex.iss doc/index.htm doc/survex.7
[d5cc724]407 survex.spec lib/survex.keys lib/Info.plist
[42f1c543]408 lib/svxedit_Info.plist
[f542bda]409 ])
410AC_OUTPUT
[d959ab2]411dnl FIXME update msvc makefile for 1.2 branch
[cf733ae]412dnl src/msvc/config.h
Note: See TracBrowser for help on using the repository browser.