diff --git a/Makefile.am b/Makefile.am index 48cb8b296..b647fb589 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,7 +1,7 @@ SUBDIRS = Include Lib Simulator Tools Tests -EXTRA_DIST = Makefile.extra README.Win32 README.autoconf README.running \ - Thanks acsite.m4 +EXTRA_DIST = Makefile.extra README.Unix README.Win32 README.autoconf \ + README.running Thanks acsite.m4 dist-hook: tar cf - Hints | (cd $(distdir); tar xvf -) diff --git a/NEWS b/NEWS index 24279a101..a0fe32446 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,10 @@ New in 0.52 * Fog color tries to track the sky color at the center of view in sunrise and sunset situations. +* Optimizations from Norman Vine +* Code fixes and tweaks from Charlie Hotchkiss. +* Added an --enable/disable-sound option. +* Added a pause key "p" New in 0.51 * Translucent menus diff --git a/README b/README index 80d26a9ae..d35321dba 100644 --- a/README +++ b/README @@ -24,6 +24,8 @@ Please see .... for more information on .... - README: This file +- README.Unix: Hints and tips for compiling on Unix + - README.Win32: Specific Win32 compiling information and instructions - README.autoconf: Info on updating the make system (adding new source diff --git a/README.Unix b/README.Unix new file mode 100644 index 000000000..69747558e --- /dev/null +++ b/README.Unix @@ -0,0 +1,22 @@ +*** not much here yet *** + +If you are reading this in hopes that you will find the answer to a +specific question, please send the question to curt@me.umn.edu and +suggest that I include the answer here. + + +GLUT +==== + +Flight Gear requires GLUT. GLUT needs to be installed on your system +before you can build Flight Gear. GLUT can be found at: + + http://reality.sgi.com/opengl/glut3/glut3.html + +GLUT (pronounced like the glut in gluttony) is the OpenGL Utility +Toolkit, a window system independent toolkit for writing OpenGL +programs. It implements a simple windowing application programming +interface (API) for OpenGL. GLUT makes it considerably easier to learn +about and explore OpenGL programming. GLUT provides a portable API so +you can write a single OpenGL program that works on both Win32 PCs and +X11 workstations. diff --git a/README.autoconf b/README.autoconf index b937e5cf5..d13a2badb 100644 --- a/README.autoconf +++ b/README.autoconf @@ -11,12 +11,14 @@ install the following packages: - GNU autoconf 2.12 (available from ftp://prep.ai.mit.edu/pub/gnu) - GNU automake 1.2h (available from ftp://ftp.cygnus.com/pub/tromey) + +Libtool is not currently used: + - GNU libtool 1.2 (available from ftp://prep.ai.mit.edu/pub/gnu) (or maybe ftp://alpha.gnu.org/gnu) + - After upgrading libtool, if we were using it, you would want to run: -After upgrading libtool, you will want to run: - - libtoolize --force + libtoolize --force When making a change to any of these files you will need to run: @@ -28,5 +30,5 @@ Then follow the regular build procedure: For debuging purposes you might want to try something like: - CFLAGS=-Wall CXXFLAGS=-Wall ./configure --disable-shared; make; make install + CFLAGS=-Wall CXXFLAGS=-Wall ./configure; make; make install diff --git a/aclocal.m4 b/aclocal.m4 index dc8a13b49..f57d6ff83 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -111,244 +111,6 @@ else fi AC_SUBST($1)]) - -# serial 24 AM_PROG_LIBTOOL -AC_DEFUN(AM_PROG_LIBTOOL, -[AC_REQUIRE([AM_ENABLE_SHARED])dnl -AC_REQUIRE([AM_ENABLE_STATIC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_PROG_RANLIB])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AM_PROG_LD])dnl -AC_REQUIRE([AM_PROG_NM])dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -dnl -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -# Check for any special flags to pass to ltconfig. -libtool_flags= -test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" -test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" -test "$silent" = yes && libtool_flags="$libtool_flags --silent" -test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc" -test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case "$host" in -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line __oline__ "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case "`/usr/bin/file conftest.o`" in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - CFLAGS="$CFLAGS -belf" - ;; -esac - -# Actually configure libtool. ac_aux_dir is where install-sh is found. -CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \ -LD="$LD" NM="$NM" RANLIB="$RANLIB" LN_S="$LN_S" \ -${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig \ -$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $host \ -|| AC_MSG_ERROR([libtool configure failed]) -]) - -# AM_ENABLE_SHARED - implement the --enable-shared flag -# Usage: AM_ENABLE_SHARED[(DEFAULT)] -# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to -# `yes'. -AC_DEFUN(AM_ENABLE_SHARED, -[define([AM_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE(shared, -changequote(<<, >>)dnl -<< --enable-shared build shared libraries [default=>>AM_ENABLE_SHARED_DEFAULT] -changequote([, ])dnl -[ --enable-shared=PKGS only build shared libraries if the current package - appears as an element in the PKGS list], -[p=${PACKAGE-default} -case "$enableval" in -yes) enable_shared=yes ;; -no) enable_shared=no ;; -*) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$ac_save_ifs" - ;; -esac], -enable_shared=AM_ENABLE_SHARED_DEFAULT)dnl -]) - -# AM_DISABLE_SHARED - set the default shared flag to --disable-shared -AC_DEFUN(AM_DISABLE_SHARED, -[AM_ENABLE_SHARED(no)]) - -# AM_DISABLE_STATIC - set the default static flag to --disable-static -AC_DEFUN(AM_DISABLE_STATIC, -[AM_ENABLE_STATIC(no)]) - -# AM_ENABLE_STATIC - implement the --enable-static flag -# Usage: AM_ENABLE_STATIC[(DEFAULT)] -# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to -# `yes'. -AC_DEFUN(AM_ENABLE_STATIC, -[define([AM_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE(static, -changequote(<<, >>)dnl -<< --enable-static build static libraries [default=>>AM_ENABLE_STATIC_DEFAULT] -changequote([, ])dnl -[ --enable-static=PKGS only build shared libraries if the current package - appears as an element in the PKGS list], -[p=${PACKAGE-default} -case "$enableval" in -yes) enable_static=yes ;; -no) enable_static=no ;; -*) - enable_static=no - # Look at the argument we got. We use all the common list separators. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$ac_save_ifs" - ;; -esac], -enable_static=AM_ENABLE_STATIC_DEFAULT)dnl -]) - - -# AM_PROG_LD - find the path to the GNU or non-GNU linker -AC_DEFUN(AM_PROG_LD, -[AC_ARG_WITH(gnu-ld, -[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], -test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) -AC_REQUIRE([AC_PROG_CC]) -ac_prog=ld -if test "$ac_cv_prog_gcc" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by GCC]) - ac_prog=`($CC -print-prog-name=ld) 2>&5` - case "$ac_prog" in - # Accept absolute paths. - /* | [A-Za-z]:\\*) - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(ac_cv_path_LD, -[if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog"; then - ac_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then - test "$with_gnu_ld" != no && break - else - test "$with_gnu_ld" != yes && break - fi - fi - done - IFS="$ac_save_ifs" -else - ac_cv_path_LD="$LD" # Let the user override the test with a path. -fi]) -LD="$ac_cv_path_LD" -if test -n "$LD"; then - AC_MSG_RESULT($LD) -else - AC_MSG_RESULT(no) -fi -test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) -AC_SUBST(LD) -AM_PROG_LD_GNU -]) - -AC_DEFUN(AM_PROG_LD_GNU, -[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld, -[# I'd rather use --version here, but apparently some GNU ld's only accept -v. -if $LD -v 2>&1 &5; then - ac_cv_prog_gnu_ld=yes -else - ac_cv_prog_gnu_ld=no -fi]) -]) - -# AM_PROG_NM - find the path to a BSD-compatible name lister -AC_DEFUN(AM_PROG_NM, -[AC_MSG_CHECKING([for BSD-compatible nm]) -AC_CACHE_VAL(ac_cv_path_NM, -[case "$NM" in -/* | [A-Za-z]:\\*) - ac_cv_path_NM="$NM" # Let the user override the test with a path. - ;; -*) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in /usr/ucb /usr/ccs/bin $PATH /bin; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/nm; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - ac_cv_path_NM="$ac_dir/nm -B" - elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - ac_cv_path_NM="$ac_dir/nm -p" - else - ac_cv_path_NM="$ac_dir/nm" - fi - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm - ;; -esac]) -NM="$ac_cv_path_NM" -AC_MSG_RESULT([$NM]) -AC_SUBST(NM) -]) - # Define a conditional. AC_DEFUN(AM_CONDITIONAL, diff --git a/configure.in b/configure.in index b084d5f0a..da5a73a60 100644 --- a/configure.in +++ b/configure.in @@ -2,26 +2,32 @@ dnl Process this file with autoconf to produce a configure script. dnl dnl The basis for this file was generated by autoscan(1) [pere 1998-03-19] dnl + AC_INIT(Simulator/Aircraft/aircraft.c) +dnl Let the Win32 user specify if they want to build with the SGI +dnl opengl.dll as opposed to the more standard openg32.dll +AC_ARG_WITH(sgiopengl, [ --with-sgiopengl Build against opengl.dll glu.dll and glut.dll]) + dnl Initialize the automake stuff AM_INIT_AUTOMAKE(FlightGear, 0.52) dnl Checks for programs. - AC_PROG_MAKE_SET AC_PROG_CC AC_PROG_CXX +AC_PROG_RANLIB AC_PROG_INSTALL AC_PROG_LN_S -dnl Initialize libtool -AM_PROG_LIBTOOL -dnl Initialize maintainer mode (I'm not sure what this does) +dnl Initialize libtool +dnl AM_PROG_LIBTOOL + +dnl Initialize maintainer mode dnl AM_MAINTAINER_MODE dnl This is needed for AC_TRY_COMPILE later -AC_ISC_POSIX +dnl AC_ISC_POSIX dnl Check to see if this `configure' is being run in the `Cygwin32' environment dnl AM_CYGWIN32 @@ -48,8 +54,11 @@ AM_CONDITIONAL(ENABLE_AUDIO_SUPPORT, \ test -r /usr/include/soundcard.h \ -o -r /usr/include/linux/soundcard.h \ -o -r /usr/include/machine/soundcard.h \ + -o -r /usr/include/audio.h \ -o "x$ac_cv_header_windows_h" = "xyes" ) +AM_CONDITIONAL(ENABLE_IRIX_AUDIO, test -r /usr/include/audio.h) + AM_CONDITIONAL(ENABLE_WIN32_AUDIO, test "x$ac_cv_header_windows_h" = "xyes") dnl extra library and include directories @@ -77,68 +86,87 @@ AC_CHECK_LIB(SM, SmcOpenConnection) AC_CHECK_LIB(Xt, XtMalloc) AC_CHECK_LIB(Xmu, XmuLookupStandardColormap) -# dnl Solaris OpenGL pain -# AC_CHECK_LIB(eprintf, __eprintf) +dnl check for OpenGL related libraries -AC_CHECK_LIB(GLcore, glNewList) -if test "x$ac_cv_lib_GLcore_glNewList" = "xno" ; then - dnl if no GLcore, check for GL - AC_CHECK_LIB(GL, glNewList) - if test "x$ac_cv_lib_GL_glNewList" = "xno" ; then - dnl if no GL, check for MesaGL - AC_CHECK_LIB(MesaGL, glNewList) +if test "x$ac_cv_header_windows_h" != "xyes" ; then + dnl Reasonable stuff non-windoze variants ... :-) + + AC_CHECK_LIB(GLcore, glNewList) + if test "x$ac_cv_lib_GLcore_glNewList" = "xno" ; then + dnl if no GLcore, check for GL + AC_CHECK_LIB(GL, glNewList) + if test "x$ac_cv_lib_GL_glNewList" = "xno" ; then + dnl if no GL, check for MesaGL + AC_CHECK_LIB(MesaGL, glNewList) + fi + else + dnl if GLcore found, then also check for GL + AC_CHECK_LIB(GL, glXCreateContext) fi + + dnl if using mesa, check for xmesa.h + if test "x$ac_cv_lib_MesaGL_glNewList" = "xyes" ; then + AC_CHECK_HEADER(GL/xmesa.h) + AM_CONDITIONAL(ENABLE_XMESA_FX, \ + test "x$ac_cv_header_GL_xmesa_h" = "xyes") + else + dnl force a failed check + AM_CONDITIONAL(ENABLE_XMESA_FX, test "no" = "yes") + fi + + AC_CHECK_LIB(GLU, gluLookAt) + if test "x$ac_cv_lib_GLU_gluLookAt" = "xno" ; then + dnl if no GLU, check for MesaGLU + AC_CHECK_LIB(MesaGLU, gluLookAt) + fi + + AC_CHECK_LIB(glut, glutGetModifiers) else - dnl if GLcore found, then also check for GL - AC_CHECK_LIB(GL, glXCreateContext) -fi + dnl Win32 is a little wierd because it has to try to handle the various + dnl winbloze-isms. We'll just do this manually for now. -dnl if using mesa, check for xmesa.h -if test "x$ac_cv_lib_MesaGL_glNewList" = "xyes" ; then - AC_CHECK_HEADER(GL/xmesa.h) - AM_CONDITIONAL(ENABLE_XMESA_FX, test "x$ac_cv_header_GL_xmesa_h" = "xyes") -else - dnl force a failed check - AM_CONDITIONAL(ENABLE_XMESA_FX, test "no" = "yes") -fi - -AC_CHECK_LIB(GLU, gluLookAt) -if test "x$ac_cv_lib_GLU_gluLookAt" = "xno" ; then - dnl if no GLU, check for MesaGLU - AC_CHECK_LIB(MesaGLU, gluLookAt) -fi - -AC_CHECK_LIB(glut, glutGetModifiers) - -dnl Win32 is a little wierd because it has to try to handle the various -dnl winbloze-isms. We'll just do this manually for now. -if test "x$ac_cv_header_windows_h" = "xyes" ; then echo Win32 specific hacks... AC_DEFINE(WIN32) - dnl Note, the double square brackets are required becuase single brackets - dnl seem to get stripped out - if [[ -f `pwd`/Win32/glut.dll ]]; then - echo " found glut.dll, adding -lglut" - LIBS="$LIBS -lglut" - else - echo " Cannot find glut.dll" - exit 1 + dnl force a failed check since we will be building under windoze + AM_CONDITIONAL(ENABLE_XMESA_FX, test "no" = "yes") + + if test "x$with_sgiopengl" = "xyes" ; then + echo "Building with glut.dll, glu.dll, and opengl.dll" + WIN32_GLUT=glut + WIN32_GLU=glu + WIN32_OPENGL=opengl + else + echo "Building with glut32.dll, glu32.dll, and opengl32.dll" + WIN32_GLUT=glut32 + WIN32_GLU=glu32 + WIN32_OPENGL=opengl32 fi - if [[ -f `pwd`/Win32/glu.dll ]]; then - echo " found glu.dll" + + if test -f `pwd`/Win32/${WIN32_GLUT}.dll; then + echo " found ${WIN32_GLUT}.dll, adding -l${WIN32_GLUT}" + LIBS="$LIBS -l${WIN32_GLUT}" else - echo " Can't find glu.dll, assuming it's someplace" + echo " Cannot find ${WIN32_GLUT}.dll" + exit 1 fi - echo " adding -lglu" - LIBS="$LIBS -lglu" - if [[ -f `pwd`/Win32/opengl.dll ]]; then - echo " found opengl.dll" + + if test -f `pwd`/Win32/${WIN32_GLU}.dll; then + echo " found ${WIN32_GLU}.dll" else - echo " Can't find opengl.dll, assuming it's somplace" + echo " Can't find ${WIN32_GLU}.dll, assuming it's someplace" fi - echo " adding -lopengl" - LIBS="$LIBS -lopengl" + echo " adding -l${WIN32_GLU}" + LIBS="$LIBS -l${WIN32_GLU}" + + if test -f `pwd`/Win32/${WIN32_OPENGL}.dll; then + echo " found ${WIN32_OPENGL}.dll" + else + echo " Can't find ${WIN32_OPENGL}.dll, assuming it's somplace" + fi + echo " adding -l${WIN32_OPENGL}" + LIBS="$LIBS -l${WIN32_OPENGL}" + echo " adding -luser32 -lgdi32" LIBS="$LIBS -luser32 -lgdi32" ac_cv_lib_glut_glutGetModifiers="yes"