X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/e7685938a0b24e2dedee3d1cd444c8ca68e76d6c..22f6e7ee15dfaf70b70d938f78589bbd65a2df45:/configure.ac diff --git a/configure.ac b/configure.ac index d45cc4e9..4ddc6a5c 100644 --- a/configure.ac +++ b/configure.ac @@ -1,12 +1,22 @@ # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. -AC_PREREQ(2.59) -AC_INIT(viking, 1.5, , viking, http://viking.sf.net/) +AC_PREREQ(2.64) +AC_INIT(viking, 1.6.1, , viking, http://viking.sf.net/) + +AC_CANONICAL_HOST +AC_CANONICAL_TARGET + AM_INIT_AUTOMAKE([dist-bzip2 dist-zip subdir-objects]) dnl AC_CONFIG_SRCDIR([src/main.c]) AC_CONFIG_HEADERS([src/config.h]) -GTK_DOC_CHECK(1.0) + +# check for gtk-doc +m4_ifdef([GTK_DOC_CHECK], [ +GTK_DOC_CHECK([1.0],[--flavour no-tmpl]) +],[ +AM_CONDITIONAL([ENABLE_GTK_DOC], false) +]) AC_PROG_CC AC_PROG_CC_STDC @@ -15,6 +25,15 @@ AC_PROG_MAKE_SET AC_PROG_RANLIB AC_PATH_PROG(GLIB_MKENUMS, glib-mkenums) +ac_mingw32=no +case $target_os in + *mingw32*) + ac_mingw32=yes + ;; + *) + ;; +esac + # I18N GETTEXT_PACKAGE=viking AC_SUBST(GETTEXT_PACKAGE) @@ -45,7 +64,7 @@ AC_TYPE_MODE_T # Checks for library functions or symbols AC_FUNC_STAT AC_FUNC_STRTOD -AC_CHECK_FUNCS([floor memset mkdtemp pow realpath sqrt strcasecmp strchr strdup strncasecmp strtol strtoul]) +AC_CHECK_FUNCS([floor memset mkdtemp pow realpath sqrt strcasecmp strchr strncasecmp strtol strtoul]) AC_CHECK_LIB(m, tan) AC_CHECK_LIB(z, inflate) AC_CHECK_LIB(X11, XSetErrorHandler) @@ -82,7 +101,7 @@ dnl | Pkgconfig checks |--------------------------------------- dnl ------------------ PKG_CHECK_MODULES(PACKAGE, [ - glib-2.0 >= 2.16 + glib-2.0 >= 2.26 gthread-2.0 >= 2.2 gtk+-2.0 >= 2.16 gio-2.0 >= 2.12 @@ -148,9 +167,9 @@ esac AM_CONDITIONAL([GOOGLE], [test x$ac_cv_enable_google = xyes]) AC_ARG_ENABLE(terraserver, AC_HELP_STRING([--enable-terraserver], - [enable Terraserver stuff (default is enable)]), + [enable Terraserver stuff (default is disabled as the tileserver is no longer available)]), [ac_cv_enable_terraserver=$enableval], - [ac_cv_enable_terraserver=yes]) + [ac_cv_enable_terraserver=no]) AC_CACHE_CHECK([whether to enable Terraserver stuff], [ac_cv_enable_terraserver], [ac_cv_enable_terraserver=yes]) case $ac_cv_enable_terraserver in @@ -228,6 +247,8 @@ case $ac_cv_enable_geocaches in esac AM_CONDITIONAL([GEOCACHES], [test x$ac_cv_enable_geocaches = xyes]) +# Geotagging +AC_ARG_WITH(libexif, AC_HELP_STRING([--with-libexif], [Force usage of libexif instead of libgexiv2])) AC_ARG_ENABLE(geotag, AC_HELP_STRING([--enable-geotag], [enable Geotag Support (default is enable).]), [ac_cv_enable_geotag=$enableval], @@ -236,11 +257,21 @@ AC_CACHE_CHECK([whether to enable Geotag Support], [ac_cv_enable_geotag], [ac_cv_enable_geotag=yes]) case $ac_cv_enable_geotag in yes) - AC_CHECK_LIB(exif,exif_loader_new,,AC_MSG_ERROR([libexif is needed for Geotag features[,] but is not found. The feature can be disabled with --disable-geotag])) + AS_IF([test x$with_libexif = xyes], + AC_CHECK_HEADER([libexif/exif-data.h],[],AC_MSG_ERROR([exif-data.h is needed but not found - you will need to install package 'libexif-dev' or similar])) + AC_CHECK_LIB(exif,exif_loader_new,, AC_MSG_ERROR([libexif is not found but it has been forcibly required])), + # gexiv2.h relies on glib so a simple compile check fails. + #AC_CHECK_HEADER([gexiv2/gexiv2.h],,AC_MSG_ERROR([Error msg...])) + AC_CHECK_LIB(gexiv2,gexiv2_metadata_new,, AC_MSG_ERROR([libgexiv2 is needed but not found - you will need to install package 'libgexiv2-dev' or similar. The feature can be disabled with --disable-geotag])) + ) AC_DEFINE(VIK_CONFIG_GEOTAG, [], [GEOTAG STUFF]) ;; esac AM_CONDITIONAL([GEOTAG], [test x$ac_cv_enable_geotag = xyes]) +AM_CONDITIONAL([GEXIV2], [test x$ac_cv_lib_gexiv2_gexiv2_metadata_new = xyes] ) +# Tested with gexiv2 0.10.2, but probably would work with older versions; may be all of them... +#AM_COND_IF([GEXIV2], [PKG_CHECK_MODULES([GEXIV2], [gexiv2 >= 0.6.1])]) +AM_CONDITIONAL([LIBEXIF], [test x$ac_cv_lib_exif_exif_loader_new = xyes] ) AC_ARG_ENABLE(dem24k, AC_HELP_STRING([--enable-dem24k], [enable USGS 24k DEM (default is disable) download source. Requires dem24k.pl script in path.]), @@ -271,7 +302,7 @@ esac AM_CONDITIONAL([REALTIME_GPS_TRACKING], [test x$ac_cv_enable_realtimegpstracking = xyes]) # BZIP2 -AC_ARG_ENABLE(bz2, AC_HELP_STRING([--enable-bzip2], +AC_ARG_ENABLE(bzip2, AC_HELP_STRING([--enable-bzip2], [enable bzip2 Support (default is enable).]), [ac_cv_enable_bzip2=$enableval], [ac_cv_enable_bzip2=yes]) @@ -280,7 +311,16 @@ AC_CACHE_CHECK([whether to enable bzip2 Support], case $ac_cv_enable_bzip2 in yes) AC_CHECK_HEADERS([bzlib.h],[],[AC_MSG_ERROR([bzlib.h is needed but not found - you will need to install package 'libbz2-dev' or similar. The feature can be disabled with --disable-bzip2])]) - AC_CHECK_LIB(bz2, BZ2_bzBuffToBuffDecompress, [], [AC_MSG_ERROR([libbz2 is needed but not found.])]) + if test "$ac_mingw32" = "yes"; then + # Using the cross compiler it bizarrely fails to detect BZ2_bzRead during the configure stage + # I SWEAR THIS WORKED AT SOME POINT - BUT ON A DIFFERENT DAY IT DOESN'T = MORE SWEARING + BZ2FUNC=main + AC_CHECK_LIB(bz2, [$BZ2FUNC], [], [LIBS="-lbz2 $LIBS" + AC_MSG_WARN([libbz2 not found! Forcing it anyway!])]) + else + BZ2FUNC=BZ2_bzRead + AC_CHECK_LIB(bz2, [$BZ2FUNC], [], [AC_MSG_ERROR([libbz2 is needed but not found.])]) + fi ;; esac AM_CONDITIONAL([BZIP2], [test x$ac_cv_enable_bzip2 = xyes]) @@ -315,28 +355,66 @@ case $ac_cv_enable_mbtiles in esac AM_CONDITIONAL([SQLITE], [test x$ac_cv_enable_mbtiles = xyes]) +# Standard compression is handled by libz +# libzip enables a friendlier file based interface +# libzip itself depends on libz (which is required in the Viking build ATM) +# ZIP +AC_ARG_ENABLE(zip, AC_HELP_STRING([--enable-zip], + [enable zip support (default is enable).]), + [ac_cv_enable_zip=$enableval], + [ac_cv_enable_zip=yes]) +AC_CACHE_CHECK([whether to enable zip Support], + [ac_cv_enable_zip], [ac_cv_enable_zip=yes]) +case $ac_cv_enable_zip in + yes) + # NB As far as I can tell libzip doesn't provide any versioning info within the header code itself + # Thus supporting old versions via simple #if #else #endif directives is seemingly not possible + # Resort to checking versioning only via pkgconfig + PKG_CHECK_MODULES([LIBZIP], [libzip >= 0.11], + [ AC_CHECK_HEADERS([zip.h],[],[AC_MSG_ERROR([zip.h is needed but not found - you will need to install package 'libzip-dev' or similar. The feature can be disabled with --disable-zip])]) + AC_CHECK_LIB(zip, [main], [], [AC_MSG_ERROR([libzip is needed but not found.])]) ], + [ AC_MSG_WARN([libzip version needs to be at least 0.11, use of libzip is disabled]) + ac_cv_enable_zip=no ] + ) + ;; +esac +AM_CONDITIONAL([ZIP], [test x$ac_cv_enable_zip = xyes]) + +# Mapnik rendering layer +AC_ARG_ENABLE(mapnik, AC_HELP_STRING([--enable-mapnik], + [enable Mapnik (default is enable)]), + [ac_cv_enable_mapnik=$enableval], + [ac_cv_enable_mapnik=yes]) +AC_CACHE_CHECK([whether to enable Mapnik], + [ac_cv_enable_mapnik], [ac_cv_enable_mapnik=yes]) +case $ac_cv_enable_mapnik in + yes) + # C++ + AC_LANG_CPLUSPLUS + AC_LANG_SAVE + AC_PROG_CXX + # Mapnik3 requires C++11. Viking will use C++11 as well. + CXXFLAGS="$CXXFLAGS -std=c++11" + # Too difficult to get check working under Windows (extra dependencies needed probably Boost)- so just skip it + if test "x$ac_cv_enable_windows" = "xno"; then + AC_CHECK_HEADER([mapnik/map.hpp],[],[AC_MSG_ERROR([mapnik/map.hpp is needed but not found - you will need to install package 'libmapnik-dev' or similar. The feature can be disabled with --disable-mapnik])]) + fi + AC_CHECK_LIB([mapnik], [main], [], [AC_MSG_ERROR([libmapnik is needed but not found.])]) + AC_CHECK_LIB([stdc++], [main], [], [AC_MSG_ERROR([libstdc++ is needed but not found.])]) + # Required for Mapnik3 build (it's also in Mapnik2 but does not need to be specified for some reason) + # it's part of libmapnik install dependencies + AC_CHECK_LIB([icuuc], [main], [], [AC_MSG_ERROR([libicuuc is needed but not found.])]) + AC_LANG_RESTORE + ;; +esac +AM_CONDITIONAL([MAPNIK], [test x$ac_cv_enable_mapnik = xyes]) ### -AC_ARG_WITH(search, - [AC_HELP_STRING([--with-search], - [specify google or geonames for searching (default is google)])], - [case "x$withval" in - "xgoogle") - VIK_CONFIG_SEARCH=VIK_CONFIG_SEARCH_GOOGLE - ;; - "xgeonames") - VIK_CONFIG_SEARCH=VIK_CONFIG_SEARCH_GEONAMES - ;; - *) - AC_MSG_ERROR([Please, set a value for search method]) - esac], - [VIK_CONFIG_SEARCH=VIK_CONFIG_SEARCH_GOOGLE]) -AC_DEFINE_UNQUOTED(VIK_CONFIG_SEARCH_GOOGLE, 1, - [Id. for searching via GOOGLE]) -AC_DEFINE_UNQUOTED(VIK_CONFIG_SEARCH_GEONAMES, 2, - [Id. for searching via GEONAMES]) -AC_DEFINE_UNQUOTED(VIK_CONFIG_SEARCH, ${VIK_CONFIG_SEARCH}, - [Method for the search]) +## WORK AROUND BROKEN autoconf - see http://lists.gnu.org/archive/html/bug-automake/2002-11/msg00020.html +m4_pushdef([AC_MSG_ERROR]) +AC_PROG_CXX +m4_popdef([AC_MSG_ERROR]) +## AC_ARG_WITH(mapcache, @@ -374,61 +452,64 @@ DB2MAN_XSL=/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/manpages/docbook.xsl AC_SUBST(DB2MAN_XSL) AC_PATH_PROG(XP,xsltproc) AM_CONDITIONAL([HAVE_XSLTPROC],[test "x$XP" != "x"]) -AM_CONDITIONAL([GEN_MANPAGES],[test "x$XP" != "x" && test -r "$DB2MAN_XSL"]) +AC_CHECK_PROG([HAVE_SCROLLKEEPER],scrollkeeper-config,"yes") +AM_CONDITIONAL([GEN_MANPAGES],[test "x$XP" != "x" && test -r "$DB2MAN_XSL"] && test "${HAVE_SCROLLKEEPER}" == "yes" ) +AM_COND_IF([GEN_MANPAGES], [ac_cv_enable_man=yes], [ac_cv_enable_man=no]) -dnl This will cause the automake generated makefiles to pass the -dnl correct flags to aclocal. -ACLOCAL_AMFLAGS="\${ACLOCAL_FLAGS}" -AC_SUBST(ACLOCAL_AMFLAGS) +ISODATE=`date +%Y-%m-%d` +AC_SUBST(ISODATE) -AM_CONDITIONAL([VIKING_DOC], test x${enable_gtk_doc} = xyes) +AC_DEFINE_UNQUOTED(THEYEAR, "`date +%Y`", [The Year]) # Configuration AC_CONFIG_FILES([ + viking.spec + mingw-viking.spec Makefile src/Makefile src/icons/Makefile po/Makefile.in data/Makefile + tools/Makefile test/Makefile help/Makefile + help/viking.xml win32/Makefile win32/installer/Makefile win32/installer/pixmaps/Makefile - win32/installer/translations/Makefile]) -AM_COND_IF([VIKING_DOC], - [AC_CONFIG_FILES([ + win32/installer/translations/Makefile doc/Makefile doc/reference/Makefile - doc/examples/Makefile])]) + doc/examples/Makefile]) -AC_OUTPUT([ - viking.spec - ]) +AC_OUTPUT dnl Output the configuration summary -echo "" -echo "===========================================" -echo "$PACKAGE $VERSION" -echo "-------------------------------------------" -echo "Bing Maps : $ac_cv_enable_bing" -echo "Google : $ac_cv_enable_google" -echo "Terraserver Maps : $ac_cv_enable_terraserver" -echo "Expedia Maps : $ac_cv_enable_expedia" -echo "Open Street Map : $ac_cv_enable_openstreetmap" -echo "BlueMarble : $ac_cv_enable_bluemarble" -echo "Geonames : $ac_cv_enable_geonames" -echo "Geocaches Acquire : $ac_cv_enable_geocaches" -echo "Geotag Support : $ac_cv_enable_geotag" -echo "USGS 24k DEM : $ac_cv_enable_dem24k" -echo "Realtime GPS Tracking : $ac_cv_enable_realtimegpstracking" -echo "bzip2 Support : $ac_cv_enable_bzip2" -echo "File Magic Support : $ac_cv_enable_magic" -echo "MBTiles Support (SQLite3) : $ac_cv_enable_mbtiles" -echo "Size of map cache (in memory) : ${VIK_CONFIG_MAPCACHE_SIZE}" -echo "Age of tiles (in seconds) : ${VIK_CONFIG_DEFAULT_TILE_AGE}" -echo "Documentation (+HTML) : ${enable_gtk_doc} (HTML: ${enable_gtk_doc_html})" -echo "-------------------------------------------" -echo "" -echo "Configure finished, type 'make' to build." - +AC_MSG_NOTICE([" +=========================================== +$PACKAGE $PACKAGE_URL $VERSION +------------------------------------------- +Bing Maps : $ac_cv_enable_bing +Google : $ac_cv_enable_google +Terraserver Maps : $ac_cv_enable_terraserver +Expedia Maps : $ac_cv_enable_expedia +Open Street Map : $ac_cv_enable_openstreetmap +BlueMarble : $ac_cv_enable_bluemarble +Geonames : $ac_cv_enable_geonames +Geocaches Acquire : $ac_cv_enable_geocaches +Geotag Support : $ac_cv_enable_geotag (libgexiv2=$ac_cv_lib_gexiv2_gexiv2_metadata_new libexif=$ac_cv_lib_exif_exif_loader_new) +USGS 24k DEM : $ac_cv_enable_dem24k +Realtime GPS Tracking : $ac_cv_enable_realtimegpstracking +bzip2 Support : $ac_cv_enable_bzip2 +File Magic Support : $ac_cv_enable_magic +MBTiles Support (SQLite3) : $ac_cv_enable_mbtiles +Zip File Support (with libzip) : $ac_cv_enable_zip +Mapnik Rendering Support (C++) : $ac_cv_enable_mapnik +Size of map cache (in memory) : ${VIK_CONFIG_MAPCACHE_SIZE} +Age of tiles (in seconds) : ${VIK_CONFIG_DEFAULT_TILE_AGE} +Man page generation : $ac_cv_enable_man +Documentation (+HTML) : ${enable_gtk_doc} (HTML: ${enable_gtk_doc_html}) +------------------------------------------- + +Configure finished, type 'make' to build. +"])