diff options
-rw-r--r-- | .gitignore | 5 | ||||
-rw-r--r-- | Makefile | 3 | ||||
-rw-r--r-- | configs/.gitignore | 1 | ||||
-rw-r--r-- | configs/autoconf.in | 87 | ||||
-rw-r--r-- | configure.ac | 309 |
5 files changed, 405 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore index c128ba8609..5d351af62c 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,8 @@ depend depend.bak lib lib64 +configure +autom4te.cache +aclocal.m4 +config.log +config.status @@ -29,6 +29,8 @@ realclean: $(MAKE) clean -rm -rf lib* -rm -f $(TOP)/configs/current + -rm -f $(TOP)/configs/autoconf + -rm -rf autom4te.cache -rm -f `find . -name \*.o` -rm -f `find . -name \*.a` -rm -f `find . -name \*.so` @@ -66,6 +68,7 @@ aix-64 \ aix-64-static \ aix-gcc \ aix-static \ +autoconf \ bluegene-osmesa \ bluegene-xlc-osmesa \ beos \ diff --git a/configs/.gitignore b/configs/.gitignore index 5b9023a315..97ac5b7326 100644 --- a/configs/.gitignore +++ b/configs/.gitignore @@ -1 +1,2 @@ current +autoconf diff --git a/configs/autoconf.in b/configs/autoconf.in new file mode 100644 index 0000000000..99f7b89a91 --- /dev/null +++ b/configs/autoconf.in @@ -0,0 +1,87 @@ +# Autoconf configuration + +# Pull in the defaults +include $(TOP)/configs/default + +# This is generated by configure +CONFIG_NAME = autoconf + +# Version info +MESA_MAJOR = @MESA_MAJOR@ +MESA_MINOR = @MESA_MINOR@ +MESA_TINY = @MESA_TINY@ + +# Compiler and flags +CC = @CC@ +CXX = @CXX@ +OPT_FLAGS = @OPT_FLAGS@ +ARCH_FLAGS = @ARCH_FLAGS@ +ASM_FLAGS = @ASM_FLAGS@ +PIC_FLAGS = @PIC_FLAGS@ +DEFINES = @DEFINES@ +CFLAGS = @CPPFLAGS@ @CFLAGS@ \ + $(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(ASM_FLAGS) $(DEFINES) +CXXFLAGS = @CPPFLAGS@ @CXXFLAGS@ \ + $(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(DEFINES) +LDFLAGS = @LDFLAGS@ +EXTRA_LIB_PATH = @EXTRA_LIB_PATH@ + +# Assembler +ASM_SOURCES = @ASM_SOURCES@ +ASM_API = @ASM_API@ + +# Misc tools and flags +MAKE = @MAKE@ +MKLIB_OPTIONS = +MKDEP = @MKDEP@ +MKDEP_OPTIONS = -fdepend +INSTALL = $(TOP)/bin/minstall + +# Python and flags (generally only needed by the developers) +PYTHON2 = python +PYTHON_FLAGS = -t -O -O + +# Library names (base name) +GL_LIB = GL +GLU_LIB = GLU +GLUT_LIB = glut +GLW_LIB = GLw +OSMESA_LIB = OSMesa + +# Library names (actual file names) +GL_LIB_NAME = @GL_LIB_NAME@ +GLU_LIB_NAME = @GLU_LIB_NAME@ +GLUT_LIB_NAME = @GLUT_LIB_NAME@ +GLW_LIB_NAME = @GLW_LIB_NAME@ +OSMESA_LIB_NAME = @OSMESA_LIB_NAME@ + +# Directories to build +LIB_DIR = @LIB_DIR@ +SRC_DIRS = @SRC_DIRS@ +GLU_DIRS = @GLU_DIRS@ +DRIVER_DIRS = @DRIVER_DIRS@ +# Which subdirs under $(TOP)/progs/ to enter: +PROGRAM_DIRS = @PROGRAM_DIRS@ + +# Dependencies +X11_INCLUDES = @X11_INCLUDES@ + +# Library/program dependencies +GL_LIB_DEPS = $(EXTRA_LIB_PATH) @GL_LIB_DEPS@ +OSMESA_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @OSMESA_MESA_DEPS@ \ + $(EXTRA_LIB_PATH) @OSMESA_LIB_DEPS@ +GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @GLU_MESA_DEPS@ \ + $(EXTRA_LIB_PATH) @GLU_LIB_DEPS@ +GLUT_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @GLUT_MESA_DEPS@ \ + $(EXTRA_LIB_PATH) @GLUT_LIB_DEPS@ +GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @GLW_MESA_DEPS@ \ + $(EXTRA_LIB_PATH) @GLW_LIB_DEPS@ +APP_LIB_DEPS = $(EXTRA_LIB_PATH) @APP_LIB_DEPS@ + +# Autoconf directories +prefix = @prefix@ +exec_prefix = @exec_prefix@ +libdir = @libdir@ + +# Installation directories (for make install) +INSTALL_DIR = $(prefix) 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 "" |