1# Copyright © 2009 Intel Corporation 2# 3# Permission is hereby granted, free of charge, to any person obtaining a 4# copy of this software and associated documentation files (the "Software"), 5# to deal in the Software without restriction, including without limitation 6# the rights to use, copy, modify, merge, publish, distribute, sublicense, 7# and/or sell copies of the Software, and to permit persons to whom the 8# Software is furnished to do so, subject to the following conditions: 9# 10# The above copyright notice and this permission notice (including the next 11# paragraph) shall be included in all copies or substantial portions of the 12# Software. 13# 14# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 20# IN THE SOFTWARE. 21# 22# Authors: 23# Eric Anholt <eric@anholt.net> 24 25dnl Process this file with autoconf to create configure. 26 27AC_PREREQ([2.59]) 28AC_INIT([mesa-demos], [8.4.0], 29 [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa&component=Demos]) 30AC_CANONICAL_HOST 31 32AM_INIT_AUTOMAKE([dist-bzip2]) 33 34dnl Check for progs 35AC_PROG_CPP 36AC_PROG_CC 37AC_PROG_CXX 38AC_PROG_LIBTOOL 39AM_PROG_CC_C_O 40 41AC_CONFIG_MACRO_DIR([m4]) 42 43# Enable quiet compiles on automake 1.11. 44m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) 45 46dnl Make sure the pkg-config macros are defined 47m4_ifndef([PKG_PROG_PKG_CONFIG], 48 [m4_fatal([Could not locate the pkg-config autoconf macros. 49 These are usually located in /usr/share/aclocal/pkg.m4. If your macros 50 are in a different location, try setting the environment variable 51 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])]) 52PKG_PROG_PKG_CONFIG() 53 54dnl Get the pkg-config definitions for libGL. We include a fallback 55dnl path for GL implementation that don't provide a .pc file 56PKG_CHECK_MODULES(GL, [gl], [], [ 57 AC_CHECK_HEADER([GL/gl.h], 58 [], 59 AC_MSG_ERROR([GL not found])) 60 AC_CHECK_LIB([GL], 61 [glBegin], 62 [GL_LIBS=-lGL], 63 AC_MSG_ERROR([GL required])) 64 ]) 65 66DEMO_CFLAGS="$DEMO_CFLAGS $GL_CFLAGS" 67DEMO_LIBS="$DEMO_LIBS $GL_LIBS" 68 69dnl Check for GLUT 70glut_enabled=yes 71AC_ARG_WITH([glut], 72 [AS_HELP_STRING([--with-glut=DIR], 73 [glut install directory])], 74 [GLUT_CFLAGS="-I$withval/include" 75 GLUT_LIBS="-L$withval/lib -lglut"], 76 [GLUT_CFLAGS="" 77 GLUT_LIBS="-lglut"] 78 ) 79AS_IF([test "x$with_glut" != xno], 80 [AC_CHECK_HEADER([GL/glut.h], 81 [], 82 [glut_enabled=no]) 83 AC_CHECK_LIB([glut], 84 [glutInit], 85 [], 86 [glut_enabled=no])], 87 [glut_enabled=no]) 88 89dnl Check for FreeGLUT 2.6 or later 90AC_EGREP_HEADER([glutInitContextProfile], 91 [GL/freeglut.h], 92 [AC_DEFINE(HAVE_FREEGLUT)], 93 []) 94 95dnl Check for GLEW 96PKG_CHECK_MODULES(GLEW, [glew >= 1.5.4]) 97DEMO_CFLAGS="$DEMO_CFLAGS $GLEW_CFLAGS" 98DEMO_LIBS="$DEMO_LIBS $GLEW_LIBS" 99 100# LIBS was set by AC_CHECK_LIB above 101LIBS="" 102 103PKG_CHECK_MODULES(GLU, [glu], [], 104 [AC_CHECK_HEADER([GL/glu.h], 105 [], 106 AC_MSG_ERROR([GLU not found])) 107 AC_CHECK_LIB([GLU], 108 [gluBeginCurve], 109 [GLU_LIBS=-lGLU], 110 AC_MSG_ERROR([GLU required])) ]) 111 112DEMO_CFLAGS="$DEMO_CFLAGS $GLU_CFLAGS" 113DEMO_LIBS="$DEMO_LIBS $GLU_LIBS" 114 115AC_ARG_ENABLE([egl], 116 [AS_HELP_STRING([--enable-egl], 117 [enable EGL library @<:@default=auto@:>@])], 118 [egl_enabled="$enableval"], 119 [egl_enabled=auto]) 120if test "x$egl_enabled" != "xno"; then 121 PKG_CHECK_MODULES(EGL, [egl], [egl_enabled=yes], [egl_enabled=no]) 122fi 123AC_ARG_ENABLE([gles1], 124 [AS_HELP_STRING([--enable-gles1], 125 [enable support for OpenGL ES 1.x API @<:@default=auto@:>@])], 126 [glesv1_enabled="$enableval"], 127 [glesv1_enabled=auto]) 128if test "x$glesv1_enabled" != "xno"; then 129 PKG_CHECK_MODULES(GLESV1, [glesv1_cm], [glesv1_enabled=yes], [glesv1_enabled=no]) 130fi 131AC_ARG_ENABLE([gles2], 132 [AS_HELP_STRING([--enable-gles2], 133 [enable support for OpenGL ES 2.x API @<:@default=auto@:>@])], 134 [glesv2_enabled="$enableval"], 135 [glesv2_enabled=auto]) 136if test "x$glesv2_enabled" != "xno"; then 137 PKG_CHECK_MODULES(GLESV2, [glesv2], [glesv2_enabled=yes], [glesv2_enabled=no]) 138fi 139AC_ARG_ENABLE([vg], 140 [AS_HELP_STRING([--enable-vg], 141 [enable support for OpenVG API @<:@default=auto@:>@])], 142 [vg_enabled="$enableval"], 143 [vg_enabled=auto]) 144if test "x$vg_enabled" != "xno"; then 145 PKG_CHECK_MODULES(VG, [vg], [vg_enabled=yes], [vg_enabled=no]) 146fi 147AC_ARG_ENABLE([osmesa], 148 [AS_HELP_STRING([--enable-osmesa], 149 [enable OSMesa library @<:@default=auto@:>@])], 150 [osmesa_enabled="$enableval"], 151 [osmesa_enabled=auto]) 152if test "x$osmesa_enabled" != "xno"; then 153 PKG_CHECK_MODULES(OSMESA, [osmesa], [osmesa_enabled=yes], [osmesa_enabled=no]) 154fi 155AC_ARG_ENABLE([libdrm], 156 [AS_HELP_STRING([--enable-libdrm], 157 [enable support for libdrm @<:@default=auto@:>@])], 158 [drm_enabled="$enableval"], 159 [drm_enabled=auto]) 160if test "x$drm_enabled" != "xno"; then 161 PKG_CHECK_MODULES(DRM, [libdrm], [drm_enabled=yes], [drm_enabled=no]) 162fi 163dnl The OSMesa .pc uses OSMesa32, while we want to build with other versions 164dnl too. 165OSMESA32_LIBS=$OSMESA_LIBS 166OSMESA16_LIBS=`echo $OSMESA_LIBS | sed 's|32|16|g'` 167OSMESA_LIBS=`echo $OSMESA_LIBS | sed 's|32||g'` 168 169dnl Compiler macros 170case "$host_os" in 171linux*|*-gnu*|gnu*) 172 DEMO_CFLAGS="$DEMO_CFLAGS -D_GNU_SOURCE -DPTHREADS" 173 ;; 174solaris*) 175 DEMO_CFLAGS="$DEFINES -DPTHREADS -DSVR4" 176 ;; 177cygwin*) 178 DEMO_CFLAGS="$DEFINES -DPTHREADS" 179 ;; 180esac 181 182dnl Set up C warning flags. Copy of XORG_CWARNFLAGS. 183if test "x$GCC" = xyes ; then 184 CWARNFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes \ 185-Wmissing-declarations -Wnested-externs -fno-strict-aliasing \ 186-Wbad-function-cast" 187 case `$CC -dumpversion` in 188 3.4.* | 4.*) 189 CWARNFLAGS="$CWARNFLAGS -Wold-style-definition -Wdeclaration-after-statement" 190 ;; 191 esac 192else 193 AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"]) 194 if test "x$SUNCC" = "xyes"; then 195 CWARNFLAGS="-v" 196 fi 197fi 198DEMO_CFLAGS="$DEMO_CFLAGS $CWARNFLAGS" 199 200AC_ARG_ENABLE([x11], 201 [AS_HELP_STRING([--enable-x11], 202 [enable support for X11 @<:@default=auto@:>@])], 203 [x11_enabled="$enableval"], 204 [x11_enabled=auto]) 205if test "x$x11_enabled" != "xno"; then 206 PKG_CHECK_MODULES(X11, [x11 xext], [x11_enabled=yes], [x11_enabled=no]) 207fi 208 209AC_ARG_ENABLE([wayland], 210 [AS_HELP_STRING([--enable-wayland], 211 [enable support for wayland @<:@default=auto@:>@])], 212 [wayland_enabled="$enableval"], 213 [wayland_enabled=auto]) 214 215if test "x$wayland_enabled" != "xno"; then 216 PKG_CHECK_MODULES(WAYLAND, [wayland-client wayland-egl], [wayland_enabled=yes], [wayland_enabled=no]) 217fi 218 219dnl GBM is needed for EGL on KMS 220AC_ARG_ENABLE([gbm], 221 [AS_HELP_STRING([--enable-gbm], 222 [enable support for GBM @<:@default=auto@:>@])], 223 [gbm_enabled="$enableval"], 224 [gbm_enabled=auto]) 225if test "x$gbm_enabled" != "xno"; then 226 PKG_CHECK_MODULES(GBM, [gbm], [gbm_enabled=yes], [gbm_enabled=no]) 227fi 228 229dnl FreeType2 is needed by an OpenVG demo 230AC_ARG_ENABLE([freetype2], 231 [AS_HELP_STRING([--enable-freetype2], 232 [enable support for FreeType2 @<:@default=auto@:>@])], 233 [freetype2_enabled="$enableval"], 234 [freetype2_enabled=auto]) 235if test "x$freetype2_enabled" != "xno"; then 236 PKG_CHECK_MODULES(FREETYPE2, [freetype2], [freetype2_enabled=yes], [freetype2_enabled=no]) 237fi 238 239mesa_source_enabled=no 240AC_ARG_WITH([mesa-source], 241 [AS_HELP_STRING([--with-mesa-source=DIR], 242 [Mesa source directory for finding gl_API.xml])], 243 [mesa_source_enabled="yes" 244 mesa_source_dir="$withval"], 245 [mesa_source_enabled="no"]) 246MESA_GLAPI="$mesa_source_dir/src/mapi/glapi/gen" 247 248AC_ARG_ENABLE([rbug], 249 [AS_HELP_STRING([--enable-rbug], 250 [enable support for rbug @<:@default=no@:>@])], 251 [rbug_enabled="yes"], 252 [rbug_enabled="no"]) 253 254use_system_data=no 255AC_ARG_WITH([system-data-files], 256 [AS_HELP_STRING([--with-system-data-files], 257 [Use system data files for demos (default: no)])], 258 [use_system_data=yes], []) 259if test "x$use_system_data" = xyes; then 260 demos_data_dir="${datadir}/${PACKAGE}/" 261else 262 demos_data_dir="../data/" 263fi 264AC_DEFINE_DIR(DEMOS_DATA_DIR, demos_data_dir, [Data dir for demos]) 265AC_DEFINE_UNQUOTED([DEMOS_DATA_DIR], "$DEMOS_DATA_DIR", 266 [Directory for demos data files]) 267 268dnl 269dnl Program library dependencies 270dnl Only libm is added here if necessary as the libraries should 271dnl be pulled in by the linker 272dnl 273case "$host_os" in 274solaris*) 275 DEMO_LIBS="$DEMO_LIBS -lX11 -lsocket -lnsl -lm" 276 ;; 277cygwin*) 278 DEMO_LIBS="$DEMO_LIBS -lX11" 279 ;; 280*) 281 DEMO_LIBS="$DEMO_LIBS -lm" 282 ;; 283esac 284 285AC_SUBST([DEMO_CFLAGS]) 286AC_SUBST([DEMO_LIBS]) 287AC_SUBST([EGL_CFLAGS]) 288AC_SUBST([EGL_LIBS]) 289AC_SUBST([GLESV1_CFLAGS]) 290AC_SUBST([GLESV1_LIBS]) 291AC_SUBST([GLESV2_CFLAGS]) 292AC_SUBST([GLESV2_LIBS]) 293AC_SUBST([GLUT_CFLAGS]) 294AC_SUBST([GLUT_LIBS]) 295AC_SUBST([X11_CFLAGS]) 296AC_SUBST([X11_LIBS]) 297AC_SUBST([OSMESA_CFLAGS]) 298AC_SUBST([OSMESA_LIBS]) 299AC_SUBST([OSMESA16_LIBS]) 300AC_SUBST([OSMESA32_LIBS]) 301AC_SUBST([MESA_GLAPI]) 302AC_SUBST([WAYLAND_CFLAGS]) 303AC_SUBST([WAYLAND_LIBS]) 304 305 306AM_CONDITIONAL(HAVE_EGL, test "x$egl_enabled" = "xyes") 307AM_CONDITIONAL(HAVE_GLESV1, test "x$glesv1_enabled" = "xyes") 308AM_CONDITIONAL(HAVE_GLESV2, test "x$glesv2_enabled" = "xyes") 309AM_CONDITIONAL(HAVE_VG, test "x$vg_enabled" = "xyes") 310AM_CONDITIONAL(HAVE_GLUT, test "x$glut_enabled" = "xyes") 311AM_CONDITIONAL(HAVE_X11, test "x$x11_enabled" = "xyes") 312AM_CONDITIONAL(HAVE_GBM, test "x$gbm_enabled" = "xyes") 313AM_CONDITIONAL(HAVE_FREETYPE2, test "x$freetype2_enabled" = "xyes") 314AM_CONDITIONAL(HAVE_OSMESA, test "x$osmesa_enabled" = "xyes") 315AM_CONDITIONAL(HAVE_DRM, test "x$drm_enabled" = "xyes") 316AM_CONDITIONAL(HAVE_MESA_SOURCE, test "x$mesa_source_enabled" = "xyes") 317AM_CONDITIONAL(HAVE_WAYLAND, test "x$wayland_enabled" = "xyes") 318AM_CONDITIONAL(HAVE_RBUG, test "x$rbug_enabled" = "xyes") 319 320AC_OUTPUT([ 321 Makefile 322 src/Makefile 323 src/demos/Makefile 324 src/egl/Makefile 325 src/egl/eglut/Makefile 326 src/egl/opengl/Makefile 327 src/egl/opengles1/Makefile 328 src/egl/opengles2/Makefile 329 src/egl/openvg/Makefile 330 src/egl/openvg/trivial/Makefile 331 src/egl/oes_vg/Makefile 332 src/fp/Makefile 333 src/fpglsl/Makefile 334 src/glsl/Makefile 335 src/gs/Makefile 336 src/data/Makefile 337 src/objviewer/Makefile 338 src/osdemos/Makefile 339 src/perf/Makefile 340 src/rbug/Makefile 341 src/redbook/Makefile 342 src/samples/Makefile 343 src/slang/Makefile 344 src/tests/Makefile 345 src/tools/Makefile 346 src/trivial/Makefile 347 src/util/Makefile 348 src/vp/Makefile 349 src/vpglsl/Makefile 350 src/wgl/Makefile 351 src/xdemos/Makefile 352]) 353