1#############################################################################
2#
3# MODULE:   	Grass Compilation
4# AUTHOR(S):	Original author unknown - probably CERL
5#   	    	Eric G. Miller - egm2 jps.net
6#   	    	Justin Hickey - Thailand - jhickey hpcc.nectec.or.th
7#   	    	Markus Neteler - Germany/Italy - neteler itc.it
8#   	    	Nicklas Larsson (update to autoconfig 2.69)
9# PURPOSE:  	This configure runs all the tests to determine what components
10#   	    	are installed on the current system. It also defines certain
11#   	    	configuration variables for compilation and installation.
12# COPYRIGHT:    (C) 2000-2021 by the GRASS Development Team
13#
14#               This program is free software under the GNU General
15#   	    	Public License (>=v2). Read the file COPYING that
16#   	    	comes with GRASS for details.
17#
18# MANUAL:       http://www.gnu.org/software/autoconf/manual/autoconf.html
19#               http://savannah.gnu.org/projects/autoconf/
20# Website for   config.guess, config.sub:
21#               wget http://git.savannah.gnu.org/cgit/config.git/plain/config.guess
22#               wget http://git.savannah.gnu.org/cgit/config.git/plain/config.sub
23#               Note: use autoconf-2.69
24#############################################################################
25
26define([AC_CACHE_LOAD], )
27define([AC_CACHE_SAVE], )
28define([AC_CACHE_VAL], [
29$2
30])
31
32AC_INIT
33AC_CONFIG_SRCDIR([configure.ac])
34AC_PREREQ([2.69])
35AC_CONFIG_HEADER(include/config.h)
36AC_CANONICAL_HOST
37AC_PROG_CC
38LOC_EXEEXT
39AC_SUBST(MINGW32)
40
41# Check for full floating-point support, including Infinity and NaN
42IEEEFLAG=
43LOC_CHECK_FP_INF_NAN([],
44[],
45[ ac_save_cflags=${CFLAGS}
46  CFLAGS=-mieee
47  LOC_CHECK_FP_INF_NAN([ with -mieee],
48    [IEEEFLAG="-mieee"],
49    [AC_MSG_WARN([*** Incomplete floating-point support.])],
50    [AC_MSG_ERROR([*** INTERNAL CONFIGURE ERROR])])
51  CFLAGS=${ac_save_cflags}],
52[ LOC_CHECK_CC_MIEEE ])
53CFLAGS="$CFLAGS $IEEEFLAG"
54
55# Set BINDIR
56
57if test -n "${bindir}"; then
58BINDIR="${bindir}"
59else
60BINDIR=/usr/local/bin
61fi
62AC_SUBST(BINDIR)
63
64# Set SRCDIR and DSTDIR
65
66AC_PATH_PROG(pwd, pwd, pwd)
67
68if test "$MINGW32" = yes ; then
69  winpwd="pwd -W"
70else
71  winpwd="$pwd"
72fi
73
74AC_MSG_CHECKING(for source directory)
75
76if test -z "$srcdir" ; then
77  SRCDIR=`$pwd`
78else
79  SRCDIR=`(cd "$srcdir" ; $pwd)`
80fi
81
82AC_MSG_RESULT("$SRCDIR")
83
84AC_MSG_CHECKING(for build directory)
85
86DSTDIR=`$pwd`
87WINDSTDIR=`$winpwd`
88
89AC_MSG_RESULT("$DSTDIR")
90
91AC_SUBST(SRCDIR)
92AC_SUBST(DSTDIR)
93
94# Set ARCH
95
96ARCH=
97if test -z "${host}"; then
98ARCH="unknown"
99else
100ARCH="${host}"
101fi
102
103AC_SUBST(ARCH)
104
105# Set GISBASE and GRASS_BIN
106
107GISBASE="${WINDSTDIR}/dist.${ARCH}"
108GRASS_BIN="${DSTDIR}/bin.${ARCH}"
109
110AC_SUBST(GISBASE)
111AC_SUBST(GRASS_BIN)
112
113# Set GRASS_VERSION_*
114
115GRASS_VERSION_FILE=include/VERSION
116GRASS_VERSION_MAJOR=`sed -n 1p "${GRASS_VERSION_FILE}"`
117GRASS_VERSION_MINOR=`sed -n 2p "${GRASS_VERSION_FILE}"`
118GRASS_VERSION_RELEASE=`sed -n 3p "${GRASS_VERSION_FILE}"`
119GRASS_VERSION_DATE=`sed -n 4p "${GRASS_VERSION_FILE}"`
120GRASS_VERSION_NUMBER=`echo ${GRASS_VERSION_MAJOR}.${GRASS_VERSION_MINOR}.${GRASS_VERSION_RELEASE}`
121NAME_VER=`echo ${GRASS_VERSION_NUMBER} | sed 's/\..*//'`
122changequote(,)
123LIB_VER=`echo ${GRASS_VERSION_NUMBER} | sed 's/^\([0-9.]*\).*$/\1/'`
124changequote([,])
125
126GRASS_VERSION_GIT="exported"
127# get git short hash + date of last change in GRASS headers
128# (and anything else in include)
129GRASS_HEADERS_GIT_HASH=`date -u +%FT%T%z | sed 's/\(..\)$/:\1/'`
130GRASS_HEADERS_GIT_DATE=`date -u +%FT%T%z | sed 's/\(..\)$/:\1/'`
131AC_PATH_PROG(GIT, git, no)
132if test "$GIT" != "no" ; then
133   GRASS_VERSION_GIT=`$GIT rev-parse --short HEAD 2>/dev/null`
134   if test -z "$GRASS_VERSION_GIT"; then
135      GRASS_VERSION_GIT="exported"
136   fi
137   GRASS_HEADERS_GIT_HASH=`$GIT log -1 --pretty=format:"%h" -- "${SRCDIR}/include" 2>/dev/null`
138   if test -z "$GRASS_HEADERS_GIT_HASH"; then
139      GRASS_HEADERS_GIT_HASH=`date -u +%FT%T%z | sed 's/\(..\)$/:\1/'`
140   fi
141   GRASS_HEADERS_GIT_DATE=`date -d $($GIT log -1 --pretty=format:"%cI" -- "${SRCDIR}/include") -u +%FT%T%z | sed 's/\(..\)$/:\1/'` 2>/dev/null
142   if test -z "$GRASS_HEADERS_GIT_DATE"; then
143      GRASS_HEADERS_GIT_DATE=`date -u +%FT%T%z | sed 's/\(..\)$/:\1/'`
144   fi
145fi
146
147AC_SUBST(GRASS_VERSION_FILE)
148AC_SUBST(GRASS_VERSION_MAJOR)
149AC_SUBST(GRASS_VERSION_MINOR)
150AC_SUBST(GRASS_VERSION_RELEASE)
151AC_SUBST(GRASS_VERSION_NUMBER)
152AC_SUBST(GRASS_VERSION_DATE)
153AC_SUBST(GRASS_VERSION_GIT)
154AC_SUBST(GRASS_HEADERS_GIT_HASH)
155AC_SUBST(GRASS_HEADERS_GIT_DATE)
156AC_SUBST(NAME_VER)
157AC_SUBST(LIB_VER)
158
159# Check for MacOSX App
160
161AC_ARG_ENABLE(macosx-app,
162[  --enable-macosx-app     create a MacOSX application],,
163[enable_macosx_app=no])
164
165AC_MSG_CHECKING(for MacOSX App)
166case "$enable_macosx_app" in
167	yes)	MACOSX_APP=1	;;
168	no)	MACOSX_APP=	;;
169	*)	AC_MSG_ERROR([*** You must answer yes or no.])	;;
170esac
171AC_MSG_RESULT("$enable_macosx_app")
172AC_SUBST(MACOSX_APP)
173
174# Check for MacOSX archs
175
176AC_MSG_CHECKING(for MacOSX architectures)
177
178MACOSX_ARCHS=
179
180if test -z "$with_macosx_archs" ; then
181  AC_MSG_RESULT(no)
182else
183  for a in $with_macosx_archs
184  do
185    # check if valid arch?
186    case "$a" in
187      i386|ppc|x86_64|ppc64)
188        MACOSX_ARCHS="$MACOSX_ARCHS -arch $a"
189        ;;
190    esac
191  done
192  AC_MSG_RESULT([$MACOSX_ARCHS])
193  LDFLAGS="$LDFLAGS $MACOSX_ARCHS"
194  CFLAGS="$CFLAGS $MACOSX_ARCHS"
195  CXXFLAGS="$CXXFLAGS $MACOSX_ARCHS"
196fi
197
198AC_SUBST(MACOSX_ARCHS)
199
200# Done checking MacOSX archs
201
202# Check for MacOSX SDK
203
204AC_MSG_CHECKING(for MacOSX SDK)
205
206MACOSX_SDK=
207
208if test -z "$with_macosx_sdk" ; then
209  AC_MSG_RESULT(no)
210else
211  AC_CHECK_FILE($with_macosx_sdk/SDKSettings.plist, [
212    MACOSX_SDK="-isysroot $with_macosx_sdk"],[
213    AC_MSG_ERROR([*** specified SDK does not exist or is not a SDK])])
214  LDFLAGS="$LDFLAGS $MACOSX_SDK"
215  CFLAGS="$CFLAGS $MACOSX_SDK"
216  CXXFLAGS="$CXXFLAGS $MACOSX_SDK"
217fi
218
219AC_SUBST(MACOSX_SDK)
220
221# Done checking MacOSX SDK
222
223# Set INST_DIR
224
225if test -n "$MACOSX_APP" ; then
226    INSTDIR='${prefix}'"/GRASS-${GRASS_VERSION_MAJOR}.${GRASS_VERSION_MINOR}.app/Contents/MacOS"
227else
228    INSTDIR='${prefix}'"/grass${GRASS_VERSION_MAJOR}${GRASS_VERSION_MINOR}"
229fi
230
231AC_SUBST(INSTDIR)
232
233# Get flags for building shared libraries
234
235SC_ENABLE_SHARED
236
237ac_save_ldflags="$LDFLAGS"
238SC_CONFIG_CFLAGS
239LDFLAGS="${ac_save_ldflags} $LDFLAGS"
240
241# Enable options
242
243AC_ARG_ENABLE(w11,
244[  --enable-w11            use W11 library for Windows X11 emulation],,
245[enable_w11=no])
246
247# With options
248
249LOC_ARG_WITH(cxx, C++)
250#LOC_ARG_WITH(g77, GNU Fortran 77, no)
251
252AC_ARG_WITH(macosx-archs,
253[  --with-macosx-archs[=arch list]
254                          compile multiple architectures on MacOSX, ie.
255                          universal.  Valid architectures are i386, ppc,
256                          x86_64 and ppc64. (default: no [native])],, with_macosx_archs="no")
257AC_ARG_WITH(macosx-sdk,
258[  --with-macosx-sdk[=path/sdk]
259                          compile with a system SDK on MacOSX. (default: no)],, with_macosx_sdk="no")
260LOC_ARG_WITH(tiff, TIFF)
261LOC_ARG_WITH(png, PNG)
262LOC_ARG_WITH(postgres, PostgreSQL, no)
263LOC_ARG_WITH(mysql, MySQL, no)
264LOC_ARG_WITH(sqlite, SQLite)
265LOC_ARG_WITH(opengl, OpenGL)
266LOC_ARG_WITH(odbc, ODBC, no)
267LOC_ARG_WITH(fftw, FFTW)
268LOC_ARG_WITH(blas, BLAS, no)
269LOC_ARG_WITH(lapack, LAPACK, no)
270LOC_ARG_WITH(cairo, Cairo)
271LOC_ARG_WITH(freetype, FreeType)
272LOC_ARG_WITH(nls, NLS, no)
273LOC_ARG_WITH(readline, Readline, no)
274LOC_ARG_WITH(opendwg, openDWG, no)
275LOC_ARG_WITH(regex, regex)
276LOC_ARG_WITH(pthread, POSIX threads, no)
277LOC_ARG_WITH(openmp, OpenMP, no)
278LOC_ARG_WITH(opencl, OpenCL, no)
279LOC_ARG_WITH(bzlib, BZIP2, no)
280LOC_ARG_WITH(zstd, Zstandard)
281
282AC_ARG_WITH(gdal,
283[  --with-gdal[=path/gdal-config]
284                          enable GDAL/OGR support (gdal-config with path,
285                          e.g. '--with-gdal=/usr/local/bin/gdal-config')])
286
287AC_ARG_WITH(liblas,
288[  --with-liblas[=path/liblas-config]
289                          enable libLAS support (liblas-config with path,
290                          e.g. '--with-liblas=/usr/local/bin/liblas-config',
291                          default: no)],, with_liblas="no")
292
293AC_ARG_WITH(pdal,
294[  --with-pdal[=path/pdal-config]
295                          enable PDAL support (pdal-config with path,
296                          e.g. '--with-pdal=/usr/local/bin/pdal-config',
297                          default: no)],, with_pdal="no")
298
299AC_ARG_WITH(wxwidgets,
300[  --with-wxwidgets[=path/wx-config]
301                          enable wxWidgets support (wx-config with path,
302                          e.g. '--with-wxwidgets=/usr/local/bin/wx-config',
303                          default: no)],, with_wxwidgets="no")
304
305AC_ARG_WITH(netcdf,
306[  --with-netcdf[=path/nc-config]
307                          enable NetCDF support (nc-config with path,
308                          e.g. '--with-nc=/usr/local/bin/nc-config',
309                          default: no)],, with_netcdf="no")
310
311# With includes and libs options
312
313AC_ARG_WITH(geos,
314[  --with-geos[=path/geos-config]
315                          enable GEOS support (geos-config with path,
316                          e.g. '--with-geos=/usr/local/bin/geos-config',
317                          default: no)],, with_geos="no")
318
319AC_ARG_WITH(includes,
320[  --with-includes=DIRS    site include files are in DIRS])
321
322AC_ARG_WITH(libs,
323[  --with-libs=DIRS        site library files are in DIRS])
324
325LOC_ARG_WITH_INC(zlib, zlib)
326LOC_ARG_WITH_LIB(zlib, zlib)
327
328LOC_ARG_WITH_INC(bzlib, BZIP2)
329LOC_ARG_WITH_LIB(bzlib, BZIP2)
330
331LOC_ARG_WITH_INC(zstd, ZSTD)
332LOC_ARG_WITH_LIB(zstd, ZSTD)
333
334LOC_ARG_WITH_INC(readline, Readline)
335LOC_ARG_WITH_LIB(readline, Readline)
336
337LOC_ARG_WITH_INC(tiff, TIFF)
338LOC_ARG_WITH_LIB(tiff, TIFF)
339
340LOC_ARG_WITH_INC(png, PNG)
341LOC_ARG_WITH_LIB(png, PNG)
342
343LOC_ARG_WITH_INC(postgres, PostgreSQL)
344LOC_ARG_WITH_LIB(postgres, PostgreSQL)
345
346LOC_ARG_WITH_INC(mysql, MySQL)
347LOC_ARG_WITH_LIB(mysql, MySQL)
348
349LOC_ARG_WITH_INC(sqlite, SQLite)
350LOC_ARG_WITH_LIB(sqlite, SQLite)
351
352LOC_ARG_WITH_INC(opengl, OpenGL)
353LOC_ARG_WITH_LIB(opengl, OpenGL)
354LOC_ARG_WITH_FRAMEWORK(opengl, OpenGL)
355
356LOC_ARG_WITH_INC(odbc, ODBC)
357LOC_ARG_WITH_LIB(odbc, ODBC)
358
359LOC_ARG_WITH_INC(fftw, FFTW)
360LOC_ARG_WITH_LIB(fftw, FFTW)
361
362LOC_ARG_WITH_INC(blas, BLAS)
363LOC_ARG_WITH_LIB(blas, BLAS)
364
365LOC_ARG_WITH_INC(lapack, LAPACK)
366LOC_ARG_WITH_LIB(lapack, LAPACK)
367
368LOC_ARG_WITH_INC(cairo, cairo)
369LOC_ARG_WITH_LIB(cairo, cairo)
370LOC_ARG_WITH_LDFLAGS(cairo, cairo)
371
372LOC_ARG_WITH_INC(freetype, FreeType)
373LOC_ARG_WITH_LIB(freetype, FreeType)
374
375LOC_ARG_WITH_INC(proj, External PROJ.4)
376LOC_ARG_WITH_LIB(proj, External PROJ.4)
377LOC_ARG_WITH_SHARE(proj, External PROJ.4)
378
379LOC_ARG_WITH_INC(opendwg, openDWG)
380LOC_ARG_WITH_LIB(opendwg, openDWG)
381
382LOC_ARG_WITH_INC(regex, regex)
383LOC_ARG_WITH_LIB(regex, regex)
384
385LOC_ARG_WITH_INC(pthread, POSIX threads)
386LOC_ARG_WITH_LIB(pthread, POSIX threads)
387
388LOC_ARG_WITH_INC(openmp, OpenMP)
389LOC_ARG_WITH_LIB(openmp, OpenMP)
390
391LOC_ARG_WITH_INC(opencl, OpenCL)
392LOC_ARG_WITH_LIB(opencl, OpenCL)
393#LOC_ARG_WITH_FRAMEWORK(opencl, OpenCL)
394
395# Put this early on so CPPFLAGS and LDFLAGS have any additional dirs
396
397# With includes option
398
399# Handle Fortran compiler choice
400#LOC_CHECK_USE(g77, GNU Fortran 77, USE_G77)
401# Done checking fortran
402
403AC_MSG_CHECKING(for additional include dirs)
404case "$with_includes" in
405y | ye | yes | n | no)
406	AC_MSG_ERROR([*** You must supply a directory to list --with-includes.])
407	;;
408esac
409AC_MSG_RESULT($with_includes)
410
411if test -n "$with_includes"; then
412    for dir in $with_includes; do
413        if test -d "$dir"; then
414            INCLUDE_DIRS="$INCLUDE_DIRS -I$dir"
415        else
416            AC_MSG_ERROR([*** Include directory $dir does not exist.])
417        fi
418    done
419    CPPFLAGS="$CPPFLAGS $INCLUDE_DIRS"
420fi
421AC_SUBST(INCLUDE_DIRS)
422
423# With libs option
424
425AC_MSG_CHECKING(for additional library dirs)
426case "$with_libs" in
427y | ye | yes | n | no)
428	AC_MSG_ERROR([*** You must supply a directory list to --with-libs.])
429	;;
430esac
431AC_MSG_RESULT($with_libs)
432
433if test -n "$with_libs"; then
434    for dir in $with_libs; do
435        if test -d "$dir"; then
436            LIBRARY_DIRS="$LIBRARY_DIRS -L$dir"
437        else
438            AC_MSG_ERROR([*** Library directory $dir does not exist.])
439        fi
440    done
441    LDFLAGS="$LDFLAGS $LIBRARY_DIRS"
442fi
443AC_SUBST(LIBRARY_DIRS)
444
445# Programs and standard headers, libraries, functions
446
447AC_PROG_INSTALL
448
449AC_PROG_LEX
450if test "$LEX" = "lex"; then
451    AC_PATH_PROG(LEXPATH, lex, no)
452    if test "$LEXPATH" = "no"; then
453	AC_MSG_ERROR([*** Unable to locate lex.])
454    fi
455fi
456
457AC_PROG_YACC
458if test "$YACC" = "yacc"; then
459    AC_PATH_PROG(YACCPATH, yacc, no)
460    if test "$YACCPATH" = "no"; then
461	AC_MSG_ERROR([*** Unable to locate yacc.])
462    fi
463fi
464
465AC_PROG_RANLIB
466AC_CHECK_PROGS(AR, ar)
467AC_CHECK_PROGS(ENV, env)
468AC_PATH_PROG(PERL, perl, no)
469AC_HEADER_STDC
470#AC_CHECK_HEADERS(curses.h limits.h termio.h termios.h unistd.h values.h)
471AC_CHECK_HEADERS(limits.h termio.h termios.h unistd.h values.h f2c.h g2c.h)
472AC_CHECK_HEADERS(sys/ioctl.h sys/mtio.h sys/resource.h sys/time.h)
473AC_CHECK_HEADERS(sys/timeb.h sys/types.h sys/utsname.h)
474AC_CHECK_HEADERS(libintl.h iconv.h)
475AC_CHECK_HEADERS(langinfo.h)
476AC_HEADER_TIME
477AC_TYPE_OFF_T
478AC_TYPE_UID_T
479
480AC_CANONICAL_HOST
481case $host_os in
482  *cygwin* ) CYGWIN=yes;;
483	 * ) CYGWIN=no;;
484esac
485
486AC_CHECK_FUNCS(ftime gethostname gettimeofday lseek nice time uname)
487AC_CHECK_FUNCS(seteuid setpriority setreuid setruid)
488AC_CHECK_FUNCS(drand48)
489AC_CHECK_FUNCS(putenv setenv)
490AC_CHECK_FUNCS(nanosleep)
491if test "$cross_compiling" != "yes" ; then
492AC_FUNC_SETPGRP
493else
494CROSS_COMPILING=1
495AC_SUBST(CROSS_COMPILING)
496fi
497
498AC_MSG_CHECKING(for long long int)
499AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long long int x;]])],[
500AC_MSG_RESULT(yes)
501AC_DEFINE(HAVE_LONG_LONG_INT, 1, [define if "long long int" is available])
502],[
503AC_MSG_RESULT(no)
504])
505
506AC_MSG_CHECKING(for int64_t)
507AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>]], [[int64_t x;]])],[
508AC_MSG_RESULT(yes)
509AC_DEFINE(HAVE_INT64_T, 1, [define if "int64_t" is available])
510],[
511AC_MSG_RESULT(no)
512])
513
514AC_MSG_CHECKING(for W11)
515case "$enable_w11" in
516	yes|no)	AC_MSG_RESULT("$enable_w11")	;;
517	*)	AC_MSG_ERROR([*** You must answer yes or no.])	;;
518esac
519
520USE_X11=
521USE_W11=
522XLIB=
523XTLIB=
524
525if test "$enable_w11" = "yes" ; then
526    X_CFLAGS=-I${SRCDIR}/display/drivers/windows/libW11
527    X_LIBS='-L$(LIBDIR)'
528    AC_SUBST(X_CFLAGS)
529    AC_SUBST(X_LIBS)
530
531    USE_W11="1"
532    USE_X11="1"
533    XLIB=-lX11
534
535    CFLAGS="$CFLAGS -D__W98__"
536else
537    AC_PATH_XTRA
538    if test "$no_x" != "yes"; then
539        USE_X11="1"
540        XLIB=-lX11
541        XTLIB=-lXt
542    fi
543fi
544
545AC_SUBST(XLIB)
546AC_SUBST(XTLIB)
547AC_SUBST(USE_X11)
548
549# Note that some systems (FreeBSD for example) need an extra library for
550# cuserid
551ac_save_libs="$LIBS"
552LIBS=""
553AC_SEARCH_LIBS(cuserid,[compat])
554DBMIEXTRALIB="$LIBS"
555LIBS="$ac_save_libs"
556AC_SUBST(DBMIEXTRALIB)
557
558AC_CHECK_FUNCS(asprintf)
559AC_SUBST(HAVE_ASPRINTF)
560
561# Test if mathlib needs -lm flag or is included with libc
562AC_CHECK_FUNC(atan, MATHLIB=, [
563AC_CHECK_LIB(m, atan, MATHLIB=-lm, [
564    AC_MSG_ERROR([*** Failed check for math library.])
565])])
566AC_SUBST(MATHLIB)
567
568AC_CHECK_FUNC(dlsym, DLLIB=, [
569AC_CHECK_LIB(dl, dlsym, DLLIB=-ldl, [
570    DLLIB=
571])])
572AC_SUBST(DLLIB)
573
574AC_CHECK_FUNC(iconv, ICONVLIB=, [
575AC_CHECK_LIB(iconv, iconv, ICONVLIB=-liconv, [
576AC_CHECK_LIB(giconv, iconv, ICONVLIB=-lgiconv, [
577AC_CHECK_FUNC(libiconv, ICONVLIB=, [
578AC_CHECK_LIB(iconv, libiconv, ICONVLIB=-liconv, [
579AC_CHECK_LIB(giconv, libiconv, ICONVLIB=-lgiconv, [
580    AC_MSG_WARN([*** Unable to locate iconv() function.])
581    ICONVLIB=
582])])])])])])
583AC_SUBST(ICONVLIB)
584
585have_socket=1
586AC_CHECK_FUNC(socket, SOCKLIB=, [
587AC_CHECK_LIB(socket, socket, SOCKLIB=-lsocket, [
588    have_socket=0
589    AC_MSG_WARN([*** Unable to locate socket() function.])
590])])
591AC_SUBST(SOCKLIB)
592if test "$have_socket" = 1 ; then
593  HAVE_SOCKET=1
594  AC_DEFINE(HAVE_SOCKET, 1, [define if socket() exists])
595else
596  HAVE_SOCKET=
597fi
598AC_SUBST(HAVE_SOCKET)
599
600
601# Mandatory zlib dependency
602
603ZLIBLIBPATH=
604ZLIBINCPATH=
605ZLIB=
606
607# With zlib includes directory
608
609LOC_CHECK_INC_PATH(zlib,zlib,ZLIBINCPATH)
610
611LOC_CHECK_INCLUDES(zlib.h,zlib,$ZLIBINCPATH)
612
613# With zlib library directory
614
615LOC_CHECK_LIB_PATH(zlib,zlib,ZLIBLIBPATH)
616
617LOC_CHECK_LIBS(z,deflate,zlib,$ZLIBLIBPATH,ZLIB,,,)
618
619#
620
621AC_SUBST(ZLIBINCPATH)
622AC_SUBST(ZLIBLIBPATH)
623AC_SUBST(ZLIB)
624
625# Done checking zlib
626
627# bzip2 support
628
629BZIP2LIBPATH=
630BZIP2INCPATH=
631BZIP2LIB=
632
633LOC_CHECK_USE(bzlib,bzlib,USE_BZIP2)
634
635if test -n "$USE_BZIP2"; then
636
637# With bzip2 includes directory
638
639LOC_CHECK_INC_PATH(bzlib,bzlib,BZIP2INCPATH)
640
641LOC_CHECK_INCLUDES(bzlib.h,bzlib,$BZIP2INCPATH)
642
643# With bzip2 library directory
644
645LOC_CHECK_LIB_PATH(bzlib,bzlib,BZIP2LIBPATH)
646
647LOC_CHECK_LIBS(bz2,BZ2_bzBuffToBuffCompress,bzlib,$BZIP2LIBPATH,BZIP2LIB,,,)
648
649#
650
651fi # $USE_BZIP2
652
653AC_SUBST(BZIP2INCPATH)
654AC_SUBST(BZIP2LIBPATH)
655AC_SUBST(BZIP2LIB)
656
657# Done checking bzip2
658
659# zstd support
660
661ZSTDLIBPATH=
662ZSTDINCPATH=
663ZSTDLIB=
664
665LOC_CHECK_USE(zstd,zstd,USE_ZSTD)
666
667if test -n "$USE_ZSTD"; then
668
669# With zstd includes directory
670
671LOC_CHECK_INC_PATH(zstd,zstd,ZSTDINCPATH)
672LOC_CHECK_INCLUDES(zstd.h,zstd,$ZSTDINCPATH)
673
674# With zstd library directory
675
676LOC_CHECK_LIB_PATH(zstd,zstd,ZSTDLIBPATH)
677
678LOC_CHECK_LIBS(zstd,ZSTD_compress,zstd,$ZSTDLIBPATH,ZSTDLIB,,,)
679
680#
681
682fi # $USE_ZSTD
683
684AC_SUBST(ZSTDINCPATH)
685AC_SUBST(ZSTDLIBPATH)
686AC_SUBST(ZSTDLIB)
687
688# Done checking zstd
689
690# Mandatory PROJ dependency
691
692PROJINC=
693PROJLIB=
694PROJSHARE=
695PROJ4API=0
696PROJMAJOR=4
697
698# With PROJ includes directory
699
700LOC_CHECK_INC_PATH(proj,External PROJ,PROJINC)
701
702# PROJ version check: if proj.h exists, it must be proj 5+
703LOC_CHECK_INCLUDES(proj.h,External PROJ,$PROJINC,PROJ4API=1)
704
705if test $PROJ4API = 0 ; then
706    LOC_CHECK_VERSION_INT(proj.h,PROJ_VERSION_MAJOR,External PROJ major,proj_ver_major,$PROJINC,0)
707    LOC_CHECK_VERSION_INT(proj.h,PROJ_VERSION_MINOR,External PROJ minor,proj_ver_minor,$PROJINC,0)
708    LOC_CHECK_VERSION_INT(proj.h,PROJ_VERSION_PATCH,External PROJ patch,proj_ver_patch,$PROJINC,0)
709    AC_MSG_RESULT([found PROJ version "${proj_ver_major}.${proj_ver_minor}.${proj_ver_patch}"])
710    PROJMAJOR=${proj_ver_major}
711    # minimum required PROJ 5+ version to use the new PROJ API: 5.1.0
712    if test ${proj_ver_major} = 5 && test `expr ${proj_ver_minor} \< 1` = 1 ; then
713	AC_MSG_WARN([At least PROJ version "5.1.0" is required for the new API ])
714	PROJ4API=1
715    fi
716else
717    LOC_CHECK_VERSION_INT(proj_api.h,PJ_VERSION,External PROJ.4,proj_ver,$PROJINC,0)
718    if test `expr ${proj_ver} \>= 600` = 1 ; then
719	PROJMAJOR=6
720    elif test `expr ${proj_ver} \>= 500` = 1 ; then
721	PROJMAJOR=5
722    elif test `expr ${proj_ver} \>= 400` = 1 ; then
723	PROJMAJOR=4
724    fi
725    AC_MSG_RESULT([found PROJ version "${proj_ver}"])
726fi
727
728if test $PROJ4API = 0 ; then
729    AC_MSG_RESULT([using new PROJ version 5+ API])
730
731    # With PROJ library directory
732
733    LOC_CHECK_LIB_PATH(proj,External PROJ,PROJLIB)
734    LOC_CHECK_LIBS(proj,proj_pj_info,External PROJ,$PROJLIB,PROJLIB,,,)
735else
736    AC_MSG_RESULT([using old PROJ version 4 API])
737    AC_DEFINE(USE_PROJ4API, 1, [define if using old PROJ version 4 API])
738
739    LOC_CHECK_INCLUDES(proj_api.h,External PROJ,$PROJINC)
740    # PROJ version check for v4.x
741
742    if test "$cross_compiling" = yes; then
743	AC_MSG_WARN([*** Cannot check PROJ.4 version (cross-compiling).])
744    else
745	LOC_CHECK_VERSION_INT(proj_api.h,PJ_VERSION,External PROJ.4,proj_ver,$PROJINC,0)
746
747	if test `expr ${proj_ver} \< 446` = 1 ; then
748	    AC_MSG_ERROR([*** PROJ.4.4.6 or later is required.])
749	fi
750    fi
751
752    # With PROJ library directory
753
754    LOC_CHECK_LIB_PATH(proj,External PROJ.4,PROJLIB)
755    LOC_CHECK_LIBS(proj,pj_get_def,External PROJ.4,$PROJLIB,PROJLIB,,,)
756fi
757
758# With PROJ share directory
759
760LOC_CHECK_SHARE_PATH(proj,External PROJ,PROJSHARE)
761if test -z "$PROJSHARE" ; then
762    AC_MSG_WARN([*** External PROJ directory not specified; default will be used])
763    PROJSHARE=/usr/share/proj
764fi
765
766# check if share/proj/epsg exists only for PROJ < 6
767if test `expr ${PROJMAJOR} \< 6` = 1 ; then
768    # LOC_CHECK_SHARE does not work when cross compiling
769    if test "$cross_compiling" = "yes" ; then
770	AC_MSG_CHECKING([for epsg])
771	AC_MSG_RESULT([unknown (cross-compiling)])
772    else
773	LOC_CHECK_SHARE(epsg,External PROJ,$PROJSHARE,[
774	AC_MSG_WARN([*** Unable to locate PROJ data files.])
775	])
776    fi
777fi
778
779AC_SUBST(PROJINC)
780AC_SUBST(PROJLIB)
781AC_SUBST(PROJSHARE)
782
783# Done checking PROJ
784
785# Enable regex option
786
787LOC_CHECK_USE(regex,regex,USE_REGEX)
788
789REGEXINCPATH=
790REGEXLIBPATH=
791REGEXLIB=
792
793if test -n "$USE_REGEX"; then
794
795# With regex includes directory
796
797LOC_CHECK_INC_PATH(regex,regex,REGEXINCPATH)
798
799LOC_CHECK_INCLUDES(regex.h,regex,$REGEXINCPATH)
800
801# With regex library directory
802
803LOC_CHECK_LIB_PATH(regex,regex,REGEXLIBPATH)
804
805LOC_CHECK_FUNC(regcomp,regex functions,REGEXLIB,,,,,[
806LOC_CHECK_LIBS(regex,regcomp,regex,$REGEXLIBPATH,REGEXLIB,,,)
807])
808
809fi # $USE_REGEX
810
811AC_SUBST(REGEXINCPATH)
812AC_SUBST(REGEXLIBPATH)
813AC_SUBST(REGEXLIB)
814AC_SUBST(USE_REGEX)
815
816# Done checking regex
817
818# Enable Readline option
819
820LOC_CHECK_USE(readline,Readline,USE_READLINE)
821
822READLINEINCPATH=
823READLINELIBPATH=
824READLINELIB=
825HISTORYLIB=
826
827if test -n "$USE_READLINE"; then
828
829# With Readline includes directory
830
831LOC_CHECK_INC_PATH(readline,Readline,READLINEINCPATH)
832
833LOC_CHECK_INCLUDES(readline/readline.h,Readline,$READLINEINCPATH)
834LOC_CHECK_INCLUDES(readline/history.h,Readline,$READLINEINCPATH)
835
836# With Readline library directory
837
838LOC_CHECK_LIB_PATH(readline,Readline,READLINELIBPATH)
839
840LOC_CHECK_LIBS(readline,readline,Readline,$READLINELIBPATH,READLINELIB,,,)
841LOC_CHECK_LIBS(history,add_history,History,$READLINELIBPATH,HISTORYLIB,,,)
842
843fi # $USE_READLINE
844
845AC_SUBST(READLINEINCPATH)
846AC_SUBST(READLINELIBPATH)
847AC_SUBST(READLINELIB)
848AC_SUBST(HISTORYLIB)
849
850# Done checking Readline
851
852# GDAL option
853
854AC_MSG_CHECKING(whether to use GDAL)
855
856GDAL_LIBS=
857GDAL_CFLAGS=
858USE_GDAL=
859USE_OGR=
860
861if test "`basename xx/$with_gdal`" = "gdal-config" ; then
862  GDAL_CONFIG="$with_gdal"
863fi
864
865if test "$with_gdal" = "no" ; then
866  AC_MSG_RESULT(no)
867else
868  AC_MSG_RESULT(yes)
869  AC_PATH_PROG(GDAL_CONFIG, gdal-config, no)
870
871  if test "$GDAL_CONFIG" = "no" ; then
872    AC_MSG_ERROR([*** couldn't find gdal-config])
873  fi
874
875  if test "$GDAL_CONFIG" != "" ; then
876    GDAL_LIBS=`"$GDAL_CONFIG" --libs`
877    GDAL_DEP_LIBS=`"$GDAL_CONFIG" --dep-libs`
878    GDAL_CFLAGS=`"$GDAL_CONFIG" --cflags`
879    USE_GDAL=1
880    if test `"$GDAL_CONFIG" --ogr-enabled` = "yes" ; then
881      AC_DEFINE(HAVE_OGR, 1, [define if OGR is to be used])
882      USE_OGR=1
883    fi
884  fi
885
886  GDAL=
887  ac_save_libs="$LIBS"
888  ac_save_cflags="$CFLAGS"
889  LIBS="$LIBS $GDAL_LIBS"
890  CFLAGS="$CFLAGS $GDAL_CFLAGS"
891  AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <gdal.h>]], [[GDALOpen("foo", GA_ReadOnly);]])],[],[
892  LIBS="$LIBS $GDAL_DEP_LIBS"
893  AC_TRY_LINK([#include <gdal.h>],[GDALOpen("foo", GA_ReadOnly);],GDAL_LIBS="$GDAL_LIBS $GDAL_DEP_LIBS",[
894  AC_MSG_ERROR([*** Unable to locate GDAL library.])
895  ])
896  ])
897  LIBS=${ac_save_libs}
898  CFLAGS=${ac_save_cflags}
899
900  AC_DEFINE(HAVE_GDAL, 1, [define if GDAL is to be used])
901fi
902
903AC_SUBST(GDAL_LIBS)
904AC_SUBST(GDAL_CFLAGS)
905AC_SUBST(USE_GDAL)
906AC_SUBST(USE_OGR)
907
908# libLAS option
909
910AC_MSG_CHECKING(whether to use libLAS)
911
912LIBLAS_LIBS=
913LIBLAS_CFLAGS=
914USE_LIBLAS=
915
916if test "`basename xx/$with_liblas`" = "liblas-config" ; then
917  LIBLAS_CONFIG="$with_liblas"
918fi
919
920if test "$with_liblas" = "no" ; then
921  AC_MSG_RESULT(no)
922else
923  AC_MSG_RESULT(yes)
924  AC_PATH_PROG(LIBLAS_CONFIG, liblas-config, no)
925
926  if test "$LIBLAS_CONFIG" = "no" ; then
927    AC_MSG_ERROR([*** couldn't find liblas-config])
928  fi
929
930  if test "$LIBLAS_CONFIG" != "" ; then
931    LIBLAS_LIBS=`"$LIBLAS_CONFIG" --libs`
932    LIBLAS_CFLAGS=`"$LIBLAS_CONFIG" --cflags`
933    LIBLAS_INC=`"$LIBLAS_CONFIG" --includes`
934    USE_LIBLAS=1
935  fi
936
937  LIBLAS=
938  ac_save_libs="$LIBS"
939  ac_save_cflags="$CFLAGS"
940  ac_save_cppflags="$CPPFLAGS"
941  LIBS="$LIBS $LIBLAS_LIBS"
942  CFLAGS="$CFLAGS $LIBLAS_CFLAGS"
943  CPPFLAGS="$CPPFLAGS $LIBLAS_INC"
944  AC_CHECK_HEADERS(liblas/capi/liblas.h)
945  AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <liblas/capi/liblas.h>]], [[LASReader_Create("foo");]])],[],[
946  AC_TRY_LINK([#include <liblas/capi/liblas.h>],[LASReader_Create("foo");],LAS_LIBS="$LAS_LIBS",[
947  AC_MSG_ERROR([*** Unable to locate libLAS library.])
948  ])
949  ])
950  LIBS=${ac_save_libs}
951  CFLAGS=${ac_save_cflags}
952  CPPFLAGS=${ac_save_cppflags}
953
954  AC_DEFINE(HAVE_LIBLAS, 1, [define if liblas exists])
955fi
956
957AC_SUBST(LIBLAS_LIBS)
958AC_SUBST(LIBLAS_CFLAGS)
959AC_SUBST(LIBLAS_INC)
960AC_SUBST(USE_LIBLAS)
961
962# PDAL option
963
964AC_MSG_CHECKING(whether to use PDAL)
965
966AC_LANG_PUSH(C++)
967
968PDAL_LIBS=
969PDAL_CPPFLAGS=
970USE_PDAL=
971
972if test "`basename xx/$with_pdal`" = "pdal-config" ; then
973  PDAL_CONFIG="$with_pdal"
974fi
975
976if test "$with_pdal" = "no" ; then
977  AC_MSG_RESULT(no)
978else
979  AC_MSG_RESULT(yes)
980  AC_PATH_PROG(PDAL_CONFIG, pdal-config, no)
981
982  if test "$PDAL_CONFIG" = "no" ; then
983    AC_MSG_ERROR([*** could not find pdal-config])
984  fi
985
986  if test "$PDAL_CONFIG" != "" ; then
987    PDAL_LIBS=`"$PDAL_CONFIG" --libs`
988    PDAL_CPPFLAGS=`"$PDAL_CONFIG" --cxxflags`
989    PDAL_INC=`"$PDAL_CONFIG" --includes`
990    USE_PDAL=1
991  fi
992
993  PDAL=
994  ac_save_libs="$LIBS"
995  ac_save_cflags="$CFLAGS"
996  ac_save_cppflags="$CPPFLAGS"
997  LIBS="$LIBS $PDAL_LIBS"
998  CFLAGS="$CFLAGS $PDAL_CFLAGS"
999  CPPFLAGS="$CPPFLAGS $PDAL_CPPFLAGS $PDAL_INC"
1000  AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pdal/PointTable.hpp>]], [[pdal::PointTable table;]])],[],[
1001  AC_TRY_LINK([#include <pdal/PointTable.hpp>],[pdal::PointTable table;],PDAL_LIBS="$PDAL_LIBS",[
1002  AC_MSG_ERROR([*** Unable to locate PDAL library.])
1003  ])
1004  ])
1005  LIBS=${ac_save_libs}
1006  CFLAGS=${ac_save_cflags}
1007  CPPFLAGS=${ac_save_cppflags}
1008
1009  AC_DEFINE(HAVE_PDAL, 1, [define if PDAL exists])
1010fi
1011
1012AC_SUBST(PDAL_LIBS)
1013AC_SUBST(PDAL_CPPFLAGS)
1014AC_SUBST(PDAL_INC)
1015AC_SUBST(USE_PDAL)
1016
1017AC_LANG_POP(C++)
1018
1019# NetCDF option
1020
1021AC_MSG_CHECKING(whether to use NetCDF)
1022
1023NETCDF_LIBS=
1024NETCDF_CFLAGS=
1025USE_NETCDF=
1026
1027if test "`basename xx/$with_netcdf`" = "nc-config" ; then
1028  NETCDF_CONFIG="$with_netcdf"
1029fi
1030
1031if test "$with_netcdf" = "no" ; then
1032  AC_MSG_RESULT(no)
1033else
1034  AC_MSG_RESULT(yes)
1035  AC_PATH_PROG(NETCDF_CONFIG, nc-config, no)
1036
1037  if test "$NETCDF_CONFIG" = "no" ; then
1038    AC_MSG_ERROR([*** couldn't find nc-config])
1039  fi
1040
1041  if test "$NETCDF_CONFIG" != "" ; then
1042    NETCDF_LIBS=`"$NETCDF_CONFIG" --libs`
1043    NETCDF_CFLAGS=`"$NETCDF_CONFIG" --cflags`
1044    USE_NETCDF=1
1045  fi
1046
1047  NETCDF=
1048  ac_save_libs="$LIBS"
1049  ac_save_cflags="$CFLAGS"
1050  LIBS="$LIBS $NETCDF_LIBS"
1051  CFLAGS="$CFLAGS $NETCDF_CFLAGS"
1052  AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netcdf.h>]], [[nc_create("foo", NC_CLOBBER, NULL);]])],[],[
1053  AC_TRY_LINK([#include <netcdf.h>],[nc_create("foo", NC_CLOBBER, NULL);],NETCDF_LIBS="$NETCDF_LIBS",[
1054  AC_MSG_ERROR([*** Unable to locate NetCDF library.])
1055  ])
1056  ])
1057  LIBS=${ac_save_libs}
1058  CFLAGS=${ac_save_cflags}
1059
1060  AC_DEFINE(HAVE_NETCDF, 1, [define if NetCDF exists])
1061fi
1062
1063AC_SUBST(NETCDF_LIBS)
1064AC_SUBST(NETCDF_CFLAGS)
1065AC_SUBST(USE_NETCDF)
1066
1067# GEOS option
1068
1069AC_MSG_CHECKING(whether to use GEOS)
1070
1071GEOS_LIBS=
1072GEOS_CFLAGS=
1073USE_GEOS=
1074
1075# FIXME: "quote" $with_geos ?
1076if test "`basename xx/$with_geos`" = "geos-config" ; then
1077  GEOS_CONFIG="$with_geos"
1078fi
1079
1080if test "$with_geos" = "no" ; then
1081  AC_MSG_RESULT(no)
1082else
1083  AC_MSG_RESULT(yes)
1084  AC_PATH_PROG(GEOS_CONFIG, geos-config, no)
1085
1086  if test "$GEOS_CONFIG" = "no" ; then
1087    AC_MSG_ERROR([*** couldn't find geos-config])
1088  fi
1089
1090  if test "$GEOS_CONFIG" != "" ; then
1091    GEOS_LIBS=`"$GEOS_CONFIG" --clibs`
1092    GEOS_CFLAGS=`"$GEOS_CONFIG" --cflags`
1093    USE_GEOS=1
1094  fi
1095
1096  LOC_CHECK_INCLUDES(geos_c.h,GEOS,$GEOS_CFLAGS)
1097### geos 3.3.6 installs geos_c.lib, see http://osgeo-org.1560.n6.nabble.com/osgeo4w-329-update-geos-to-3-3-6-td5024605.html
1098#  if test "$MINGW32" = yes ; then
1099#    LOC_CHECK_LIBS(geos_c_i,initGEOS,GEOS,$GEOS_LIBS,GEOS_LIBS)
1100#  else
1101  LOC_CHECK_LIBS(geos_c,initGEOS,GEOS,$GEOS_LIBS,GEOS_LIBS)
1102#  fi
1103  AC_DEFINE(HAVE_GEOS, 1, [define if GEOS is to be used])
1104fi
1105
1106AC_SUBST(GEOS_LIBS)
1107AC_SUBST(GEOS_CFLAGS)
1108AC_SUBST(USE_GEOS)
1109
1110# Enable TIFF option
1111
1112LOC_CHECK_USE(tiff,TIFF,USE_TIFF)
1113
1114TIFF_INCLUDE_DIRS=
1115TIFF_LIBRARY_DIRS=
1116TIFFLIB=
1117
1118if test -n "$USE_TIFF"; then
1119
1120# With TIFF includes directory
1121
1122LOC_CHECK_INC_PATH(tiff,TIFF,TIFF_INCLUDE_DIRS)
1123
1124LOC_CHECK_INCLUDES(tiffio.h,TIFF,$TIFF_INCLUDE_DIRS)
1125
1126# With TIFF library directory
1127
1128LOC_CHECK_LIB_PATH(tiff,TIFF,TIFF_LIBRARY_DIRS)
1129
1130LOC_CHECK_LIBS(tiff,TIFFOpen,TIFF,$TIFF_LIBRARY_DIRS,TIFFLIB,,,,-ljpeg,$ZLIB,$MATHLIB)
1131
1132fi # $USE_TIFF
1133
1134AC_SUBST(TIFF_INCLUDE_DIRS)
1135AC_SUBST(TIFF_LIBRARY_DIRS)
1136AC_SUBST(TIFFLIB)
1137
1138# Done checking TIFF
1139
1140# Enable PNG option
1141
1142LOC_CHECK_USE(png,PNG,USE_PNG)
1143
1144PNGINC=
1145PNGLIB=
1146
1147if test -n "$USE_PNG"; then
1148
1149# With PNG includes directory
1150
1151LOC_CHECK_INC_PATH(png,PNG,PNGINC)
1152
1153LOC_CHECK_INCLUDES(png.h,PNG,$PNGINC)
1154
1155# With PNG library directory
1156
1157LOC_CHECK_LIB_PATH(png,PNG,PNGLIB)
1158
1159LOC_CHECK_LIBS(png,png_read_image,PNG,$PNGLIB,PNGLIB,,$ZLIB $MATHLIB,)
1160
1161fi # $USE_PNG
1162
1163AC_SUBST(PNGINC)
1164AC_SUBST(PNGLIB)
1165AC_SUBST(USE_PNG)
1166
1167# Done checking PNG
1168
1169# Enable PostgreSQL option
1170
1171LOC_CHECK_USE(postgres,PostgreSQL,USE_POSTGRES)
1172
1173if test -n "$USE_POSTGRES"; then
1174AC_DEFINE(HAVE_POSTGRES, 1, [define if PostgreSQL is to be used])
1175fi # $USE_POSTGRES
1176
1177PQINCPATH=
1178PQLIBPATH=
1179PQLIB=
1180
1181if test -n "$USE_POSTGRES"; then
1182
1183# With PostgreSQL includes directory
1184
1185LOC_CHECK_INC_PATH(postgres,PostgreSQL,PQINCPATH)
1186
1187LOC_CHECK_INCLUDES(libpq-fe.h,PostgreSQL,$PQINCPATH)
1188
1189fi # $USE_POSTGRES
1190
1191if test -n "$USE_POSTGRES"; then
1192
1193# With PostgreSQL library directory
1194
1195LOC_CHECK_LIB_PATH(postgres,PostgreSQL,PQLIBPATH)
1196
1197LOC_CHECK_LIBS(pq,PQsetdbLogin,PostgreSQL,$PQLIBPATH,PQLIB,,,,-lcrypt,-lssl -lcrypto)
1198
1199ac_save_ldflags="$LDFLAGS"
1200LDFLAGS="$LDFLAGS $PQLIBPATH"
1201AC_CHECK_LIB(pq,PQcmdTuples, [AC_DEFINE(HAVE_PQCMDTUPLES, 1, [define if PQcmdTuples in lpq])], [
1202AC_CHECK_LIB(pq,PQcmdTuples, [AC_DEFINE(HAVE_PQCMDTUPLES, 1, [define if PQcmdTuples in lpq])], [
1203], -lcrypt)
1204])
1205LDFLAGS="${ac_save_ldflags}"
1206
1207fi # $USE_POSTGRES
1208
1209AC_SUBST(USE_POSTGRES)
1210
1211AC_SUBST(PQINCPATH)
1212AC_SUBST(PQLIBPATH)
1213AC_SUBST(PQLIB)
1214
1215# Done checking PostgreSQL
1216
1217# Enable MySQL option
1218
1219LOC_CHECK_USE(mysql,MySQL,USE_MYSQL)
1220
1221MYSQLINCPATH=
1222MYSQLLIBPATH=
1223MYSQLLIB=
1224
1225if test -n "$USE_MYSQL"; then
1226
1227# With MySQL includes directory
1228
1229LOC_CHECK_INC_PATH(mysql,MySQL,MYSQLINCPATH)
1230
1231LOC_CHECK_INCLUDES(mysql.h,MySQL,$MYSQLINCPATH)
1232
1233fi # $USE_MYSQL
1234
1235if test -n "$USE_MYSQL"; then
1236  # With MySQL library directory
1237
1238  LOC_CHECK_LIB_PATH(mysql,MySQL,MYSQLLIBPATH)
1239
1240  LOC_CHECK_LIBS(mysqlclient,mysql_query,MySQL,$MYSQLLIBPATH,MYSQLLIB,,,,$ZLIB,$SOCKLIB,$MATHLIB)
1241
1242  # Check for libmysqld (for embedded version of the driver)
1243  AC_PATH_PROG(MYSQLD_CONFIG, mysql_config, no)
1244
1245  if test "$MYSQLD_CONFIG" = "no" ; then
1246    AC_MSG_ERROR([*** couldn't find mysql_config])
1247  fi
1248
1249  if test "$MYSQLD_CONFIG" != "" ; then
1250    AC_LANG_PUSH([C++])
1251    ac_save_libs="$LIBS"
1252    MYSQLDLIB=`"$MYSQLD_CONFIG" --libmysqld-libs`
1253
1254    LIBS="$MYSQLDLIB $LIBS"
1255    AC_CHECK_FUNC(mysql_server_init,,[MYSQLDLIB="";
1256                  AC_MSG_WARN([libmysqld not found])] )
1257    LIBS=$ac_save_libs
1258    AC_LANG_POP([C++])
1259  fi
1260
1261fi # $USE_MYSQL
1262
1263AC_SUBST(USE_MYSQL)
1264
1265AC_SUBST(MYSQLINCPATH)
1266AC_SUBST(MYSQLLIBPATH)
1267AC_SUBST(MYSQLLIB)
1268AC_SUBST(MYSQLDLIB)
1269
1270# Done checking MySQL
1271
1272# Enable SQLite option
1273
1274LOC_CHECK_USE(sqlite,SQLite,USE_SQLITE)
1275
1276SQLITEINCPATH=
1277SQLITELIBPATH=
1278SQLITELIB=
1279
1280if test -n "$USE_SQLITE"; then
1281
1282# With SQLite includes directory
1283
1284LOC_CHECK_INC_PATH(sqlite,SQLite,SQLITEINCPATH)
1285
1286LOC_CHECK_INCLUDES(sqlite3.h,SQLite,$SQLITEINCPATH)
1287
1288AC_DEFINE(HAVE_SQLITE, 1, [define if SQLite is to be used])
1289
1290fi # $USE_SQLITE
1291
1292if test -n "$USE_SQLITE"; then
1293
1294# With SQLite library directory
1295
1296LOC_CHECK_LIB_PATH(sqlite,SQLite,SQLITELIBPATH)
1297
1298LOC_CHECK_LIBS(sqlite3,sqlite3_open,SQLite,$SQLITELIBPATH,SQLITELIB,,,,$MATHLIB,$DLLIB)
1299
1300fi # $USE_SQLITE
1301
1302AC_SUBST(USE_SQLITE)
1303
1304AC_SUBST(SQLITEINCPATH)
1305AC_SUBST(SQLITELIBPATH)
1306AC_SUBST(SQLITELIB)
1307
1308# Done checking SQLite
1309
1310# Enable OpenGL option
1311
1312OPENGLINC=
1313OPENGLLIB=
1314OPENGLULIB=
1315USE_OPENGL=
1316OPENGL_X11=
1317OPENGL_AQUA=
1318OPENGL_WINDOWS=
1319
1320AC_MSG_CHECKING(whether to use OpenGL)
1321AC_MSG_RESULT("$with_opengl")
1322case "$with_opengl" in
1323	n|no)
1324		OPENGL_TYPE=none
1325		;;
1326	y|yes|x|x11|glx)
1327		OPENGL_TYPE=X11
1328		USE_OPENGL=1
1329		OPENGL_X11=1
1330		;;
1331	aqua|mac|osx|macosx|agl)
1332		OPENGL_TYPE=Aqua
1333		USE_OPENGL=1
1334		OPENGL_AQUA=1
1335		;;
1336	win|windows|mswin|wgl)
1337		OPENGL_TYPE=Windows
1338		USE_OPENGL=1
1339		OPENGL_WINDOWS=1
1340		;;
1341	*)
1342		AC_MSG_ERROR([*** Valid arguments for --with-opengl= are yes,no,x11,aqua,windows.])
1343		;;
1344esac
1345
1346if test -n "$USE_OPENGL" ; then
1347
1348if test "$OPENGL_X11" = 1 ; then
1349
1350# With OpenGL includes directory
1351
1352LOC_CHECK_INC_PATH(opengl,OpenGL,OPENGLINC)
1353
1354LOC_CHECK_INCLUDES(GL/gl.h GL/glu.h,OpenGL,$OPENGLINC $X_CFLAGS)
1355
1356# With OpenGL library directory
1357
1358LOC_CHECK_LIB_PATH(opengl,OpenGL,OPENGL_LIB_PATH)
1359
1360LOC_CHECK_LIBS(GL,glBegin,OpenGL,$OPENGL_LIB_PATH,OPENGLLIB,$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $MATHLIB,,,-lpthread,-lXext)
1361
1362LOC_CHECK_LIBS(GLU,gluBeginCurve,GLU,$OPENGL_LIB_PATH,OPENGLULIB,$OPENGLLIB $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $MATHLIB,,,-lstdc++)
1363
1364OPENGLLIB="$OPENGL_LIB_PATH $OPENGLLIB"
1365OPENGLULIB="$OPENGL_LIB_PATH $OPENGLULIB"
1366
1367LOC_CHECK_FUNC(glXCreatePbuffer,,,,,$OPENGLLIB,[AC_DEFINE(HAVE_PBUFFERS, 1, [define if glXCreatePbuffer exists])])
1368LOC_CHECK_FUNC(glXCreateGLXPixmap,,,,,$OPENGLLIB,[AC_DEFINE(HAVE_PIXMAPS, 1, [define if glXCreatePbuffer exists])])
1369
1370AC_DEFINE(OPENGL_X11, 1, [define if OpenGL uses X11])
1371
1372fi # $OPENGL_X11
1373
1374if test "$OPENGL_AQUA" = 1 ; then
1375
1376LOC_CHECK_FRAMEWORK_PATH(opengl,OpenGL,OPENGLPATH)
1377
1378LOC_CHECK_INCLUDES(OpenGL/gl.h OpenGL/glu.h,OpenGL,$OPENGLPATH)
1379
1380LOC_CHECK_FUNC(glBegin,OpenGL library,OPENGLLIB,-framework OpenGL -framework AGL -framework ApplicationServices,$OPENGLPATH)
1381LOC_CHECK_FUNC(gluBeginCurve,GLU library,OPENGLLIB,,$OPENGLPATH,$OPENGLLIB)
1382
1383OPENGLINC="$OPENGLPATH"
1384OPENGLLIBPATH="$OPENGLPATH"
1385
1386AC_DEFINE(OPENGL_AQUA, 1, [define if OpenGL uses Aqua (MacOS X)])
1387
1388fi # $OPENGL_AQUA
1389
1390if test "$OPENGL_WINDOWS" = 1 ; then
1391
1392# With OpenGL includes directory
1393
1394LOC_CHECK_INC_PATH(opengl,OpenGL,OPENGLINC)
1395
1396LOC_CHECK_INCLUDES(GL/gl.h GL/glu.h,OpenGL,$OPENGLINC)
1397
1398# With OpenGL library directory
1399
1400LOC_CHECK_LIB_PATH(opengl,OpenGL,OPENGL_LIB_PATH)
1401
1402ac_save_cflags="$CFLAGS"
1403CFLAGS="$CFLAGS $OPENGLINC"
1404LOC_CHECK_LINK(opengl32,[#include <GL/gl.h>],[glEnd();],OpenGL,$OPENGL_LIB_PATH,OPENGLLIB)
1405LOC_CHECK_LINK(glu32,[#include <GL/glu.h>],[gluNewQuadric();],GLU,$OPENGL_LIB_PATH,OPENGLULIB,$OPENGLLIB)
1406CFLAGS="${ac_save_cflags}"
1407
1408OPENGLLIB="$OPENGL_LIB_PATH $OPENGLLIB"
1409OPENGLULIB="$OPENGL_LIB_PATH $OPENGLULIB"
1410
1411AC_DEFINE(OPENGL_WINDOWS, 1, [define if OpenGL uses Windows])
1412
1413fi # $OPENGL_WINDOWS
1414
1415fi # $USE_OPENGL
1416
1417AC_SUBST(USE_OPENGL)
1418AC_SUBST(OPENGL_X11)
1419AC_SUBST(OPENGL_AQUA)
1420AC_SUBST(OPENGL_WINDOWS)
1421
1422AC_SUBST(OPENGLINC)
1423AC_SUBST(OPENGLLIB)
1424AC_SUBST(OPENGLULIB)
1425
1426# Done checking OpenGL
1427
1428# Enable ODBC option
1429
1430LOC_CHECK_USE(odbc,ODBC,USE_ODBC)
1431
1432ODBCINC=
1433ODBCLIB=
1434
1435if test -n "$USE_ODBC"; then
1436
1437# With ODBC includes directory
1438
1439LOC_CHECK_INC_PATH(odbc,ODBC,ODBCINC)
1440
1441AC_CHECK_HEADER([windows.h],
1442    AC_DEFINE(HAVE_WINDOWS_H, 1, [Define to 1 if you have the <windows.h> header file.]))
1443
1444ac_save_cppflags="$CPPFLAGS"
1445CPPFLAGS="$ODBCINC $CPPFLAGS"
1446AC_CHECK_HEADER([sql.h],
1447AC_DEFINE(HAVE_SQL_H, 1, [Define to 1 if you have the <sql.h> header file.]),
1448AC_MSG_ERROR([*** Unable to locate <sql.h>.]),[#if defined(HAVE_WINDOWS_H)
1449# include <windows.h>
1450#endif
1451])
1452CPPFLAGS=$ac_save_cppflags
1453
1454# With ODBC library directory
1455
1456LOC_CHECK_LIB_PATH(odbc,ODBC,ODBCLIB)
1457
1458LOC_CHECK_LIBS(odbc,SQLConnect,ODBC,$ODBCLIB,ODBCLIB,$ICONVLIB,,[
1459LOC_CHECK_LIBS(iodbc,SQLConnect,ODBC,$ODBCLIB,ODBCLIB,,,[
1460ac_save_cflags="$CFLAGS"
1461CFLAGS="$CFLAGS $ODBCINC"
1462LOC_CHECK_LINK(odbc32,[#include <windows.h>
1463#include <sql.h>],[SQLAllocEnv((SQLHENV *)0);],ODBC,$ODBCLIB,ODBCLIB)
1464CFLAGS="${ac_save_cflags}"
1465])
1466])
1467
1468fi # $USE_ODBC
1469
1470AC_SUBST(ODBCINC)
1471AC_SUBST(ODBCLIB)
1472
1473# Done checking ODBC
1474
1475# Enable FFTW option
1476
1477LOC_CHECK_USE(fftw,FFTW,USE_FFTW)
1478
1479FFTWINC=
1480FFTWLIB=
1481
1482if test -n "$USE_FFTW"; then
1483
1484# With FFTW includes directory
1485
1486LOC_CHECK_INC_PATH(fftw,FFTW,FFTWINC)
1487
1488LOC_CHECK_INCLUDES(fftw3.h,FFTW,$FFTWINC,[
1489LOC_CHECK_INCLUDES(fftw.h,FFTW,,[
1490LOC_CHECK_INCLUDES(dfftw.h,FFTW,,)
1491])
1492])
1493
1494# With FFTW library directory
1495
1496LOC_CHECK_LIB_PATH(fftw,FFTW,FFTWLIB)
1497
1498LOC_CHECK_LIBS(fftw3, fftw_execute,FFTW,$FFTWLIB,FFTWLIB,,$MATHLIB,[
1499LOC_CHECK_LIBS(fftw, fftwnd_one,FFTW,$FFTWLIB,FFTWLIB,,$MATHLIB,[
1500LOC_CHECK_LIBS(dfftw,fftwnd_one,FFTW,$FFTWLIB,FFTWLIB,,$MATHLIB,)
1501])
1502])
1503
1504fi # $USE_FFTW
1505
1506AC_SUBST(FFTWINC)
1507AC_SUBST(FFTWLIB)
1508
1509# Done checking FFTW
1510
1511# Enable BLAS option
1512
1513LOC_CHECK_USE(blas,BLAS,USE_BLAS)
1514
1515BLASLIB=
1516BLASINC=
1517
1518if test -n "$USE_BLAS"; then
1519
1520# With BLAS includes directory
1521# BLAS doesn't have includes (FORTRAN library)
1522# With BLAS library directory
1523
1524LOC_CHECK_INC_PATH(blas, BLAS, BLASINC)
1525LOC_CHECK_LIB_PATH(blas, BLAS, BLASLIB)
1526
1527# See if cblas.h exists (CBLAS,ATLAS,others)
1528save_CPPFLAGS="$CPPFLAGS"
1529CPPFLAGS="$BLASINC $CPPFLAGS"
1530AC_CHECK_HEADERS(cblas.h)
1531CPPFLAGS="$save_CPPFLAGS"
1532
1533LOC_CHECK_LIBS(blas,dnrm2_,BLAS,$BLASLIB,BLASLIB,$MATHLIB,,,-lg2c)
1534
1535blas_ok=no
1536
1537# Check for ATLAS
1538save_LDFLAGS="$LDFLAGS"
1539LDFLAGS="$BLASLIB $LDFLAGS"
1540AC_CHECK_LIB(atlas, ATL_xerbla,
1541		[AC_CHECK_LIB(f77blas, sgemm_,
1542		[AC_CHECK_LIB(cblas, cblas_dgemm,
1543			[blas_ok=yes; BLASLIB="-lcblas -lf77blas -latlas"],
1544			[],[-lf77blas -latlas])],
1545		[],[-latlas])]
1546)
1547LDFLAGS="$save_LDFLAGS"
1548
1549# Do we have ATLAS?
1550if test $blas_ok = yes; then
1551	AC_DEFINE(HAVE_LIBATLAS, 1, [define if ATLAS exists])
1552fi
1553
1554# BLAS in Apple vecLib framework? (Mac OS-X)
1555#  not dependent on APP build
1556#if test -n "$MACOSX_APP"; then
1557if test $blas_ok = no; then
1558	vlib_flags="-framework vecLib"
1559	save_LIBS="$LIBS"
1560	LIBS="$vlib_flags $LIBS"
1561	AC_MSG_CHECKING([for sgemm in $vlib_flags])
1562	AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[sgemm]])],[blas_ok=yes; BLASLIB="$vlib_flags"],[BLASLIB=""])
1563	AC_MSG_RESULT($blas_ok)
1564	LIBS="$save_LIBS"
1565fi
1566#fi # $MACOSX_APP
1567
1568# BLAS in PhiPACK libraries? (requires generic BLAS, too)
1569if test $blas_ok = no; then
1570	AC_CHECK_LIB(blas, sgemm_,
1571		[AC_CHECK_LIB(dgemm, dgemm_,
1572		[AC_CHECK_LIB(sgemm, sgemm_,
1573			[blas_ok=yes; BLASLIB="-lsgemm -ldgemm -lblas"],
1574			[], [-lblas])],
1575			[], [-lblas])]
1576	)
1577fi
1578
1579# BLAS in Sun Performance library?
1580if test $blas_ok = no; then
1581	if test "x$GCC" != xyes; then # only works with Sun CC
1582		AC_CHECK_LIB(sunmath, acosp,
1583			[AC_CHECK_LIB(sunperf, sgemm_,
1584				[blas_ok=yes; BLASLIB="-xlic_lib=sunperf -lsunmath"],
1585			[], [-lsunmath])]
1586		)
1587	fi
1588fi
1589
1590# Generic BLAS library
1591if test $blas_ok = no; then
1592	AC_CHECK_LIB(blas, sgemm_, [blas_ok=yes; BLASLIB="-lblas"])
1593fi
1594
1595if test $blas_ok = yes; then
1596AC_DEFINE(HAVE_LIBBLAS, 1, [define if BLAS exists])
1597fi
1598
1599fi # $USE_BLAS
1600
1601AC_SUBST(BLASLIB)
1602AC_SUBST(BLASINC)
1603
1604# Done checking BLAS
1605
1606# Enable LAPACK option
1607
1608LOC_CHECK_USE(lapack,LAPACK,USE_LAPACK)
1609
1610LAPACKLIB=
1611LAPACKINC=
1612
1613# LAPACK is useless without BLAS
1614if test -n "$USE_BLAS"; then
1615if test -n "$USE_LAPACK"; then
1616
1617# With LAPACK includes directory
1618# LAPACK doesn't have includes (FORTRAN library)
1619# With LAPACK library directory
1620
1621lapack_ok=no
1622
1623LOC_CHECK_INC_PATH(lapack, LAPACK, LAPACKINC)
1624LOC_CHECK_LIB_PATH(lapack, LAPACK, LAPACKLIB)
1625
1626# See if clapack.h exists (ATLAS)
1627save_CPPFLAGS="$CPPFLAGS"
1628CPPFLAGS="$LAPACKINC $CPPFLAGS"
1629AC_CHECK_HEADERS(clapack.h)
1630CPPFLAGS="$save_CPPFLAGS"
1631
1632# LAPACK linked to by default?
1633if test lapack_ok=no; then
1634	save_LIBS="$LIBS"; LIBS="$LIBS $BLASLIB $MATHLIB $FLIBS"
1635	save_LDFLAGS="$LDFLAGS"; LDFLAGS="$LAPACKLIB $LDFLAGS"
1636	AC_CHECK_FUNC(dsegv_, [lapack_ok=yes])
1637	LIBS="$save_LIBS"
1638	LDFLAGS="$save_LDFLAGS"
1639fi
1640
1641# Generic LAPACK library?
1642if test $lapack_ok = no; then
1643	save_libs="$LIBS"; LIBS="$BLASLIB $MATHLIB $LIBS"
1644	save_LDFLAGS="$LDFLAGS"; LDFLAGS="$LAPACKLIB $LDFLAGS"
1645	AC_CHECK_LIB(lapack, desgv_,
1646		[lapack_ok=yes; LAPACKLIB="-llapack"], [], [$FLIBS])
1647	LIBS="$save_LIBS"
1648	LDFLAGS="$save_LDFLAGS"
1649fi
1650
1651if test $lapack_ok = no; then
1652	LOC_CHECK_LIBS(lapack,dgesv_,LAPACK,$LAPACKLIB,LAPACKLIB,$BLASLIB $MATHLIB,,,-lg2c)
1653fi
1654
1655AC_DEFINE(HAVE_LIBLAPACK, 1, [define if LAPACK exists])
1656
1657fi # $USE_LAPACK
1658fi # $USE_BLAS
1659
1660AC_SUBST(LAPACKLIB)
1661AC_SUBST(LAPACKINC)
1662
1663# Done checking LAPACK
1664
1665# Enable Cairo display driver option
1666
1667LOC_CHECK_USE(cairo,Cairo,USE_CAIRO)
1668
1669CAIROINC=
1670CAIROLIB=
1671
1672if test -n "$USE_CAIRO"; then
1673
1674cairo="cairo"
1675pkgs="cairo-ft cairo-fc cairo-pdf cairo-ps cairo-svg fontconfig"
1676if test -n "$USE_X11"; then
1677	pkgs="$pkgs cairo-xlib cairo-xlib-xrender"
1678fi
1679for pkg in $pkgs ; do
1680    if pkg-config --exists $pkg ; then
1681        cairo="$cairo $pkg"
1682    fi
1683done
1684
1685# With Cairo includes directory
1686#FIXME: somehow quote dirs with spaces in $cairo ?
1687CAIROINC=`pkg-config --cflags $cairo`
1688
1689LOC_CHECK_INC_PATH(cairo,cairo,CAIROINC)
1690
1691LOC_CHECK_INCLUDES(cairo.h,Cairo,$CAIROINC)
1692
1693# With Cairo library directory
1694
1695CAIROLIB=`pkg-config --libs $cairo`
1696
1697LOC_CHECK_LIB_PATH(cairo,cairo,CAIROLIB)
1698LOC_CHECK_LDFLAGS(cairo,cairo,CAIROLIB)
1699
1700LOC_CHECK_FUNC(cairo_create,,,,,$CAIROLIB,[:])
1701LOC_CHECK_FUNC(cairo_xlib_surface_create_with_xrender_format,,,,,$CAIROLIB,
1702[CAIRO_HAS_XRENDER=1],[CAIRO_HAS_XRENDER=])
1703AC_SUBST(CAIRO_HAS_XRENDER)
1704LOC_CHECK_FUNC(cairo_xlib_surface_get_xrender_format,,,,,$CAIROLIB,
1705[CAIRO_HAS_XRENDER_SURFACE=1],[CAIRO_HAS_XRENDER_SURFACE=])
1706AC_SUBST(CAIRO_HAS_XRENDER_SURFACE)
1707
1708CAIROLIB="$CAIROLIB $CAIROLDFLAGS"
1709
1710fi # $USE_CAIRO
1711
1712AC_SUBST(CAIROINC)
1713AC_SUBST(CAIROLIB)
1714AC_SUBST(USE_CAIRO)
1715
1716# Done checking Cairo
1717
1718# Enable FreeType option
1719
1720LOC_CHECK_USE(freetype,FreeType,USE_FREETYPE)
1721
1722FTINC=
1723FTLIB=
1724
1725if test -n "$USE_FREETYPE"; then
1726
1727# With FreeType includes directory
1728
1729LOC_CHECK_INC_PATH(freetype,FreeType,FTINC)
1730
1731LOC_CHECK_INCLUDES(ft2build.h,FreeType,$FTINC)
1732
1733# With FreeType library directory
1734
1735LOC_CHECK_LIB_PATH(freetype,FreeType,FTLIB)
1736
1737LOC_CHECK_LIBS(freetype,FT_Init_FreeType,FreeType,$FTLIB,FTLIB,,,)
1738
1739fi # $USE_FREETYPE
1740
1741AC_SUBST(FTINC)
1742AC_SUBST(FTLIB)
1743
1744# Done checking FreeType
1745
1746# Enable NLS option
1747
1748LOC_CHECK_USE(nls,NLS,USE_NLS)
1749
1750INTLLIB=
1751HAVE_NLS=
1752
1753if test -n "${USE_NLS}" ; then
1754    AC_DEFINE(USE_NLS, 1, [define if NLS requested])
1755
1756AC_CHECK_FUNC(gettext, INTLLIB=, [
1757AC_CHECK_LIB(intl, gettext, INTLLIB=-lintl, [
1758    AC_MSG_ERROR([*** Unable to locate gettext() function.])
1759])])
1760
1761    HAVE_NLS=1
1762fi
1763
1764AC_SUBST(INTLLIB)
1765AC_SUBST(HAVE_NLS)
1766
1767# Enable C++ option
1768
1769LOC_CHECK_USE(cxx,C++,USE_CXX)
1770
1771if test -n "$USE_CXX"; then
1772	AC_PROG_CXX
1773else
1774	CXX=
1775	CXXFLAGS=
1776	AC_SUBST(CXX)
1777	AC_SUBST(CXXFLAGS)
1778fi
1779
1780# Done checking C++
1781
1782# Enable openDWG option
1783
1784LOC_CHECK_USE(opendwg,openDWG,USE_OPENDWG)
1785
1786OPENDWGINCPATH=
1787OPENDWGLIBPATH=
1788OPENDWGLIB=
1789
1790if test -n "${USE_OPENDWG}"; then
1791
1792# With OPENDWG includes directory
1793
1794LOC_CHECK_INC_PATH(opendwg,openDGW,OPENDWGINCPATH)
1795
1796LOC_CHECK_INCLUDES(ad2.h,openDWG,$OPENDWGINCPATH)
1797
1798# With OPENDWG library directory
1799
1800LOC_CHECK_LIB_PATH(opendwg,openDWG,OPENDWGLIBPATH)
1801
1802#search for ad2.a, ad3.a ... in openDWG toolkit directory:
1803#FIX ME  how to program this test??
1804#LOC_CHECK_LIBS(ad?.a,adSeekLayer,openDWG,$OPENDWGLIBPATH,OPENDWGLIB,,)
1805#
1806#for now hack (but working):
1807TRUEOPENDWGLIBPATH=`echo "$OPENDWGLIBPATH" | cut -b3-`
1808adlib=`ls -1 "$TRUEOPENDWGLIBPATH"/ad?.a | tail -1`
1809OPENDWGLIB="$adlib"
1810
1811fi # $USE_OPENDWG
1812
1813AC_SUBST(OPENDWGINCPATH)
1814AC_SUBST(OPENDWGLIBPATH)
1815AC_SUBST(OPENDWGLIB)
1816AC_SUBST(USE_OPENDWG)
1817
1818# Done checking OPENDWG
1819
1820# Enable pthread option
1821
1822LOC_CHECK_USE(pthread,POSIX threads,USE_PTHREAD)
1823
1824PTHREADINCPATH=
1825PTHREADLIBPATH=
1826PTHREADLIB=
1827
1828if test -n "$USE_PTHREAD"; then
1829
1830# With pthread includes directory
1831
1832LOC_CHECK_INC_PATH(pthread,POSIX threads,PTHREADINCPATH)
1833
1834LOC_CHECK_INCLUDES(pthread.h,POSIX threads,$PTHREADINCPATH)
1835
1836# With pthread library directory
1837
1838LOC_CHECK_LIB_PATH(pthread,POSIX threads,PTHREADLIBPATH)
1839
1840LOC_CHECK_FUNC(pthread_create,POSIX threads functions,PTHREADLIB,,,,,[
1841LOC_CHECK_LIBS(pthread,pthread_create,POSIX threads,$PTHREADLIBPATH,PTHREADLIB,,,)
1842])
1843
1844fi # $USE_PTHREAD
1845
1846AC_SUBST(PTHREADINCPATH)
1847AC_SUBST(PTHREADLIBPATH)
1848AC_SUBST(PTHREADLIB)
1849AC_SUBST(USE_PTHREAD)
1850
1851# Done checking pthread
1852
1853# Enable OpenMP option
1854
1855LOC_CHECK_USE(openmp,OpenMP,USE_OPENMP)
1856
1857OMPINCPATH=
1858OMPLIBPATH=
1859OMPLIB=
1860OMPCFLAGS=
1861
1862if test -n "$USE_OPENMP"; then
1863
1864# With OpenMP includes directory
1865
1866LOC_CHECK_INC_PATH(openmp,OpenMP,OMPINCPATH)
1867
1868LOC_CHECK_INCLUDES(omp.h,OpenMP,$OMPINCPATH)
1869
1870# With OpenMP library directory
1871# GCC et al.: -lgomp
1872# Solaris cc: -lmtsk
1873# AIX xlc: -lxlsmp
1874# SGI IRIX 6.5 MIPSpro C/C++: -lmp
1875
1876LOC_CHECK_LIB_PATH(openmp,OpenMP,OMPLIBPATH)
1877
1878LOC_CHECK_FUNC(GOMP_parallel_start,OpenMP functions,OMPLIB,,,,,[
1879LOC_CHECK_LIBS(gomp,GOMP_parallel_start,OpenMP,$OMPLIBPATH,OMPLIB,,,)
1880])
1881
1882# compiler dependent
1883#if test ${CC} = "gcc" ; then
1884if test x$GCC = xyes ; then
1885	# GNU C compiler (>= 4.2.1)
1886	OMPCFLAGS=-fopenmp
1887elif test ${CC} = "icc" ; then
1888	# Intel compiler
1889	OMPCFLAGS=-openmp
1890elif test ${CC} = "opencc" ; then
1891	# AMD's x86 Open64 compiler
1892	OMPCFLAGS=-mp
1893elif test ${CC} = "pgcc" ; then
1894	# Portland Group's compiler
1895	OMPCFLAGS=-mp
1896# ... anybody else?
1897fi
1898
1899# try to build a test program with "$CC $OMPCLFAGS" to confirm it works
1900#...how?
1901#echo "int main() {return 0;}" > test.c
1902#$CC $OMPCLFAGS test.c -o test
1903
1904fi # $USE_OPENMP
1905
1906AC_SUBST(OMPINCPATH)
1907AC_SUBST(OMPLIBPATH)
1908AC_SUBST(OMPLIB)
1909AC_SUBST(OMPCFLAGS)
1910AC_SUBST(USE_OPENMP)
1911
1912# Done checking OpenMP
1913
1914# Enable OpenCL option
1915
1916LOC_CHECK_USE(opencl,OpenCL,USE_OPENCL)
1917
1918OCLINCPATH=
1919OCLLIBPATH=
1920OCLLIB=
1921
1922if test -n "$USE_OPENCL"; then
1923
1924# With OpenCL includes directory
1925
1926LOC_CHECK_INC_PATH(opencl,OpenCL,OCLINCPATH)
1927
1928if test -n "$MACOSX_APP" ; then
1929    LOC_CHECK_INCLUDES(OpenCL/opencl.h,OpenCL,$OCLINCPATH)
1930
1931    # With OpenCL library directory
1932    ### FIXME: ###
1933    #LOC_CHECK_FRAMEWORK_PATH(opencl,OpenCL,OPENCLPATH)
1934    # last term in following would become ',$OPENCLPATH)' if above is uncommented
1935    LOC_CHECK_FUNC(clGetPlatformInfo,OpenCL library,OCLLIB,-framework OpenCL,)
1936else
1937    LOC_CHECK_INCLUDES(CL/cl.h,OpenCL,$OCLINCPATH)
1938
1939    # With OpenCL library directory
1940    LOC_CHECK_LIB_PATH(opencl,OpenCL,OCLLIBPATH)
1941    LOC_CHECK_LIBS(OpenCL,clGetPlatformInfo,OpenCL,$OCLLIBPATH,OCLLIB,,,)
1942    # expanded symbol check: yes? no?
1943    #LOC_CHECK_FUNC(clGetPlatformInfo,OpenCL functions,OCLLIB,,,,,[
1944    #LOC_CHECK_LIBS(OpenCL,clGetPlatformInfo,OpenCL,$OCLLIBPATH,OCLLIB,,,)
1945    #])
1946fi
1947
1948fi # $USE_OPENCL
1949
1950AC_SUBST(OCLINCPATH)
1951AC_SUBST(OCLLIBPATH)
1952AC_SUBST(OCLLIB)
1953AC_SUBST(USE_OPENCL)
1954
1955# Done checking OpenCL
1956
1957# Enable LFS (from cdr-tools, tar, and autoconf 2.68)
1958dnl Check for large file support
1959dnl Do this last to make sure that no large file definition
1960dnl in confdefs.h will modify our results
1961AC_SYS_LARGEFILE
1962ac_save_cflags=${CFLAGS}
1963CFLAGS="$LFS_CFLAGS ${ac_save_cflags}"
1964dnl Warning do not run this test. it interferes with the test
1965dnl AC_CHECK_FUNCS(fseeko ftello) from above.
1966dnl The test AC_HAVE_LARGEFILES will check whether ftello/fseeko
1967dnl are available in Large File mode
1968AC_FUNC_FSEEKO
1969AC_HAVE_LARGEFILES
1970CFLAGS=${ac_save_cflags}
1971# Done large file support
1972
1973USE_TERMIO=
1974AC_SUBST(USE_TERMIO)
1975
1976STRIPFLAG=
1977AC_SUBST(STRIPFLAG)
1978
1979GRASS_HOME="${DSTDIR}"
1980AC_SUBST(GRASS_HOME)
1981
1982AC_CONFIG_FILES([include/Make/Platform.make include/Make/Doxyfile_arch_html include/Make/Doxyfile_arch_latex include/version.h grass.pc])
1983AC_OUTPUT
1984
1985LOC_MSG([Copying config.status to config.status.${ARCH}])
1986cp -f config.status config.status.${ARCH}
1987
1988# Display configuration status
1989
1990LOC_MSG()
1991LOC_MSG([GRASS is now configured for:  ${host}])
1992LOC_MSG()
1993LOC_MSG([  Source directory:           ${SRCDIR}])
1994LOC_MSG([  Build directory:            ${DSTDIR}])
1995LOC_MSG([  Installation directory:     ${INSTDIR}])
1996LOC_MSG([  Startup script in directory:${bindir}])
1997LOC_MSG([  C compiler:                 ${CC} ${CFLAGS}])
1998LOC_MSG([  C++ compiler:               ${CXX} ${CXXFLAGS}])
1999LOC_MSG([  Building shared libraries:  ${shared_ok}])
2000LOC_MSG([  OpenGL platform:            ${OPENGL_TYPE}])
2001LOC_MSG()
2002LOC_MSG_USE(MacOSX application,MACOSX_APP)
2003LOC_MSG([  MacOSX architectures:       ${MACOSX_ARCHS}])
2004LOC_MSG([  MacOSX SDK:                 ${MACOSX_SDK}])
2005LOC_MSG()
2006LOC_MSG_USE(BLAS support,USE_BLAS)
2007LOC_MSG_USE(BZIP2 support,USE_BZIP2)
2008LOC_MSG_USE(C++ support,USE_CXX)
2009LOC_MSG_USE(Cairo support,USE_CAIRO)
2010LOC_MSG_USE(DWG support,USE_OPENDWG)
2011LOC_MSG_USE(FFTW support,USE_FFTW)
2012LOC_MSG_USE(FreeType support,USE_FREETYPE)
2013LOC_MSG_USE(GDAL support,USE_GDAL)
2014LOC_MSG_USE(GEOS support,USE_GEOS)
2015LOC_MSG_USE(LAPACK support,USE_LAPACK)
2016LOC_MSG_USE(Large File support (LFS), USE_LARGEFILES)
2017LOC_MSG_USE(libLAS support,USE_LIBLAS)
2018LOC_MSG_USE(MySQL support,USE_MYSQL)
2019LOC_MSG_USE(NetCDF support,USE_NETCDF)
2020LOC_MSG_USE(NLS support,USE_NLS)
2021LOC_MSG_USE(ODBC support,USE_ODBC)
2022LOC_MSG_USE(OGR support,USE_OGR)
2023LOC_MSG_USE(OpenCL support,USE_OPENCL)
2024LOC_MSG_USE(OpenGL support,USE_OPENGL)
2025LOC_MSG_USE(OpenMP support,USE_OPENMP)
2026LOC_MSG_USE(PDAL support,USE_PDAL)
2027LOC_MSG_USE(PNG support,USE_PNG)
2028LOC_MSG_USE(POSIX thread support,USE_PTHREAD)
2029LOC_MSG_USE(PostgreSQL support,USE_POSTGRES)
2030LOC_MSG_USE(Readline support,USE_READLINE)
2031LOC_MSG_USE(Regex support,USE_REGEX)
2032LOC_MSG_USE(SQLite support,USE_SQLITE)
2033LOC_MSG_USE(TIFF support,USE_TIFF)
2034LOC_MSG_USE(X11 support,USE_X11)
2035LOC_MSG_USE(Zstandard support,USE_ZSTD)
2036LOC_MSG()
2037# remove when the new PROJ API is stable
2038if test $PROJ4API = 0 ; then
2039AC_MSG_RESULT([  using new PROJ 5+ API])
2040else
2041AC_MSG_RESULT([  using old PROJ 4 API])
2042fi
2043LOC_MSG()
2044