Add empty Xprint stub directories to exclude list
[xorg-util-modular.git] / build.sh
blob3c33b441094c6a6696c78c5c01d719b0bd8da29b
1 #!/bin/sh
3 # global environment variables you may set:
4 # CACHE: absolute path to a global autoconf cache
5 # QUIET: hush the configure script noise
6 # CONFFLAGS: flags to pass to all configure scripts
8 failed() {
9 if test x"$NOQUIT" = x1; then
10 echo "***** $1 failed on $2/$3"
11 else
12 exit 1
16 build() {
17 echo "Building $1 module component $2..."
18 cd $1/$2
20 if test "$1" = "xserver" && test "$2" = "xorg" && test -n "$MESAPATH"; then
21 MESA=-"-with-mesa-source=${MESAPATH}"
22 else
23 MESA=
26 # Use "sh autogen.sh" since some scripts are not executable in CVS
27 sh autogen.sh --prefix=${PREFIX} ${MESA} ${QUIET:+--quiet} \
28 ${CACHE:+--cache-file=}${CACHE} ${CONFFLAGS} || failed autogen $1 $2
29 make || failed make $1 $2
30 $SUDO env LD_LIBRARY_PATH=$LD_LIBRARY_PATH make install || \
31 failed install $1 $2
32 # make clean || failed clean $1 $2
33 # make dist || failed dist $1 $2
34 if test x"$DISTCHECK" = x1; then
35 make distcheck || failed distcheck $1 $2
38 cd ../..
41 # protocol headers have no build order dependencies
42 build_proto() {
43 build proto BigReqs
44 build proto Composite
45 build proto Damage
46 build proto DMX
47 build proto EvIE
48 build proto Fixes
49 build proto Fontcache
50 build proto Fonts
51 build proto GL
52 build proto Input
53 build proto KB
54 build proto PM
55 build proto Print
56 build proto Randr
57 build proto Record
58 build proto Render
59 build proto Resource
60 build proto ScrnSaver
61 build proto Trap
62 build proto Video
63 build proto X11
64 build proto XCMisc
65 build proto XExt
66 build proto XF86BigFont
67 build proto XF86DGA
68 build proto XF86DRI
69 build proto XF86Misc
70 build proto XF86Rush
71 build proto XF86VidMode
72 build proto Xinerama
75 # bitmaps is needed for building apps, so has to be done separately first
76 # cursors depends on apps/xcursorgen
77 # xkbdata depends on apps/xkbcomp
78 build_data() {
79 # build data bitmaps
80 build data cursors
81 build data xkbdata
84 # All protocol modules must be installed before the libs (okay, that's an
85 # overstatement, but all protocol modules should be installed anyway)
87 # the libraries have a dependency order:
88 # xtrans, Xau, Xdmcp before anything else
89 # fontenc before Xfont
90 # ICE before SM
91 # X11 before Xext
92 # (X11 and SM) before Xt
93 # Xt before Xmu and Xpm
94 # Xext before any other extension library
95 # Xfixes before Xcomposite
96 # Xp before XprintUtil before XprintAppUtil
97 build_lib() {
98 build lib xtrans
99 build lib Xau
100 build lib Xdmcp
101 build lib X11
102 build lib Xext
103 build lib dmx
104 build lib fontenc
105 build lib FS
106 build lib ICE
107 build lib lbxutil
108 build lib oldX
109 build lib SM
110 build lib Xt
111 build lib Xmu
112 build lib Xpm
113 build lib Xp
114 build lib Xaw
115 build lib Xfixes
116 build lib Xcomposite
117 build lib Xrender
118 build lib Xdamage
119 build lib Xcursor
120 build lib Xevie
121 build lib Xfont
122 build lib Xfontcache
123 build lib Xft
124 build lib Xi
125 build lib Xinerama
126 build lib xkbfile
127 build lib xkbui
128 build lib XprintUtil
129 build lib XprintAppUtil
130 build lib Xrandr
131 build lib XRes
132 build lib XScrnSaver
133 build lib XTrap
134 build lib Xtst
135 build lib Xv
136 build lib XvMC
137 build lib Xxf86dga
138 build lib Xxf86misc
139 build lib Xxf86vm
142 # Most apps depend at least on libX11.
144 # bdftopcf depends on libXfont
145 # mkfontscale depends on libfontenc and libfreetype
146 # mkfontdir depends on mkfontscale
148 # TODO: detailed breakdown of which apps require which libs
149 build_app() {
150 build app appres
151 build app bdftopcf
152 build app beforelight
153 build app bitmap
154 build app editres
155 build app fonttosfnt
156 build app fslsfonts
157 build app fstobdf
158 build app iceauth
159 build app ico
160 build app lbxproxy
161 build app listres
162 build app luit
163 build app mkfontdir
164 build app mkfontscale
165 build app oclock
166 build app pclcomp
167 build app proxymngr
168 build app rgb
169 build app rstart
170 build app scripts
171 build app setxkbmap
172 build app showfont
173 build app smproxy
174 build app twm
175 build app viewres
176 build app x11perf
177 build app xauth
178 build app xbiff
179 build app xcalc
180 build app xclipboard
181 build app xclock
182 build app xcmsdb
183 build app xconsole
184 build app xcursorgen
185 build app xdbedizzy
186 build app xditview
187 build app xdm
188 build app xdpyinfo
189 build app xedit
190 build app xev
191 build app xeyes
192 build app xf86dga
193 build app xfd
194 build app xfontsel
195 build app xfs
196 build app xfsinfo
197 build app xfwp
198 build app xgamma
199 build app xgc
200 build app xhost
201 build app xinit
202 build app xkbcomp
203 build app xkbevd
204 build app xkbprint
205 build app xkbutils
206 build app xkill
207 build app xload
208 build app xlogo
209 build app xlsatoms
210 build app xlsclients
211 build app xlsfonts
212 build app xmag
213 build app xman
214 build app xmessage
215 build app xmh
216 build app xmodmap
217 build app xmore
218 build app xphelloworld
219 build app xplsprinters
220 build app xpr
221 build app xprehashprinterlist
222 build app xprop
223 build app xrandr
224 build app xrdb
225 build app xrefresh
226 build app xset
227 build app xsetmode
228 build app xsetpointer
229 build app xsetroot
230 build app xsm
231 build app xstdcmap
232 build app xtrap
233 build app xvidtune
234 build app xvinfo
235 build app xwd
236 build app xwininfo
237 build app xwud
240 # The server requires at least the following libraries:
241 # Xfont, Xau, Xdmcp
242 build_xserver() {
243 build xserver xorg
246 build_driver_input() {
248 HOST_OS=`uname -s`
250 # Some drivers are only buildable on some OS'es
251 case $HOST_OS in
252 Linux)
253 build driver xf86-input-aiptek
254 build driver xf86-input-evdev
255 # not built in monolith, doesn't build for lots of systems
256 # build driver xf86-input-ur98
260 esac
262 build driver xf86-input-acecad
263 build driver xf86-input-calcomp
264 build driver xf86-input-citron
265 build driver xf86-input-digitaledge
266 build driver xf86-input-dmc
267 build driver xf86-input-dynapro
268 build driver xf86-input-elo2300
269 build driver xf86-input-elographics
270 build driver xf86-input-fpit
271 build driver xf86-input-hyperpen
272 build driver xf86-input-jamstudio
273 build driver xf86-input-joystick
274 build driver xf86-input-keyboard
275 build driver xf86-input-magellan
276 build driver xf86-input-magictouch
277 build driver xf86-input-microtouch
278 build driver xf86-input-mouse
279 build driver xf86-input-mutouch
280 build driver xf86-input-palmax
281 build driver xf86-input-penmount
282 build driver xf86-input-sample
283 build driver xf86-input-spaceorb
284 build driver xf86-input-summa
285 build driver xf86-input-tek4957
286 build driver xf86-input-void
289 build_driver_video() {
291 HOST_OS=`uname -s`
293 # Some drivers are only buildable on some OS'es
294 case $HOST_OS in
295 *BSD* | *bsd*)
296 build driver xf86-video-wsfb
297 build driver xf86-video-sunffb
299 *Linux*)
300 build driver xf86-video-sisusb
301 build driver xf86-video-sunffb
305 esac
307 build driver xf86-video-apm
308 build driver xf86-video-ark
309 build driver xf86-video-ati
310 build driver xf86-video-chips
311 build driver xf86-video-cirrus
312 build driver xf86-video-cyrix
313 build driver xf86-video-dummy
314 build driver xf86-video-fbdev
315 # build driver xf86-video-glide
316 build driver xf86-video-glint
317 build driver xf86-video-i128
318 build driver xf86-video-i740
319 build driver xf86-video-i810
320 build driver xf86-video-imstt
321 build driver xf86-video-mga
322 build driver xf86-video-neomagic
323 build driver xf86-video-newport
324 build driver xf86-video-nsc
325 build driver xf86-video-nv
326 build driver xf86-video-rendition
327 build driver xf86-video-s3
328 build driver xf86-video-s3virge
329 build driver xf86-video-savage
330 build driver xf86-video-siliconmotion
331 build driver xf86-video-sis
332 build driver xf86-video-sunbw2
333 build driver xf86-video-suncg14
334 build driver xf86-video-suncg3
335 build driver xf86-video-suncg6
336 build driver xf86-video-sunleo
337 build driver xf86-video-suntcx
338 build driver xf86-video-tdfx
339 build driver xf86-video-tga
340 build driver xf86-video-trident
341 build driver xf86-video-tseng
342 build driver xf86-video-vesa
343 build driver xf86-video-vga
344 build driver xf86-video-via
345 build driver xf86-video-vmware
346 build driver xf86-video-voodoo
349 # The server must be built before the drivers
350 build_driver() {
351 build_driver_input
352 build_driver_video
355 # All fonts require mkfontscale and mkfontdir to be available
357 # The following fonts require bdftopcf to be available:
358 # adobe-100dpi, adobe-75dpi, adobe-utopia-100dpi, adobe-utopia-75dpi,
359 # arabic-misc, bh-100dpi, bh-75dpi, bh-lucidatypewriter-100dpi,
360 # bh-lucidatypewriter-75dpi, bitstream-100dpi, bitstream-75dpi,
361 # cronyx-cyrillic, cursor-misc, daewoo-misc, dec-misc, isas-misc,
362 # jis-misc, micro-misc, misc-cyrillic, misc-misc, mutt-misc,
363 # schumacher-misc, screen-cyrillic, sony-misc, sun-misc and
364 # winitzki-cyrillic
366 # Within the font module, the util component must be built before the
367 # following fonts:
368 # adobe-100dpi, adobe-75dpi, adobe-utopia-100dpi, adobe-utopia-75dpi,
369 # bh-100dpi, bh-75dpi, bh-lucidatypewriter-100dpi, bh-lucidatypewriter-75dpi,
370 # misc-misc and schumacher-misc
372 # The alias component is recommended to be installed after the other fonts
373 # since the fonts.alias files reference specific fonts installed from the
374 # other font components
375 build_font() {
376 build font util
377 build font adobe-100dpi
378 build font adobe-75dpi
379 build font adobe-utopia-100dpi
380 build font adobe-utopia-75dpi
381 build font adobe-utopia-type1
382 build font arabic-misc
383 build font bh-100dpi
384 build font bh-75dpi
385 build font bh-lucidatypewriter-100dpi
386 build font bh-lucidatypewriter-75dpi
387 build font bh-ttf
388 build font bh-type1
389 build font bitstream-100dpi
390 build font bitstream-75dpi
391 build font bitstream-type1
392 build font cronyx-cyrillic
393 build font cursor-misc
394 build font daewoo-misc
395 build font dec-misc
396 build font ibm-type1
397 build font isas-misc
398 build font jis-misc
399 build font micro-misc
400 build font misc-cyrillic
401 build font misc-misc
402 build font mutt-misc
403 build font schumacher-misc
404 build font screen-cyrillic
405 build font sony-misc
406 build font sun-misc
407 build font winitzki-cyrillic
408 build font xfree86-type1
409 build font alias
412 # TODO
413 build_doc() {
414 build
417 usage() {
418 echo "Usage: $0 [options] prefix"
419 echo " where options are:"
420 echo " -d : run make distcheck in addition to others"
421 echo " -m path-to-mesa-sources-for-xserver : full path to Mesa sources"
422 echo " -n : do not quit after error; just print error message"
423 echo " -s sudo-command : sudo command to use"
426 # Process command line args
427 while test $# != 0
429 case $1 in
431 shift
432 SUDO=$1
435 shift
436 MESAPATH=$1
439 NOQUIT=1
442 DISTCHECK=1
445 PREFIX=$1
447 esac
449 shift
450 done
452 if test x"${PREFIX}" = x ; then
453 usage
454 exit
457 # Must create local aclocal dir or aclocal fails
458 ACLOCAL_LOCALDIR="${PREFIX}/share/aclocal"
459 $SUDO mkdir -p ${ACLOCAL_LOCALDIR}
461 # The following is required to make aclocal find our .m4 macros
462 if test x"$ACLOCAL" = x; then
463 ACLOCAL="aclocal -I ${ACLOCAL_LOCALDIR}"
464 else
465 ACLOCAL="${ACLOCAL} -I ${ACLOCAL_LOCALDIR}"
467 export ACLOCAL
469 # The following is required to make pkg-config find our .pc metadata files
470 if test x"$PKG_CONFIG_PATH" = x; then
471 PKG_CONFIG_PATH=${PREFIX}/lib/pkgconfig
472 else
473 PKG_CONFIG_PATH=${PREFIX}/lib/pkgconfig:${PKG_CONFIG_PATH}
475 export PKG_CONFIG_PATH
477 # Set the library path so that locally built libs will be found by apps
478 if test x"$LD_LIBRARY_PATH" = x; then
479 LD_LIBRARY_PATH=${PREFIX}/lib
480 else
481 LD_LIBRARY_PATH=${PREFIX}/lib:${LD_LIBRARY_PATH}
483 export LD_LIBRARY_PATH
485 # Set the path so that locally built apps will be found and used
486 if test x"$PATH" = x; then
487 PATH=${PREFIX}/bin
488 else
489 PATH=${PREFIX}/bin:${PATH}
491 export PATH
493 # Set the default font path for xserver/xorg unless it's already set
494 if test x"$FONTPATH" = x; then
495 FONTPATH="${PREFIX}/lib/X11/fonts/misc/,${PREFIX}/lib/X11/fonts/Type1/,${PREFIX}/lib/X11/fonts/75dpi/,${PREFIX}/lib/X11/fonts/100dpi/,${PREFIX}/lib/X11/fonts/cyrillic/,${PREFIX}/lib/X11/fonts/TTF/"
496 export FONTPATH
499 # Create the log file directory
500 $SUDO mkdir -p ${PREFIX}/var/log
502 date
504 # We must install the global macros before anything else
505 build util macros
507 build_proto
508 build_lib
509 build data bitmaps
510 build_app
511 build_xserver
512 build_driver
513 build_data
514 build_font
515 # build_doc
517 date