X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=configure.ac;h=dec252086451811915082f2cef66e2b530405dd9;hp=9267e807d9756934773b1a42cc19f172acc6505b;hb=705fbbaf9a8064c034d23119e912da028af7fac7;hpb=29e3d45f7bbbf31eadf793c41ff2b3d9c47b7539 diff --git a/configure.ac b/configure.ac index 9267e80..dec2520 100644 --- a/configure.ac +++ b/configure.ac @@ -10,7 +10,7 @@ AC_INIT([Yoink], [0.1], [chaz@dogcows.com], [yoink]) AC_CANONICAL_TARGET -AC_CONFIG_SRCDIR([src/YoinkApp.cc]) +AC_CONFIG_SRCDIR([src/version.c]) AC_CONFIG_MACRO_DIR([m4]) AM_INIT_AUTOMAKE @@ -18,109 +18,185 @@ AM_INIT_AUTOMAKE # # Checks for programs. -# +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AC_PROG_CXX -#AC_PROG_AWK AC_PROG_CC AC_PROG_CPP AC_PROG_INSTALL -#AC_PROG_LN_S -#AC_PROG_MAKE_SET -AC_PROG_LIBTOOL +AC_PROG_RANLIB +AM_PROG_CC_C_O + +PKG_PROG_PKG_CONFIG +AC_PATH_PROGS([DOXYGEN], [doxygen]) +AC_SUBST(DOXYGEN) # -# Checks for configuration arguments. +# Configure platform-specific stuff. +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +case "${host}" in + *mingw32*) + MINGW32=yes + WIN32=yes + AC_PATH_PROGS([WINDRES], [windres $host_alias-windres $host_os-windres]) + if test "x$WINDRES" = x + then + AC_MSG_ERROR([windres could not be found]) + fi + AC_PATH_PROGS([MAKENSIS], [makensis]) + ;; + *cygwin*) + CYGWIN=yes + WIN32=yes + ;; + *-apple-darwin*) + MACOSX=yes + LIBS="$LIBS -Wl,-framework" + ;; +esac + +AM_CONDITIONAL([WIN32], test "$WIN32" = "yes") + + # +# Checks for configuration arguments. +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AC_ARG_ENABLE([debug], [ --enable-debug include debugging symbols and features], - [debug=$enableval - if test x$debug = xyes - then - CFLAGS="-Wall -Werror -g -O0 -DDEBUG" - CXXFLAGS="-Wall -Werror -g -O0 -DDEBUG" - else - CFLAGS="-O2 -DNDEBUG" - CXXFLAGS="-O2 -DNDEBUG" - fi], - [CFLAGS="-O2 -DNDEBUG" - CXXFLAGS="-O2 -DNDEBUG"]) + [debug=$enableval], + [debug=no]) + +AC_ARG_ENABLE([double-precision], + [ --enable-double-precision use doubles instead of floats], + [double_precision=$enableval], + [double_precision=no]) AC_ARG_ENABLE([profile], - [ --enable-profile make a binary for use with gprof], - [profile=$enableval - if test x$profile = xyes - then - CFLAGS="$CFLAGS -pg" - CXXFLAGS="$CXXFLAGS -pg" - fi]) + [ --enable-profile make a binary with code profiling instructions], + [profile=$enableval], + [profile=no]) +AC_ARG_ENABLE([extra-warnings], + [ --enable-extra-warnings make the gcc compiler give more warnings], + [extra_warnings=$enableval], + [extra_warnings=no]) -if test x$prefix = xNONE +AC_ARG_ENABLE([clock_gettime], + [ --enable-clock_gettime use clock_gettime() instead of SDL_GetTicks()], + [clock_gettime=$enableval], + [clock_gettime=no]) + +AC_ARG_ENABLE([threads], + [ --enable-threads use threads for concurrency where appropriate], + [threads=$enableval], + [threads=no]) + +AC_ARG_ENABLE([gtk], + [ --enable-gtk enable GTK+ modal dialogs], + [gtk=$enableval], + [gtk=no]) + +AC_ARG_ENABLE([qt4], + [ --enable-qt4 enable QT modal dialogs], + [qt4=$enableval], + [qt4=no]) + + +if test x$debug = xyes then - prefix="$ac_default_prefix" + CFLAGS="$CFLAGS -DDEBUG -ggdb -O0 -Wall -Wno-uninitialized" + CXXFLAGS="$CXXFLAGS -DDEBUG -ggdb -O0 -Wall -Wno-uninitialized" +else + CFLAGS="$CFLAGS -DNDEBUG" + CXXFLAGS="$CXXFLAGS -DNDEBUG" fi -AC_ARG_WITH([assetdir], - [AS_HELP_STRING([--with-assetdir=DIR], - [real path to game assets (default: $datarootdir/yoink)])], - [DATADIR="$withval"], - [eval DATADIR="$datarootdir/yoink"]) +if test x$double_precision = xyes +then + AC_DEFINE([USE_DOUBLE_PRECISION], 1, + [Define to 1 if you want to use doubles instead of floats.]) +fi -AC_SUBST([DATADIR]) -AC_DEFINE_UNQUOTED([YOINK_DATADIR], ["$DATADIR"], - [Define to path of game asset directory.]) +if test x$profile = xyes +then + CFLAGS="$CFLAGS -pg" + CXXFLAGS="$CXXFLAGS -pg" + AC_DEFINE([PROFILING_ENABLED], 1, + [Define to 1 if profiling is built in.]) +fi -CONFIGFILES="\$HOME/.yoinkrc:/etc/yoinkrc" +if test x$extra_warnings = xyes +then + CFLAGS="$CFLAGS -Wextra -Wno-unused-parameter" + CXXFLAGS="$CXXFLAGS -Wextra -Wno-unused-parameter" +fi -AC_DEFINE_UNQUOTED([YOINK_CONFIGFILES], ["$CONFIGFILES"], - [Define to colon-delimited configuration file paths.]) +if test x$threads = xyes +then + AC_DEFINE([USE_THREADS], 1, + [Define to 1 if you want to use threads when applicable.]) +fi +if test x$gtk = xyes +then + AC_DEFINE([USE_GTK], 1, + [Define to 1 if you want to use GTK+ modal dialogs.]) +elif test x$qt4 = xyes +then + AC_DEFINE([USE_QT4], 1, + [Define to 1 if you want to use QT4 modal dialogs.]) +fi -# -# Checks for libraries. -# -AM_PATH_SDL([1.2.10], - [CFLAGS="$CFLAGS $SDL_CFLAGS" - CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" - LIBS="$LIBS $SDL_LIBS"]) +if test "x$prefix" = xNONE +then + prefix="$ac_default_prefix" +fi -#BOOST_REQUIRE([1.35]) -#CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" -BOOST_SMART_PTR -BOOST_STRING_ALGO -BOOST_BIND -BOOST_FUNCTION +if test x$WIN32 = xyes +then + DATADIR="data" +else + eval eval DATADIR="${datadir}/$PACKAGE" +fi -AC_SEARCH_LIBS([IMG_Load], [SDL_image],, - [AC_MSG_ERROR([libSDL_image is required])]) +AC_SUBST([DATADIR]) +AC_DEFINE_UNQUOTED([YOINK_DATADIR], ["$DATADIR"], + [Define to path of game asset directory.]) -AC_SEARCH_LIBS([glBegin], [GL],, - [AC_MSG_ERROR([libGL is required])]) -AC_SEARCH_LIBS([gluPerspective], [GLU],, - [AC_MSG_ERROR([libGLU is required])]) +# +# Split the version number into components. +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -AC_SEARCH_LIBS([clock_gettime], [rt], - [AC_DEFINE([HAVE_CLOCK_GETTIME], 1, - [Define to 1 if you have the 'clock_gettime' function.])]) +VERSION_MAJOR=$(echo $VERSION | cut -d. -f1) +VERSION_MINOR=$(echo $VERSION | cut -d. -f2) +VERSION_REVISION=$(echo $VERSION | cut -d. -f3) +AC_DEFINE_UNQUOTED([VERSION_MAJOR], [${VERSION_MAJOR:-0}], + [Define to major version number component.]) -# -# Checks for header files. -# +AC_DEFINE_UNQUOTED([VERSION_MINOR], [${VERSION_MINOR:-0}], + [Define to minor version number component.]) -AC_HEADER_STDBOOL -AC_HEADER_STDC -AC_CHECK_HEADERS([stddef.h stdint.h stdlib.h string.h unistd.h]) +AC_DEFINE_UNQUOTED([VERSION_REVISION], [${VERSION_REVISION:-0}], + [Define to revision version number component.]) + +if test x$WIN32 = xyes +then + PVERSION="${VERSION_MAJOR:-0}.${VERSION_MINOR:-0}.${VERSION_REVISION:-0}.0" + AC_SUBST([PVERSION]) +fi + +# these are used in src/yoink.rc # -# Checks for typedefs, structures, and compiler characteristics. -# +# Checks for system functions/headers and compiler characteristics. +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AC_C_STRINGIZE AC_C_INLINE @@ -131,35 +207,141 @@ AC_TYPE_UINT32_T AC_TYPE_SIZE_T AC_TYPE_SSIZE_T - -# -# Checks for library functions. -# - AC_FUNC_ERROR_AT_LINE AC_FUNC_STRTOD AC_CHECK_FUNCS([nanosleep strchr strcspn strrchr strstr]) +AC_HEADER_STDBOOL +AC_HEADER_STDC +AC_CHECK_HEADERS([stddef.h stdint.h stdlib.h string.h unistd.h]) + +##### clock_gettime ##### +if test x$clock_gettime = xyes +then + AC_SEARCH_LIBS([clock_gettime], [rt], + [AC_DEFINE([HAVE_CLOCK_GETTIME], 1, + [Define to 1 if you have the 'clock_gettime' function.])]) +fi + # -# Find the data files to install. +# Checks for build dependencies. +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +echo "checking for dependencies..." + +##### boost ##### +website="http://www.boost.org/" +BOOST_SMART_PTR +BOOST_STRING_ALGO +BOOST_BIND +BOOST_FUNCTION + +##### SDL ##### +website="http://www.libsdl.org/" +PKG_CHECK_MODULES([SDL], [sdl], + [LIBS="$LIBS $SDL_LIBS" + CFLAGS="$CFLAGS $SDL_CFLAGS" + CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"], + [missing=yes + echo "***** Missing SDL ($website) *****"]) + +##### opengl, glu ##### +website="http://www.mesa3d.org/" +PKG_CHECK_MODULES([OPENGL], [gl glu], + [LIBS="$LIBS $OPENGL_LIBS" + CFLAGS="$CFLAGS $OPENGL_CFLAGS" + CXXFLAGS="$CXXFLAGS $GLU_CFLAGS"], + [missing=yes + echo "***** Missing OpenGL ($website) *****"]) + +##### liblua ##### +website="http://www.lua.org/" +PKG_CHECK_MODULES([LUA], [lua], + [LIBS="$LIBS $LUA_LIBS" + CFLAGS="$CFLAGS $LUA_CFLAGS" + CXXFLAGS="$CXXFLAGS $LUA_CFLAGS"], + [missing=yes + echo "***** Missing liblua ($website) *****"]) + +##### libpng ##### +website="http://www.libpng.org/pub/png/libpng.html" +PKG_CHECK_MODULES([PNG], [libpng], + [LIBS="$LIBS $PNG_LIBS" + CFLAGS="$CFLAGS $PNG_CFLAGS" + CXXFLAGS="$CXXFLAGS $PNG_CFLAGS"], + [missing=yes + echo "***** Missing libpng ($website) *****"]) + +##### openal ##### +website="http://connect.creativelabs.com/openal/" +PKG_CHECK_MODULES([OPENAL], [openal], + [LIBS="$LIBS $OPENAL_LIBS" + CFLAGS="$CFLAGS $OPENAL_CFLAGS" + CXXFLAGS="$CXXFLAGS $OPENAL_CFLAGS"], + [missing=yes + echo "***** Missing OpenAL ($website) *****"]) + +##### libvorbis ##### +website="http://www.xiph.org/downloads/" +PKG_CHECK_MODULES([VORBIS], [vorbisfile], + [LIBS="$LIBS $VORBIS_LIBS" + CFLAGS="$CFLAGS $VORBIS_CFLAGS" + CXXFLAGS="$CXXFLAGS $VORBIS_CFLAGS"], + [missing=yes + echo "***** Missing libvorbisfile ($website) *****"]) + +##### GTK+ 2.0 ##### +if test x$gtk = xyes +then + website="http://www.gtk.org/" + PKG_CHECK_MODULES([GTK], [gtk+-2.0], + [LIBS="$LIBS $GTK_LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"], + [missing=yes + echo "***** Missing GTK+-2.0 ($website) *****"]) +fi + +##### QT4 ##### +if test x$qt4 = xyes +then + website="http://qt.nokia.com/" + PKG_CHECK_MODULES([QT], [QtGui], + [LIBS="$LIBS $QT_LIBS" + CFLAGS="$CFLAGS $QT_CFLAGS" + CXXFLAGS="$CXXFLAGS $QT_CFLAGS"], + [missing=yes + echo "***** Missing QT ($website) *****"]) +fi + + +if test x$missing = xyes +then + AC_MSG_ERROR([Please resolve the missing dependencies, and try again.]) +fi + + # +# Find the game resources to install. +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -DATA_FILES=$(echo $(cd data; \ - find . -name "*.png" -o -name "*.json" -o -name yoinkrc)) +DATA_FILES=$(echo $(cd data && find . -name "*.lua" \ + -o -name "*.ogg" \ + -o -name "*.png" \ + -o -name "yoinkrc")) AC_SUBST([DATA_FILES]) # # Create the build files. -# +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AC_CONFIG_FILES([Makefile data/Makefile doc/Makefile doc/yoink.6 - src/Makefile - yajl/Makefile]) + src/Makefile]) AC_CONFIG_HEADERS([src/config.h]) @@ -168,30 +350,21 @@ AC_OUTPUT # # Print a friendly little message. -# +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -echo "=====================================" -echo " Configuration complete!" echo "" - -echo " Prefix: $prefix" -echo " Data: $DATADIR" +echo " Configuration complete! :-)" +echo "" +echo " Host: $target" +echo " Prefix: $prefix" +echo " Data: $DATADIR" +echo "" +echo " CXX: $CXX" +echo " CXXFLAGS: $(echo $CXXFLAGS)" +echo " LIBS: $(echo $LIBS)" echo "" - -if test x$debug = xyes -then - echo " * Debugging enabled." - echo "" -fi - -if test x$profile = xyes -then - echo " * Profiling enabled." - echo "" -fi - echo " To finish the installation, execute:" echo " make" echo " make install" -echo "=====================================" +echo ""