source: git/configure.ac @ b2e095d

stereo-2025warn-only-for-hanging-survey
Last change on this file since b2e095d was d1aefbc, checked in by Olly Betts <olly@…>, 12 months ago

Convert manual from docbook to reStructured Text

The text-based format is much easier for making changes, and
for users the output from sphinx looks nicer and has extra
features (like built-in "Quick search" in the HTML output).

The plain text version of the manual is no longer generated.
Sphinx can produce one but the .rst sources actually seem
more readable for anyone wanting to read the manual in plain
text.

The extra targets to generate the manual in RTF and PostScript?
have been dropped as I doubt they are still used (we stopped
providing them on the website years ago). They could probably be
reinstated if they are still use.

As part of converting, the formatting of the manual has been
made more consistent. Some content has also been reordered, and
other minor improvements made.

  • Property mode set to 100644
File size: 11.5 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.4.9], [https://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-2024 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
72dnl Probe for any options needed to enable C++11 support.
73AX_CXX_COMPILE_STDCXX_11
74
75AM_PROG_CC_C_O
76
77AC_LANG([C])
78
79AC_EXEEXT
80AC_OBJEXT
81
82mswindows=no
83macos=no
84case $host_os in
85darwin*) macos=yes ;;
86*mingw*|*cygwin*|windows*) mswindows=yes ;;
87esac
88
89AC_C_BIGENDIAN
90
91AC_ARG_VAR(STRIP, [Command for discarding symbols from object files])
92AC_PATH_TOOL(STRIP, strip, [echo "not stripping "])
93
94AC_CHECK_LIB(m, sqrt)
95
96AC_PATH_XTRA
97
98dnl The wxWidgets libraries we need:
99wx_libs="core,gl"
100
101AC_ARG_VAR(WXCONFIG, [Old name for WX_CONFIG, accepted for compatibility])
102AC_ARG_VAR(WX_CONFIG, [wxWidgets configuration script to use to build Aven])
103: ${WX_CONFIG="$WXCONFIG"}
104
105AM_CONDITIONAL(WIN32, [test yes = "$mswindows"])
106AM_CONDITIONAL(MACOS, [test yes = "$macos"])
107
108if test -n "$WX_CONFIG" ; then
109  dnl WX_CONFIG specified - sanity check the value
110  dnl don't check for --ldflags - older wx-config didn't do that
111  if (exec >&5 2>&5;$WX_CONFIG --libs --cflags --cxxflags "$wx_libs";exit $?) then
112    :
113  else
114    AC_MSG_ERROR(['$WX_CONFIG --libs --cflags --cxxflags "$wx_libs"' does not work, bailing out])
115  fi
116else
117  if test yes = "$macos" ; then
118    wxdef=__WXMAC__
119  elif test yes = "$mswindows" ; then
120    wxdef=__WXMSW__
121  else
122    wxdef=__WXGTK__
123  fi
124  dnl See if wx-config exists and is for the correct version.
125  dnl Fedora install wx3's wx-config as wx-config-3.0, so look for that in
126  dnl preference.
127  dnl Arch Linux uses wx-config-gtk3.
128  AC_PATH_PROGS(WX_CONFIG, [wx-config-3.0 wx-config-gtk3 wx-config])
129  if test -n "$WX_CONFIG" ; then
130    if (exec >&5 2>&5;$WX_CONFIG --cflags "$wx_libs"|grep -e -D"$wxdef";exit $?) then
131      :
132    else
133      AC_MSG_ERROR([wxWidgets not for the right toolkit.  Run ./configure WX_CONFIG=/path/to/wx-config])
134    fi
135  else
136    AC_MSG_ERROR([wxWidgets not found.  Run ./configure WX_CONFIG=/path/to/wx-config])
137  fi
138fi
139
140dnl Unless the user has explicitly specified a --unicode setting, prefer
141dnl --unicode=yes if we can get it.
142case $WX_CONFIG in
143  *--unicode=*) ;;
144  *)
145    if (exec >&5 2>&5;$WX_CONFIG --unicode=yes --version "$wx_libs";exit $?) ; then
146      WX_CONFIG="$WX_CONFIG --unicode=yes"
147    elif (exec >&5 2>&5;$WX_CONFIG --unicode=no --version "$wx_libs";exit $?) ; then
148      WX_CONFIG="$WX_CONFIG --unicode=no"
149    fi ;;
150esac
151
152WX_LIBS=`$WX_CONFIG --libs "$wx_libs"`
153dnl Needed for nvidia drivers on linux (for some setups anyway).
154AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryVersion, [WX_LIBS="$WX_LIBS -lXxf86vm"], [], [$WX_LIBS])
155
156save_LIBS=$LIBS
157dnl Check if we need a library for OpenGL functions.  Usually it's the "GL"
158dnl library, but it's called opengl32 on Microsoft Windows).
159AC_SEARCH_LIBS([glPushMatrix], [GL opengl32], [WX_LIBS="$WX_LIBS $ac_cv_search_glPushMatrix"], [], [$WX_LIBS])
160dnl Check if we need a library for GLU functions.  Usually it's the "GLU"
161dnl library, but it's called glu32 on Microsoft Windows).
162AC_SEARCH_LIBS([gluProject], [GLU glu32], [WX_LIBS="$WX_LIBS $ac_cv_search_gluProject"], [], [$WX_LIBS])
163LIBS=$save_LIBS
164
165AC_SUBST(WX_LIBS)
166dnl macOS has OpenGL/gl.h.
167AC_CHECK_HEADERS([GL/gl.h OpenGL/gl.h], [], [], [ ])
168dnl The Debian mingw-w64 packages lack GL/glext.h; macOS has OpenGL/glext.h.
169AC_CHECK_HEADERS([GL/glext.h OpenGL/glext.h], [], [], [#include <GL/gl.h>])
170
171WX_CFLAGS=`$WX_CONFIG --cflags "$wx_libs"`
172AC_SUBST(WX_CFLAGS)
173WX_CXXFLAGS=`$WX_CONFIG --cxxflags "$wx_libs"`
174AC_SUBST(WX_CXXFLAGS)
175
176AC_LANG([C])
177save_CFLAGS=$CFLAGS
178CFLAGS="$CFLAGS $WX_CFLAGS"
179AC_CHECK_SIZEOF([wxChar], [], [
180  #include <wx/defs.h>
181  #include <wx/chartype.h>
182])
183CFLAGS=$save_CFLAGS
184
185dnl Check for FFmpeg libraries.
186PKG_CHECK_MODULES([FFMPEG], [libavcodec libavformat libswscale libavutil], [
187  AC_DEFINE([WITH_FFMPEG], [1], [Use FFmpeg for movie export])
188  save_CXXFLAGS=$CXXFLAGS
189  save_LIBS=$LIBS
190  CFLAGS="$CFLAGS $FFMPEG_CFLAGS"
191  LIBS="$LIBS $FFMPEG_LIBS"
192  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])
193  AC_CHECK_DECLS([AVMEDIA_TYPE_VIDEO], [], [], [#include <libavcodec/avcodec.h>])
194  AC_CHECK_DECLS([AV_CODEC_ID_NONE], [], [], [#include <libavcodec/avcodec.h>])
195  AC_CHECK_DECLS([AV_PIX_FMT_RGB24], [], [], [#include <libavutil/pixfmt.h>])
196  AC_CHECK_DECLS([AV_PIX_FMT_YUV420P], [], [], [#include <libavutil/pixfmt.h>])
197  CXXFLAGS=$save_CXXFLAGS
198  LIBS=$save_LIBS
199], [
200  dnl Build without movie export feature.
201])
202AC_SUBST([FFMPEG_LIBS])
203AC_SUBST([FFMPEG_CFLAGS])
204
205dnl Check for PROJ.
206PKG_CHECK_MODULES([PROJ], [proj >= 6.2.0], [
207], [
208  dnl pkg-config support in proj seems quite new, so probe directly if not
209  dnl found.  We need proj_create_crs_to_crs_from_pj() which was added in
210  dnl 6.2.0.
211  AC_CHECK_LIB([proj], [proj_create_crs_to_crs_from_pj], [
212      PROJ_LIBS=-lproj
213      PROJ_CFLAGS=
214    ], [
215      AC_MSG_ERROR([PROJ required for coordinate transformations])
216    ])
217])
218AC_SUBST([PROJ_LIBS])
219AC_SUBST([PROJ_CFLAGS])
220
221dnl Check for GDAL.
222PKG_CHECK_MODULES([GDAL], [gdal >= 2.3], [
223], [
224  AC_MSG_ERROR([GDAL required for geodata handling])
225])
226AC_SUBST([GDAL_LIBS])
227AC_SUBST([GDAL_CFLAGS])
228
229dnl Checks for header files.
230
231dnl don't use AC_CHECK_FUNCS for setjmp - mingw #define-s it to _setjmp
232AC_CHECK_HEADERS(limits.h string.h setjmp.h)
233
234dnl Checks for typedefs, structures, and compiler characteristics.
235AC_TYPE_SIZE_T
236AC_STRUCT_TM
237
238dnl Check for 16-bit and 32-bit integer types.
239AC_TYPE_INT16_T
240AC_TYPE_UINT16_T
241AC_TYPE_INT32_T
242AC_TYPE_UINT32_T
243
244dnl Check if there's a declaration of lround().  Below we also check for
245dnl lround() with AC_CHECK_FUNCS, which just checks if it can be linked
246dnl against.  Some platforms are missing a prototype for lround(), so
247dnl both checks are useful.
248AC_CHECK_DECLS([lround], [], [], [[#include <math.h>]])
249AC_CHECK_FUNCS([popen getpwuid lround hypot mmap])
250
251dnl Much faster than using getc()/putc(), at least on Linux.
252AC_CHECK_FUNCS([getc_unlocked putc_unlocked])
253
254AC_CHECK_FUNCS([setenv unsetenv])
255
256AC_CHECK_FUNCS([fmemopen])
257
258AC_PATH_PROG([SPHINX_BUILD], [sphinx-build], [$MISSING sphinx-build])
259AC_ARG_VAR([SPHINX_BUILD], [sphinx-build from python3-sphinx])
260
261AC_PATH_PROG([MSGFMT], [msgfmt], [$MISSING msgfmt])
262AC_ARG_VAR([MSGFMT], [msgfmt from gettext])
263
264AC_ARG_ENABLE([werror],
265  [AS_HELP_STRING([--enable-werror], [enable treating compiler warnings as errors [default=no]])],
266  [case ${enableval} in
267    yes|no) ;;
268  *) AC_MSG_ERROR([bad value ${enableval} for --enable-werror]) ;;
269  esac],
270  [enable_werror=no])
271
272dnl Put -Werror or equivalent in its own make variable so that it can easily
273dnl be overridden by `make WERROR=` if needed during development (e.g. if
274dnl you want to get a full list of compile warnings to fix rather than
275dnl stopping at the first file with warnings).
276WERROR=
277AC_SUBST([WERROR])
278
279dnl extra warning flags for building with GCC
280if test yes = "$GCC"; then
281  WERROR=-Werror
282  if test yes = "$cross_compiling"; then
283dnl    AM_CFLAGS="$AM_CFLAGS -Werror -Wall -Wunused -Wpointer-arith\
284dnl      -Wwrite-strings -Wcast-align"
285dnl -Wsign-compare causes a warning with the mingw FD_SET macro, so we have
286dnl to disable it for mingw builds.
287    AM_CFLAGS="$AM_CFLAGS -Wall -Wunused -Wpointer-arith\
288      -Wwrite-strings -Wcast-align"
289    AM_CXXFLAGS="$AM_CXXFLAGS -Wall -Wunused -Wpointer-arith\
290      -Wwrite-strings -Wcast-align -Wno-sign-compare"
291  else
292    AM_CFLAGS="$AM_CFLAGS -Wall -W -Wunused -Wshadow -Wpointer-arith\
293      -Wmissing-prototypes -Wwrite-strings -Wredundant-decls -Wnested-externs\
294      -Wcast-align"
295    AM_CXXFLAGS="$AM_CXXFLAGS -Wall -W -Wunused -Wshadow -Wpointer-arith\
296      -Wwrite-strings -Wcast-align"
297  fi
298  dnl too many complaints from headers, etc: -Wconversion
299fi
300AC_SUBST(AM_CFLAGS)
301AC_SUBST(AM_CXXFLAGS)
302
303if test x$enable_werror != xyes; then
304  WERROR=
305fi
306
307dnl See if large file support is available.  Survex is unlikely to need to
308dnl process files > 2GB in size, but LFS is also needed for stat() to work
309dnl on filing systems which return 64 bit inode values, such as CIFS mounts.
310AC_SYS_LARGEFILE
311
312AC_ARG_ENABLE(profiling,
313[  --enable-profiling Build binaries to generate profiling information],
314[case $enableval in
315  yes) AM_CXXFLAGS="$AM_CXXFLAGS -pg"
316       AM_CFLAGS="$AM_CFLAGS -pg"
317       AC_MSG_RESULT(building binaries to generate profiling information);;
318  no) ;;
319  *) AC_MSG_ERROR(bad value $enableval for --enable-profiling) ;;
320esac])
321
322EXTRA_TEXT="AUTHORS COPYING NEWS TODO ChangeLog"
323AC_SUBST(EXTRA_TEXT)
324
325AC_SUBST_FILE(DESC)
326DESC=desc.txt
327AC_SUBST_FILE(AVENDESC)
328AVENDESC=desc-aven.txt
329
330dnl Don't define DATADIR if building for MS Windows - it won't be used, and
331dnl can conflict with the DATADIR typedef in objidl.h
332if test no = "$mswindows"; then
333  AC_DEFINE_DIR(DATADIR, datadir, [Location of platform independent support files])
334fi
335
336AH_BOTTOM(
337[/* Use getc_unlocked() and putc_unlocked() where available, since they are
338 * faster, and we don't multithread file accesses.
339 */
340
341#ifdef HAVE_GETC_UNLOCKED
342# define GETC(F) getc_unlocked(F)
343#else
344# define GETC(F) getc(F)
345#endif
346#ifdef HAVE_PUTC_UNLOCKED
347# define PUTC(C, F) putc_unlocked(C, F)
348#else
349# define PUTC(C, F) putc(C, F)
350#endif
351
352#ifndef __cplusplus
353/* C23 added bool, false and true as keywords - let's emulate that and
354 * avoid every C file which uses these needing to include <stdbool.h>.
355 */
356# include <stdbool.h>
357#endif
358])
359
360AC_CONFIG_FILES([
361 Makefile src/Makefile doc/Makefile lib/Makefile lib/icons/Makefile
362 lib/images/Makefile
363 tests/Makefile vim/Makefile survex.iss doc/index.htm
364 survex.spec lib/Info.plist
365 ])
366AC_OUTPUT
367dnl FIXME update msvc makefile for 1.2 branch
368dnl src/msvc/config.h
Note: See TracBrowser for help on using the repository browser.