source: git/configure.ac @ 7ada45b

line_contentsstereotravis-osx
Last change on this file since 7ada45b was 7ada45b, checked in by Olly Betts <olly@…>, 7 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
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.13], [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-2014 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
97WINPROGS=
98if test yes = "$mswindows"; then
99  WINPROGS='editwrap$(EXEEXT)'
100  AC_MSG_RESULT(building editwrap)
101fi
102AC_SUBST(WINPROGS)
103
104dnl The wxWidgets libraries we need:
105wx_libs="core,gl,html"
106
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"}
110
111AM_CONDITIONAL(WIN32, [test yes = "$mswindows"])
112AM_CONDITIONAL(MACOSX, [test yes = "$macosx"])
113
114if test -n "$WX_CONFIG" ; then
115  dnl WX_CONFIG specified - sanity check the value
116  dnl don't check for --ldflags - older wx-config didn't do that
117  if (exec >&5 2>&5;$WX_CONFIG --libs --cflags --cxxflags "$wx_libs";exit $?) then
118    :
119  else
120    AC_MSG_ERROR(['$WX_CONFIG --libs --cflags --cxxflags "$wx_libs"' does not work, bailing out])
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
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])
137    fi
138  else
139    AC_MSG_ERROR([wxWidgets not found.  Run ./configure WX_CONFIG=/path/to/wx-config])
140  fi
141fi
142
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  *)
148    if (exec >&5 2>&5;$WX_CONFIG --unicode=yes --version "$wx_libs";exit $?) ; then
149      WX_CONFIG="$WX_CONFIG --unicode=yes"
150    elif (exec >&5 2>&5;$WX_CONFIG --unicode=no --version "$wx_libs";exit $?) ; then
151      WX_CONFIG="$WX_CONFIG --unicode=no"
152    fi ;;
153esac
154
155WX_LIBS=`$WX_CONFIG --libs "$wx_libs"`
156dnl Needed for nvidia drivers on linux (for some setups anyway).
157AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryVersion, [WX_LIBS="$WX_LIBS -lXxf86vm"], [], [$WX_LIBS])
158dnl We use functions from libGLU so always link -lGLU explicitly if it's
159dnl present.
160AC_CHECK_LIB([GLU], [gluProject], [WX_LIBS="$WX_LIBS -lGLU"], [], [$WX_LIBS])
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])
164AC_SUBST(WX_LIBS)
165dnl Mac OS X has OpenGL/gl.h.
166AC_CHECK_HEADERS([GL/gl.h OpenGL/gl.h], [], [], [ ])
167dnl The Debian mingw-w64 packages lack GL/glext.h; Mac OS X has OpenGL/glext.h.
168AC_CHECK_HEADERS([GL/glext.h OpenGL/glext.h], [], [], [#include <GL/gl.h>])
169
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.
172WX_LDFLAGS=`$WX_CONFIG --ldflags "$wx_libs" 2> /dev/null`
173AC_SUBST(WX_LDFLAGS)
174WX_CFLAGS=`$WX_CONFIG --cflags "$wx_libs"`
175AC_SUBST(WX_CFLAGS)
176WX_CXXFLAGS=`$WX_CONFIG --cxxflags "$wx_libs"`
177AC_SUBST(WX_CXXFLAGS)
178
179AC_LANG_C
180save_CFLAGS=$CFLAGS
181CFLAGS="$CFLAGS $WX_CFLAGS"
182AC_CHECK_SIZEOF([wxChar], [], [
183  #include <wx/defs.h>
184  #if wxCHECK_VERSION(2,9,0)
185  #include <wx/chartype.h>
186  #else
187  #include <wx/wxchar.h>
188  #endif
189])
190CFLAGS=$save_CFLAGS
191
192AVEN_LIBS=
193AC_SUBST(AVEN_LIBS)
194
195dnl Check for ffmpeg
196AC_CHECK_LIB(avcodec, avcodec_register_all,
197  [AC_CHECK_LIB(avformat, av_register_all,
198    [AC_CHECK_LIB(swscale, sws_scale,
199      [AC_CHECK_LIB(avutil, av_malloc,
200        [AC_CHECK_HEADERS([libavformat/avformat.h],
201          [AVEN_LIBS="-lswscale -lavformat -lavcodec -lavutil"
202          save_LIBS=$LIBS
203          LIBS="$LIBS $AVEN_LIBS"
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])
205          AC_CHECK_DECLS([AVMEDIA_TYPE_VIDEO], [], [], [#include <libavcodec/avcodec.h>])
206          AC_CHECK_DECLS([AV_CODEC_ID_NONE], [], [], [#include <libavcodec/avcodec.h>])
207          AC_CHECK_DECLS([AV_PIX_FMT_YUV420P], [], [], [#include <libavutil/pixfmt.h>])
208          LIBS=$save_LIBS])],
209        [], [-lavformat -lavcodec -lswscale $WX_LIBS])],
210      [], [-lavformat -lavcodec $WX_LIBS])],
211    [], [-lavcodec $WX_LIBS])
212])
213
214dnl Check for libproj
215AC_CHECK_LIB([proj], [pj_init_plus], [AVEN_LIBS="$AVEN_LIBS -lproj"])
216
217dnl Checks for header files.
218AC_HEADER_STDC
219dnl don't use AC_CHECK_FUNCS for setjmp - mingw #define-s it to _setjmp
220AC_CHECK_HEADERS(limits.h string.h setjmp.h sys/select.h)
221
222dnl Checks for typedefs, structures, and compiler characteristics.
223AC_TYPE_SIZE_T
224AC_STRUCT_TM
225AC_TYPE_SIGNAL
226
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
235dnl Check for 16-bit and 32-bit integer types.
236AC_TYPE_INT16_T
237AC_TYPE_INT32_T
238
239dnl Checks for library functions.
240AC_FUNC_STRFTIME
241if test yes != "$ac_cv_func_strftime"; then
242  AC_LIBOBJ(strftime)
243fi
244AC_FUNC_VPRINTF
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
248dnl both checks are useful.
249AC_CHECK_DECLS([lround], [], [], [[#include <math.h>]])
250dnl check for strcasecmp here as well as below - this one is to get
251dnl HAVE_STRCASECMP defined if appropriate (for img.c)
252AC_CHECK_FUNCS([popen signal getpwuid lround strcasecmp hypot lstat mmap])
253
254dnl difftime seems to be an ANSI invention
255AC_CHECK_FUNCS(difftime)
256
257dnl Much faster than using getc()/putc(), at least on Linux.
258AC_CHECK_FUNCS([getc_unlocked putc_unlocked])
259
260AC_CHECK_FUNCS([setenv unsetenv])
261
262dnl try to find a case-insensitive compare
263
264strcasecmp=no
265dnl The order of these tests is important.
266AC_CHECK_FUNC(strcasecmp, [strcasecmp=strcasecmp])
267if test no = "$strcasecmp"; then
268  AC_CHECK_FUNC(stricmp, [strcasecmp=stricmp])
269fi
270if test no = "$strcasecmp"; then
271  AC_CHECK_FUNC(strcmpi, [strcasecmp=strcmpi])
272fi
273
274AC_MSG_CHECKING([how to compare strings ignoring case])
275case $strcasecmp in
276no)
277  AC_LIBOBJ(strcasecmp)
278  AC_MSG_RESULT([using own implementation of strcasecmp]) ;;
279strcasecmp)
280  AC_MSG_RESULT([strcasecmp]) ;;
281*)
282  AC_DEFINE_UNQUOTED(strcasecmp, "$strcasecmp",
283    [strcasecmp define for systems which call it something else])
284  AC_MSG_RESULT([$strcasecmp]) ;;
285esac
286
287AC_MSG_CHECKING(for sgmltools v2 or v3)
288if test : != "$SGMLTOOLS" ; then
289  : ${SGMLTOOLS=sgmltools}
290  case `(exec 2>&5 ; $SGMLTOOLS --version)` in
291  *" version 3"*)
292    AC_MSG_RESULT([$SGMLTOOLS]) ;;
293  *" version 2"*)
294    AC_MSG_RESULT([$SGMLTOOLS]) ;;
295  *)
296    SGMLTOOLS="$MISSING sgmltools"
297    AC_MSG_RESULT(not found) ;;
298  esac
299else
300  AC_MSG_RESULT([$SGMLTOOLS])
301fi
302AC_SUBST(SGMLTOOLS)
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])
320
321dnl extra warning flags for building with GCC
322if test yes = "$GCC"; then
323  if test yes = "$cross_compiling"; then
324dnl    AM_CFLAGS="$AM_CFLAGS -Werror -Wall -Wunused -Wpointer-arith\
325dnl      -Wwrite-strings -Wcast-align"
326dnl -Wsign-compare causes a warning with the mingw FD_SET macro, so we have
327dnl to disable it for mingw builds.
328    AM_CFLAGS="$AM_CFLAGS -Wall -Wunused -Wpointer-arith\
329      -Wwrite-strings -Wcast-align"
330    AM_CXXFLAGS="$AM_CXXFLAGS -Wall -Wunused -Wpointer-arith\
331      -Wwrite-strings -Wcast-align -Wno-sign-compare"
332  else
333    AM_CFLAGS="$AM_CFLAGS -Wall -W -Wunused -Wshadow -Wpointer-arith\
334      -Wmissing-prototypes -Wwrite-strings -Wredundant-decls -Wnested-externs\
335      -Wcast-align"
336    AM_CXXFLAGS="$AM_CXXFLAGS -Wall -W -Wunused -Wshadow -Wpointer-arith\
337      -Wwrite-strings -Wcast-align"
338  fi
339  dnl too many complaints from headers, etc: -Wconversion
340fi
341AC_SUBST(AM_CFLAGS)
342AC_SUBST(AM_CXXFLAGS)
343
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
349AC_ARG_ENABLE(profiling,
350[  --enable-profiling Build binaries to generate profiling information],
351[case $enableval in
352  yes) AM_CXXFLAGS="$AM_CXXFLAGS -pg"
353       AM_CFLAGS="$AM_CFLAGS -pg"
354       AC_MSG_RESULT(building binaries to generate profiling information);;
355  no) ;;
356  *) AC_MSG_ERROR(bad value $enableval for --enable-profiling) ;;
357esac])
358
359HTMLFILES="AUTHORS.htm HACKING.htm NEWS.htm OLDNEWS.htm TODO.htm index.htm 3dformat.htm 3dformat-old.htm"
360AC_SUBST(HTMLFILES)
361
362EXTRA_TEXT="AUTHORS COPYING NEWS TODO ChangeLog"
363AC_SUBST(EXTRA_TEXT)
364
365AC_SUBST_FILE(DESC)
366DESC=desc.txt
367AC_SUBST_FILE(AVENDESC)
368AVENDESC=desc-aven.txt
369AC_SUBST_FILE(SVXEDITDESC)
370SVXEDITDESC=desc-svxedit.txt
371
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
374if test no = "$mswindows"; then
375  AC_DEFINE_DIR(DATADIR, datadir, [Location of platform independent support files])
376fi
377
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
395AC_CONFIG_FILES([
396 Makefile src/Makefile doc/Makefile lib/Makefile lib/icons/Makefile
397 tests/Makefile vim/Makefile survex.iss doc/index.htm doc/survex.7
398 doc/version.ent survex.spec src/svxedit lib/survex.keys lib/Info.plist
399 ])
400AC_OUTPUT
401dnl FIXME update msvc makefile for 1.2 branch
402dnl src/msvc/config.h
Note: See TracBrowser for help on using the repository browser.