Compiling and Installing
+Compiling and Installing
- Prerequisites for building @@ -16,66 +23,96 @@
- For DRI and hardware acceleration
- Building with autoconf (Linux/Unix/X11) -
- Building with SCons (Windows) -
- Building with legacy Makefiles (deprecated) -
- Building for other systems +
- Building with SCons (Windows/Linux) +
- Building with AOSP (Android)
- Library Information -
- Building OpenGL programs with pkg-config
+
- Building OpenGL programs with pkg-config
1. Prerequisites for building
+1. Prerequisites for building
1.1 General
+ ++Build system. +
+-
-
- lex / yacc - for building the GLSL compiler.
-On Linux systems, flex and bison are used.
-Versions 2.5.35 and 2.4.1, respectively, (or later) should work.
-
-
-On Windows with MinGW, install flex and bison with: -mingw-get install msys-flex msys-bison
+ - Autoconf is required when building on *nix platforms. +
- SCons is required for building on +Windows and optional for Linux (it's an alternative to autoconf/automake.) -
- python - Python is needed for building the Gallium components.
-Version 2.6.4 or later should work.
-
-
-To build OpenGL ES 1.1 and 2.0 you'll also need -libxml2-python. + - Android Build system when building as native Android component. Autoconf +is used when when building ARC.
1.2 For DRI and hardware acceleration
++The following compilers are known to work, if you know of others or you're +willing to maintain support for other compiler get in touch. +
+ +-
+
- GCC 4.2.0 or later (some parts of Mesa may require later versions) +
- clang - exact minimum requirement is currently unknown. +
- Microsoft Visual Studio 2013 Update 4 or later is required, for building on Windows. +
-The following are required for DRI-based hardware acceleration with Mesa:
+Third party/extra tools.
+
+Note: These should not be required, when building from a release tarball. If
+you think you've spotted a bug let developers know by filing a
+bug report.
-
-
- dri2proto version 2.6 or later -
- libDRM -version 2.4.33 or later -
- Xorg server version 1.5 or later -
- Linux 2.6.28 or later +
- Python - Python is required. +Version 2.6.4 or later should work. + +
- Python Mako module - +Python Mako module is required. Version 0.3.4 or later should work. + +
- lex / yacc - for building the Mesa IR and GLSL compiler.
++On Linux systems, flex and bison versions 2.5.35 and 2.4.1, respectively, +(or later) should work. +On Windows with MinGW, install flex and bison with: +
mingw-get install msys-flex msys-bison
+For MSVC on Windows, install +Win flex-bison. +
Note: Some versions can be buggy (eg. flex 2.6.2) so do try others if things fail.
+ + +1.2 Requirements
+ ++The requirements depends on the features selected at configure stage. +Check/install the respective -devel package as prompted by the configure error +message.
+-If you're using a fedora distro the following command should install all -the needed dependencies: +Here are some common ways to retrieve most/all of the dependencies based on +the packaging tool used by your distro. +
+- sudo yum install flex bison imake libtool xorg-x11-proto-devel libdrm-devel \ - gcc-c++ xorg-x11-server-devel libXi-devel libXmu-devel libXdamage-devel git \ - expat-devel llvm-devel + zypper source-install --build-deps-only Mesa # openSUSE/SLED/SLES + yum-builddep mesa # yum Fedora, OpenSuse(?) + dnf builddep mesa # dnf Fedora + apt-get build-dep mesa # Debian and derivatives + ... # others- - -
2. Building with autoconf (Linux/Unix/X11)
+2. Building with autoconf (Linux/Unix/X11)
The primary method to build Mesa on Unix systems is with autoconf. @@ -83,19 +120,20 @@ The primary method to build Mesa on Unix systems is with autoconf.
The general approach is the standard: +
./configure make sudo make install+
But please read the detailed autoconf instructions for more details.
- -3. Building with SCons (Windows)
+3. Building with SCons (Windows/Linux)
To build Mesa with SCons on Linux or Windows do @@ -114,148 +152,43 @@ by -debug for debug builds. To build Mesa with SCons for Windows on Linux using the MinGW crosscompiler toolchain do
- scons platform=windows toolchain=crossmingw machine=x86 mesagdi libgl-gdi + scons platform=windows toolchain=crossmingw machine=x86 libgl-gdi
This will create:
-
-
- build/windows-x86-debug/mesa/drivers/windows/gdi/opengl32.dll — Mesa + swrast, binary compatible with Windows's opengl32.dll -
- build/windows-x86-debug/gallium/targets/libgl-gdi/opengl32.dll — Mesa + Gallium + softpipe, binary compatible with Windows's opengl32.dll +
- build/windows-x86-debug/gallium/targets/libgl-gdi/opengl32.dll — Mesa + Gallium + softpipe (or llvmpipe), binary compatible with Windows's opengl32.dll
Put them all in the same directory to test them. -
- +Additional information is available in README.WIN32. - -4. Building with legacy Makefiles (deprecated)
- --The legacy Mesa build system is based on a collection of pre-defined -system configurations. -Some of these might work for older systems not supported by autoconf. -
-
-To see the list of configurations, just type make
.
-Then choose a configuration from the list and type make
-configname.
-Mesa may be built in several different ways using the predefined configurations: -
--
-
- Stand-alone/Xlib mode - Mesa will be compiled as
-a software renderer using Xlib to do all rendering.
-The libGL.so library will be a self-contained rendering library that will
-allow you to run OpenGL/GLX applications on any X server (regardless of
-whether it supports the GLX X server extension).
-You will not be able to use hardware 3D acceleration.
-
-To compile stand-alone Mesa type
-make
in the top-level directory. -You'll see a list of supported system configurations. -Choose one from the list (such as linux-x86), and type: -- make linux-x86 -
-This will produce libGL.so and several other libraries
-
-
- - DRI/accelerated - The DRI hardware drivers for
-accelerated OpenGL rendering (for ATI, Intel, Matrox, etc) will be built.
-The libGL.so library will support the GLX extension and will load/use
-the DRI hardware drivers.
-
-
-
-Build Mesa and the DRI hardware drivers by running -
-- make linux-dri -
--There are also
-linux-dri-x86
,linux-dri-x86-64
, -andlinux-ppc
configurations which are optimized for those -architectures. --Make sure you have the prerequisite versions of DRM and Xserver mentioned -above. -
- -
-Later, if you want to rebuild for a different configuration run
-make realclean
before rebuilding.
-
Installing the header and library files
+4. Building with AOSP (Android)
-The standard location for the OpenGL header files on Unix-type systems is
-in /usr/include/GL/
.
-The standard location for the libraries is /usr/lib/
.
-For more information see, the
-
-Linux/OpenGL ABI specification.
+Currently one can build Mesa for Android as part of the AOSP project, yet
+your experience might vary.
-If you'd like Mesa to co-exist with another implementation of OpenGL that's
-already installed, you'll have to choose different directories, like
-/usr/local/include/GL/
and /usr/local/lib/
.
+In order to achieve that one should update their local manifest to point to the
+upstream repo, set the appropriate BOARD_GPU_DRIVERS and build the
+libGLES_mesa library.
-To install Mesa's headers and libraries, run make install
.
-But first, check the Mesa/configs/default file and examine the values
-of the INSTALL_DIR and DRI_DRIVER_INSTALL_DIR variables.
-Change them if needed, then run make install
.
+FINISHME: Improve on the instructions add references to Rob H repos/Jenkins,
+Android-x86 and/or other resources.
-The variable
-DESTDIR may also be used to install the contents to a temporary
-staging directory.
-This can be useful for package management.
-For example: make install DESTDIR=/somepath/
-
-Note: at runtime you can use the LD_LIBRARY_PATH environment variable -(on Linux at least) to switch -between the Mesa libraries and other vendor's libraries whenever you want. -This is a handy way to compare multiple OpenGL implementations. -
- - - - -5. Building for other systems
- --Documentation for other environments (some may be very out of date): -
- --
-
- README.VMS - VMS -
- README.CYGWIN - Cygwin -
- README.WIN32 - Win32 -
6. Library Information
+5. Library Information
When compilation has finished, look in the top-level lib/
@@ -266,9 +199,6 @@ You'll see a set of library files similar to this:
lrwxrwxrwx 1 brian users 10 Mar 26 07:53 libGL.so -> libGL.so.1*
lrwxrwxrwx 1 brian users 19 Mar 26 07:53 libGL.so.1 -> libGL.so.1.5.060100*
-rwxr-xr-x 1 brian users 3375861 Mar 26 07:53 libGL.so.1.5.060100*
-lrwxrwxrwx 1 brian users 11 Mar 26 07:53 libGLU.so -> libGLU.so.1*
-lrwxrwxrwx 1 brian users 20 Mar 26 07:53 libGLU.so.1 -> libGLU.so.1.3.060100*
--rwxr-xr-x 1 brian users 549269 Mar 26 07:53 libGLU.so.1.3.060100*
lrwxrwxrwx 1 brian users 14 Mar 26 07:53 libOSMesa.so -> libOSMesa.so.6*
lrwxrwxrwx 1 brian users 23 Mar 26 07:53 libOSMesa.so.6 -> libOSMesa.so.6.1.060100*
-rwxr-xr-x 1 brian users 23871 Mar 26 07:53 libOSMesa.so.6.1.060100*
@@ -277,8 +207,6 @@ lrwxrwxrwx 1 brian users 23 Mar 26 07:53 libOSMesa.so.6 -> libOSM
libGL is the main OpenGL library (i.e. Mesa).
-libGLU is the OpenGL Utility library.
-
libOSMesa is the OSMesa (Off-Screen) interface library.
7. Building OpenGL programs with pkg-config
+6. Building OpenGL programs with pkg-config
Running make install
will install package configuration files
@@ -321,6 +247,6 @@ For example, compiling and linking a GLUT application can be done with:
-
+