Avoid possible confusion
[llpp.git] / buildall.sh
blob70780afa75586cf9aa12b7639b626a369c3c6a61
1 # builds "hard" prerequisites and llpp
2 set -e
4 filt='^$'
5 btyp="release"
6 mupdfrev=b2f096de23e5341fbbcd7c290f3a144423741906
7 while getopts j:f:t:r:F opt; do
8 case "$opt" in
9 j) jobs="-j $OPTARG";;
10 f) filt="$OPTARG";;
11 t) btyp="$OPTARG";;
12 r) mupdfrev="$OPTARG";;
13 F) usefontconfig=1;;
15 echo \
16 "usage: $0 [-j jobs] [-f filter] [-t build type] [-r revision] [opt]"
17 exit 1;;
18 esac
19 done
20 shift $(($OPTIND - 1))
22 mkdir -p 3rdp
23 cd 3rdp
24 root=$(pwd)
26 lablgl=http://wwwfun.kurims.kyoto-u.ac.jp/soft/lsl/dist/lablgl-1.05.tar.gz
27 baseurl="http://git.ghostscript.com/"
29 mudir=mupdf-$mupdfrev
30 mutgz=mupdf-$mupdfrev.tgz
31 muurl="${baseurl}?p=mupdf.git;a=snapshot;h=$mupdfrev;sf=tgz"
33 test -d lablgl-1.05 || (wget -nc $lablgl && tar -xzf lablgl-1.05.tar.gz)
34 test -e $mutgz || wget -nc $muurl -O $mutgz
35 test -d $mudir || \
36 (mkdir $mudir && tar --strip-components 1 -C $mudir -xzf $mutgz)
38 fetch() {
39 while read r m; do
40 t=$m-$r.tgz
41 test $m = jbig2dec && p=$m || p=thirdparty/$m
42 test $m = openjpeg && e=opj_config.h.in.user || e=README
43 u="${baseurl}?p=$p.git;a=snapshot;h=$r;sf=tgz"
44 test -e $t || wget -nc $u -O $t
45 test -e $mudir/thirdparty/$m/$e ||
46 (rm -fr $mudir/thirdparty/$m && mkdir $mudir/thirdparty/$m &&
47 tar -xzf $t --strip-components 1 -C $mudir/thirdparty/$m)
48 done
51 grep -v -E "$filt" <<-EOF | fetch
52 2ef0a19842ae1172bec153225328aaaeaf130a18 freetype
53 11b4c3203dc5a9551720760570c82408c303cd1c jbig2dec
54 219d59dcfd0e6ce8a3d8c5510e29237f0b5078ed jpeg
55 4c7d23d2cd00cee7822a61d1e8472439bd6d53c9 openjpeg
56 c16b1b18ddaaf090caf321af831bccac6381a381 zlib
57 EOF
59 executable_p() {
60 command -v $1 >/dev/null 2>&1
63 executable_p gmake && make=gmake || make=make
65 (cd lablgl-1.05 \
66 && sed 17d Makefile.config.linux.mdk > Makefile.config \
67 && $make lib $(test "$1" = opt && echo libopt) \
68 && $make install \
69 BINDIR=$root/bin \
70 LIBDIR=$root/lib/ocaml \
71 DLLDIR=$root/lib/ocaml/stublibs \
72 INSTALLDIR=$root/lib/ocaml/lablGL)
74 opjconfig=$root/$mudir/thirdparty/openjpeg/libopenjpeg/opj_config.h
75 expr "$filt" : '.*openjpeg.*' >/dev/null || {
76 cat >>$opjconfig <<EOF
77 #ifdef _BIG_ENDIAN
78 #define OPJ_BIG_ENDIAN 1
79 #endif
80 EOF
83 (cd $mudir && $make $jobs build=$btyp $ojbe)
85 cd ..
87 srcpath=$(dirname $0)
89 tp=$root/$mudir/thirdparty
91 ccopt="-O"
92 ccopt="$ccopt -I $tp/jbig2dec"
93 ccopt="$ccopt -I $tp/jpeg"
94 ccopt="$ccopt -I $tp/freetype/include"
95 ccopt="$ccopt -I $tp/openjpeg/libopenjpeg"
96 ccopt="$ccopt -I $tp/zlib"
97 ccopt="$ccopt -I $root/$mudir/include"
99 cclib="$cclib -L$root/$mudir/build/$btyp"
100 cclib="$cclib -lmupdf"
101 cclib="$cclib -lz -ljpeg -lopenjpeg -ljbig2dec -lpthread -lcrypto"
102 cclib="$cclib -lX11"
104 ccopt="$ccopt -D_GNU_SOURCE"
105 test -z "$usefontconfig" || {
106 ccopt="$ccopt -DUSE_FONTCONFIG $(pkg-config --cflags fontconfig)"
107 cclib="$cclib $(pkg-config --libs fontconfig)"
110 expr "$filt" : '.*freetype.*' >/dev/null && {
111 ccopt="$ccopt $(freetype-config --cflags) -include ft2build.h"
112 cclib="$cclib $(freetype-config --libs)"
113 } || {
114 ccopt="$ccopt -include $tp/freetype/include/ft2build.h"
115 cclib="$cclib -lfreetype"
118 echo Building llpp...
120 sh $srcpath/mkhelp.sh $srcpath/keystoml.ml $srcpath/KEYS > help.ml
122 if test "$1" = "opt"; then
123 executable_p ocamlopt.opt && comp=ocamlopt.opt || comp=ocamlopt
124 osuf=cmx
125 asuf=cmxa
126 link="$comp"
127 else
128 executable_p ocamlc.opt && comp=ocamlc.opt || comp=ocamlc
129 osuf=cmo
130 asuf=cma
131 link="$comp -custom"
134 $comp -c -o link.o -ccopt "$ccopt" $srcpath/link.c
135 $comp -c -o help.$osuf help.ml
136 $comp -c -o utils.$osuf $srcpath/utils.ml
137 $comp -c -o wsi.cmi $srcpath/wsi.mli
138 $comp -c -o wsi.$osuf $srcpath/wsi.ml
139 $comp -c -o parser.$osuf $srcpath/parser.ml
140 $comp -c -o config.$osuf -I $root/lib/ocaml/lablGL $srcpath/config.ml
141 $comp -c -o main.$osuf -I $root/lib/ocaml/lablGL $srcpath/main.ml
143 $link -o llpp \
144 -I $root/lib/ocaml/lablGL \
145 str.$asuf unix.$asuf lablgl.$asuf \
146 link.o \
147 -cclib "$cclib" \
148 help.$osuf \
149 utils.$osuf \
150 parser.$osuf \
151 wsi.$osuf \
152 config.$osuf \
153 main.$osuf
155 echo All done