source: git/configure.ac @ 7ada45b

RELEASE/1.2debug-cidebug-ci-sanitisersstereowalls-data
Last change on this file since 7ada45b was 7ada45b, checked in by Olly Betts <olly@…>, 10 years ago

configure.ac,src/glbitmapfont.cc,src/glbitmapfont.h: For platforms
which support mmap(), just mmap the extra font data, which on Linux
seems to typically be about twice as quick as loading it via fread()
or read(). For other platforms, use read() instead of fread(), since
that seems fractionally faster, and means more code in common with
the mmap case.

  • Property mode set to 100644
File size: 12.3 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)
[0d365be]6AC_INIT([survex], [1.2.13], [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
[6b6fb4d]14COPYRIGHT_MSG="Copyright (C) 1990-2014 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
[27b8b59]97WINPROGS=
[ab27074]98if test yes = "$mswindows"; then
[40f1e82]99  WINPROGS='editwrap$(EXEEXT)'
100  AC_MSG_RESULT(building editwrap)
[55b7334]101fi
[27b8b59]102AC_SUBST(WINPROGS)
[55b7334]103
[7e2f708]104dnl The wxWidgets libraries we need:
105wx_libs="core,gl,html"
106
[a3f519b]107AC_ARG_VAR(WXCONFIG, [Old name for WX_CONFIG, accepted for compatibility])
108AC_ARG_VAR(WX_CONFIG, [wxWidgets configuration script to use to build Aven])
109: ${WX_CONFIG="$WXCONFIG"}
[bd9730c]110
[ab27074]111AM_CONDITIONAL(WIN32, [test yes = "$mswindows"])
[4d0204a]112AM_CONDITIONAL(MACOSX, [test yes = "$macosx"])
[b9bd864]113
[a3f519b]114if test -n "$WX_CONFIG" ; then
115  dnl WX_CONFIG specified - sanity check the value
[f665d6e]116  dnl don't check for --ldflags - older wx-config didn't do that
[7e2f708]117  if (exec >&5 2>&5;$WX_CONFIG --libs --cflags --cxxflags "$wx_libs";exit $?) then
[f665d6e]118    :
[b9bd864]119  else
[5297c43]120    AC_MSG_ERROR(['$WX_CONFIG --libs --cflags --cxxflags "$wx_libs"' does not work, bailing out])
[f665d6e]121  fi
122else
123  if test yes = "$macosx" ; then
124    wxdef=__WXMAC__
125  elif test yes = "$mswindows" ; then
126    wxdef=__WXMSW__
127  else
128    wxdef=__WXGTK__
129  fi
[5297c43]130  dnl See if wx-config exists and is for the correct version.
131  AC_PATH_PROGS(WX_CONFIG, [wx-config])
132  if test -n "$WX_CONFIG" ; then
133    if (exec >&5 2>&5;$WX_CONFIG --cflags "$wx_libs"|grep -e -D"$wxdef";exit $?) then
134      :
135    else
136      AC_MSG_ERROR([wxWidgets not for the right toolkit.  Run ./configure WX_CONFIG=/path/to/wx-config])
[b9bd864]137    fi
[5297c43]138  else
[a3f519b]139    AC_MSG_ERROR([wxWidgets not found.  Run ./configure WX_CONFIG=/path/to/wx-config])
[b9bd864]140  fi
[5809313]141fi
[0fd7598]142
[5627cbb]143dnl Unless the user has explicitly specified a --unicode setting, prefer
144dnl --unicode=yes if we can get it.
145case $WX_CONFIG in
146  *--unicode=*) ;;
147  *)
[7e2f708]148    if (exec >&5 2>&5;$WX_CONFIG --unicode=yes --version "$wx_libs";exit $?) ; then
[5627cbb]149      WX_CONFIG="$WX_CONFIG --unicode=yes"
[7e2f708]150    elif (exec >&5 2>&5;$WX_CONFIG --unicode=no --version "$wx_libs";exit $?) ; then
[5627cbb]151      WX_CONFIG="$WX_CONFIG --unicode=no"
152    fi ;;
153esac
[7092fcb]154
[7e2f708]155WX_LIBS=`$WX_CONFIG --libs "$wx_libs"`
[f665d6e]156dnl Needed for nvidia drivers on linux (for some setups anyway).
157AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryVersion, [WX_LIBS="$WX_LIBS -lXxf86vm"], [], [$WX_LIBS])
[5c9f6c2]158dnl We use functions from libGLU so always link -lGLU explicitly if it's
159dnl present.
[9c0b089]160AC_CHECK_LIB([GLU], [gluProject], [WX_LIBS="$WX_LIBS -lGLU"], [], [$WX_LIBS])
[5c9f6c2]161dnl We use functions from libGL so always link -lGL explicitly if it's
162dnl present.
163AC_CHECK_LIB([GL], [glPushMatrix], [WX_LIBS="$WX_LIBS -lGL"], [], [$WX_LIBS])
[f665d6e]164AC_SUBST(WX_LIBS)
[ee63994]165dnl Mac OS X has OpenGL/gl.h.
166AC_CHECK_HEADERS([GL/gl.h OpenGL/gl.h], [], [], [ ])
[de4b099]167dnl The Debian mingw-w64 packages lack GL/glext.h; Mac OS X has OpenGL/glext.h.
[ee63994]168AC_CHECK_HEADERS([GL/glext.h OpenGL/glext.h], [], [], [#include <GL/gl.h>])
[9c0b089]169
[1324d6c]170dnl Older wx-config didn't support --ldflags (2.6.3 doesn't) - error goes to
171dnl stderr, with nothing to stdout, so just ignore stderr.
[7e2f708]172WX_LDFLAGS=`$WX_CONFIG --ldflags "$wx_libs" 2> /dev/null`
[f665d6e]173AC_SUBST(WX_LDFLAGS)
[7e2f708]174WX_CFLAGS=`$WX_CONFIG --cflags "$wx_libs"`
[f665d6e]175AC_SUBST(WX_CFLAGS)
[7e2f708]176WX_CXXFLAGS=`$WX_CONFIG --cxxflags "$wx_libs"`
[f665d6e]177AC_SUBST(WX_CXXFLAGS)
178
[30b66b5]179AC_LANG_C
[a5d615f]180save_CFLAGS=$CFLAGS
181CFLAGS="$CFLAGS $WX_CFLAGS"
182AC_CHECK_SIZEOF([wxChar], [], [
183  #include <wx/defs.h>
[631fa17]184  #if wxCHECK_VERSION(2,9,0)
185  #include <wx/chartype.h>
186  #else
[a5d615f]187  #include <wx/wxchar.h>
[631fa17]188  #endif
[a5d615f]189])
190CFLAGS=$save_CFLAGS
[30b66b5]191
[c527c6e]192AVEN_LIBS=
193AC_SUBST(AVEN_LIBS)
194
[f665d6e]195dnl Check for ffmpeg
[64d06c0]196AC_CHECK_LIB(avcodec, avcodec_register_all,
[f665d6e]197  [AC_CHECK_LIB(avformat, av_register_all,
[9e516d0d]198    [AC_CHECK_LIB(swscale, sws_scale,
[7831cef]199      [AC_CHECK_LIB(avutil, av_malloc,
200        [AC_CHECK_HEADERS([libavformat/avformat.h],
[c527c6e]201          [AVEN_LIBS="-lswscale -lavformat -lavcodec -lavutil"
[7831cef]202          save_LIBS=$LIBS
[c527c6e]203          LIBS="$LIBS $AVEN_LIBS"
[8364c65f]204          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]205          AC_CHECK_DECLS([AVMEDIA_TYPE_VIDEO], [], [], [#include <libavcodec/avcodec.h>])
[8364c65f]206          AC_CHECK_DECLS([AV_CODEC_ID_NONE], [], [], [#include <libavcodec/avcodec.h>])
[64d06c0]207          AC_CHECK_DECLS([AV_PIX_FMT_YUV420P], [], [], [#include <libavutil/pixfmt.h>])
[7831cef]208          LIBS=$save_LIBS])],
209        [], [-lavformat -lavcodec -lswscale $WX_LIBS])],
[9e516d0d]210      [], [-lavformat -lavcodec $WX_LIBS])],
211    [], [-lavcodec $WX_LIBS])
212])
[c527c6e]213
214dnl Check for libproj
215AC_CHECK_LIB([proj], [pj_init_plus], [AVEN_LIBS="$AVEN_LIBS -lproj"])
[63dc4eb]216
[b6f16ea]217dnl Checks for header files.
[55302e3]218AC_HEADER_STDC
[f78ad72]219dnl don't use AC_CHECK_FUNCS for setjmp - mingw #define-s it to _setjmp
[6bec10c]220AC_CHECK_HEADERS(limits.h string.h setjmp.h sys/select.h)
[55302e3]221
222dnl Checks for typedefs, structures, and compiler characteristics.
223AC_TYPE_SIZE_T
224AC_STRUCT_TM
225AC_TYPE_SIGNAL
226
[4d0204a]227dnl check if CLOCKS_PER_SEC is defined by time.h (as ANSI says it should be)
228dnl if it isn't, assume it is 1000000, as it is on SunOS 4
229AC_TRY_COMPILE([#include <time.h>],[
230#ifndef CLOCKS_PER_SEC
231choke me
232#endif
233], , AC_DEFINE(CLOCKS_PER_SEC, 1000000, [For old systems which don't define it themselves]))
234
[8c45eea]235dnl Check for 16-bit and 32-bit integer types.
236AC_TYPE_INT16_T
237AC_TYPE_INT32_T
[647407d]238
[55302e3]239dnl Checks for library functions.
240AC_FUNC_STRFTIME
[ab27074]241if test yes != "$ac_cv_func_strftime"; then
[ad4eaf3f]242  AC_LIBOBJ(strftime)
[f017df0]243fi
[55302e3]244AC_FUNC_VPRINTF
[0a9b040]245dnl Check if there's a declaration of lround().  Below we also check for
246dnl lround() with AC_CHECK_FUNCS, which just checks if it can be linked
247dnl against.  Some platforms are missing a prototype for lround(), so
[6b536b3]248dnl both checks are useful.
[0a9b040]249AC_CHECK_DECLS([lround], [], [], [[#include <math.h>]])
[ad4eaf3f]250dnl check for strcasecmp here as well as below - this one is to get
251dnl HAVE_STRCASECMP defined if appropriate (for img.c)
[7ada45b]252AC_CHECK_FUNCS([popen signal getpwuid lround strcasecmp hypot lstat mmap])
[f66c708]253
[55302e3]254dnl difftime seems to be an ANSI invention
[96cc0ab]255AC_CHECK_FUNCS(difftime)
[55302e3]256
[e02a6a6]257dnl Much faster than using getc()/putc(), at least on Linux.
258AC_CHECK_FUNCS([getc_unlocked putc_unlocked])
[0a85859]259
[c891a7e]260AC_CHECK_FUNCS([setenv unsetenv])
261
[55302e3]262dnl try to find a case-insensitive compare
263
264strcasecmp=no
[b9bd864]265dnl The order of these tests is important.
[f665d6e]266AC_CHECK_FUNC(strcasecmp, [strcasecmp=strcasecmp])
[ab27074]267if test no = "$strcasecmp"; then
[f665d6e]268  AC_CHECK_FUNC(stricmp, [strcasecmp=stricmp])
[55302e3]269fi
[ab27074]270if test no = "$strcasecmp"; then
[f665d6e]271  AC_CHECK_FUNC(strcmpi, [strcasecmp=strcmpi])
[55302e3]272fi
[18f4759]273
[f665d6e]274AC_MSG_CHECKING([how to compare strings ignoring case])
[21fbe7d]275case $strcasecmp in
[18f4759]276no)
[ad4eaf3f]277  AC_LIBOBJ(strcasecmp)
[f665d6e]278  AC_MSG_RESULT([using own implementation of strcasecmp]) ;;
279strcasecmp)
280  AC_MSG_RESULT([strcasecmp]) ;;
[18f4759]281*)
282  AC_DEFINE_UNQUOTED(strcasecmp, "$strcasecmp",
[f665d6e]283    [strcasecmp define for systems which call it something else])
284  AC_MSG_RESULT([$strcasecmp]) ;;
[18f4759]285esac
286
[091efc6]287AC_MSG_CHECKING(for sgmltools v2 or v3)
[ec84716]288if test : != "$SGMLTOOLS" ; then
289  : ${SGMLTOOLS=sgmltools}
290  case `(exec 2>&5 ; $SGMLTOOLS --version)` in
[181bb65]291  *" version 3"*)
292    AC_MSG_RESULT([$SGMLTOOLS]) ;;
293  *" version 2"*)
[84d66990]294    AC_MSG_RESULT([$SGMLTOOLS]) ;;
[ec84716]295  *)
296    SGMLTOOLS="$MISSING sgmltools"
[84d66990]297    AC_MSG_RESULT(not found) ;;
[ec84716]298  esac
[84d66990]299else
300  AC_MSG_RESULT([$SGMLTOOLS])
[ec84716]301fi
302AC_SUBST(SGMLTOOLS)
[84d66990]303AC_ARG_VAR(SGMLTOOLS, [sgmltools command])
304
305AC_MSG_CHECKING(for docbook-to-man)
306if test : != "$DOCBOOK_TO_MAN" ; then
307  : ${DOCBOOK_TO_MAN=docbook-to-man}
308  $DOCBOOK_TO_MAN 2> /dev/null
309  if test $? = 1 ; then
310    AC_MSG_RESULT([$DOCBOOK_TO_MAN])
311  else
312    DOCBOOK_TO_MAN="$MISSING docbook-to-man"
313    AC_MSG_RESULT([not found])
314  fi
315else
316  AC_MSG_RESULT([$DOCBOOK_TO_MAN])
317fi
318AC_SUBST(DOCBOOK_TO_MAN)
319AC_ARG_VAR(DOCBOOK_TO_MAN, [docbook-to-man command])
[788ed2e]320
[b4fe9fb]321dnl extra warning flags for building with GCC
[ab27074]322if test yes = "$GCC"; then
323  if test yes = "$cross_compiling"; then
[331b3aa]324dnl    AM_CFLAGS="$AM_CFLAGS -Werror -Wall -Wunused -Wpointer-arith\
325dnl      -Wwrite-strings -Wcast-align"
[75f9a82]326dnl -Wsign-compare causes a warning with the mingw FD_SET macro, so we have
327dnl to disable it for mingw builds.
[331b3aa]328    AM_CFLAGS="$AM_CFLAGS -Wall -Wunused -Wpointer-arith\
[1809849]329      -Wwrite-strings -Wcast-align"
[b960c63]330    AM_CXXFLAGS="$AM_CXXFLAGS -Wall -Wunused -Wpointer-arith\
[75f9a82]331      -Wwrite-strings -Wcast-align -Wno-sign-compare"
[d5bd3a7]332  else
[ab27074]333    AM_CFLAGS="$AM_CFLAGS -Wall -W -Wunused -Wshadow -Wpointer-arith\
334      -Wmissing-prototypes -Wwrite-strings -Wredundant-decls -Wnested-externs\
[c70e8d2]335      -Wcast-align"
[41cfc8c]336    AM_CXXFLAGS="$AM_CXXFLAGS -Wall -W -Wunused -Wshadow -Wpointer-arith\
[0580c6a]337      -Wwrite-strings -Wcast-align"
[d5bd3a7]338  fi
[b9bd864]339  dnl too many complaints from headers, etc: -Wconversion
[96cc0ab]340fi
[b4fe9fb]341AC_SUBST(AM_CFLAGS)
342AC_SUBST(AM_CXXFLAGS)
[55302e3]343
[8c0bfb4]344dnl See if large file support is available.  Survex is unlikely to need to
345dnl process files > 2GB in size, but LFS is also needed for stat() to work
346dnl on filing systems which return 64 bit inode values, such as CIFS mounts.
347AC_SYS_LARGEFILE
348
[5341d94]349AC_ARG_ENABLE(profiling,
350[  --enable-profiling Build binaries to generate profiling information],
[21fbe7d]351[case $enableval in
[984f49e]352  yes) AM_CXXFLAGS="$AM_CXXFLAGS -pg"
[b4fe9fb]353       AM_CFLAGS="$AM_CFLAGS -pg"
[5876fcb]354       AC_MSG_RESULT(building binaries to generate profiling information);;
[5341d94]355  no) ;;
[ab27074]356  *) AC_MSG_ERROR(bad value $enableval for --enable-profiling) ;;
[5341d94]357esac])
358
[43ddd8b]359HTMLFILES="AUTHORS.htm HACKING.htm NEWS.htm OLDNEWS.htm TODO.htm index.htm 3dformat.htm 3dformat-old.htm"
[5636835]360AC_SUBST(HTMLFILES)
361
362EXTRA_TEXT="AUTHORS COPYING NEWS TODO ChangeLog"
363AC_SUBST(EXTRA_TEXT)
364
[96c5d34]365AC_SUBST_FILE(DESC)
366DESC=desc.txt
367AC_SUBST_FILE(AVENDESC)
368AVENDESC=desc-aven.txt
[27b8b59]369AC_SUBST_FILE(SVXEDITDESC)
370SVXEDITDESC=desc-svxedit.txt
[96c5d34]371
[f665d6e]372dnl Don't define DATADIR if building for MS Windows - it won't be used, and
373dnl can conflict with the DATADIR typedef in objidl.h
[4d0204a]374if test no = "$mswindows"; then
375  AC_DEFINE_DIR(DATADIR, datadir, [Location of platform independent support files])
376fi
[18f4759]377
[e02a6a6]378AH_BOTTOM(
379[/* Use getc_unlocked() and putc_unlocked() where available, since they are
380 * faster, and we don't multithread file accesses.
381 */
382
383#ifdef HAVE_GETC_UNLOCKED
384# define GETC(F) getc_unlocked(F)
385#else
386# define GETC(F) getc(F)
387#endif
388#ifdef HAVE_PUTC_UNLOCKED
389# define PUTC(C, F) putc_unlocked(C, F)
390#else
391# define PUTC(C, F) putc(C, F)
392#endif
393])
394
[f542bda]395AC_CONFIG_FILES([
396 Makefile src/Makefile doc/Makefile lib/Makefile lib/icons/Makefile
[04aa63b]397 tests/Makefile vim/Makefile survex.iss doc/index.htm doc/survex.7
[2032841]398 doc/version.ent survex.spec src/svxedit lib/survex.keys lib/Info.plist
[f542bda]399 ])
400AC_OUTPUT
[d959ab2]401dnl FIXME update msvc makefile for 1.2 branch
[cf733ae]402dnl src/msvc/config.h
Note: See TracBrowser for help on using the repository browser.