1 | dnl Process this file with autoconf to produce a configure script |
---|
2 | |
---|
3 | dnl Need autoconf 2.50 or later for AC_ARG_VAR. 2.59 has been around for |
---|
4 | dnl long enough, that we might as well just require that. |
---|
5 | AC_PREREQ(2.59) |
---|
6 | AC_INIT([survex], [1.4.16], [https://trac.survex.com/]) |
---|
7 | AM_INIT_AUTOMAKE([1.5 gnu -Wall -Wportability -Werror]) |
---|
8 | RELEASE=1 |
---|
9 | |
---|
10 | AC_SUBST(RELEASE) |
---|
11 | AC_CONFIG_HEADERS([config.h]) |
---|
12 | AC_CONFIG_SRCDIR([src/aven.cc]) |
---|
13 | |
---|
14 | COPYRIGHT_MSG="Copyright (C) 1990-2025 Olly Betts" |
---|
15 | AVEN_COPYRIGHT_MSG="Copyright (C) 1999-2003,2005,2006 Mark R. Shinwell" |
---|
16 | |
---|
17 | AC_DEFINE_UNQUOTED(COPYRIGHT_MSG, ["$COPYRIGHT_MSG"], [Copyright Message]) |
---|
18 | AC_DEFINE_UNQUOTED(AVEN_COPYRIGHT_MSG, ["$AVEN_COPYRIGHT_MSG"], |
---|
19 | [Copyright Message for Aven]) |
---|
20 | |
---|
21 | AC_SUBST(COPYRIGHT_MSG) |
---|
22 | AC_SUBST(AVEN_COPYRIGHT_MSG) |
---|
23 | |
---|
24 | COPYRIGHT_MSG_UTF8=`echo "$COPYRIGHT_MSG"|sed 's/(C)/©/'` |
---|
25 | AVEN_COPYRIGHT_MSG_UTF8=`echo "$AVEN_COPYRIGHT_MSG"|sed 's/(C)/©/'` |
---|
26 | |
---|
27 | AC_DEFINE_UNQUOTED(COPYRIGHT_MSG_UTF8, ["$COPYRIGHT_MSG_UTF8"], |
---|
28 | [Copyright Message in UTF-8]) |
---|
29 | AC_DEFINE_UNQUOTED(AVEN_COPYRIGHT_MSG_UTF8, ["$AVEN_COPYRIGHT_MSG_UTF8"], |
---|
30 | [Copyright Message for Aven in UTF-8]) |
---|
31 | |
---|
32 | dnl set PRETTYPACKAGE to PACKAGE with the first character capitalised |
---|
33 | PRETTYPACKAGE=`echo "$PACKAGE"|cut -b1|tr a-z A-Z``echo "$PACKAGE"|cut -b2-` |
---|
34 | AC_DEFINE_UNQUOTED(PRETTYPACKAGE, "$PRETTYPACKAGE", |
---|
35 | [Name of package (capitalised)]) |
---|
36 | AC_SUBST(PRETTYPACKAGE) |
---|
37 | |
---|
38 | dnl set COMMAVERSION to VERSION with the dots replaced by commas - |
---|
39 | dnl e.g. "0,99" or "1,0,22" |
---|
40 | COMMAVERSION=`echo "$VERSION"|tr '.' ','` |
---|
41 | AC_DEFINE_UNQUOTED(COMMAVERSION, $COMMAVERSION, |
---|
42 | [Version number of package (comma-separated)]) |
---|
43 | AC_SUBST(COMMAVERSION) |
---|
44 | |
---|
45 | PKGDOCDIR='${prefix}/share/doc/${PACKAGE}' |
---|
46 | AC_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]) ;; |
---|
51 | esac |
---|
52 | PKGDOCDIR="$enableval" |
---|
53 | ] |
---|
54 | ) |
---|
55 | PKGDOCDIR_EXPANDED=` |
---|
56 | test NONE = "$prefix" && prefix="$ac_default_prefix" |
---|
57 | test NONE = "$exec_prefix" && exec_prefix="$prefix" |
---|
58 | eval echo "$PKGDOCDIR" |
---|
59 | ` |
---|
60 | AC_SUBST(PKGDOCDIR) |
---|
61 | AC_SUBST(PKGDOCDIR_EXPANDED) |
---|
62 | |
---|
63 | AC_CANONICAL_HOST |
---|
64 | |
---|
65 | dnl Checks for programs. |
---|
66 | AC_PROG_CC |
---|
67 | AC_PROG_CPP |
---|
68 | |
---|
69 | AC_PROG_CXX |
---|
70 | AC_PROG_CXXCPP |
---|
71 | |
---|
72 | dnl Probe for any options needed to enable C++11 support. |
---|
73 | AX_CXX_COMPILE_STDCXX_11 |
---|
74 | |
---|
75 | AM_PROG_CC_C_O |
---|
76 | |
---|
77 | AC_LANG([C]) |
---|
78 | |
---|
79 | AC_EXEEXT |
---|
80 | AC_OBJEXT |
---|
81 | |
---|
82 | mswindows=no |
---|
83 | macos=no |
---|
84 | case $host_os in |
---|
85 | darwin*) macos=yes ;; |
---|
86 | *mingw*|*cygwin*|windows*) mswindows=yes ;; |
---|
87 | esac |
---|
88 | |
---|
89 | AC_C_BIGENDIAN |
---|
90 | |
---|
91 | AC_ARG_VAR(STRIP, [Command for discarding symbols from object files]) |
---|
92 | AC_PATH_TOOL(STRIP, strip, [echo "not stripping "]) |
---|
93 | |
---|
94 | AC_CHECK_LIB(m, sqrt) |
---|
95 | |
---|
96 | dnl x86 has excess precision issues with 387 FP instructions, which are |
---|
97 | dnl avoided by using SSE instructions instead. By default we require SSE2 |
---|
98 | dnl which for Intel means a Pentium 4 which was launched in 2000; Pentium |
---|
99 | dnl 3 was finally discontinued in 2007. |
---|
100 | AC_ARG_ENABLE([sse], |
---|
101 | [AS_HELP_STRING([--disable-sse], |
---|
102 | [disable use of SSE FP instructions on x86])] |
---|
103 | [AS_HELP_STRING([[--enable-sse[=sse|sse2]]], |
---|
104 | [set which SSE FP instructions to use on x86 (default: sse2)])], |
---|
105 | [case ${enableval} in |
---|
106 | sse|sse2|yes|no) ;; |
---|
107 | *) AC_MSG_ERROR([bad value ${enableval} for --enable-sse or --disable-sse]) ;; |
---|
108 | esac], |
---|
109 | [enable_sse=yes]) |
---|
110 | |
---|
111 | AC_MSG_CHECKING([whether to use SSE instructions on x86]) |
---|
112 | case $host_cpu in |
---|
113 | i*86) |
---|
114 | if test "$enable_sse" = no ; then |
---|
115 | AC_MSG_RESULT([no - WARNING: Testsuite will probably fail]) |
---|
116 | else |
---|
117 | dnl Default to sse2. |
---|
118 | test "$enable_sse" != yes || enable_sse=sse2 |
---|
119 | if test yes = "$GXX"; then |
---|
120 | AC_MSG_RESULT([yes (configure with --disable-sse to disable)]) |
---|
121 | dnl We can unconditionally use -mtune=generic as it was added in GCC |
---|
122 | dnl 4.2, and supported at least as far back as clang 3.0. |
---|
123 | AM_CXXFLAGS="$AM_CXXFLAGS -mfpmath=sse -m$enable_sse -mtune=generic" |
---|
124 | else |
---|
125 | AC_MSG_RESULT([don't know how to for compiler $CXX]) |
---|
126 | fi |
---|
127 | fi |
---|
128 | ;; |
---|
129 | *) |
---|
130 | AC_MSG_RESULT([non-x86 arch ($host_cpu)]) ;; |
---|
131 | esac |
---|
132 | |
---|
133 | dnl The wxWidgets libraries we need: |
---|
134 | wx_libs="core,gl" |
---|
135 | |
---|
136 | AC_ARG_VAR(WXCONFIG, [Old name for WX_CONFIG, accepted for compatibility]) |
---|
137 | AC_ARG_VAR(WX_CONFIG, [wxWidgets configuration script to use to build Aven]) |
---|
138 | : ${WX_CONFIG="$WXCONFIG"} |
---|
139 | |
---|
140 | AM_CONDITIONAL(WIN32, [test yes = "$mswindows"]) |
---|
141 | AM_CONDITIONAL(MACOS, [test yes = "$macos"]) |
---|
142 | |
---|
143 | if test -n "$WX_CONFIG" ; then |
---|
144 | dnl WX_CONFIG specified - sanity check the value |
---|
145 | dnl don't check for --ldflags - older wx-config didn't do that |
---|
146 | if (exec >&5 2>&5;$WX_CONFIG --libs --cflags --cxxflags "$wx_libs";exit $?) then |
---|
147 | : |
---|
148 | else |
---|
149 | AC_MSG_ERROR(['$WX_CONFIG --libs --cflags --cxxflags "$wx_libs"' does not work, bailing out]) |
---|
150 | fi |
---|
151 | else |
---|
152 | if test yes = "$macos" ; then |
---|
153 | wxdef=__WXMAC__ |
---|
154 | elif test yes = "$mswindows" ; then |
---|
155 | wxdef=__WXMSW__ |
---|
156 | else |
---|
157 | wxdef=__WXGTK__ |
---|
158 | fi |
---|
159 | dnl See if wx-config exists and is for the correct version. |
---|
160 | dnl Fedora install wx3's wx-config as wx-config-3.0, so look for that in |
---|
161 | dnl preference. |
---|
162 | dnl Arch Linux uses wx-config-gtk3. |
---|
163 | AC_PATH_PROGS(WX_CONFIG, [wx-config-3.0 wx-config-gtk3 wx-config]) |
---|
164 | if test -n "$WX_CONFIG" ; then |
---|
165 | if (exec >&5 2>&5;$WX_CONFIG --cflags "$wx_libs"|grep -e -D"$wxdef";exit $?) then |
---|
166 | : |
---|
167 | else |
---|
168 | AC_MSG_ERROR([wxWidgets not for the right toolkit. Run ./configure WX_CONFIG=/path/to/wx-config]) |
---|
169 | fi |
---|
170 | else |
---|
171 | AC_MSG_ERROR([wxWidgets not found. Run ./configure WX_CONFIG=/path/to/wx-config]) |
---|
172 | fi |
---|
173 | fi |
---|
174 | |
---|
175 | dnl Unless the user has explicitly specified a --unicode setting, prefer |
---|
176 | dnl --unicode=yes if we can get it. |
---|
177 | case $WX_CONFIG in |
---|
178 | *--unicode=*) ;; |
---|
179 | *) |
---|
180 | if (exec >&5 2>&5;$WX_CONFIG --unicode=yes --version "$wx_libs";exit $?) ; then |
---|
181 | WX_CONFIG="$WX_CONFIG --unicode=yes" |
---|
182 | elif (exec >&5 2>&5;$WX_CONFIG --unicode=no --version "$wx_libs";exit $?) ; then |
---|
183 | WX_CONFIG="$WX_CONFIG --unicode=no" |
---|
184 | fi ;; |
---|
185 | esac |
---|
186 | |
---|
187 | WX_LIBS=`$WX_CONFIG --libs "$wx_libs"` |
---|
188 | dnl Needed for nvidia drivers on linux (for some setups anyway). |
---|
189 | AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryVersion, [WX_LIBS="$WX_LIBS -lXxf86vm"], [], [$WX_LIBS]) |
---|
190 | |
---|
191 | save_LIBS=$LIBS |
---|
192 | dnl Check if we need a library for OpenGL functions. Usually it's the "GL" |
---|
193 | dnl library, but it's called opengl32 on Microsoft Windows). |
---|
194 | AC_SEARCH_LIBS([glPushMatrix], [GL opengl32], [WX_LIBS="$WX_LIBS $ac_cv_search_glPushMatrix"], [], [$WX_LIBS]) |
---|
195 | dnl Check if we need a library for GLU functions. Usually it's the "GLU" |
---|
196 | dnl library, but it's called glu32 on Microsoft Windows). |
---|
197 | AC_SEARCH_LIBS([gluProject], [GLU glu32], [WX_LIBS="$WX_LIBS $ac_cv_search_gluProject"], [], [$WX_LIBS]) |
---|
198 | LIBS=$save_LIBS |
---|
199 | |
---|
200 | AC_SUBST(WX_LIBS) |
---|
201 | dnl macOS has OpenGL/gl.h and OpenGL/glu.h. |
---|
202 | AC_CHECK_HEADERS([GL/gl.h OpenGL/gl.h], [], [], [ ]) |
---|
203 | AC_CHECK_HEADERS([GL/glu.h OpenGL/glu.h], [], [], [ ]) |
---|
204 | dnl Older Debian mingw-w64 packages lacked GL/glext.h; macOS has OpenGL/glext.h. |
---|
205 | dnl Requires an explicit include of gl.h first. |
---|
206 | AC_CHECK_HEADERS([GL/glext.h OpenGL/glext.h], [], [], [ |
---|
207 | #ifdef HAVE_GL_GL_H |
---|
208 | # include <GL/gl.h> |
---|
209 | #elif defined HAVE_OPENGL_GL_H |
---|
210 | # include <OpenGL/gl.h> |
---|
211 | #endif |
---|
212 | ]) |
---|
213 | |
---|
214 | WX_CFLAGS=`$WX_CONFIG --cflags "$wx_libs"` |
---|
215 | AC_SUBST(WX_CFLAGS) |
---|
216 | WX_CXXFLAGS=`$WX_CONFIG --cxxflags "$wx_libs"` |
---|
217 | AC_SUBST(WX_CXXFLAGS) |
---|
218 | |
---|
219 | AC_LANG([C]) |
---|
220 | save_CFLAGS=$CFLAGS |
---|
221 | CFLAGS="$CFLAGS $WX_CFLAGS" |
---|
222 | AC_CHECK_SIZEOF([wxChar], [], [ |
---|
223 | #include <wx/defs.h> |
---|
224 | #include <wx/chartype.h> |
---|
225 | ]) |
---|
226 | CFLAGS=$save_CFLAGS |
---|
227 | |
---|
228 | dnl Check for FFmpeg libraries. |
---|
229 | PKG_CHECK_MODULES([FFMPEG], [libavcodec libavformat libswscale libavutil], [ |
---|
230 | AC_DEFINE([WITH_FFMPEG], [1], [Use FFmpeg for movie export]) |
---|
231 | save_CXXFLAGS=$CXXFLAGS |
---|
232 | save_LIBS=$LIBS |
---|
233 | CFLAGS="$CFLAGS $FFMPEG_CFLAGS" |
---|
234 | LIBS="$LIBS $FFMPEG_LIBS" |
---|
235 | 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]) |
---|
236 | AC_CHECK_DECLS([AVMEDIA_TYPE_VIDEO], [], [], [#include <libavcodec/avcodec.h>]) |
---|
237 | AC_CHECK_DECLS([AV_CODEC_ID_NONE], [], [], [#include <libavcodec/avcodec.h>]) |
---|
238 | AC_CHECK_DECLS([AV_PIX_FMT_RGB24], [], [], [#include <libavutil/pixfmt.h>]) |
---|
239 | AC_CHECK_DECLS([AV_PIX_FMT_YUV420P], [], [], [#include <libavutil/pixfmt.h>]) |
---|
240 | CXXFLAGS=$save_CXXFLAGS |
---|
241 | LIBS=$save_LIBS |
---|
242 | ], [ |
---|
243 | dnl Build without movie export feature. |
---|
244 | ]) |
---|
245 | AC_SUBST([FFMPEG_LIBS]) |
---|
246 | AC_SUBST([FFMPEG_CFLAGS]) |
---|
247 | |
---|
248 | dnl Check for PROJ. |
---|
249 | PKG_CHECK_MODULES([PROJ], [proj >= 6.2.0], [ |
---|
250 | ], [ |
---|
251 | dnl pkg-config support in proj seems quite new, so probe directly if not |
---|
252 | dnl found. We need proj_create_crs_to_crs_from_pj() which was added in |
---|
253 | dnl 6.2.0. |
---|
254 | AC_CHECK_LIB([proj], [proj_create_crs_to_crs_from_pj], [ |
---|
255 | PROJ_LIBS=-lproj |
---|
256 | PROJ_CFLAGS= |
---|
257 | ], [ |
---|
258 | AC_MSG_ERROR([PROJ required for coordinate transformations]) |
---|
259 | ]) |
---|
260 | ]) |
---|
261 | AC_SUBST([PROJ_LIBS]) |
---|
262 | AC_SUBST([PROJ_CFLAGS]) |
---|
263 | |
---|
264 | dnl Check for GDAL. |
---|
265 | PKG_CHECK_MODULES([GDAL], [gdal >= 2.3], [ |
---|
266 | AC_DEFINE([HAVE_GDAL], [1], [Define to 1 if you have the 'GDAL' library.]) |
---|
267 | ], [ |
---|
268 | if test "$mswindows" = no ; then |
---|
269 | AC_MSG_ERROR([GDAL required for geodata handling]) |
---|
270 | else |
---|
271 | AC_MSG_WARN([GDAL required for geodata handling]) |
---|
272 | fi |
---|
273 | ]) |
---|
274 | AC_SUBST([GDAL_LIBS]) |
---|
275 | AC_SUBST([GDAL_CFLAGS]) |
---|
276 | |
---|
277 | dnl Checks for header files. |
---|
278 | |
---|
279 | AC_CHECK_HEADERS(string.h) |
---|
280 | |
---|
281 | AC_CHECK_FUNCS([popen hypot mmap strdup]) |
---|
282 | |
---|
283 | dnl We don't access a FILE* from multiple threads and using the unlocked |
---|
284 | dnl versions has significantly less overhead, especially when reading/writing |
---|
285 | dnl byte-by-byte. These are specified by POSIX: |
---|
286 | AC_CHECK_FUNCS([getc_unlocked putc_unlocked putchar_unlocked]) |
---|
287 | dnl These are GNU extensions in glibc: |
---|
288 | AC_CHECK_FUNCS([feof_unlocked ferror_unlocked fread_unlocked fwrite_unlocked]) |
---|
289 | |
---|
290 | AC_CHECK_FUNCS([setenv unsetenv]) |
---|
291 | |
---|
292 | AC_CHECK_FUNCS([fmemopen]) |
---|
293 | |
---|
294 | dnl Microsoft-specific functions which support positional argument specifiers. |
---|
295 | AC_CHECK_FUNCS([_vfprintf_p _vsprintf_p]) |
---|
296 | |
---|
297 | AC_PATH_PROG([SPHINX_BUILD], [sphinx-build], [$MISSING sphinx-build]) |
---|
298 | AC_ARG_VAR([SPHINX_BUILD], [sphinx-build from python3-sphinx]) |
---|
299 | |
---|
300 | AC_PATH_PROG([MSGFMT], [msgfmt], [$MISSING msgfmt]) |
---|
301 | AC_ARG_VAR([MSGFMT], [msgfmt from gettext]) |
---|
302 | |
---|
303 | AC_ARG_ENABLE([werror], |
---|
304 | [AS_HELP_STRING([--enable-werror], [enable treating compiler warnings as errors [default=no]])], |
---|
305 | [case ${enableval} in |
---|
306 | yes|no) ;; |
---|
307 | *) AC_MSG_ERROR([bad value ${enableval} for --enable-werror]) ;; |
---|
308 | esac], |
---|
309 | [enable_werror=no]) |
---|
310 | |
---|
311 | dnl Put -Werror or equivalent in its own make variable so that it can easily |
---|
312 | dnl be overridden by `make WERROR=` if needed during development (e.g. if |
---|
313 | dnl you want to get a full list of compile warnings to fix rather than |
---|
314 | dnl stopping at the first file with warnings). |
---|
315 | WERROR= |
---|
316 | AC_SUBST([WERROR]) |
---|
317 | |
---|
318 | dnl extra warning flags for building with GCC |
---|
319 | if test yes = "$GCC"; then |
---|
320 | WERROR=-Werror |
---|
321 | if test yes = "$cross_compiling"; then |
---|
322 | dnl AM_CFLAGS="$AM_CFLAGS -Werror -Wall -Wunused -Wpointer-arith\ |
---|
323 | dnl -Wwrite-strings -Wcast-align" |
---|
324 | dnl -Wsign-compare causes a warning with the mingw FD_SET macro, so we have |
---|
325 | dnl to disable it for mingw builds. |
---|
326 | AM_CFLAGS="$AM_CFLAGS -Wall -Wunused -Wpointer-arith\ |
---|
327 | -Wwrite-strings -Wcast-align" |
---|
328 | AM_CXXFLAGS="$AM_CXXFLAGS -Wall -Wunused -Wpointer-arith\ |
---|
329 | -Wwrite-strings -Wcast-align -Wno-sign-compare" |
---|
330 | else |
---|
331 | AM_CFLAGS="$AM_CFLAGS -Wall -W -Wunused -Wshadow -Wpointer-arith\ |
---|
332 | -Wmissing-prototypes -Wwrite-strings -Wredundant-decls -Wnested-externs\ |
---|
333 | -Wcast-align" |
---|
334 | AM_CXXFLAGS="$AM_CXXFLAGS -Wall -W -Wunused -Wshadow -Wpointer-arith\ |
---|
335 | -Wwrite-strings -Wcast-align" |
---|
336 | fi |
---|
337 | dnl too many complaints from headers, etc: -Wconversion |
---|
338 | fi |
---|
339 | AC_SUBST(AM_CFLAGS) |
---|
340 | AC_SUBST(AM_CXXFLAGS) |
---|
341 | |
---|
342 | if test x$enable_werror != xyes; then |
---|
343 | WERROR= |
---|
344 | fi |
---|
345 | |
---|
346 | dnl See if large file support is available. Survex is unlikely to need to |
---|
347 | dnl process files > 2GB in size, but LFS is also needed for stat() to work |
---|
348 | dnl on filing systems which return 64 bit inode values, such as CIFS mounts. |
---|
349 | AC_SYS_LARGEFILE |
---|
350 | |
---|
351 | AC_ARG_ENABLE(profiling, |
---|
352 | [ --enable-profiling Build binaries to generate profiling information], |
---|
353 | [case $enableval in |
---|
354 | yes) AM_CXXFLAGS="$AM_CXXFLAGS -pg" |
---|
355 | AM_CFLAGS="$AM_CFLAGS -pg" |
---|
356 | AC_MSG_RESULT(building binaries to generate profiling information);; |
---|
357 | no) ;; |
---|
358 | *) AC_MSG_ERROR(bad value $enableval for --enable-profiling) ;; |
---|
359 | esac]) |
---|
360 | |
---|
361 | EXTRA_TEXT="AUTHORS COPYING NEWS TODO ChangeLog" |
---|
362 | AC_SUBST(EXTRA_TEXT) |
---|
363 | |
---|
364 | AC_SUBST_FILE(DESC) |
---|
365 | DESC=desc.txt |
---|
366 | AC_SUBST_FILE(AVENDESC) |
---|
367 | AVENDESC=desc-aven.txt |
---|
368 | |
---|
369 | dnl Don't define DATADIR if building for MS Windows - it won't be used, and |
---|
370 | dnl can conflict with the DATADIR typedef in objidl.h |
---|
371 | if test no = "$mswindows"; then |
---|
372 | AC_DEFINE_DIR(DATADIR, datadir, [Location of platform independent support files]) |
---|
373 | fi |
---|
374 | |
---|
375 | AH_BOTTOM( |
---|
376 | [/* Use _unlocked() variants of stdio functions where available, since they are |
---|
377 | * faster, and we don't multithread file accesses. |
---|
378 | */ |
---|
379 | |
---|
380 | #ifdef HAVE_FEOF_UNLOCKED |
---|
381 | # define FEOF(F) feof_unlocked(F) |
---|
382 | #else |
---|
383 | # define FEOF(F) feof(F) |
---|
384 | #endif |
---|
385 | |
---|
386 | #ifdef HAVE_FERROR_UNLOCKED |
---|
387 | # define FERROR(F) ferror_unlocked(F) |
---|
388 | #else |
---|
389 | # define FERROR(F) ferror(F) |
---|
390 | #endif |
---|
391 | |
---|
392 | #ifdef HAVE_FREAD_UNLOCKED |
---|
393 | # define FREAD(P, S, N, F) fread_unlocked(P, S, N, F) |
---|
394 | #else |
---|
395 | # define FREAD(P, S, N, F) fread(P, S, N, F) |
---|
396 | #endif |
---|
397 | |
---|
398 | /* If we call this FWRITE() then macos errors out on uses with: |
---|
399 | * error: called object type 'int' is not a function or function pointer |
---|
400 | * Unclear what's going on - a conditional `#undef FWRITE` before defining |
---|
401 | * doesn't help. |
---|
402 | */ |
---|
403 | #ifdef HAVE_FWRITE_UNLOCKED |
---|
404 | # define FWRITE_(P, S, N, F) fwrite_unlocked(P, S, N, F) |
---|
405 | #else |
---|
406 | # define FWRITE_(P, S, N, F) fwrite(P, S, N, F) |
---|
407 | #endif |
---|
408 | |
---|
409 | #ifdef HAVE_GETC_UNLOCKED |
---|
410 | # define GETC(F) getc_unlocked(F) |
---|
411 | #else |
---|
412 | # define GETC(F) getc(F) |
---|
413 | #endif |
---|
414 | |
---|
415 | #ifdef HAVE_PUTC_UNLOCKED |
---|
416 | # define PUTC(C, F) putc_unlocked(C, F) |
---|
417 | #else |
---|
418 | # define PUTC(C, F) putc(C, F) |
---|
419 | #endif |
---|
420 | |
---|
421 | #ifdef HAVE_PUTC_UNLOCKED |
---|
422 | # define PUTCHAR(C) putchar_unlocked(C) |
---|
423 | #else |
---|
424 | # define PUTCHAR(C) putchar(C) |
---|
425 | #endif |
---|
426 | |
---|
427 | #ifndef __cplusplus |
---|
428 | /* C23 added bool, false and true as keywords - let's emulate that and |
---|
429 | * avoid every C file which uses these needing to include <stdbool.h>. |
---|
430 | */ |
---|
431 | # include <stdbool.h> |
---|
432 | #endif |
---|
433 | ]) |
---|
434 | |
---|
435 | AC_CONFIG_FILES([ |
---|
436 | Makefile src/Makefile doc/Makefile lib/Makefile lib/icons/Makefile |
---|
437 | lib/images/Makefile |
---|
438 | tests/Makefile vim/Makefile survex.iss doc/index.htm |
---|
439 | survex.spec lib/Info.plist |
---|
440 | ]) |
---|
441 | AC_OUTPUT |
---|