Cosmetics
[llpp.git] / buildall.sh
blob5ef4f635a5b04dfefb24df9de8692790b79437ae
1 # builds "hard" prerequisites and llpp
2 set -e
4 while getopts j: opt; do
5 case "$opt" in
6 j) jobs="-j $OPTARG";;
7 ?)
8 printf "usage: $0 [-j N] [opt]\n";
9 exit 1;;
10 esac
11 done
12 shift $(($OPTIND - 1))
14 mkdir -p 3rdp
15 cd 3rdp
16 root=$(pwd)
18 lablgl=http://wwwfun.kurims.kyoto-u.ac.jp/soft/lsl/dist/lablgl-1.04.tar.gz
19 baseurl="http://git.ghostscript.com/"
21 mupdfrev=d396b126c7ab5c241e0dc7ff0edd9942ad5dfdaa
22 mudir=mupdf-$(printf "%.7s" $mupdfrev)
23 mutgz=mupdf-$mupdfrev.tgz
24 muurl="${baseurl}?p=mupdf.git;a=snapshot;h=$mupdfrev;sf=tgz"
26 test -d lablGL-1.04 || (wget -nc $lablgl && tar -xzf lablgl-1.04.tar.gz)
27 test -e $mutgz || wget -nc $muurl -O $mutgz
28 test -d $mudir || tar -xzf $mutgz
30 while read r m; do
31 d=$m-$(printf "%.7s" $r)
32 t=$m-$r.tgz
33 test $m = jbig2dec && p=$m || p=thirdparty/$m
34 u="${baseurl}?p=$p.git;a=snapshot;h=$r;sf=tgz"
35 test -e $t || wget -nc $u -O $t
36 test -e $mudir/thirdparty/$m/README ||
37 (rm -fr $mudir/thirdparty/$m && tar -xzf $t && mv $d $mudir/thirdparty/$m)
38 done <<-EOF
39 2ef0a19842ae1172bec153225328aaaeaf130a18 freetype
40 d02b3649334e59e862b37c70d7d0fa9e086a524c jbig2dec
41 219d59dcfd0e6ce8a3d8c5510e29237f0b5078ed jpeg
42 0970aed6e3990f8df7ef1b70cc22d024439b46d2 openjpeg
43 c16b1b18ddaaf090caf321af831bccac6381a381 zlib
44 EOF
46 executable_p() {
47 command -v $1 >/dev/null 2>&1
50 executable_p gmake && make=gmake || make=make
52 (cd lablGL-1.04 \
53 && sed 17d Makefile.config.linux.mdk > Makefile.config \
54 && $make -j 1 lib $(test "$1" = opt && echo libopt) \
55 && $make -j 1 install \
56 BINDIR=$root/bin \
57 LIBDIR=$root/lib/ocaml \
58 DLLDIR=$root/lib/ocaml/stublibs \
59 INSTALLDIR=$root/lib/ocaml/lablGL)
61 (cd $mudir && $make $jobs build=release)
63 cd ..
65 srcpath=$(dirname $0)
67 tp=$root/$mudir/thirdparty
69 ccopt="-O"
70 ccopt="$ccopt -I $tp/jbig2dec"
71 ccopt="$ccopt -I $tp/jpeg"
72 ccopt="$ccopt -I $tp/freetype/include"
73 ccopt="$ccopt -I $tp/openjpeg/libopenjpeg"
74 ccopt="$ccopt -I $tp/zlib"
75 ccopt="$ccopt -I $root/$mudir/include"
77 ccopt="$ccopt -include $tp/freetype/include/ft2build.h -D_GNU_SOURCE"
79 cclib="$cclib -L$root/$mudir/build/release"
80 cclib="$cclib -lmupdf -lmupdf-js-none"
81 cclib="$cclib -lz -ljpeg -lopenjpeg -ljbig2dec -lfreetype -lpthread -lcrypto"
82 cclib="$cclib -lX11"
84 echo Building llpp...
86 sh $srcpath/mkhelp.sh $srcpath/keystoml.ml $srcpath/KEYS > help.ml
88 if test "$1" = "opt"; then
89 executable_p ocamlopt.opt && comp=ocamlopt.opt || comp=ocamlopt
90 cmsuf=cmx
91 dolink() {
92 $comp -o llpp \
93 -I $root/lib/ocaml/lablGL \
94 str.cmxa unix.cmxa lablgl.cmxa \
95 link.o \
96 -cclib "$cclib" \
97 help.cmx \
98 utils.cmx \
99 parser.cmx \
100 wsi.cmx \
101 main.cmx
103 else
104 executable_p ocamlc.opt && comp=ocamlc.opt || comp=ocamlc
105 cmsuf=cmo
106 dolink() {
107 $comp -custom -o llpp \
108 -I $root/lib/ocaml/lablGL \
109 str.cma unix.cma lablgl.cma \
110 link.o \
111 -cclib "$cclib" \
112 help.cmo \
113 utils.cmo \
114 parser.cmo \
115 wsi.cmo \
116 main.cmo
120 $comp -c -o link.o -ccopt "$ccopt" $srcpath/link.c
121 $comp -c -o help.$cmsuf help.ml
122 $comp -c -o utils.$cmsuf $srcpath/utils.ml
123 $comp -c -o wsi.cmi $srcpath/wsi.mli
124 $comp -c -o wsi.$cmsuf $srcpath/wsi.ml
125 $comp -c -o parser.$cmsuf $srcpath/parser.ml
126 $comp -c -o main.$cmsuf -I $root/lib/ocaml/lablGL $srcpath/main.ml
127 dolink
129 echo All done