geom/adm_local/unix/config_files/check_opengl.m4

231 lines
7.1 KiB
Plaintext

dnl Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE
dnl
dnl Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
dnl
dnl This library is free software; you can redistribute it and/or
dnl modify it under the terms of the GNU Lesser General Public
dnl License as published by the Free Software Foundation; either
dnl version 2.1 of the License.
dnl
dnl This library is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
dnl Lesser General Public License for more details.
dnl
dnl You should have received a copy of the GNU Lesser General Public
dnl License along with this library; if not, write to the Free Software
dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
dnl
dnl See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
dnl
AC_DEFUN([CHECK_OPENGL],[
AC_REQUIRE([AC_PROG_CC])dnl
AC_REQUIRE([AC_PROG_CPP])dnl
AC_REQUIRE([AC_LINKER_OPTIONS])dnl
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_ARG_WITH(opengl,
[AC_HELP_STRING([--with-opengl=DIR],[root directory path of OpenGL installation])],
[opengl_dir="$withval"],
[dirs="/usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib /opt/graphics/OpenGL/lib64 /opt/graphics/OpenGL/lib /usr/openwin/lib64 /usr/openwin/lib /usr/X11R6/lib64 /usr/X11R6/lib"])dnl
AC_CHECKING(for OpenGL)
AC_CHECKING(for OpenGL headers)
OGL_INCLUDES=""
OGL_LIBS=""
GL_LIB_PATH=""
GLU_LIB_PATH=""
OpenGL_ok=no
OpenGL_libs_ok=no
OpenGL_headers_ok=no
dnl openGL headers
# by default
if test "x${opengl_dir}" != "x" ; then
AC_MSG_RESULT(for opengl_dir: $opengl_dir)
AC_CHECK_HEADER([${opengl_dir}/include/GL/gl.h],
[OpenGL_headers_ok=yes; OGL_INCLUDES="-I${opengl_dir}/include"],
[OpenGL_headers_ok=no])
if test "x${OpenGL_headers_ok}" = "xyes" ; then
AC_CHECKING(for default OpenGL library)
if test "x${opengl_dir}" = "x/usr" ; then
OGL_LIBS=""
else
OGL_LIBS="-L${opengl_dir}/lib"
fi
LDFLAGS_old="$LDFLAGS"
LDFLAGS="$LDFLAGS $OGL_LIBS"
AC_CHECK_LIB([GL],
[glBegin],
[OpenGL_libs_ok=yes],
[OpenGL_libs_ok=no])
if test "x${OpenGL_libs_ok}" = "xyes" ; then
AC_TRY_LINK([],
[],
[OpenGL_libs_ok=yes ; OpenGL_ok=yes; OGL_LIBS="$OGL_LIBS -lGL"],
[OpenGL_libs_ok=no])
fi
LDFLAGS="$LDFLAGS_old"
fi
fi
if test "x${OpenGL_headers_ok}" = "xno" ; then
AC_CHECK_HEADER(GL/gl.h,
[OpenGL_headers_ok=yes],
[OpenGL_headers_ok=no])
fi
# under SunOS ?
if test "x${OpenGL_headers_ok}" = "xno" ; then
AC_CHECK_HEADERS(/usr/openwin/share/include/GL/glxmd.h,
[OpenGL_headers_ok=yes; OGL_INCLUDES="-I/usr/openwin/share/include/"],
[OpenGL_headers_ok=no])
fi
# under IRIX ?
if test "x${OpenGL_headers_ok}" = "xno" ; then
AC_CHECK_HEADERS(/opt/graphics/OpenGL/include/GL/glxmd.h,
[OpenGL_headers_ok=yes; OGL_INCLUDES="-I/opt/graphics/OpenGL/include"],
[OpenGL_headers_ok=no])
fi
# some linux OpenGL servers hide the includes in /usr/X11R6/include/GL
if test "x${OpenGL_headers_ok}" = "xno" ; then
AC_CHECK_HEADERS(/usr/X11R6/include/GL/gl.h,
[OpenGL_headers_ok=yes; OGL_INCLUDES="-I/usr/X11R6/include"],
[OpenGL_headers_ok=no])
fi
if test "x${OpenGL_headers_ok}" = "xyes" ; then
AC_CHECKING(for OpenGL library)
for idir in $dirs; do
if test -r "${idir}/libGL.so"; then
AC_MSG_RESULT(in ${idir})
if test "x${idir}" = "x/usr/lib64" -o "x${idir}" = "x/usr/lib" ; then
GL_LIB_PATH=""
else
GL_LIB_PATH="-L${idir}"
fi
break
fi
# under IRIX ?
if test -r "${idir}/libGL.sl"; then
AC_MSG_RESULT(in ${idir})
if test "x${idir}" = "x/usr/lib64" -o "x${idir}" = "x/usr/lib" ; then
GL_LIB_PATH=""
else
GL_LIB_PATH="-L${idir}"
fi
break
fi
done
LDFLAGS_old="${LDFLAGS}"
LDFLAGS="${LDFLAGS} ${GL_LIB_PATH}"
AC_CHECK_LIB([GL],
[glBegin],
[OpenGL_libs_ok=yes],
[OpenGL_libs_ok=no])
if test "x${OpenGL_libs_ok}" = "xyes" ; then
AC_TRY_LINK([],
[],
[OpenGL_libs_ok=yes ; OGL_LIBS="${OGL_LIBS} ${GL_LIB_PATH} -lGL"],
[OpenGL_libs_ok=no])
fi
LDFLAGS="$LDFLAGS_old"
fi
if test "x${OpenGL_libs_ok}" = "xyes" ; then
for idir in $dirs; do
if test -r "${idir}/libGLU.so"; then
AC_MSG_RESULT(in ${idir})
if test "x${idir}" = "x/usr/lib64" -o "x${idir}" = "x/usr/lib" ; then
GLU_LIB_PATH=""
else
GLU_LIB_PATH="-L${idir}"
fi
break
fi
# under IRIX ?
if test -r "${idir}/libGLU.sl"; then
AC_MSG_RESULT(in ${idir})
if test "x${idir}" = "x/usr/lib64" -o "x${idir}" = "x/usr/lib" ; then
GLU_LIB_PATH=""
else
GLU_LIB_PATH="-L${idir}"
fi
break
fi
done
# workaround a problem with libGL library location
for idir in $dirs; do
if test -r "${idir}/libGLU.la"; then
GLU_LA_PATH="${idir}/libGLU.la"
GL_LA_PATH_TO_CHECK=`cat ${GLU_LA_PATH} | awk '{ for(i=1;i<NF;i++){ if(gsub("libGL.la","&",$i)>0) print $i } }'`
if test -z ${GL_LA_PATH_TO_CHECK} || test -r ${GL_LA_PATH_TO_CHECK}; then
# nothing to do
break
fi
for jdir in $dirs; do
if test -r "${jdir}/libGL.la"; then
GL_LA_PATH="${jdir}/libGL.la"
# copy the libGLU.la file and set correct libGL.la path in it
NEW_GLU_LA_PATH=${ROOT_BUILDDIR}
NEW_GLU_LA_FILE="${NEW_GLU_LA_PATH}/libGLU.la"
sed -e "s%${GL_LA_PATH_TO_CHECK}%${GL_LA_PATH}%" ${GLU_LA_PATH} > "${NEW_GLU_LA_FILE}"
chmod -f --reference=${GLU_LA_PATH} "${NEW_GLU_LA_FILE}"
# set a new libGLU.la path
GLU_LIB_PATH="-L${NEW_GLU_LA_PATH}"
# create a simbolic link to libGLU.so
for kdir in $dirs; do
if test -r "${kdir}/libGLU.so"; then
cp -fs "${kdir}/libGLU.so" "${NEW_GLU_LA_PATH}/libGLU.so"
break
fi
done
break
fi
done
break
fi
done
LDFLAGS_old="${LDFLAGS}"
LDFLAGS="${LDFLAGS} ${OGL_LIBS} ${GLU_LIB_PATH}"
AC_CHECK_LIB([GLU],
[gluBeginSurface],
[OpenGL_libs_ok=yes],
[OpenGL_libs_ok=no])
if test "x${OpenGL_libs_ok}" = "xyes" ; then
AC_TRY_LINK([],
[],
[OpenGL_libs_ok=yes ; OGL_LIBS="${OGL_LIBS} ${GLU_LIB_PATH} -lGLU"],
[OpenGL_libs_ok=no])
fi
LDFLAGS="$LDFLAGS_old"
fi
if test "x${OpenGL_headers_ok}" = "xyes" ; then
if test "x${OpenGL_libs_ok}" = "xyes" ; then
OpenGL_ok=yes
fi
fi
AC_MSG_RESULT(for OpenGL_headers_ok: $OpenGL_headers_ok)
AC_MSG_RESULT(for OpenGL_libs_ok: $OpenGL_libs_ok)
AC_MSG_RESULT(for OpenGL_ok: $OpenGL_ok)
AC_SUBST(OGL_INCLUDES)
AC_SUBST(OGL_LIBS)
AC_LANG_RESTORE
])dnl