Make buildall.sh EGL aware too
[llpp.git] / buildall.sh
blobd17b74185d3b4c87377db2f5e384d865ce2eb434
1 # builds "hard" prerequisites and llpp
2 set -e
4 executable_p() {
5 command -v $1 >/dev/null 2>&1
8 filt='^$'
9 btyp="release"
10 mupdfrev=803470e161539f9013f854188e57505f4878e891
11 while getopts j:f:t:r:F opt; do
12 case "$opt" in
13 j) jobs="-j $OPTARG";;
14 f) filt="$OPTARG";;
15 t) btyp="$OPTARG";;
16 e) useegl=1;;
17 r) mupdfrev="$OPTARG";;
18 F) usefontconfig=1;;
20 echo \
21 "usage: $0 [-j jobs] [-f filter] [-t build type] [-r revision] [opt]"
22 exit 1;;
23 esac
24 done
25 shift $(($OPTIND - 1))
27 mkdir -p 3rdp
28 cd 3rdp
29 root=$(pwd)
31 if executable_p wget; then
32 dl() {
33 wget -nc $1 -O $2
35 else
36 if executable_p curl; then
37 dl() {
38 echo "fetching " $1
39 curl $1 -o $2
41 else
42 echo "no program to fetch remote urls found"
43 exit 1
47 lablgl=http://wwwfun.kurims.kyoto-u.ac.jp/soft/lsl/dist/lablgl-1.05.tar.gz
48 baseurl="http://git.ghostscript.com/"
50 mudir=mupdf-$mupdfrev
51 mutgz=mupdf-$mupdfrev.tgz
52 muurl="${baseurl}?p=mupdf.git;a=snapshot;h=$mupdfrev;sf=tgz"
54 test -d lablgl-1.05 || \
55 (dl $lablgl $(basename $lablgl) && tar -xzf lablgl-1.05.tar.gz)
56 test -e $mutgz || dl $muurl $mutgz
57 test -d $mudir || \
58 (mkdir $mudir && tar --strip-components 1 -C $mudir -xzf $mutgz)
60 fetch() {
61 while read r m; do
62 t=$m-$r.tgz
63 test $m = jbig2dec && p=$m || p=thirdparty/$m
64 test $m = openjpeg && e=opj_config.h.in.user || e=README
65 u="${baseurl}?p=$p.git;a=snapshot;h=$r;sf=tgz"
66 test -e $t || dl $u $t
67 test -e $mudir/thirdparty/$m/$e ||
68 (rm -fr $mudir/thirdparty/$m && mkdir $mudir/thirdparty/$m &&
69 tar -xzf $t --strip-components 1 -C $mudir/thirdparty/$m)
70 done
73 grep -v -E "$filt" <<-EOF | fetch
74 2ef0a19842ae1172bec153225328aaaeaf130a18 freetype
75 11b4c3203dc5a9551720760570c82408c303cd1c jbig2dec
76 219d59dcfd0e6ce8a3d8c5510e29237f0b5078ed jpeg
77 4c7d23d2cd00cee7822a61d1e8472439bd6d53c9 openjpeg
78 c16b1b18ddaaf090caf321af831bccac6381a381 zlib
79 EOF
81 executable_p gmake && make=gmake || make=make
83 (cd lablgl-1.05 \
84 && sed 17d Makefile.config.linux.mdk > Makefile.config \
85 && $make lib $(test "$1" = opt && echo libopt) \
86 && $make install \
87 BINDIR=$root/bin \
88 LIBDIR=$root/lib/ocaml \
89 DLLDIR=$root/lib/ocaml/stublibs \
90 INSTALLDIR=$root/lib/ocaml/lablGL)
92 opjconfig=$root/$mudir/thirdparty/openjpeg/libopenjpeg/opj_config.h
93 expr "$filt" : '.*openjpeg.*' >/dev/null || {
94 cat >>$opjconfig <<EOF
95 #ifdef _BIG_ENDIAN
96 #define OPJ_BIG_ENDIAN 1
97 #endif
98 EOF
101 (cd $mudir && $make $jobs build=$btyp $ojbe)
103 cd ..
105 srcpath=$(dirname $0)
107 tp=$root/$mudir/thirdparty
109 ccopt="-O"
110 ccopt="$ccopt -I $tp/jbig2dec"
111 ccopt="$ccopt -I $tp/jpeg"
112 ccopt="$ccopt -I $tp/freetype/include"
113 ccopt="$ccopt -I $tp/openjpeg/libopenjpeg"
114 ccopt="$ccopt -I $tp/zlib"
115 ccopt="$ccopt -I $root/$mudir/include"
117 cclib="$cclib -L$root/$mudir/build/$btyp"
118 cclib="$cclib -lmupdf"
119 cclib="$cclib -lz -ljpeg -lopenjpeg -ljbig2dec -lpthread -lcrypto"
120 cclib="$cclib -lX11"
122 ccopt="$ccopt -D_GNU_SOURCE"
123 test -n "$usefontconfig" && {
124 ccopt="$ccopt -DUSE_FONTCONFIG $(pkg-config --cflags fontconfig)"
125 cclib="$cclib $(pkg-config --libs fontconfig)"
128 test -n "$useegl" && {
129 ccopt="$ccopt -DUSE_EGL $(pkg-config --cflags egl)"
130 cclib="$cclib $(pkg-config --libs egl)"
133 expr "$filt" : '.*freetype.*' >/dev/null && {
134 ccopt="$ccopt $(freetype-config --cflags) -include ft2build.h"
135 cclib="$cclib $(freetype-config --libs)"
136 } || {
137 ccopt="$ccopt -include $tp/freetype/include/ft2build.h"
138 cclib="$cclib -lfreetype"
141 echo Building llpp...
143 sh $srcpath/mkhelp.sh $srcpath/keystoml.ml $srcpath/KEYS > help.ml
145 if test "$1" = "opt"; then
146 executable_p ocamlopt.opt && comp=ocamlopt.opt || comp=ocamlopt
147 osuf=cmx
148 asuf=cmxa
149 link="$comp"
150 else
151 executable_p ocamlc.opt && comp=ocamlc.opt || comp=ocamlc
152 osuf=cmo
153 asuf=cma
154 link="$comp -custom"
157 $comp -c -o link.o -ccopt "$ccopt" $srcpath/link.c
158 $comp -c -o bo.$osuf $srcpath/le/bo.ml
159 $comp -c -o help.$osuf help.ml
160 $comp -c -o utils.$osuf $srcpath/utils.ml
161 $comp -c -o wsi.cmi $srcpath/wsi.mli
162 $comp -c -o wsi.$osuf $srcpath/wsi.ml
163 $comp -c -o parser.$osuf $srcpath/parser.ml
164 $comp -c -o config.$osuf -I $root/lib/ocaml/lablGL $srcpath/config.ml
165 $comp -c -pp "sed -f $srcpath/pp.sed" -o main.$osuf \
166 -I $root/lib/ocaml/lablGL $srcpath/main.ml
168 $link -o llpp \
169 -I $root/lib/ocaml/lablGL \
170 str.$asuf unix.$asuf lablgl.$asuf \
171 link.o \
172 -cclib "$cclib" \
173 bo.$osuf \
174 help.$osuf \
175 utils.$osuf \
176 parser.$osuf \
177 wsi.$osuf \
178 config.$osuf \
179 main.$osuf
181 echo All done