diff options
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 309 |
1 files changed, 309 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000000..5563fa2180 --- /dev/null +++ b/configure.ac @@ -0,0 +1,309 @@ +dnl Process this file with autoconf to create configure. + +AC_PREREQ(2.59) + +dnl Versioning +dnl Make version number available to autoconf and configure +m4_define(mesa_major, 7) +m4_define(mesa_minor, 1) +m4_define(mesa_tiny, 0) +m4_define(mesa_version, [mesa_major().mesa_minor().mesa_tiny()]) + +AC_INIT(Mesa, mesa_version(), mesa3d@sourceforge.net) +AC_CONFIG_AUX_DIR(bin) +AC_CANONICAL_HOST + +dnl Substitute the version number into shell variables +MESA_MAJOR=mesa_major() +MESA_MINOR=mesa_minor() +MESA_TINY=mesa_tiny() +AC_SUBST(MESA_MAJOR) +AC_SUBST(MESA_MINOR) +AC_SUBST(MESA_TINY) + +dnl Check for progs +AC_PROG_CPP +AC_PROG_CC +AC_PROG_CXX +AC_PATH_PROG(MAKE, make) +AC_PATH_PROG(MKDEP, makedepend) +AC_PATH_PROG(SED, sed) +PKG_PROG_PKG_CONFIG() + +dnl LIB_DIR - library basename +LIB_DIR=`echo $libdir | $SED 's%.*/%%'` +AC_SUBST(LIB_DIR) + +dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later +_SAVE_LDFLAGS="$LDFLAGS" +AC_ARG_VAR(EXTRA_LIB_PATH,[Extra -L paths for the linker]) +AC_SUBST(EXTRA_LIB_PATH) + +dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later +_SAVE_CPPFLAGS="$CPPFLAGS" +AC_ARG_VAR(X11_INCLUDES,[Extra -I paths for X11 headers]) +AC_SUBST(X11_INCLUDES) + +dnl Compiler macros +DEFINES="" +AC_SUBST(DEFINES) +if test "x$GCC" = xyes; then + DEFINES="-D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE" +fi +case "$host_os" in +linux*) + DEFINES="$DEFINES -D_SVID_SOURCE -D_GNU_SOURCE -DPTHREADS -DHAVE_POSIX_MEMALIGN" + ;; +esac + +dnl Add flags for gcc and g++ +if test "x$GCC" = xyes; then + CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99 -ffast-math" +fi +if test "x$GXX" = xyes; then + CXXFLAGS="$CXXFLAGS -Wall" +fi + +dnl These should be unnecessary, but let the user set them if they want +AC_ARG_VAR(OPT_FLAGS, [Additional optimization flags for the compiler. + Default is to use CFLAGS.]) +AC_ARG_VAR(ARCH_FLAGS, [Additional architecture specific flags for the + compiler. Default is to use CFLAGS.]) +AC_SUBST(OPT_FLAGS) +AC_SUBST(ARCH_FLAGS) + +dnl +dnl library names +dnl +GL_LIB_NAME='lib$(GL_LIB).so' +GLU_LIB_NAME='lib$(GLU_LIB).so' +GLUT_LIB_NAME='lib$(GLUT_LIB).so' +GLW_LIB_NAME='lib$(GLW_LIB).so' +OSMESA_LIB_NAME='lib$(OSMESA_LIB).so' +AC_SUBST(GL_LIB_NAME) +AC_SUBST(GLU_LIB_NAME) +AC_SUBST(GLUT_LIB_NAME) +AC_SUBST(GLW_LIB_NAME) +AC_SUBST(OSMESA_LIB_NAME) + +dnl +dnl Build directories for xlib driver +dnl +SRC_DIRS="mesa" +DRIVER_DIRS="x11 osmesa" +GLU_DIRS="sgi" +AC_SUBST(SRC_DIRS) +AC_SUBST(GLU_DIRS) +AC_SUBST(DRIVER_DIRS) + +dnl +dnl Find out if X is available. The variables have_x or no_x will be +dnl set and used later in the driver setups +dnl +if test -n "$PKG_CONFIG"; then + AC_MSG_CHECKING([pkg-config files for X11 are available]) + if $PKG_CONFIG --exists x11; then + x11_pkgconfig=yes + have_x=yes + AC_MSG_RESULT(yes) + else + x11_pkgconfig=no + no_x=yes + AC_MSG_RESULT(no) + fi +else + x11_pkgconfig=no +fi +dnl Use the autoconf macro if no pkg-config files +if test "$x11_pkgconfig" = no; then + AC_PATH_XTRA +fi + +dnl +dnl libGL for xlib driver +dnl +if test "$no_x" = yes; then + AC_MSG_ERROR([X11 development libraries needed for Xlib driver]) +fi + +if test "$x11_pkgconfig" = yes; then +PKG_CHECK_MODULES(X11GL, x11 xext) + X11_INCLUDES="$X11_INCLUDES $X11GL_CFLAGS" + GL_LIB_DEPS="$X11GL_LIBS" +else + # should check these... + X11_INCLUDES="$X11_INCLUDES $X_CFLAGS" + GL_LIB_DEPS="$X_LIBS -lX11 -lXext" +fi +GL_LIB_DEPS="$GL_LIB_DEPS -lm -lpthread" +AC_SUBST(GL_LIB_DEPS) + +dnl +dnl More X11 setup +dnl +if test "$mesa_driver" = x11; then + DEFINES="$DEFINES -DUSE_XSHM" +fi + +dnl +dnl OSMesa configuration +dnl +OSMESA_LIB_DEPS="" +OSMESA_MESA_DEPS='-l$(GL_LIB)' +AC_SUBST(OSMESA_LIB_DEPS) +AC_SUBST(OSMESA_MESA_DEPS) + +dnl +dnl GLU configuration +dnl +AC_ARG_ENABLE(glu, + [AS_HELP_STRING([--enable-glu], + [enable OpenGL Utility library @<:@default=yes@:>@])], + enable_glu="$enableval", + enable_glu=yes) +if test "x$enable_glu" = xyes; then + SRC_DIRS="$SRC_DIRS glu" + + # If GLU is available, we can build some programs + PROGRAM_DIRS="$PROGRAM_DIRS xdemos" + + GLU_LIB_DEPS="-lm" + GLU_MESA_DEPS='-l$(GL_LIB)' +fi +AC_SUBST(GLU_LIB_DEPS) +AC_SUBST(GLU_MESA_DEPS) + +dnl +dnl GLw configuration +dnl +AC_ARG_ENABLE(glw, + [AS_HELP_STRING([--enable-glw], + [enable Xt/Motif widget library @<:@default=yes@:>@])], + enable_glw="$enableval", + enable_glw=yes) +if test "x$enable_glw" = xyes; then + SRC_DIRS="$SRC_DIRS glw" + if test "$x11_pkgconfig" = yes; then + PKG_CHECK_MODULES(GLW, x11 xt) + GLW_LIB_DEPS="$GLW_LIBS" + else + # should check these... + GLW_LIB_DEPS="$X_LIBS -lX11 -lXt" + fi + + GLW_MESA_DEPS='-l$(GL_LIB)' +fi +AC_SUBST(GLW_LIB_DEPS) +AC_SUBST(GLW_MESA_DEPS) + +dnl +dnl GLUT configuration +dnl +if test -f "$srcdir/include/GL/glut.h"; then + default_glut=yes +else + default_glut=no +fi +AC_ARG_ENABLE(glut, + [AS_HELP_STRING([--enable-glut], + [enable GLUT library @<:@default=yes if source available@:>@])], + enable_glut="$enableval", + enable_glut="$default_glut") + +dnl Can't build glut if GLU not available +if test "x$enable_glu$enable_glut" = xnoyes; then + AC_MSG_WARN([Disabling glut since GLU is disabled]) + enable_glut=no +fi +if test "x$enable_glut" = xyes; then + SRC_DIRS="$SRC_DIRS glut/glx" + GLUT_CFLAGS="" + if test "x$GCC" = xyes; then + GLUT_CFLAGS="-fexceptions" + fi + if test "$x11_pkgconfig" = yes; then + PKG_CHECK_MODULES(GLUT, x11 xmu xt xi) + GLUT_LIB_DEPS="$GLUT_LIBS" + else + # should check these... + GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXt -lXi" + fi + GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm" + + # If glut is available, we can build most programs + PROGRAM_DIRS="$PROGRAM_DIRS demos redbook samples glsl" + + GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)' +fi +AC_SUBST(GLUT_LIB_DEPS) +AC_SUBST(GLUT_MESA_DEPS) +AC_SUBST(GLUT_CFLAGS) + +dnl +dnl Program library dependencies +dnl Only libm is added here if necessary as the libraries should +dnl be pulled in by the linker +dnl +if test "x$APP_LIB_DEPS" = x; then + APP_LIB_DEPS="-lm" +fi +AC_SUBST(APP_LIB_DEPS) +AC_SUBST(PROGRAM_DIRS) + +dnl Arch/platform-specific settings +PIC_FLAGS="" +ASM_FLAGS="" +ASM_SOURCES="" +ASM_API="" +AC_SUBST(PIC_FLAGS) +AC_SUBST(ASM_FLAGS) +AC_SUBST(ASM_SOURCES) +AC_SUBST(ASM_API) +case "$host_os" in +linux*) + PIC_FLAGS="-fPIC" + case "$host_cpu" in + i*86) + ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM" + ASM_SOURCES='$(X86_SOURCES)' + ASM_API='$(X86_API)' + ;; + x86_64) + ASM_FLAGS="-DUSE_X86_64_ASM" + ASM_SOURCES='$(X86-64_SOURCES)' + ASM_API='$(X86-64_API)' + ;; + powerpc) + ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM" + ASM_SOURCES='$(PPC_SOURCES)' + ;; + esac + ;; +freebsd*) + PIC_FLAGS="-fPIC" + case "$host_os" in + i*86) + PIC_FLAGS="" + ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM" + ASM_SOURCES='$(X86_SOURCES)' + ASM_API='$(X86_API)' + ;; + x86_64) + ASM_FLAGS="-DUSE_X86_64_ASM" + ASM_SOURCES='$(X86-64_SOURCES)' + ASM_API='$(X86-64_API)' + ;; + esac + ;; +esac + +dnl Restore LDFLAGS and CPPFLAGS +LDFLAGS="$_SAVE_LDFLAGS" +CPPFLAGS="$_SAVE_CPPFLAGS" + +dnl Substitute the config +AC_OUTPUT([configs/autoconf]) + +echo "" +echo " Run 'make autoconf' to build Mesa" +echo "" |