From 635bf616dee2e431c68e2789ac07f80200a91384 Mon Sep 17 00:00:00 2001 From: Mark Vejvoda Date: Fri, 24 Sep 2010 23:28:54 +0000 Subject: [PATCH] - patch for FreeBSD (thanks m0ellemeister) --- mk/linux/mk/autoconf/check_lua.m4 | 117 ++++++++++++++++ mk/linux/mk/autoconf/ogg.m4 | 104 +++++++++++++++ mk/linux/mk/autoconf/vorbis.m4 | 125 ++++++++++++++++++ source/glest_game/facilities/game_util.cpp | 2 + .../platform/common/platform_common.cpp | 8 +- 5 files changed, 352 insertions(+), 4 deletions(-) create mode 100644 mk/linux/mk/autoconf/check_lua.m4 create mode 100644 mk/linux/mk/autoconf/ogg.m4 create mode 100644 mk/linux/mk/autoconf/vorbis.m4 diff --git a/mk/linux/mk/autoconf/check_lua.m4 b/mk/linux/mk/autoconf/check_lua.m4 new file mode 100644 index 00000000..378e91e9 --- /dev/null +++ b/mk/linux/mk/autoconf/check_lua.m4 @@ -0,0 +1,117 @@ +# derived from lua.m4 in mod_wombat from httpd.apache.org +# http://svn.apache.org/viewvc/httpd/mod_wombat/trunk/build/ac-macros/lua.m4?view=markup +# which is under Apache License, Version 2.0, http://www.apache.org/licenses/LICENSE-2.0 +# +# Apache mod_wombat +# Copyright 2006 The Apache Software Foundation +# +# This product includes software developed at +# The Apache Software Foundation (http://www.apache.org/). +# +# This software makes use of Lua ( http://www.lua.org/ ) +# developed by Copyright 1994-2006 Lua.org, PUC-Rio. +# Lua is distributed under the MIT license +# ( http://www.lua.org/license.html ). +# +# ========================================== +# Check for Lua 5.1 Libraries +# CHECK_LUA(ACTION-IF-FOUND, ACTION-IF-NOT-FOUND) +# Sets: +# LUA_AVAILABLE +# LUA_CFLAGS +# LUA_LIBS +AC_DEFUN([CHECK_LUA], +[ + +AC_ARG_WITH( + lua, + [AC_HELP_STRING([--with-lua=PFX],[Prefix where Lua 5.1 is installed (optional)])], + lua_pfx="$withval", + :) + +# Determine lua lib directory +if test -z "${lua_pfx}"; then + paths="/usr/local /usr" +else + paths="${lua_pfx}" +fi + +[LUA_AVAILABLE=no + LUA_LIBS="" + LUA_CFLAGS=""] + +AC_CHECK_LIB([m], [pow], lib_m=" -lm") +AC_LANG_PUSH([C++]) +for p in $paths ; do + AC_MSG_CHECKING([for lua.hpp in ${p}/include/lua5.1]) + if test -f ${p}/include/lua5.1/lua.hpp; then + AC_MSG_RESULT([yes]) + save_CFLAGS=$CFLAGS + save_LDFLAGS=$LDFLAGS + CFLAGS="$CFLAGS" + LDFLAGS="-L${p}/lib $LDFLAGS $lib_m" + AC_CHECK_LIB(lua5.1, luaL_newstate, + [ + LUA_AVAILABLE=yes + LUA_LIBS="-L${p}/lib -llua5.1" + LUA_CFLAGS="-I${p}/include/lua5.1" + ]) + CFLAGS=$save_CFLAGS + LDFLAGS=$save_LDFLAGS + break + else + AC_MSG_RESULT([no]) + fi +# another test for finding lua on FreeBSD + AC_MSG_CHECKING([for lua.hpp in ${p}/include/lua51]) + if test -f ${p}/include/lua51/lua.hpp; then + AC_MSG_RESULT([yes]) + save_CFLAGS=$CFLAGS + save_LDFLAGS=$LDFLAGS + CFLAGS="$CFLAGS" + LDFLAGS="-L${p}/lib/lua51 $LDFLAGS $lib_m" + AC_CHECK_LIB(lua, luaL_newstate, + [ + LUA_AVAILABLE=yes + LUA_LIBS="-L${p}/lib/lua51 -llua" + LUA_CFLAGS="-I${p}/include/lua51" + ]) + CFLAGS=$save_CFLAGS + LDFLAGS=$save_LDFLAGS + break + else + AC_MSG_RESULT([no]) + fi + AC_MSG_CHECKING([for lua.hpp in ${p}/include]) + if test -f ${p}/include/lua.hpp; then + AC_MSG_RESULT([yes]) + save_CFLAGS=$CFLAGS + save_LDFLAGS=$LDFLAGS + CFLAGS="$CFLAGS" + LDFLAGS="-L${p}/lib $LDFLAGS $lib_m" + AC_CHECK_LIB(lua, luaL_newstate, + [ + LUA_AVAILABLE=yes + LUA_LIBS="-L${p}/lib -llua" + LUA_CFLAGS="-I${p}/include" + ]) + CFLAGS=$save_CFLAGS + LDFLAGS=$save_LDFLAGS + break + else + AC_MSG_RESULT([no]) + fi +done +AC_LANG_POP([C++]) + +AC_SUBST(LUA_AVAILABLE) +AC_SUBST(LUA_LIBS) +AC_SUBST(LUA_CFLAGS) + +if test -z "${LUA_LIBS}"; then + ifelse([$2], , :, [$2]) +else + ifelse([$1], , :, [$1]) +fi + +]) diff --git a/mk/linux/mk/autoconf/ogg.m4 b/mk/linux/mk/autoconf/ogg.m4 new file mode 100644 index 00000000..ed1f66cb --- /dev/null +++ b/mk/linux/mk/autoconf/ogg.m4 @@ -0,0 +1,104 @@ +# Configure paths for libogg +# Jack Moffitt 10-21-2000 +# Shamelessly stolen from Owen Taylor and Manish Singh + +dnl XIPH_PATH_OGG([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) +dnl Test for libogg, and define OGG_CFLAGS and OGG_LIBS +dnl +AC_DEFUN([XIPH_PATH_OGG], +[dnl +dnl Get the cflags and libraries +dnl +AC_ARG_WITH(ogg,[ --with-ogg=PFX Prefix where libogg is installed (optional)], ogg_prefix="$withval", ogg_prefix="") +AC_ARG_WITH(ogg-libraries,[ --with-ogg-libraries=DIR + Directory where libogg library is installed (optional)], ogg_libraries="$withval", ogg_libraries="") +AC_ARG_WITH(ogg-includes,[ --with-ogg-includes=DIR Directory where libogg header files are installed (optional)], ogg_includes="$withval", ogg_includes="") +AC_ARG_ENABLE(oggtest, [ --disable-oggtest Do not try to compile and run a test Ogg program],, enable_oggtest=yes) + + if test "x$ogg_libraries" != "x" ; then + OGG_LIBS="-L$ogg_libraries" + elif test "x$ogg_prefix" != "x" ; then + OGG_LIBS="-L$ogg_prefix/lib" + elif test "x$prefix" != "xNONE" ; then + OGG_LIBS="-L$prefix/lib" + fi + + OGG_LIBS="$OGG_LIBS -logg" + + if test "x$ogg_includes" != "x" ; then + OGG_CFLAGS="-I$ogg_includes" + elif test "x$ogg_prefix" != "x" ; then + OGG_CFLAGS="-I$ogg_prefix/include" + elif test "x$prefix" != "xNONE"; then + OGG_CFLAGS="-I$prefix/include" + fi + + AC_MSG_CHECKING(for Ogg) + no_ogg="" + + + if test "x$enable_oggtest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $OGG_CFLAGS" + CPPFLAGS="$CFLAGS $OGG_CFLAGS" + LIBS="$LIBS $OGG_LIBS" +dnl +dnl Now check if the installed Ogg is sufficiently new. +dnl + rm -f conf.oggtest + AC_TRY_RUN([ +#include +#include +#include +#include + +int main () +{ + system("touch conf.oggtest"); + return 0; +} + +],, no_ogg=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + + if test "x$no_ogg" = "x" ; then + AC_MSG_RESULT(yes) + ifelse([$1], , :, [$1]) + else + AC_MSG_RESULT(no) + if test -f conf.oggtest ; then + : + else + echo "*** Could not run Ogg test program, checking why..." + CFLAGS="$CFLAGS $OGG_CFLAGS" + LIBS="$LIBS $OGG_LIBS" + AC_TRY_LINK([ +#include +#include +], [ return 0; ], + [ echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding Ogg or finding the wrong" + echo "*** version of Ogg. If it is not finding Ogg, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], + [ echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means Ogg was incorrectly installed" + echo "*** or that you have moved Ogg since it was installed." ]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + OGG_CFLAGS="" + OGG_LIBS="" + ifelse([$2], , :, [$2]) + fi + AC_SUBST(OGG_CFLAGS) + AC_SUBST(OGG_LIBS) + rm -f conf.oggtest +]) diff --git a/mk/linux/mk/autoconf/vorbis.m4 b/mk/linux/mk/autoconf/vorbis.m4 new file mode 100644 index 00000000..2ea6f27e --- /dev/null +++ b/mk/linux/mk/autoconf/vorbis.m4 @@ -0,0 +1,125 @@ +# Configure paths for libvorbis +# Jack Moffitt 10-21-2000 +# Shamelessly stolen from Owen Taylor and Manish Singh +# thomasvs added check for vorbis_bitrate_addblock which is new in rc3 + +dnl XIPH_PATH_VORBIS([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) +dnl Test for libvorbis, and define VORBIS_CFLAGS and VORBIS_LIBS +dnl +AC_DEFUN([XIPH_PATH_VORBIS], +[dnl +dnl Get the cflags and libraries +dnl +AC_ARG_WITH(vorbis,[ --with-vorbis=PFX Prefix where libvorbis is installed (optional)], vorbis_prefix="$withval", vorbis_prefix="") +AC_ARG_WITH(vorbis-libraries,[ --with-vorbis-libraries=DIR + Directory where libvorbis library is installed (optional)], vorbis_libraries="$withval", vorbis_libraries="") +AC_ARG_WITH(vorbis-includes,[ --with-vorbis-includes=DIR + Directory where libvorbis header files are installed (optional)], vorbis_includes="$withval", vorbis_includes="") +AC_ARG_ENABLE(vorbistest, [ --disable-vorbistest Do not try to compile and run a test Vorbis program],, enable_vorbistest=yes) + + if test "x$vorbis_libraries" != "x" ; then + VORBIS_LIBS="-L$vorbis_libraries" + elif test "x$vorbis_prefix" != "x" ; then + VORBIS_LIBS="-L$vorbis_prefix/lib" + elif test "x$prefix" != "xNONE"; then + VORBIS_LIBS="-L$prefix/lib" + fi + + VORBIS_LIBS="$VORBIS_LIBS -lvorbis -lm" + VORBISFILE_LIBS="-lvorbisfile" + VORBISENC_LIBS="-lvorbisenc" + + if test "x$vorbis_includes" != "x" ; then + VORBIS_CFLAGS="-I$vorbis_includes" + elif test "x$vorbis_prefix" != "x" ; then + VORBIS_CFLAGS="-I$vorbis_prefix/include" + elif test "x$prefix" != "xNONE"; then + VORBIS_CFLAGS="-I$prefix/include" + fi + + + AC_MSG_CHECKING(for Vorbis) + no_vorbis="" + + + if test "x$enable_vorbistest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $VORBIS_CFLAGS $OGG_CFLAGS" + CPPFLAGS="$CFLAGS $VORBIS_CFLAGS $OGG_CFLAGS" + LIBS="$LIBS $VORBIS_LIBS $VORBISENC_LIBS $OGG_LIBS" +dnl +dnl Now check if the installed Vorbis is sufficiently new. +dnl + rm -f conf.vorbistest + AC_TRY_RUN([ +#include +#include +#include +#include +#include + +int main () +{ + vorbis_block vb; + vorbis_dsp_state vd; + vorbis_info vi; + + vorbis_info_init (&vi); + vorbis_encode_init (&vi, 2, 44100, -1, 128000, -1); + vorbis_analysis_init (&vd, &vi); + vorbis_block_init (&vd, &vb); + /* this function was added in 1.0rc3, so this is what we're testing for */ + vorbis_bitrate_addblock (&vb); + + system("touch conf.vorbistest"); + return 0; +} + +],, no_vorbis=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + + if test "x$no_vorbis" = "x" ; then + AC_MSG_RESULT(yes) + ifelse([$1], , :, [$1]) + else + AC_MSG_RESULT(no) + if test -f conf.vorbistest ; then + : + else + echo "*** Could not run Vorbis test program, checking why..." + CFLAGS="$CFLAGS $VORBIS_CFLAGS" + LIBS="$LIBS $VORBIS_LIBS $OGG_LIBS" + AC_TRY_LINK([ +#include +#include +], [ return 0; ], + [ echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding Vorbis or finding the wrong" + echo "*** version of Vorbis. If it is not finding Vorbis, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], + [ echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means Vorbis was incorrectly installed" + echo "*** or that you have moved Vorbis since it was installed." ]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + VORBIS_CFLAGS="" + VORBIS_LIBS="" + VORBISFILE_LIBS="" + VORBISENC_LIBS="" + ifelse([$2], , :, [$2]) + fi + AC_SUBST(VORBIS_CFLAGS) + AC_SUBST(VORBIS_LIBS) + AC_SUBST(VORBISFILE_LIBS) + AC_SUBST(VORBISENC_LIBS) + rm -f conf.vorbistest +]) diff --git a/source/glest_game/facilities/game_util.cpp b/source/glest_game/facilities/game_util.cpp index ee6a2b9c..c6c45690 100644 --- a/source/glest_game/facilities/game_util.cpp +++ b/source/glest_game/facilities/game_util.cpp @@ -37,6 +37,8 @@ string getPlatformNameString() { string platform = ""; #if defined(WIN32) platform = "Windows"; +#elif defined(__FreeBSD__) + platform = "FreeBSD"; #elif defined(__GNUC__) platform = "GNU"; #else diff --git a/source/shared_lib/sources/platform/common/platform_common.cpp b/source/shared_lib/sources/platform/common/platform_common.cpp index 1f8e8c8c..4eb5f1cc 100644 --- a/source/shared_lib/sources/platform/common/platform_common.cpp +++ b/source/shared_lib/sources/platform/common/platform_common.cpp @@ -419,7 +419,7 @@ int32 getFolderTreeContentsCheckSumRecursively(const string &path, const string globfree(&globbuf); // Look recursively for sub-folders -#ifdef __APPLE__ //APPLE does'nt have the GLOB_ONLYDIR definition.. +#if defined(__APPLE__) || defined(__FreeBSD__) res = glob(mypath.c_str(), 0, 0, &globbuf); #else res = glob(mypath.c_str(), GLOB_ONLYDIR, 0, &globbuf); @@ -431,7 +431,7 @@ int32 getFolderTreeContentsCheckSumRecursively(const string &path, const string } for(int i = 0; i < globbuf.gl_pathc; ++i) { -#ifdef __APPLE__ +#if defined(__APPLE__) || defined(__FreeBSD__) struct stat statStruct; // only process if dir.. int actStat = lstat( globbuf.gl_pathv[i], &statStruct); @@ -567,7 +567,7 @@ vector > getFolderTreeContentsCheckSumListRecursively(co globfree(&globbuf); // Look recursively for sub-folders -#ifdef __APPLE__ +#if defined(__APPLE__) || defined(__FreeBSD__) res = glob(mypath.c_str(), 0, 0, &globbuf); #else //APPLE doesn't have the GLOB_ONLYDIR definition.. res = glob(mypath.c_str(), GLOB_ONLYDIR, 0, &globbuf); @@ -579,7 +579,7 @@ vector > getFolderTreeContentsCheckSumListRecursively(co } for(int i = 0; i < globbuf.gl_pathc; ++i) { -#ifdef __APPLE__ +#if defined(__APPLE__) || defined(__FreeBSD__) struct stat statStruct; // only get if dir.. int actStat = lstat( globbuf.gl_pathv[ i], &statStruct);