X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=configure.ac;h=561b39e3908a32eadf7b3fed3933035e70a336fd;hp=c5104297add457585353f72bdd3c8eff261c732c;hb=6dd7ae54e742339cc49e640d1076a310a0f4eedd;hpb=8ad81a8282ce6e9e488a453e6bcd05fbc09715dc diff --git a/configure.ac b/configure.ac index c510429..561b39e 100644 --- a/configure.ac +++ b/configure.ac @@ -18,66 +18,135 @@ 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 # -# 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_SUBST(WINDRES) + AC_PATH_PROGS([MAKENSIS], [makensis]) + AC_SUBST(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([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 - if test x$debug = xyes - then - CFLAGS="-O0 -DDEBUG" - CXXFLAGS="-O0 -DDEBUG" - else - CFLAGS="-O2 -DNDEBUG" - CXXFLAGS="-O2 -DNDEBUG" - fi], - [CFLAGS="-O2 -DNDEBUG" - CXXFLAGS="-O2 -DNDEBUG"]) + [debug=$enableval], + [debug=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 for use with gprof profiler], + [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]) + +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]) + +if test x$developer = xyes +then + debug=yes + log_level=4 + + if test x$WIN32 != xyes + then +# i haven't had much success with gprof profiling on win32 + profile=yes + fi +fi + +if test x$debug = xyes +then + CFLAGS="$CFLAGS -Wall -O0 -DDEBUG" + CXXFLAGS="$CXXFLAGS -Wall -O0 -DDEBUG" +else + CFLAGS="$CFLAGS -O2 -DNDEBUG" + CXXFLAGS="$CXXFLAGS -O2 -DNDEBUG" +fi + +if test x$profile = xyes +then + CFLAGS="$CFLAGS -pg" + CXXFLAGS="$CXXFLAGS -pg" +fi -if test x$prefix = xNONE +if test x$extra_warnings = xyes +then + CFLAGS="$CFLAGS -Wextra -Wno-unused-parameter" + CXXFLAGS="$CXXFLAGS -Wextra -Wno-unused-parameter" +fi + +AC_DEFINE_UNQUOTED([YOINK_LOGLEVEL], [$log_level], + [Define to detail level of logging.]) + + +if test "x$prefix" = xNONE then prefix="$ac_default_prefix" fi AC_ARG_WITH([assetdir], [AS_HELP_STRING([--with-assetdir=DIR], - [real path to game assets (default: $datarootdir/yoink)])], + [real path to assets (default: $datarootdir/yoink)])], [DATADIR="$withval"], [eval DATADIR="$datarootdir/yoink"]) -case "${host}" in - *mingw32*) +if test x$WIN32 = xyes +then DATADIR="data" -esac +fi AC_SUBST([DATADIR]) AC_DEFINE_UNQUOTED([YOINK_DATADIR], ["$DATADIR"], [Define to path of game asset directory.]) + CONFIGFILES="\$HOME/.yoinkrc:/etc/yoinkrc" AC_DEFINE_UNQUOTED([YOINK_CONFIGFILES], ["$CONFIGFILES"], @@ -85,47 +154,47 @@ AC_DEFINE_UNQUOTED([YOINK_CONFIGFILES], ["$CONFIGFILES"], # -# Checks for libraries. -# +# Split the version number into components. +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -AM_PATH_SDL([1.2.10], - [CFLAGS="$CFLAGS $SDL_CFLAGS" - CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" - LIBS="$LIBS $SDL_LIBS"]) +VERSION_MAJOR=$(echo $VERSION | cut -d. -f1) +VERSION_MINOR=$(echo $VERSION | cut -d. -f2) +VERSION_REVISION=$(echo $VERSION | cut -d. -f3) -#BOOST_REQUIRE([1.35]) -#CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" -BOOST_SMART_PTR -BOOST_STRING_ALGO -BOOST_BIND -BOOST_FUNCTION +AC_DEFINE_UNQUOTED([VERSION_MAJOR], [${VERSION_MAJOR:-0}], + [Define to major version number component.]) -AC_SEARCH_LIBS([IMG_Load], [SDL_image],, - [AC_MSG_ERROR([SDL_image is required])]) +AC_DEFINE_UNQUOTED([VERSION_MINOR], [${VERSION_MINOR:-0}], + [Define to minor version number component.]) -AC_SEARCH_LIBS([Sound_Init], [SDL_sound],, - [AC_MSG_ERROR([SDL_sound is required])]) +AC_DEFINE_UNQUOTED([VERSION_REVISION], [${VERSION_REVISION:-0}], + [Define to revision version number component.]) -AC_SEARCH_LIBS([glBegin], [GL opengl32],, - [AC_MSG_ERROR([OpenGL is required])]) +if test x$WIN32 = xyes +then + PVERSION="${VERSION_MAJOR:-0}.${VERSION_MINOR:-0}.${VERSION_REVISION:-0}.0" + AC_SUBST([PVERSION]) +fi -AC_SEARCH_LIBS([gluPerspective], [GLU MesaGLU glu32],, - [AC_MSG_ERROR([GLU is required])]) +# these are used in src/yoink.rc -AC_SEARCH_LIBS([alGenBuffers], [openal openal32],, - [AC_MSG_ERROR([OpenAL is required])]) -AC_SEARCH_LIBS([alutInit], [alut],, - [AC_MSG_ERROR([alut is required])]) +# +# Checks for system functions/headers and compiler characteristics. +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -AC_SEARCH_LIBS([clock_gettime], [rt], - [AC_DEFINE([HAVE_CLOCK_GETTIME], 1, - [Define to 1 if you have the 'clock_gettime' function.])]) +AC_C_STRINGIZE +AC_C_INLINE +AC_TYPE_UINT8_T +AC_TYPE_UINT16_T +AC_TYPE_UINT32_T +AC_TYPE_SIZE_T +AC_TYPE_SSIZE_T -# -# Checks for header files. -# +AC_FUNC_ERROR_AT_LINE +AC_FUNC_STRTOD +AC_CHECK_FUNCS([nanosleep strchr strcspn strrchr strstr]) AC_HEADER_STDBOOL AC_HEADER_STDC @@ -133,31 +202,87 @@ AC_CHECK_HEADERS([stddef.h stdint.h stdlib.h string.h unistd.h]) # -# Checks for typedefs, structures, and compiler characteristics. -# +# Checks for build dependencies. +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -AC_C_STRINGIZE -AC_C_INLINE +##### boost ##### +website="http://www.boost.org/" +BOOST_SMART_PTR +BOOST_STRING_ALGO +BOOST_BIND +BOOST_FUNCTION -AC_TYPE_UINT8_T -AC_TYPE_UINT16_T -AC_TYPE_UINT32_T -AC_TYPE_SIZE_T -AC_TYPE_SSIZE_T +##### 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=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 + LIBS="$LIBS -lglu32 -lopengl32" +else + 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 -# -# Checks for library functions. -# +##### openal, alut ##### +website="http://connect.creativelabs.com/openal/" +AC_CHECK_HEADERS([AL/al.h AL/alut.h],, + [missing=yes + echo "***** Missing OpenAL headers ($website) *****"]) +AC_SEARCH_LIBS([alEnable], [openal openal32],, + [missing=yes + echo "***** Missing libopenal ($website) *****"]) +AC_SEARCH_LIBS([alutInit], [alut],, + [missing=yes + echo "***** Missing libalut ($website) *****"]) + +##### SDL_image ##### +website="http://www.libsdl.org/projects/SDL_image/" +AC_CHECK_HEADERS([SDL/SDL_image.h],, + [missing=yes + echo "***** Missing SDL_image header ($website) *****"]) +AC_SEARCH_LIBS([IMG_Load], [SDL_image],, + [missing=yes + echo "***** Missing libSDL_image ($website) *****"]) + +##### libvorbis ##### +website="http://www.xiph.org/downloads/" +AC_CHECK_HEADERS([vorbis/codec.h vorbis/vorbisfile.h],, + [missing=yes + echo "***** Missing vorbis headers ($website) *****"]) +AC_SEARCH_LIBS([ov_open], [vorbisfile],, + [missing=yes + echo "***** Missing libvorbisfile ($website) *****"]) + +##### librt (optional) ##### +AC_SEARCH_LIBS([clock_gettime], [rt], + [AC_DEFINE([HAVE_CLOCK_GETTIME], 1, + [Define to 1 if you have the 'clock_gettime' function.])]) -AC_FUNC_ERROR_AT_LINE -AC_FUNC_STRTOD -AC_CHECK_FUNCS([nanosleep strchr strcspn strrchr strstr]) + +if test x$missing == xyes +then + AC_MSG_ERROR([please install missing dependencies (see messages above)]) +fi # # Find the data files to install. -# +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DATA_FILES=$(echo $(cd data; \ find . -name "*.json" \ @@ -170,15 +295,16 @@ 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 - yajl/Makefile]) + make-win32-installer.sh + src/Makefile]) AC_CONFIG_HEADERS([src/config.h]) @@ -187,30 +313,21 @@ AC_OUTPUT # # Print a friendly little message. -# +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -echo "======================================" -echo " Configuration complete!" echo "" - -echo " Prefix: $prefix" -echo " Data: $DATADIR" +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 "" - -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 ""