Compiling and Installing
+Compiling and Installing
- Prerequisites for building @@ -15,86 +22,132 @@
- General prerequisites
- For DRI and hardware acceleration -
- Building with autoconf (Linux/Unix/X11) +
- Building with meson
- Building with SCons (Windows/Linux) -
- Building for other systems +
- 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
-1.1 General
-
-
- 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
+ - meson is required when building on *nix platforms and is supported on windows. +
- SCons is an alternative for building on +Windows and Linux. -
- 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. Meson +is used when when building ARC.
1.2 For DRI and hardware acceleration
- +Compiler
-The following are required for DRI-based hardware acceleration with Mesa: +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.
-
-
- 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 +
- GCC 4.2.0 or later (some parts of Mesa may require later versions) +
- clang - exact minimum requirement is currently unknown. +
- Microsoft Visual Studio 2015 or later is required, for building on Windows.
Third party/extra tools.
+ +-
+
- Python - Python is required. +When building with scons 2.7 is required. +When building with meson 3.5 or newer is required. + +
- Python Mako module - +Python Mako module is required. Version 0.8.0 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
+-If you're using a fedora distro the following command should install all -the needed dependencies: +The requirements depends on the features selected at configure stage. +Check/install the respective -devel package as prompted by the configure error +message. +
+ ++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 meson
+2. Building with autoconf (Linux/Unix/X11)
++Meson is the latest build system in mesa, it is currently able to build for +*nix systems like Linux and BSD, macOS, Haiku, and Windows. +
-The primary method to build Mesa on Unix systems is with autoconf. +The general approach is:
++ meson builddir/ + ninja -C builddir/ + sudo ninja -C builddir/ install ++ +
On windows you can also use the visual studio backend
++ meson builddir --backend=vs + cd builddir + msbuild mesa.sln /m +
-The general approach is the standard: +Please read the detailed meson instructions +for more information +
+ +On windows you can also use the visual studio backend
- ./configure - make - sudo make install + meson builddir --backend=vs + cd builddir + msbuild mesa.sln /m-But please read the detailed autoconf instructions -for more details. + +
+Please read the detailed meson instructions +for more information
- -3. Building with SCons (Windows/Linux)
+3. Building with SCons (Windows/Linux)
To build Mesa with SCons on Linux or Windows do @@ -113,38 +166,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 for other systems
+4. Building with AOSP (Android)
-Documentation for other environments (some may be very out of date): +Currently one can build Mesa for Android as part of the AOSP project, yet +your experience might vary.
--
-
- README.VMS - VMS -
- README.CYGWIN - Cygwin -
- README.WIN32 - Win32 -
+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. +
++FINISHME: Improve on the instructions add references to Rob H repos/Jenkins, +Android-x86 and/or other resources. +
- -5. Library Information
+5. Library Information
When compilation has finished, look in the top-level lib/
@@ -152,23 +210,17 @@ When compilation has finished, look in the top-level lib/
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* +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* +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*
-libGL is the main OpenGL library (i.e. Mesa).
-
-libGLU is the OpenGL Utility library.
-
-libOSMesa is the OSMesa (Off-Screen) interface library.
+libGL is the main OpenGL library (i.e. Mesa), while libOSMesa
+is the OSMesa (Off-Screen) interface library.
@@ -178,7 +230,6 @@ If you built the DRI hardware drivers, you'll also see the DRI drivers: -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 16050488 Jul 21 12:11 r300_dri.so -rwxr-xr-x 1 brian users 11757388 Jul 21 12:12 radeon_dri.so @@ -188,11 +239,10 @@ versions of libGL and device drivers.
- -6. Building OpenGL programs with pkg-config
+6. Building OpenGL programs with pkg-config
-Running make install
will install package configuration files
+Running ninja install
will install package configuration files
for the pkg-config utility.
- - +