Add a verb
[llpp.git] / buildall.sh
blob4f61122b477daaa5710b64dc08c7ae3cf6c4678c
1 # builds "hard" prerequisites and llpp
2 set -e
4 filt='^$'
5 btyp="release"
6 mupdfrev=096272252c0d00449bb68c7fddecc13ec2cecdd0
7 while getopts j:f:t:r: opt; do
8 case "$opt" in
9 j) jobs="-j $OPTARG";;
10 f) filt="$OPTARG";;
11 t) btyp="$OPTARG";;
12 r) mupdfrev="$OPTARG";;
14 echo \
15 "usage: $0 [-j jobs] [-f filter] [-t build type] [-r revision] [opt]"
16 exit 1;;
17 esac
18 done
19 shift $(($OPTIND - 1))
21 mkdir -p 3rdp
22 cd 3rdp
23 root=$(pwd)
25 lablgl=http://wwwfun.kurims.kyoto-u.ac.jp/soft/lsl/dist/lablgl-1.05.tar.gz
26 baseurl="http://git.ghostscript.com/"
28 mudir=mupdf-$mupdfrev
29 mutgz=mupdf-$mupdfrev.tgz
30 muurl="${baseurl}?p=mupdf.git;a=snapshot;h=$mupdfrev;sf=tgz"
32 test -d lablgl-1.05 || (wget -nc $lablgl && tar -xzf lablgl-1.05.tar.gz)
33 test -e $mutgz || wget -nc $muurl -O $mutgz
34 mkdir $mudir && tar --strip-components 1 -C $mudir -xzf $mutgz
36 fetch() {
37 while read r m; do
38 t=$m-$r.tgz
39 test $m = jbig2dec && p=$m || p=thirdparty/$m
40 u="${baseurl}?p=$p.git;a=snapshot;h=$r;sf=tgz"
41 test -e $t || wget -nc $u -O $t
42 test -e $mudir/thirdparty/$m/README ||
43 (rm -fr $mudir/thirdparty/$m && mkdir $mudir/thirdparty/$m &&
44 tar -xzf $t --strip-components 1 -C $mudir/thirdparty/$m)
45 done
48 grep -v -E "$filt" <<-EOF | fetch
49 2ef0a19842ae1172bec153225328aaaeaf130a18 freetype
50 11b4c3203dc5a9551720760570c82408c303cd1c jbig2dec
51 219d59dcfd0e6ce8a3d8c5510e29237f0b5078ed jpeg
52 4c7d23d2cd00cee7822a61d1e8472439bd6d53c9 openjpeg
53 c16b1b18ddaaf090caf321af831bccac6381a381 zlib
54 EOF
56 executable_p() {
57 command -v $1 >/dev/null 2>&1
60 executable_p gmake && make=gmake || make=make
62 (cd lablgl-1.05 \
63 && sed 17d Makefile.config.linux.mdk > Makefile.config \
64 && $make lib $(test "$1" = opt && echo libopt) \
65 && $make install \
66 BINDIR=$root/bin \
67 LIBDIR=$root/lib/ocaml \
68 DLLDIR=$root/lib/ocaml/stublibs \
69 INSTALLDIR=$root/lib/ocaml/lablGL)
71 (cd $mudir && $make $jobs build=$btyp)
73 cd ..
75 srcpath=$(dirname $0)
77 tp=$root/$mudir/thirdparty
79 ccopt="-O"
80 ccopt="$ccopt -I $tp/jbig2dec"
81 ccopt="$ccopt -I $tp/jpeg"
82 ccopt="$ccopt -I $tp/freetype/include"
83 ccopt="$ccopt -I $tp/openjpeg/libopenjpeg"
84 ccopt="$ccopt -I $tp/zlib"
85 ccopt="$ccopt -I $root/$mudir/include"
87 ccopt="$ccopt -D_GNU_SOURCE"
89 cclib="$cclib -L$root/$mudir/build/$btyp"
90 cclib="$cclib -lmupdf -lmupdf-js-none"
91 cclib="$cclib -lz -ljpeg -lopenjpeg -ljbig2dec -lpthread -lcrypto"
92 cclib="$cclib -lX11"
94 expr "$filt" : '.*freetype.*' && {
95 ccopt="$ccopt $(freetype-config --cflags) -include ft2build.h"
96 cclib="$cclib $(freetype-config --libs)"
97 } || {
98 ccopt="$ccopt -include $tp/freetype/include/ft2build.h"
99 cclib="$cclib -lfreetype"
102 echo Building llpp...
104 sh $srcpath/mkhelp.sh $srcpath/keystoml.ml $srcpath/KEYS > help.ml
106 if test "$1" = "opt"; then
107 executable_p ocamlopt.opt && comp=ocamlopt.opt || comp=ocamlopt
108 cmsuf=cmx
109 dolink() {
110 $comp -o llpp \
111 -I $root/lib/ocaml/lablGL \
112 str.cmxa unix.cmxa lablgl.cmxa \
113 link.o \
114 -cclib "$cclib" \
115 help.cmx \
116 utils.cmx \
117 parser.cmx \
118 wsi.cmx \
119 main.cmx
121 else
122 executable_p ocamlc.opt && comp=ocamlc.opt || comp=ocamlc
123 cmsuf=cmo
124 dolink() {
125 $comp -custom -o llpp \
126 -I $root/lib/ocaml/lablGL \
127 str.cma unix.cma lablgl.cma \
128 link.o \
129 -cclib "$cclib" \
130 help.cmo \
131 utils.cmo \
132 parser.cmo \
133 wsi.cmo \
134 main.cmo
138 $comp -c -o link.o -ccopt "$ccopt" $srcpath/link.c
139 $comp -c -o help.$cmsuf help.ml
140 $comp -c -o utils.$cmsuf $srcpath/utils.ml
141 $comp -c -o wsi.cmi $srcpath/wsi.mli
142 $comp -c -o wsi.$cmsuf $srcpath/wsi.ml
143 $comp -c -o parser.$cmsuf $srcpath/parser.ml
144 $comp -c -o main.$cmsuf -I $root/lib/ocaml/lablGL $srcpath/main.ml
145 dolink
147 echo All done