Dan Nicholson | dca1b79 | 2007-10-23 09:25:58 -0700 | [diff] [blame^] | 1 | dnl Process this file with autoconf to create configure. |
| 2 | |
| 3 | AC_PREREQ(2.59) |
| 4 | |
| 5 | dnl Versioning |
| 6 | dnl Make version number available to autoconf and configure |
| 7 | m4_define(mesa_major, 7) |
| 8 | m4_define(mesa_minor, 1) |
| 9 | m4_define(mesa_tiny, 0) |
| 10 | m4_define(mesa_version, [mesa_major().mesa_minor().mesa_tiny()]) |
| 11 | |
| 12 | AC_INIT(Mesa, mesa_version(), mesa3d@sourceforge.net) |
| 13 | AC_CONFIG_AUX_DIR(bin) |
| 14 | AC_CANONICAL_HOST |
| 15 | |
| 16 | dnl Substitute the version number into shell variables |
| 17 | MESA_MAJOR=mesa_major() |
| 18 | MESA_MINOR=mesa_minor() |
| 19 | MESA_TINY=mesa_tiny() |
| 20 | AC_SUBST(MESA_MAJOR) |
| 21 | AC_SUBST(MESA_MINOR) |
| 22 | AC_SUBST(MESA_TINY) |
| 23 | |
| 24 | dnl Check for progs |
| 25 | AC_PROG_CPP |
| 26 | AC_PROG_CC |
| 27 | AC_PROG_CXX |
| 28 | AC_PATH_PROG(MAKE, make) |
| 29 | AC_PATH_PROG(MKDEP, makedepend) |
| 30 | AC_PATH_PROG(SED, sed) |
| 31 | PKG_PROG_PKG_CONFIG() |
| 32 | |
| 33 | dnl LIB_DIR - library basename |
| 34 | LIB_DIR=`echo $libdir | $SED 's%.*/%%'` |
| 35 | AC_SUBST(LIB_DIR) |
| 36 | |
| 37 | dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later |
| 38 | _SAVE_LDFLAGS="$LDFLAGS" |
| 39 | AC_ARG_VAR(EXTRA_LIB_PATH,[Extra -L paths for the linker]) |
| 40 | AC_SUBST(EXTRA_LIB_PATH) |
| 41 | |
| 42 | dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later |
| 43 | _SAVE_CPPFLAGS="$CPPFLAGS" |
| 44 | AC_ARG_VAR(X11_INCLUDES,[Extra -I paths for X11 headers]) |
| 45 | AC_SUBST(X11_INCLUDES) |
| 46 | |
| 47 | dnl Compiler macros |
| 48 | DEFINES="" |
| 49 | AC_SUBST(DEFINES) |
| 50 | if test "x$GCC" = xyes; then |
| 51 | DEFINES="-D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE" |
| 52 | fi |
| 53 | case "$host_os" in |
| 54 | linux*) |
| 55 | DEFINES="$DEFINES -D_SVID_SOURCE -D_GNU_SOURCE -DPTHREADS -DHAVE_POSIX_MEMALIGN" |
| 56 | ;; |
| 57 | esac |
| 58 | |
| 59 | dnl Add flags for gcc and g++ |
| 60 | if test "x$GCC" = xyes; then |
| 61 | CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99 -ffast-math" |
| 62 | fi |
| 63 | if test "x$GXX" = xyes; then |
| 64 | CXXFLAGS="$CXXFLAGS -Wall" |
| 65 | fi |
| 66 | |
| 67 | dnl These should be unnecessary, but let the user set them if they want |
| 68 | AC_ARG_VAR(OPT_FLAGS, [Additional optimization flags for the compiler. |
| 69 | Default is to use CFLAGS.]) |
| 70 | AC_ARG_VAR(ARCH_FLAGS, [Additional architecture specific flags for the |
| 71 | compiler. Default is to use CFLAGS.]) |
| 72 | AC_SUBST(OPT_FLAGS) |
| 73 | AC_SUBST(ARCH_FLAGS) |
| 74 | |
| 75 | dnl |
| 76 | dnl library names |
| 77 | dnl |
| 78 | GL_LIB_NAME='lib$(GL_LIB).so' |
| 79 | GLU_LIB_NAME='lib$(GLU_LIB).so' |
| 80 | GLUT_LIB_NAME='lib$(GLUT_LIB).so' |
| 81 | GLW_LIB_NAME='lib$(GLW_LIB).so' |
| 82 | OSMESA_LIB_NAME='lib$(OSMESA_LIB).so' |
| 83 | AC_SUBST(GL_LIB_NAME) |
| 84 | AC_SUBST(GLU_LIB_NAME) |
| 85 | AC_SUBST(GLUT_LIB_NAME) |
| 86 | AC_SUBST(GLW_LIB_NAME) |
| 87 | AC_SUBST(OSMESA_LIB_NAME) |
| 88 | |
| 89 | dnl |
| 90 | dnl Build directories for xlib driver |
| 91 | dnl |
| 92 | SRC_DIRS="mesa" |
| 93 | DRIVER_DIRS="x11 osmesa" |
| 94 | GLU_DIRS="sgi" |
| 95 | AC_SUBST(SRC_DIRS) |
| 96 | AC_SUBST(GLU_DIRS) |
| 97 | AC_SUBST(DRIVER_DIRS) |
| 98 | |
| 99 | dnl |
| 100 | dnl Find out if X is available. The variables have_x or no_x will be |
| 101 | dnl set and used later in the driver setups |
| 102 | dnl |
| 103 | if test -n "$PKG_CONFIG"; then |
| 104 | AC_MSG_CHECKING([pkg-config files for X11 are available]) |
| 105 | if $PKG_CONFIG --exists x11; then |
| 106 | x11_pkgconfig=yes |
| 107 | have_x=yes |
| 108 | AC_MSG_RESULT(yes) |
| 109 | else |
| 110 | x11_pkgconfig=no |
| 111 | no_x=yes |
| 112 | AC_MSG_RESULT(no) |
| 113 | fi |
| 114 | else |
| 115 | x11_pkgconfig=no |
| 116 | fi |
| 117 | dnl Use the autoconf macro if no pkg-config files |
| 118 | if test "$x11_pkgconfig" = no; then |
| 119 | AC_PATH_XTRA |
| 120 | fi |
| 121 | |
| 122 | dnl |
| 123 | dnl libGL for xlib driver |
| 124 | dnl |
| 125 | if test "$no_x" = yes; then |
| 126 | AC_MSG_ERROR([X11 development libraries needed for Xlib driver]) |
| 127 | fi |
| 128 | |
| 129 | if test "$x11_pkgconfig" = yes; then |
| 130 | PKG_CHECK_MODULES(X11GL, x11 xext) |
| 131 | X11_INCLUDES="$X11_INCLUDES $X11GL_CFLAGS" |
| 132 | GL_LIB_DEPS="$X11GL_LIBS" |
| 133 | else |
| 134 | # should check these... |
| 135 | X11_INCLUDES="$X11_INCLUDES $X_CFLAGS" |
| 136 | GL_LIB_DEPS="$X_LIBS -lX11 -lXext" |
| 137 | fi |
| 138 | GL_LIB_DEPS="$GL_LIB_DEPS -lm -lpthread" |
| 139 | AC_SUBST(GL_LIB_DEPS) |
| 140 | |
| 141 | dnl |
| 142 | dnl More X11 setup |
| 143 | dnl |
| 144 | if test "$mesa_driver" = x11; then |
| 145 | DEFINES="$DEFINES -DUSE_XSHM" |
| 146 | fi |
| 147 | |
| 148 | dnl |
| 149 | dnl OSMesa configuration |
| 150 | dnl |
| 151 | OSMESA_LIB_DEPS="" |
| 152 | OSMESA_MESA_DEPS='-l$(GL_LIB)' |
| 153 | AC_SUBST(OSMESA_LIB_DEPS) |
| 154 | AC_SUBST(OSMESA_MESA_DEPS) |
| 155 | |
| 156 | dnl |
| 157 | dnl GLU configuration |
| 158 | dnl |
| 159 | AC_ARG_ENABLE(glu, |
| 160 | [AS_HELP_STRING([--enable-glu], |
| 161 | [enable OpenGL Utility library @<:@default=yes@:>@])], |
| 162 | enable_glu="$enableval", |
| 163 | enable_glu=yes) |
| 164 | if test "x$enable_glu" = xyes; then |
| 165 | SRC_DIRS="$SRC_DIRS glu" |
| 166 | |
| 167 | # If GLU is available, we can build some programs |
| 168 | PROGRAM_DIRS="$PROGRAM_DIRS xdemos" |
| 169 | |
| 170 | GLU_LIB_DEPS="-lm" |
| 171 | GLU_MESA_DEPS='-l$(GL_LIB)' |
| 172 | fi |
| 173 | AC_SUBST(GLU_LIB_DEPS) |
| 174 | AC_SUBST(GLU_MESA_DEPS) |
| 175 | |
| 176 | dnl |
| 177 | dnl GLw configuration |
| 178 | dnl |
| 179 | AC_ARG_ENABLE(glw, |
| 180 | [AS_HELP_STRING([--enable-glw], |
| 181 | [enable Xt/Motif widget library @<:@default=yes@:>@])], |
| 182 | enable_glw="$enableval", |
| 183 | enable_glw=yes) |
| 184 | if test "x$enable_glw" = xyes; then |
| 185 | SRC_DIRS="$SRC_DIRS glw" |
| 186 | if test "$x11_pkgconfig" = yes; then |
| 187 | PKG_CHECK_MODULES(GLW, x11 xt) |
| 188 | GLW_LIB_DEPS="$GLW_LIBS" |
| 189 | else |
| 190 | # should check these... |
| 191 | GLW_LIB_DEPS="$X_LIBS -lX11 -lXt" |
| 192 | fi |
| 193 | |
| 194 | GLW_MESA_DEPS='-l$(GL_LIB)' |
| 195 | fi |
| 196 | AC_SUBST(GLW_LIB_DEPS) |
| 197 | AC_SUBST(GLW_MESA_DEPS) |
| 198 | |
| 199 | dnl |
| 200 | dnl GLUT configuration |
| 201 | dnl |
| 202 | if test -f "$srcdir/include/GL/glut.h"; then |
| 203 | default_glut=yes |
| 204 | else |
| 205 | default_glut=no |
| 206 | fi |
| 207 | AC_ARG_ENABLE(glut, |
| 208 | [AS_HELP_STRING([--enable-glut], |
| 209 | [enable GLUT library @<:@default=yes if source available@:>@])], |
| 210 | enable_glut="$enableval", |
| 211 | enable_glut="$default_glut") |
| 212 | |
| 213 | dnl Can't build glut if GLU not available |
| 214 | if test "x$enable_glu$enable_glut" = xnoyes; then |
| 215 | AC_MSG_WARN([Disabling glut since GLU is disabled]) |
| 216 | enable_glut=no |
| 217 | fi |
| 218 | if test "x$enable_glut" = xyes; then |
| 219 | SRC_DIRS="$SRC_DIRS glut/glx" |
| 220 | GLUT_CFLAGS="" |
| 221 | if test "x$GCC" = xyes; then |
| 222 | GLUT_CFLAGS="-fexceptions" |
| 223 | fi |
| 224 | if test "$x11_pkgconfig" = yes; then |
| 225 | PKG_CHECK_MODULES(GLUT, x11 xmu xt xi) |
| 226 | GLUT_LIB_DEPS="$GLUT_LIBS" |
| 227 | else |
| 228 | # should check these... |
| 229 | GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXt -lXi" |
| 230 | fi |
| 231 | GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm" |
| 232 | |
| 233 | # If glut is available, we can build most programs |
| 234 | PROGRAM_DIRS="$PROGRAM_DIRS demos redbook samples glsl" |
| 235 | |
| 236 | GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)' |
| 237 | fi |
| 238 | AC_SUBST(GLUT_LIB_DEPS) |
| 239 | AC_SUBST(GLUT_MESA_DEPS) |
| 240 | AC_SUBST(GLUT_CFLAGS) |
| 241 | |
| 242 | dnl |
| 243 | dnl Program library dependencies |
| 244 | dnl Only libm is added here if necessary as the libraries should |
| 245 | dnl be pulled in by the linker |
| 246 | dnl |
| 247 | if test "x$APP_LIB_DEPS" = x; then |
| 248 | APP_LIB_DEPS="-lm" |
| 249 | fi |
| 250 | AC_SUBST(APP_LIB_DEPS) |
| 251 | AC_SUBST(PROGRAM_DIRS) |
| 252 | |
| 253 | dnl Arch/platform-specific settings |
| 254 | PIC_FLAGS="" |
| 255 | ASM_FLAGS="" |
| 256 | ASM_SOURCES="" |
| 257 | ASM_API="" |
| 258 | AC_SUBST(PIC_FLAGS) |
| 259 | AC_SUBST(ASM_FLAGS) |
| 260 | AC_SUBST(ASM_SOURCES) |
| 261 | AC_SUBST(ASM_API) |
| 262 | case "$host_os" in |
| 263 | linux*) |
| 264 | PIC_FLAGS="-fPIC" |
| 265 | case "$host_cpu" in |
| 266 | i*86) |
| 267 | ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM" |
| 268 | ASM_SOURCES='$(X86_SOURCES)' |
| 269 | ASM_API='$(X86_API)' |
| 270 | ;; |
| 271 | x86_64) |
| 272 | ASM_FLAGS="-DUSE_X86_64_ASM" |
| 273 | ASM_SOURCES='$(X86-64_SOURCES)' |
| 274 | ASM_API='$(X86-64_API)' |
| 275 | ;; |
| 276 | powerpc) |
| 277 | ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM" |
| 278 | ASM_SOURCES='$(PPC_SOURCES)' |
| 279 | ;; |
| 280 | esac |
| 281 | ;; |
| 282 | freebsd*) |
| 283 | PIC_FLAGS="-fPIC" |
| 284 | case "$host_os" in |
| 285 | i*86) |
| 286 | PIC_FLAGS="" |
| 287 | ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM" |
| 288 | ASM_SOURCES='$(X86_SOURCES)' |
| 289 | ASM_API='$(X86_API)' |
| 290 | ;; |
| 291 | x86_64) |
| 292 | ASM_FLAGS="-DUSE_X86_64_ASM" |
| 293 | ASM_SOURCES='$(X86-64_SOURCES)' |
| 294 | ASM_API='$(X86-64_API)' |
| 295 | ;; |
| 296 | esac |
| 297 | ;; |
| 298 | esac |
| 299 | |
| 300 | dnl Restore LDFLAGS and CPPFLAGS |
| 301 | LDFLAGS="$_SAVE_LDFLAGS" |
| 302 | CPPFLAGS="$_SAVE_CPPFLAGS" |
| 303 | |
| 304 | dnl Substitute the config |
| 305 | AC_OUTPUT([configs/autoconf]) |
| 306 | |
| 307 | echo "" |
| 308 | echo " Run 'make autoconf' to build Mesa" |
| 309 | echo "" |