Enable custom subprojects option
[platform/upstream/gstreamer.git] / README.md
1 # gst-build
2
3 GStreamer [meson](http://mesonbuild.com/) based repositories aggregrator
4
5 You can build GStreamer and all its modules at once using
6 meson and its [subproject](https://github.com/mesonbuild/meson/wiki/Subprojects) feature.
7
8 ## Getting started
9
10 ### Install meson and ninja
11
12 You should get meson through your package manager or using:
13
14   $ pip3 install --user meson
15
16 You should get `ninja` using your package manager or downloading it from
17 [here](https://github.com/ninja-build/ninja/releases).
18
19 ### Build GStreamer and its modules
20
21 You can get all GStreamer built running:
22
23 ```
24 mkdir build/ && meson build && ninja -C build/
25 ```
26
27 NOTE: on fedora (and maybe other distributions) replace `ninja` with `ninja-build`
28
29 # Development environment
30
31 ## Uninstalled environment
32
33 gst-build also contains a special `uninstalled` target that lets you enter an
34 uninstalled development environment where you will be able to work on GStreamer
35 easily. You can get into that environment running:
36
37 ```
38 ninja -C build/ uninstalled
39 ```
40
41 If your operating system handles symlinks, built modules source code will be
42 available at the root of `gst-build/` for example GStreamer core will be in
43 `gstreamer/`. Otherwise they will be present in `subprojects/`. You can simply
44 hack in there and to rebuild you just need to rerun `ninja -C build/`.
45
46 ## Update git subprojects
47
48 We added a special `update` target to update subprojects (it uses `git pull
49 --rebase` meaning you should always make sure the branches you work on are
50 following the right upstream branch, you can set it with `git branch
51 --set-upstream-to origin/master` if you are working on `gst-build` master
52 branch).
53
54 Update all GStreamer modules and rebuild:
55
56 ```
57 ninja -C build/ update
58 ```
59
60 Update all GStreamer modules without rebuilding:
61
62 ```
63 ninja -C build/ git-update
64 ```
65
66 ## Custom subprojects
67
68 We also added a meson option, 'custom_subprojects', that allows the user
69 to provide a comma-separated list of subprojects that should be built
70 alongside the default ones.
71
72 To use it:
73
74 ```
75 cd subprojects
76 git clone my_subproject
77 cd ../build
78 rm -rf * && meson .. -Dcustom_subprojects=my_subproject
79 ninja
80 ```
81
82
83 ## Run tests
84
85 You can easily run the test of all the components:
86
87 ```
88 mesontest -C build
89 ```
90
91 To list all available tests:
92
93 ```
94 mesontest -C build --list
95 ```
96
97 To run all the tests of a specific component:
98
99 ```
100 mesontest -C build --suite gst-plugins-base
101 ```
102
103 Or to run a specific test:
104
105 ```
106 mesontest -C build/ --suite gstreamer gst/gstbuffer
107 ```
108
109 ## Add information about GStreamer development environment in your prompt line
110
111 ### Bash prompt
112
113 We automatically handle `bash` and set `$PS1` accordingly
114
115 ### Zsh prompt
116
117 In your `.zshrc`, you should add something like:
118
119 ```
120 export PROMPT="$GST_ENV-$PROMPT"
121 ```
122
123 ### Using powerline
124
125 In your powerline theme configuration file (by default in
126 `{POWERLINE INSTALLATION DIR}/config_files/themes/shell/default.json`)
127 you should add a new environment segment as follow:
128
129 ```
130 {
131   "function": "powerline.segments.common.env.environment",
132   "args": { "variable": "GST_ENV" },
133   "priority": 50
134 },
135 ```