Compiling and Installing
+ +-
+
- Prerequisites for building + +
- Building with autoconf (Linux/Unix/X11) +
- Building with SCons (Windows/Linux) +
- Building with AOSP (Android) +
- Library Information +
- Building OpenGL programs with pkg-config +
1. Prerequisites for building
+ +1.1 General
-+Build system. +
- +-
+
- 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.) + +
- Android Build system when building as native Android component. Autoconf +is used when when building ARC. + +
Compilation and Installation for Unix/X11
-If you're not using a variant of Unix with X11, see the -Supported Systems and Drivers section -for instructions. +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. +
-There are two methods for building Mesa on Unix/X11 systems:
+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.
-
-
- NEW-STYLE
- -
- -Basically, type "./configure" followed by "make" -This should work on most Unix-like operating systems. -Unfortunately, autoconf/automake seems to seldom work reliably on non-Linux -systems. For that reason, the old-style make system is still supported -(and is the preferred method of the Mesa developers). - -
- OLD-STYLE
- -
-
-Simply type
make
and you'll see a list of supported -system configurations. Pick one and typemake
config. -More details below. -
-
-
-
+
- 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. +
-NOTE: The GLUT library and demonstrations programs are in the -MesaDemos-x.y.z.tar.gz file. If you don't have GLUT or you want to -run some demos, download the MesaDemos package too. +Here are some common ways to retrieve most/all of the dependencies based on +the packaging tool used by your distro.
++ 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)
+-In either case, building Mesa entails the following: +The primary method to build Mesa on Unix systems is with autoconf. +
+-
-
-
- Compiling libGL, the OpenGL-replacement library. -
- Compiling libGLU, the OpenGL Utility library. -
- Compiling libglut, the GLUT library (if you downloaded the Mesa demos -package) -
- Compiling the demonstration programs in the directories:
-
demos, xdemos, samples
andbook
-(if you downloaded the Mesa demos package.) -
+ ./configure + make + sudo make install ++
+But please read the detailed autoconf instructions +for more details. +
+ + +3. Building with SCons (Windows/Linux)
- -NEW-STYLE compilation and installation
++To build Mesa with SCons on Linux or Windows do +
++ scons ++
+The build output will be placed in +build/platform-machine-debug/..., where platform is for +example linux or windows, machine is x86 or x86_64, optionally followed +by -debug for debug builds. +
++To build Mesa with SCons for Windows on Linux using the MinGW crosscompiler toolchain do +
-0) If you've downloaded Mesa via CVS there will not be a "configure" - script. You'll have to run the "bootstrap" script first. This script - may not work on any OS other than Linux. You'll need these programs - to run the bootstrap script: - - autoconf 2.50 - automake 1.4-p2 - libtool 1.4 - - -1) Run the configure script - - ./configure [options] - -For Linux, it is recommended that you use: - ./configure --prefix=/usr -So that the headers and libs are located according to the Linux/OpenGL -standard spec at http://oss.sgi.com/projects/ogl-sample/ABI/ - -Possible options are: - ---prefix=DIR - The toplevel directory of the hierachy in which Mesa - will be installed (DIR/include,DIR/lib etc.). - The default is "/usr/local". - ---sysconfdir=DIR - The directory where Mesa configuration files - will be stored. The default is "$prefix/etc". - You may want to overwrite the default with --sysconfdir=/etc. - ---enable-static - Enable building of static libraries. - Static libraries are NOT built by default. - ---disable-shared - Disable building of shared libraries. - Shared libraries are built by default. - ---with-pic ---without-pic - In normal operation, libtool will build shared libraries from - PIC objects and static archives from non-PIC objects, except where one - or the other is not provided by the target host. By specifying - --with-pic you are asking libtool to build static archives from - PIC objects, and similarly by specifying --without-pic you are asking - libtool to build shared libraries from non-PIC objects. - libtool will only honour this flag where it will produce a - working library, otherwise it reverts to the default. - ---enable-debug - Enable debugging messages (disabled by default). - ---enable-profile - Enable profiling (disabled by default). - ---disable-optimize - Disable extra optimizations (enabled by default, - i.e., optimize for maximum performance). - ---enable-warn - Enable extended compiler warnings (disabled by default). - ---enable-x86[=ARG] ---disable-x86 - Enable/disable x86 assembler support to speed up Mesa - (autodetected by default). You may set `on' or `off'. - ---enable-3dnow[=ARG] ---disable-3dnow - Enable/disable 3Dnow support to speed up Mesa - (autodetected by default). You may set `on' or `off'. - ---enable-mmx[=ARG] ---disable-mmx - Enable/disable MMX support to speed up Mesa - (autodetected by default). You may set `on' or `off'. - ---enable-sse[=ARG] ---disable-sse - Enable/disable SSE support to speed up Mesa - (autodetected by default). You may set `on' or `off'. - If you have a PentiumIII and want to use SSE make sure you have the - PIII Linux kernel-patch installed or things will fail! - You can get the patch from http://www.redhat.com/~dledford/linux_kernel.html - ---with-glide[=DIR] ---without-glide - Enable/disable support for Glide (disabled by default). - DIR is the installation directory of Glide. - If Glide cannot be found, the driver won't be built. - ---with-glut[=DIR] ---without-glut - Don't/use already-installed GLUT (autodetected by default). - DIR is the installation directory of Glut. - If GLUT cannot be found, the version shipped with Mesa will be built. - ---with-ggi[=DIR] ---without-ggi - Enable/disable support for GGI (autodetected by default). - DIR is the installation directory of GGI. - If GGI cannot be found, the driver won't be built. - ---disable-ggi-fbdev - Don't build the GGI fbdev target (autodetected by default). - ---disable-ggi-genkgi - Don't build the GGI generic KGI driver (autodetected by default). - ---disable-ggi-savage4 - Don't build the GGI Savage4 KGI driver (autodetected by default). - ---disable-osmesa - Disable OSmesa (offscreen rendering) support (enabled by default). - ---with-svga[=DIR] ---without-svga - Enable/disable support for SVGALib (autodetected by default). - DIR is the installation directory of SVGALib. - If SVGALib cannot be found, the driver won't be built. - ---x-includes=DIR - Search for the X include files in DIR. - ---x-libraries=DIR - Search for the X library files in DIR. - -User specific compiler options can be set using the shell variable -CFLAGS. For instance, - CFLAGS="-g -O2" ./configure -(on some systems: env CFLAGS="-g -O2" ./configure) -sets the compiler flags to "-g -O2". - -For more options run "./configure --help" and read INSTALL.GNU. - -2) To build the Mesa libraries run: - - make - -When finished, libGL.so will be in src/.libs/, libGLU.so will be in -si-glu/.libs/, etc. - -Optionally, you can strip the libraries using - - make strip - -Now make sure that you have the permissions to install Mesa in the -specified directories, for example, by becoming super user ("su") -Then run: - - make install - -Mesa is now installed. -Please don't move the installed files but rerun all installation -steps if you want to use other directories. - - -3) To test whether Mesa works properly you might want to run the Mesa demos: - - make check - -Builds all demos. - - make exec - -Builds and executes all demos. + scons platform=windows toolchain=crossmingw machine=x86 libgl-gdi+
+This will create: +
+-
+
- 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. + +
+ - -OLD-STYLE compilation and installation
+4. Building with AOSP (Android)
-This procedure usually works when ./configure ; make
fails.
+Currently one can build Mesa for Android as part of the AOSP project, yet
+your experience might vary.
-Note: If you tried ./configure ; make
but it failed,
-first copy the top-level Makefile.X11
file over
-Makefile
.
+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.
-First, just type make
alone.
-You'll see a list of supported system configurations.
-Choose one and type make
config.
-The Mesa libraries and demo programs will be compiled.
+FINISHME: Improve on the instructions add references to Rob H repos/Jenkins,
+Android-x86 and/or other resources.
Header and library files
+ +5. Library Information
-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.
+When compilation has finished, look in the top-level lib/
+(or lib64/
) directory.
+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 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* +
-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/
.
+libGL is the main OpenGL library (i.e. Mesa).
+
+libOSMesa is the OSMesa (Off-Screen) interface library.
-To install the Mesa headers, do this: +If you built the DRI hardware drivers, you'll also see the DRI drivers: +
- cp -r include/GL /usr/include +-rwxr-xr-x 1 brian users 16895413 Jul 21 12:11 i915_dri.so +-rwxr-xr-x 1 brian users 16895413 Jul 21 12:11 i965_dri.so +-rwxr-xr-x 1 brian users 11849858 Jul 21 12:12 r200_dri.so +-rwxr-xr-x 1 brian users 11757388 Jul 21 12:12 radeon_dri.so
-To install the Mesa libraries, do this: +If you built with Gallium support, look in lib/gallium/ for Gallium-based +versions of libGL and device drivers.
-- cp -pd lib/* /usr/lib - (The -pd options preserve symbolic links) --
LD_LIBRARY_PATH
+6. Building OpenGL programs with pkg-config
-On Linux and similar operating systems the LD_LIBRARY_PATH
-environment variable can be used to indicate a list of directories to
-search for shared libraries.
-If you don't install Mesa in /usr/lib/
you may have to
-set the LD_LIBRARY_PATH
variable in order to use the Mesa
-libraries.
+Running make install
will install package configuration files
+for the pkg-config utility.
+When compiling your OpenGL application you can use pkg-config to determine +the proper compiler and linker flags. +
+ ++For example, compiling and linking a GLUT application can be done with: +
++ gcc `pkg-config --cflags --libs glut` mydemo.c -o mydemo ++ +
+ +