source: git/configure.ac @ 6688849

RELEASE/1.2debug-cidebug-ci-sanitisersfaster-cavernloglog-selectstereostereo-2025walls-datawalls-data-hanging-as-warningwarn-only-for-hanging-survey
Last change on this file since 6688849 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
Line 
1dnl Process this file with autoconf to produce a configure script
2
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)
6AC_INIT([survex], [1.2.18], [http://trac.survex.com/])
7AM_INIT_AUTOMAKE([1.5 gnu -Wall -Wportability -Werror])
8RELEASE=1
9
10AC_SUBST(RELEASE)
11AC_CONFIG_HEADERS([config.h])
12AC_CONFIG_SRCDIR([src/aven.cc])
13
14COPYRIGHT_MSG="Copyright (C) 1990-2015 Olly Betts"
15AVEN_COPYRIGHT_MSG="Copyright (C) 1999-2003,2005,2006 Mark R. Shinwell"
16
17AC_DEFINE_UNQUOTED(COPYRIGHT_MSG, ["$COPYRIGHT_MSG"], [Copyright Message])
18AC_DEFINE_UNQUOTED(AVEN_COPYRIGHT_MSG, ["$AVEN_COPYRIGHT_MSG"],
19                   [Copyright Message for Aven])
20
21AC_SUBST(COPYRIGHT_MSG)
22AC_SUBST(AVEN_COPYRIGHT_MSG)
23
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
32dnl set PRETTYPACKAGE to PACKAGE with the first character capitalised
33PRETTYPACKAGE=`echo "$PACKAGE"|cut -b1|tr a-z A-Z``echo "$PACKAGE"|cut -b2-`
34AC_DEFINE_UNQUOTED(PRETTYPACKAGE, "$PRETTYPACKAGE",
35                   [Name of package (capitalised)])
36AC_SUBST(PRETTYPACKAGE)
37
38dnl set COMMAVERSION to VERSION with the dots replaced by commas -
39dnl e.g. "0,99" or "1,0,22"
40COMMAVERSION=`echo "$VERSION"|tr '.' ','`
41AC_DEFINE_UNQUOTED(COMMAVERSION, $COMMAVERSION,
42                   [Version number of package (comma-separated)])
43AC_SUBST(COMMAVERSION)
44
45PKGDOCDIR='${prefix}/share/doc/${PACKAGE}'
46AC_ARG_ENABLE(docdir,
47[  --enable-docdir=DIR Set directory for installing documentation to DIR],
48[case $enableval in
49 yes|no)
50  AC_MSG_ERROR([configure: Syntax: configure --enable-docdir=DIR]) ;;
51esac
52PKGDOCDIR="$enableval"
53]
54)
55PKGDOCDIR_EXPANDED=`(
56 test NONE = "$prefix" && prefix="$ac_default_prefix"
57 test NONE = "$exec_prefix" && exec_prefix="$prefix"
58 eval echo "$PKGDOCDIR"
59)`
60AC_SUBST(PKGDOCDIR)
61AC_SUBST(PKGDOCDIR_EXPANDED)
62
63AC_CANONICAL_HOST
64
65dnl Checks for programs.
66AC_PROG_CC
67AC_PROG_CPP
68
69AC_PROG_CXX
70AC_PROG_CXXCPP
71
72AM_PROG_CC_C_O
73
74AC_LANG_C
75
76AC_C_INLINE
77
78AC_EXEEXT
79AC_OBJEXT
80
81mswindows=no
82macosx=no
83case $host_os in
84darwin*) macosx=yes ;;
85*mingw*|*cygwin*|windows*) mswindows=yes ;;
86esac
87
88AC_C_BIGENDIAN
89
90AC_ARG_VAR(STRIP, [Command for discarding symbols from object files])
91AC_PATH_TOOL(STRIP, strip, [echo "not stripping "])
92
93AC_CHECK_LIB(m, sqrt)
94
95AC_PATH_XTRA
96
97OSPROGS=
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}])
105AC_SUBST([OSPROGS])
106
107dnl The wxWidgets libraries we need:
108wx_libs="core,gl,html"
109
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"}
113
114AM_CONDITIONAL(WIN32, [test yes = "$mswindows"])
115AM_CONDITIONAL(MACOSX, [test yes = "$macosx"])
116
117if test -n "$WX_CONFIG" ; then
118  dnl WX_CONFIG specified - sanity check the value
119  dnl don't check for --ldflags - older wx-config didn't do that
120  if (exec >&5 2>&5;$WX_CONFIG --libs --cflags --cxxflags "$wx_libs";exit $?) then
121    :
122  else
123    AC_MSG_ERROR(['$WX_CONFIG --libs --cflags --cxxflags "$wx_libs"' does not work, bailing out])
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
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])
140    fi
141  else
142    AC_MSG_ERROR([wxWidgets not found.  Run ./configure WX_CONFIG=/path/to/wx-config])
143  fi
144fi
145
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  *)
151    if (exec >&5 2>&5;$WX_CONFIG --unicode=yes --version "$wx_libs";exit $?) ; then
152      WX_CONFIG="$WX_CONFIG --unicode=yes"
153    elif (exec >&5 2>&5;$WX_CONFIG --unicode=no --version "$wx_libs";exit $?) ; then
154      WX_CONFIG="$WX_CONFIG --unicode=no"
155    fi ;;
156esac
157
158WX_LIBS=`$WX_CONFIG --libs "$wx_libs"`
159dnl Needed for nvidia drivers on linux (for some setups anyway).
160AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryVersion, [WX_LIBS="$WX_LIBS -lXxf86vm"], [], [$WX_LIBS])
161dnl We use functions from libGLU so always link -lGLU explicitly if it's
162dnl present.
163AC_CHECK_LIB([GLU], [gluProject], [WX_LIBS="$WX_LIBS -lGLU"], [], [$WX_LIBS])
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])
167AC_SUBST(WX_LIBS)
168dnl Mac OS X has OpenGL/gl.h.
169AC_CHECK_HEADERS([GL/gl.h OpenGL/gl.h], [], [], [ ])
170dnl The Debian mingw-w64 packages lack GL/glext.h; Mac OS X has OpenGL/glext.h.
171AC_CHECK_HEADERS([GL/glext.h OpenGL/glext.h], [], [], [#include <GL/gl.h>])
172
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.
176WX_LDFLAGS=`$WX_CONFIG --ldflags "$wx_libs" 2> /dev/null`
177AC_SUBST(WX_LDFLAGS)
178WX_CFLAGS=`$WX_CONFIG --cflags "$wx_libs"`
179AC_SUBST(WX_CFLAGS)
180WX_CXXFLAGS=`$WX_CONFIG --cxxflags "$wx_libs"`
181AC_SUBST(WX_CXXFLAGS)
182
183AC_LANG_C
184save_CFLAGS=$CFLAGS
185CFLAGS="$CFLAGS $WX_CFLAGS"
186AC_CHECK_SIZEOF([wxChar], [], [
187  #include <wx/defs.h>
188  #if wxCHECK_VERSION(2,9,0)
189  #include <wx/chartype.h>
190  #else
191  #include <wx/wxchar.h>
192  #endif
193])
194CFLAGS=$save_CFLAGS
195
196AVEN_LIBS=
197AC_SUBST(AVEN_LIBS)
198
199dnl Check for ffmpeg or libav
200AC_CHECK_LIB(avcodec, avcodec_register_all,
201  [AC_CHECK_LIB(avformat, av_register_all,
202    [AC_CHECK_LIB(swscale, sws_scale,
203      [AC_CHECK_LIB(avutil, av_malloc,
204        [AC_CHECK_HEADERS([libavformat/avformat.h],
205          [AVEN_LIBS="-lswscale -lavformat -lavcodec -lavutil"
206          save_LIBS=$LIBS
207          LIBS="$LIBS $AVEN_LIBS"
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])
209          AC_CHECK_DECLS([AVMEDIA_TYPE_VIDEO], [], [], [#include <libavcodec/avcodec.h>])
210          AC_CHECK_DECLS([AV_CODEC_ID_NONE], [], [], [#include <libavcodec/avcodec.h>])
211          AC_CHECK_DECLS([AV_PIX_FMT_YUV420P], [], [], [#include <libavutil/pixfmt.h>])
212          LIBS=$save_LIBS])],
213        [], [-lavformat -lavcodec -lswscale $WX_LIBS])],
214      [], [-lavformat -lavcodec $WX_LIBS])],
215    [], [-lavcodec $WX_LIBS])
216])
217
218dnl Check for libproj
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])
224
225dnl Checks for header files.
226AC_HEADER_STDC
227dnl don't use AC_CHECK_FUNCS for setjmp - mingw #define-s it to _setjmp
228AC_CHECK_HEADERS(limits.h string.h setjmp.h sys/select.h)
229
230dnl Checks for typedefs, structures, and compiler characteristics.
231AC_TYPE_SIZE_T
232AC_STRUCT_TM
233AC_TYPE_SIGNAL
234
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
243dnl Check for 16-bit and 32-bit integer types.
244AC_TYPE_INT16_T
245AC_TYPE_INT32_T
246
247dnl Checks for library functions.
248AC_FUNC_STRFTIME
249if test yes != "$ac_cv_func_strftime"; then
250  AC_LIBOBJ(strftime)
251fi
252AC_FUNC_VPRINTF
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
256dnl both checks are useful.
257AC_CHECK_DECLS([lround], [], [], [[#include <math.h>]])
258dnl check for strcasecmp here as well as below - this one is to get
259dnl HAVE_STRCASECMP defined if appropriate (for img.c)
260AC_CHECK_FUNCS([popen getpwuid lround strcasecmp hypot lstat mmap])
261
262dnl difftime seems to be an ANSI invention
263AC_CHECK_FUNCS(difftime)
264
265dnl Much faster than using getc()/putc(), at least on Linux.
266AC_CHECK_FUNCS([getc_unlocked putc_unlocked])
267
268AC_CHECK_FUNCS([setenv unsetenv])
269
270dnl try to find a case-insensitive compare
271
272strcasecmp=no
273dnl The order of these tests is important.
274AC_CHECK_FUNC(strcasecmp, [strcasecmp=strcasecmp])
275if test no = "$strcasecmp"; then
276  AC_CHECK_FUNC(stricmp, [strcasecmp=stricmp])
277fi
278if test no = "$strcasecmp"; then
279  AC_CHECK_FUNC(strcmpi, [strcasecmp=strcmpi])
280fi
281
282AC_MSG_CHECKING([how to compare strings ignoring case])
283case $strcasecmp in
284no)
285  AC_LIBOBJ(strcasecmp)
286  AC_MSG_RESULT([using own implementation of strcasecmp]) ;;
287strcasecmp)
288  AC_MSG_RESULT([strcasecmp]) ;;
289*)
290  AC_DEFINE_UNQUOTED(strcasecmp, "$strcasecmp",
291    [strcasecmp define for systems which call it something else])
292  AC_MSG_RESULT([$strcasecmp]) ;;
293esac
294
295AC_MSG_CHECKING(for sgmltools v2 or v3)
296if test : != "$SGMLTOOLS" ; then
297  : ${SGMLTOOLS=sgmltools}
298  case `(exec 2>&5 ; $SGMLTOOLS --version)` in
299  *" version 3"*)
300    AC_MSG_RESULT([$SGMLTOOLS]) ;;
301  *" version 2"*)
302    AC_MSG_RESULT([$SGMLTOOLS]) ;;
303  *)
304    SGMLTOOLS="$MISSING sgmltools"
305    AC_MSG_RESULT(not found) ;;
306  esac
307else
308  AC_MSG_RESULT([$SGMLTOOLS])
309fi
310AC_SUBST(SGMLTOOLS)
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])
328
329dnl extra warning flags for building with GCC
330if test yes = "$GCC"; then
331  if test yes = "$cross_compiling"; then
332dnl    AM_CFLAGS="$AM_CFLAGS -Werror -Wall -Wunused -Wpointer-arith\
333dnl      -Wwrite-strings -Wcast-align"
334dnl -Wsign-compare causes a warning with the mingw FD_SET macro, so we have
335dnl to disable it for mingw builds.
336    AM_CFLAGS="$AM_CFLAGS -Wall -Wunused -Wpointer-arith\
337      -Wwrite-strings -Wcast-align"
338    AM_CXXFLAGS="$AM_CXXFLAGS -Wall -Wunused -Wpointer-arith\
339      -Wwrite-strings -Wcast-align -Wno-sign-compare"
340  else
341    AM_CFLAGS="$AM_CFLAGS -Wall -W -Wunused -Wshadow -Wpointer-arith\
342      -Wmissing-prototypes -Wwrite-strings -Wredundant-decls -Wnested-externs\
343      -Wcast-align"
344    AM_CXXFLAGS="$AM_CXXFLAGS -Wall -W -Wunused -Wshadow -Wpointer-arith\
345      -Wwrite-strings -Wcast-align"
346  fi
347  dnl too many complaints from headers, etc: -Wconversion
348fi
349AC_SUBST(AM_CFLAGS)
350AC_SUBST(AM_CXXFLAGS)
351
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
357AC_ARG_ENABLE(profiling,
358[  --enable-profiling Build binaries to generate profiling information],
359[case $enableval in
360  yes) AM_CXXFLAGS="$AM_CXXFLAGS -pg"
361       AM_CFLAGS="$AM_CFLAGS -pg"
362       AC_MSG_RESULT(building binaries to generate profiling information);;
363  no) ;;
364  *) AC_MSG_ERROR(bad value $enableval for --enable-profiling) ;;
365esac])
366
367HTMLFILES="AUTHORS.htm HACKING.htm NEWS.htm OLDNEWS.htm TODO.htm index.htm 3dformat.htm 3dformat-old.htm"
368AC_SUBST(HTMLFILES)
369
370EXTRA_TEXT="AUTHORS COPYING NEWS TODO ChangeLog"
371AC_SUBST(EXTRA_TEXT)
372
373AC_SUBST_FILE(DESC)
374DESC=desc.txt
375AC_SUBST_FILE(AVENDESC)
376AVENDESC=desc-aven.txt
377AC_SUBST_FILE(SVXEDITDESC)
378SVXEDITDESC=desc-svxedit.txt
379
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
382if test no = "$mswindows"; then
383  AC_DEFINE_DIR(DATADIR, datadir, [Location of platform independent support files])
384fi
385
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
403AC_CONFIG_FILES([
404 Makefile src/Makefile doc/Makefile lib/Makefile lib/icons/Makefile
405 lib/images/Makefile
406 tests/Makefile vim/Makefile survex.iss doc/index.htm doc/survex.7
407 survex.spec lib/survex.keys lib/Info.plist
408 lib/svxedit_Info.plist
409 ])
410AC_OUTPUT
411dnl FIXME update msvc makefile for 1.2 branch
412dnl src/msvc/config.h
Note: See TracBrowser for help on using the repository browser.