summaryrefslogtreecommitdiff
path: root/doc/building.txt
blob: 1ab1a2bf3ff7e6083f366d81541f2fd4ca0539f8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
Quickstart
==========

For basic build instructions that should work for most users, see the README.


Configuration
=============

If any of Waffle's dependencies are installed in custom locations, you must
set the PKG_CONFIG_PATH environment variable.

To configure Waffle, invoke CMake as `cmake [options] $WAFFLE_SOURCE_DIR`.
Options are given in form `-Dname=value`. CMake stores its configuration in a
top-level file named CMakeCache.txt. To edit cached variables, either edit the
file by hand or call `make edit_cache`.

CMake builtin options:

    CMake has many builtin options. Here is a small subset of important
    options that affect Waffle.

    - CMAKE_INSTALL_PREFIX
        [default=/usr/local]
        Equivalent to autoconf's --prefix.

    - CMAKE_INSTALL_INCLUDEDIR
        [default=include]
        Equivalent to autoconf's --includedir.
        Relative paths are interpreted relative to CMAKE_INSTALL_PREFIX.

    - CMAKE_INSTALL_LIBDIR
        [default=lib or lib64, system-dependent]
        Equivalent to autoconf's --libdir.
        Relative paths are interpreted relative to CMAKE_INSTALL_PREFIX.

    - CMAKE_INSTALL_DOCDIR
        [default=${CMAKE_INSTALL_DATAROOTDIR}/doc/waffle-${MAJOR_VERSION}]
        Equivalent to autoconf's --docdir.
        Relative paths are interpreted relative to CMAKE_INSTALL_PREFIX.

    - CMAKE_BUILD_TYPE
        [default=?; choices=debug,release]
        This affects compilation flags.

    - CMAKE_C_FLAGS
        [default="--std=c99 -Wall -Werror"]

    - CMAKE_C_FLAGS_DEBUG
        [default="-g3 -O0 -DDEBUG"]
        Flags to append to CMAKE_C_FLAGS when CMAKE_BUILD_TYPE=debug.

    - CMAKE_C_FLAGS_RELEASE
        [default="-g1 -O2 -DNEDEBUG"]
        Flags to append to CMAKE_C_FLAGS when CMAKE_BUILD_TYPE=release.

Platform options;

    - waffle_has_gbm
        [default=0] [choices=0,1]
        Build Waffle with support for GBM.

    - waffle_has_glx
        [default=0] [choices=0,1]
        Build Waffle with support for GLX.

    - waffle_has_wayland
        [default=0] [choices=0,1]
        Build Waffle with support for Wayland.

    - waffle_has_x11_egl
        [default=0] [choices=0,1]
        Build Waffle with support for X11/EGL.

Miscellaneous options:

    - waffle_build_manpages
        [default=0; choices=0,1]
        Build and install the manpages.

    - waffle_build_htmldocs
        [default=0; choices=0,1]
        Build and install html documentation.

    - waffle_build_tests
        [default=1; choices=0,1]
        Build the unit tests and functional tests ran by `make check` and
        `make check-func`.

    - waffle_build_examples
        [default=1; choices=0,1]
        Build the stuff in the /examples directory.


Building and Installing
=======================

To build and install Waffle:

    make
    make install

I strongly recommend you run `make check` before installing.

What follows is a list of significant build targets.

Generic targets:

    - all
        Build everything.

    - check
        Run unit tests.

    - check-func
        Run functional tests as well as unit tests.

    - install

Libraries:

    - waffle
        Waffle's main library.

    - waffle_test
        Waffle's test framework.

Test programs:

    - waffle-unittest
    - gl_basic_test

Example programs:

    - gl_basic
    - simple-x11-egl

CMake targets:

    - help
        List all make targets.

    - edit_cache
        Edit CMakeCache.txt.

    - rebuild_cache