X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=configure.ac;h=fa996164497112097c86a85f632056a99f660e60;hp=a14508d30e49c59230659740f66be1c03947048e;hb=ed5fcf5f1357fc42749408f705e9ec55531ff006;hpb=96dd0815b98cf9459c8dd7a8009aabb6f8051e9e diff --git a/configure.ac b/configure.ac index a14508d..fa99616 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,51 +18,62 @@ 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) # # Configure platform-specific stuff. -#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ case "${host}" in *mingw32*) - MINGW32=yes - WIN32=yes + 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 + CYGWIN=yes + WIN32=yes ;; *-apple-darwin*) - MACOSX=yes - LIBS="$LIBS -Wl,-framework" + MACOSX=yes + LIBS="$LIBS -Wl,-framework" + ;; esac +AM_CONDITIONAL([WIN32], test "$WIN32" = "yes") + # # Checks for configuration arguments. -#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -AC_ARG_ENABLE([developer], - [ --enable-developer use all compiler flags developers need], - [developer=$enableval], - [developer=no]) +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AC_ARG_ENABLE([debug], [ --enable-debug include debugging symbols and features], [debug=$enableval], [debug=no]) +AC_ARG_ENABLE([double-precision], + [ --enable-double-precision use double-precision numbers], + [double_precision=$enableval], + [double_precision=no]) + AC_ARG_ENABLE([profile], [ --enable-profile make a binary for use with gprof profiler], [profile=$enableval], @@ -73,37 +84,43 @@ AC_ARG_ENABLE([extra-warnings], [extra_warnings=$enableval], [extra_warnings=no]) -AC_ARG_WITH([log-level], - [AS_HELP_STRING([--with-log-level=NUM], - [0, none... 1, errors... 4, everything (default: 3)])], - [log_level=$withval], - [log_level=3]) +AC_ARG_ENABLE([threads], + [ --enable-threads use threads for some parallel tasks], + [threads=$enableval], + [threads=no]) +AC_ARG_ENABLE([gtk], + [ --enable-gtk enable GTK+ info/warning dialogs], + [gtk=$enableval], + [gtk=no]) -if test x$developer = xyes -then - debug=yes - log_level=4 +AC_ARG_ENABLE([qt4], + [ --enable-qt4 enable QT info/warning dialogs], + [qt4=$enableval], + [qt4=no]) - if test x$WIN32 != xyes - then - profile=yes - fi -fi if test x$debug = xyes then - CFLAGS="$CFLAGS -Wall -O0 -gstabs -DDEBUG" - CXXFLAGS="$CXXFLAGS -Wall -O0 -gstabs -DDEBUG" + CFLAGS="$CFLAGS -DDEBUG -Wall -Wno-uninitialized" + CXXFLAGS="$CXXFLAGS -DDEBUG -Wall -Wno-uninitialized" else - CFLAGS="$CFLAGS -O2 -DNDEBUG" - CXXFLAGS="$CXXFLAGS -O2 -DNDEBUG" + CFLAGS="$CFLAGS -DNDEBUG" + CXXFLAGS="$CXXFLAGS -DNDEBUG" +fi + +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 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 if test x$extra_warnings = xyes @@ -112,9 +129,21 @@ then CXXFLAGS="$CXXFLAGS -Wextra -Wno-unused-parameter" fi -AC_DEFINE_UNQUOTED([YOINK_LOGLEVEL], [$log_level], - [Define to detail level of logging.]) +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+ info/error dialogs.]) +elif test x$qt4 = xyes +then + AC_DEFINE([USE_QT4], 1, + [Define to 1 if you want to use QT4 info/error dialogs.]) +fi if test "x$prefix" = xNONE @@ -122,15 +151,11 @@ then prefix="$ac_default_prefix" fi -AC_ARG_WITH([assetdir], - [AS_HELP_STRING([--with-assetdir=DIR], - [real path to assets (default: $datarootdir/yoink)])], - [DATADIR="$withval"], - [eval DATADIR="$datarootdir/yoink"]) - if test x$WIN32 = xyes then DATADIR="data" +else + eval eval DATADIR="${datadir}/$PACKAGE" fi AC_SUBST([DATADIR]) @@ -138,15 +163,35 @@ AC_DEFINE_UNQUOTED([YOINK_DATADIR], ["$DATADIR"], [Define to path of game asset directory.]) -CONFIGFILES="\$HOME/.yoinkrc:/etc/yoinkrc" +# +# Split the version number into components. +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +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.]) + +AC_DEFINE_UNQUOTED([VERSION_MINOR], [${VERSION_MINOR:-0}], + [Define to minor version number component.]) + +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 -AC_DEFINE_UNQUOTED([YOINK_CONFIGFILES], ["$CONFIGFILES"], - [Define to colon-delimited configuration file paths.]) +# 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 @@ -157,126 +202,150 @@ AC_TYPE_UINT32_T AC_TYPE_SIZE_T AC_TYPE_SSIZE_T - -# -# Checks for system functions. -#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - AC_FUNC_ERROR_AT_LINE AC_FUNC_STRTOD AC_CHECK_FUNCS([nanosleep strchr strcspn strrchr strstr]) - -# -# Checks for header files. -#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - AC_HEADER_STDBOOL AC_HEADER_STDC AC_CHECK_HEADERS([stddef.h stdint.h stdlib.h string.h unistd.h]) +##### clock_gettime ##### +AC_SEARCH_LIBS([clock_gettime], [rt], + [AC_DEFINE([HAVE_CLOCK_GETTIME], 1, + [Define to 1 if you have the 'clock_gettime' function.])]) + + +# +# Checks for build dependencies. +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +##### boost ##### +website="http://www.boost.org/" BOOST_SMART_PTR BOOST_STRING_ALGO BOOST_BIND BOOST_FUNCTION +##### SDL ##### +website="http://www.libsdl.org/" AM_PATH_SDL([1.2.10], [CFLAGS="$CFLAGS $SDL_CFLAGS" CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS"]) +##### opengl, glu ##### +website="http://www.mesa3d.org/" AC_CHECK_HEADERS([GL/gl.h GL/glu.h],, - [missing="$missing OpenGL"]) - -AC_CHECK_HEADERS([AL/al.h AL/alut.h],, - [missing="$missing OpenAL"]) - -AC_CHECK_HEADERS([SDL/SDL_image.h],, - [missing="$missing SDL_image"]) - -AC_CHECK_HEADERS([SDL/SDL_sound.h],, - [missing="$missing SDL_sound"]) - -if test "x$missing" != x -then - echo "** Required header files from these libraries are missing:" - for header in $missing - do - echo "** $header" - done - AC_MSG_ERROR([please install missing dependencies]) -fi - - -# -# Checks for libraries. -#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -AC_SEARCH_LIBS([IMG_Load], [SDL_image],, - [missing="$missing SDL_image"]) - -AC_SEARCH_LIBS([Sound_Init], [SDL_sound],, - [missing="$missing SDL_sound"]) - -if test x$WIN32 == xyes + [missing=yes + echo "***** Missing GL headers ($website) *****"]) +if test x$WIN32 = xyes then # autoconf library search macro doesn't find opengl32 on windows because it uses -# different name hashing, but it links fine; assume it's there +# different name hashing or something, but it links fine; assume it's there LIBS="$LIBS -lglu32 -lopengl32" else - AC_SEARCH_LIBS([gluPerspective], [GLU MesaGLU],, - [missing="$missing GLU"]) - - AC_SEARCH_LIBS([glBegin], [GL MesaGL],, - [missing="$missing OpenGL"]) + AC_SEARCH_LIBS([glEnable], [GL MesaGL],, + [missing=yes + echo "***** Missing libGL ($website) *****"]) + AC_SEARCH_LIBS([gluDisk], [GLU MesaGLU],, + [missing=yes + echo "***** Missing libGLU ($website) *****"]) fi -AC_SEARCH_LIBS([alGenBuffers], [openal openal32],, - [missing="$missing OpenAL"]) +##### openal ##### +website="http://connect.creativelabs.com/openal/" +AC_CHECK_HEADERS([AL/al.h AL/alc.h],, + [missing=yes + echo "***** Missing OpenAL headers ($website) *****"]) +AC_SEARCH_LIBS([alEnable], [openal OpenAL32],, + [missing=yes + echo "***** Missing libopenal ($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) *****"]) + +##### 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 -AC_SEARCH_LIBS([alutInit], [alut],, - [missing="$missing ALUT"]) +##### 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 -AC_SEARCH_LIBS([clock_gettime], [rt], - [AC_DEFINE([HAVE_CLOCK_GETTIME], 1, - [Define to 1 if you have the 'clock_gettime' function.])]) -if test "x$missing" != x +if test x$missing == xyes then - echo "** One or more required libraries are missing:" - for library in $missing - do - echo "** $library" - done - AC_MSG_ERROR([please install missing dependencies]) + AC_MSG_WARN([It looks like you're missing some dependencies--building may fail.]) fi # -# Find the data files to install. -#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -DATA_FILES=$(echo $(cd data; \ - find . -name "*.json" \ - -o -name "*.ogg" \ - -o -name "*.png" \ - -o -name "*.xm" \ - -o -name "yoinkrc")) +# Find the game resources to install. +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +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 - extra/Makefile - extra/yoink.spec - src/Makefile - src/Moof/yajl/Makefile]) + src/Makefile]) + +if test x$WIN32 = xyes +then + AC_CONFIG_FILES([win32/Makefile win32/mkpackage.sh win32/yoink.nsi]) +fi + AC_CONFIG_HEADERS([src/config.h]) @@ -285,18 +354,18 @@ AC_OUTPUT # # Print a friendly little message. -#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ echo "" echo " Configuration complete! :-)" echo "" -echo " Target: $target" -echo " Prefix: $prefix" -echo " Data Directory: $DATADIR" -echo " Log Level: $log_level" -echo " Debug: $debug" -echo " Profile: $profile" -echo " Extra Warnings: $extra_warnings" +echo " Target: $target" +echo " Prefix: $prefix" +echo " Data Directory: $DATADIR" +echo " Debug: $debug" +echo " Double Precision: $double_precision" +echo " Profile: $profile" +echo " Extra Warnings: $extra_warnings" echo "" echo " To finish the installation, execute:" echo " make"