X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/655cae2f7c91487a7a2cc1f017e10274cb8b70d7..d475a88cdb851cc357b32f30eb23c2e2135bf264:/configure.ac diff --git a/configure.ac b/configure.ac index d6bf5e6e..93a47432 100644 --- a/configure.ac +++ b/configure.ac @@ -1,19 +1,39 @@ # -*- 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/) -AM_INIT_AUTOMAKE([dist-bzip2 dist-zip]) +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) -# Checks for programs. +# 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 +# Checks for programs. 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) @@ -21,7 +41,9 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Gettext package name]) AM_GLIB_DEFINE_LOCALEDIR(LOCALEDIR) -AM_GLIB_GNU_GETTEXT +AM_GNU_GETTEXT_VERSION([0.17]) +AM_GNU_GETTEXT([external]) + IT_PROG_INTLTOOL([0.35.0]) AC_SUBST([CONFIG_STATUS_DEPENDENCIES],['$(top_srcdir)/po/LINGUAS']) @@ -42,11 +64,25 @@ 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) +# ATM not running automake under Windows +#AC_CHECK_PROG(USE_WINDOWS, cmd.exe, yes, no) +#AM_CONDITIONAL([WINDOWS], [test x$USE_WINDOWS = xyes]) +# So pass in as an option instead +# This is only to perform slightly different build steps +# (the code uses standard WINDOWS defines for any specific different behaviour) +AC_ARG_ENABLE(windows, AC_HELP_STRING([--enable-windows], + [Perform specific Windows build steps (default is no)]), + [ac_cv_enable_windows=$enableval], + [ac_cv_enable_windows=no]) +AC_CACHE_CHECK([whether to enable Windows build steps], + [ac_cv_enable_windows], [ac_cv_enable_windows=no]) +AM_CONDITIONAL([WINDOWS], [test x$ac_cv_enable_windows = xyes]) + # Expat AM_WITH_EXPAT @@ -65,9 +101,9 @@ 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.14 + gtk+-2.0 >= 2.16 gio-2.0 >= 2.12 ]) @@ -131,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 @@ -211,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], @@ -219,25 +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]) - -AC_ARG_ENABLE(spotmaps, AC_HELP_STRING([--enable-spotmaps], - [enable SPOTMaps map (default is enable).]), - [ac_cv_enable_spotmaps=$enableval], - [ac_cv_enable_spotmaps=yes]) -AC_CACHE_CHECK([whether to enable SPOTMaps map], - [ac_cv_enable_spotmaps], [ac_cv_enable_spotmaps=yes]) -case $ac_cv_enable_spotmaps in - yes) - AC_DEFINE(VIK_CONFIG_SPOTMAPS, [], [SPOTMAPS STUFF]) - ;; -esac -AM_CONDITIONAL([SPOTMAPS], [test x$ac_cv_enable_spotmaps = 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.]), @@ -268,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]) @@ -277,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]) @@ -306,34 +349,87 @@ AC_CACHE_CHECK([whether to enable MBTiles Support], [ac_cv_enable_mbtiles], [ac_cv_enable_mbtiles=yes]) case $ac_cv_enable_mbtiles in yes) - AC_CHECK_HEADERS([sqlite3.h],[],[AC_MSG_ERROR([sqlite3.h is needed but not found - you will need to install package 'libmagic-dev' or similar. The feature can be disabled with --disable-mbtiles])]) + AC_CHECK_HEADERS([sqlite3.h],[],[AC_MSG_ERROR([sqlite3.h is needed but not found - you will need to install package 'libsqlite3-dev' or similar. The feature can be disabled with --disable-mbtiles])]) AC_CHECK_LIB(sqlite3, sqlite3_open, [], [AC_MSG_ERROR([libsqlite3 is needed but not found.])]) ;; 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]) + +# ATM only for MD5 Hashing which is currently only used for filename of image thumbnails +AC_ARG_ENABLE(nettle, AC_HELP_STRING([--enable-nettle], + [enable MD5 Hash support (default is enable)]), + [ac_cv_enable_nettle=$enableval], + [ac_cv_enable_nettle=yes]) +AC_CACHE_CHECK([whether to enable MD5 Hash support], + [ac_cv_enable_nettle], [ac_cv_enable_nettle=yes]) +case $ac_cv_enable_nettle in + yes) + AC_CHECK_HEADER([nettle/md5-compat.h],[],[AC_MSG_ERROR([nettle/md5-compat.h is needed but not found - you will need to install package 'nettle-dev' or similar. The feature can be disabled with --disable-nettle])]) + AC_CHECK_LIB([nettle], [main], [], [AC_MSG_ERROR([libnettle is needed but not found.])]) + ;; +esac +AM_CONDITIONAL([MD5_HASH], [test x$ac_cv_enable_nettle = 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, @@ -364,68 +460,73 @@ AC_ARG_WITH(tileage, [VIK_CONFIG_DEFAULT_TILE_AGE=604800]) AC_DEFINE_UNQUOTED(VIK_CONFIG_DEFAULT_TILE_AGE, ${VIK_CONFIG_DEFAULT_TILE_AGE}, [Age of tiles before checking it (in seconds)]) +AC_DEFINE(HAVE_VIKING, 1, [Enable Viking specifics in otherwise reusable code]) dnl man pages processing 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 + mingw64-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 "SPOTMaps : $ac_cv_enable_spotmaps" -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 +MD5 Hash Support (with libnettle): $ac_cv_enable_nettle +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. +"])