blob: bcce54199b18cf3a10fa29975210f49e2466af2d [file] [log] [blame]
Peter Åstrand25faaed2009-02-16 08:04:53 +00001#!/bin/bash
2#
3# Build Xvnc with Xorg from git master. Script adapted from http://www.x.org/wiki/Development/git
4#
5
6set -e
7
8PREFIX="/tmp/xorg-git-${USER}"
9PKG_CONFIG_PATH=${PREFIX}/lib/pkgconfig
10MAKE="make"
11REPOS="\
12git://git.freedesktop.org/git/xorg/util/macros \
13git://git.freedesktop.org/git/xorg/proto/x11proto \
14git://git.freedesktop.org/git/xorg/proto/damageproto \
15git://git.freedesktop.org/git/xorg/proto/xextproto \
16git://git.freedesktop.org/git/xorg/proto/fontsproto \
17git://git.freedesktop.org/git/xorg/proto/videoproto \
18git://git.freedesktop.org/git/xorg/proto/renderproto \
19git://git.freedesktop.org/git/xorg/proto/inputproto \
20git://git.freedesktop.org/git/xorg/proto/xf86vidmodeproto \
21git://git.freedesktop.org/git/xorg/proto/xf86dgaproto \
22git://git.freedesktop.org/git/xorg/proto/xf86driproto \
23git://git.freedesktop.org/git/xorg/proto/xcmiscproto \
24git://git.freedesktop.org/git/xorg/proto/scrnsaverproto \
25git://git.freedesktop.org/git/xorg/proto/bigreqsproto \
26git://git.freedesktop.org/git/xorg/proto/resourceproto \
27git://git.freedesktop.org/git/xorg/proto/compositeproto \
28git://git.freedesktop.org/git/xorg/proto/fixesproto \
29git://git.freedesktop.org/git/xorg/proto/evieproto \
30git://git.freedesktop.org/git/xorg/proto/kbproto \
31git://git.freedesktop.org/git/xorg/lib/libxtrans \
32git://git.freedesktop.org/git/xorg/lib/libX11 \
33git://git.freedesktop.org/git/xorg/lib/libXext \
34git://git.freedesktop.org/git/xorg/lib/libxkbfile \
35git://git.freedesktop.org/git/xorg/lib/libfontenc \
36git://git.freedesktop.org/git/xorg/lib/libXfont \
37git://git.freedesktop.org/git/xorg/lib/libXfixes \
38git://git.freedesktop.org/git/xorg/lib/libXdamage \
39git://git.freedesktop.org/git/xorg/lib/libXv \
40git://git.freedesktop.org/git/xorg/lib/libXvMC \
41git://git.freedesktop.org/git/xorg/lib/libXxf86vm \
42git://git.freedesktop.org/git/xorg/lib/libXinerama \
43git://git.freedesktop.org/git/xorg/proto/dri2proto \
44git://git.freedesktop.org/git/xorg/proto/glproto \
45git://git.freedesktop.org/git/xorg/lib/libpciaccess \
46git://git.freedesktop.org/git/pixman \
47git://git.freedesktop.org/git/xcb/proto \
48git://git.freedesktop.org/git/xcb/pthread-stubs \
49git://git.freedesktop.org/git/xcb/libxcb \
50git://git.freedesktop.org/git/xorg/proto/randrproto \
51git://git.freedesktop.org/git/mesa/drm \
52git://git.freedesktop.org/git/mesa/mesa \
53git://git.freedesktop.org/git/xorg/xserver \
54git://git.freedesktop.org/git/xorg/driver/xf86-input-mouse \
55git://git.freedesktop.org/git/xorg/driver/xf86-input-keyboard \
56git://git.freedesktop.org/git/xorg/driver/xf86-video-intel"
57
58modules="\
59fontsproto \
60x11proto \
61xextproto \
62videoproto \
63renderproto \
64inputproto \
65damageproto \
66xf86vidmodeproto \
67xf86dgaproto \
68xf86driproto \
69xcmiscproto \
70scrnsaverproto \
71bigreqsproto \
72resourceproto \
73compositeproto \
74resourceproto \
75evieproto \
76kbproto \
77fixesproto \
78libxtrans \
79proto \
80pthread-stubs \
81libxcb \
82libX11 \
83libXext \
84libxkbfile \
85libfontenc \
86libXfont \
87libXv \
88libXvMC \
89libXxf86vm \
90libXfixes \
91libXdamage \
92dri2proto \
93glproto \
94libpciaccess \
95pixman \
96randrproto"
97
98init()
99{
100 mv xserver xserver.vnc
101 for repo in $REPOS; do
102 echo "Cloning $repo";
103 git clone $repo || true
104 done
105 mv xserver xserver.xorg
106 mv xserver.vnc xserver
107
108 tar c -C xserver.xorg . | tar x -C xserver
109 cd xserver
110 patch -p1 < ../xserver16.patch
111 autoreconf -fiv
112 cd ..
113
114 cd macros
115 echo "Building macros"
116 ./autogen.sh --prefix="$PREFIX";
117 ($MAKE);
118 make install
119 cd ..
120}
121
122update_modules()
123{
124 for module in $modules; do
125 cd $module
126 git pull
127 cd ..
128 done
129}
130
131build ()
132{
133 export ACLOCAL="aclocal -I $PREFIX/share/aclocal"
134 export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig"
135
136 # Build VNC
137 make distclean || true
138 ./configure --prefix=${PREFIX}
139 make
140
141 # Build Xorg
142 for i in $modules; do
143 cd $i
144 echo ======================
145 echo configuring $i
146 echo ======================
147 ./autogen.sh --prefix="$PREFIX";
148 echo ======================
149 echo building $i
150 echo ======================
151 if [ $? -ne 0 ]; then
152 echo "Failed to configure $i."
153 exit
154 fi
155 ($MAKE);
156 make install
157 cd ..
158 done
159
160 # build drm
161 cd drm
162 ./autogen.sh --prefix="$PREFIX"
163 ($MAKE)
164 make -C linux-core
165 # assuming you're on Linux, otherwise use bsd-core
166 make install
167 cd ..
168
169 # build mesa
170 cd mesa
171 ./autogen.sh --prefix=$PREFIX --with-driver=dri --disable-glut
172 if [ $? -ne 0 ]; then
173 echo "Failed to configure Mesa."
174 exit
175 fi
176 ($MAKE)
177 make install
178 cd ..
179
180 # build xserver
181 cd xserver
182 ./autogen.sh --prefix=$PREFIX --disable-xinerama --disable-xvfb --disable-xnest --disable-xorg
183 if [ $? -ne 0 ]; then
184 echo "Failed to configure X server."
185 exit
186 fi
187 ($MAKE)
188 make install
189 cd ..
190}
191
192case "$1" in
193 init)
194 init
195 ;;
196 build)
197 build
198 ;;
199 update)
200 update_modules
201 ;;
202 *)
203 echo "Usage: $0 init | build | update"
204 exit 3
205esac