library_builders.sh 4.85 KB
Newer Older
1
# Recipes for building some libaries
Matthew Brett's avatar
Matthew Brett committed
2
OPENBLAS_VERSION="${OPENBLAS_VERSION:-0.2.18}"
3
4
5
6
7
# We use system zlib by default - see build_new_zlib
ZLIB_VERSION="${ZLIB_VERSION:-1.2.8}"
LIBPNG_VERSION="${LIBPNG_VERSION:-1.6.21}"
BZIP2_VERSION="${BZIP2_VERSION:-1.0.6}"
FREETYPE_VERSION="${FREETYPE_VERSION:-2.6.3}"
Matthew Brett's avatar
Matthew Brett committed
8
TIFF_VERSION="${TIFF_VERSION:-4.0.6}"
9
10
11
12
13
14
OPENJPEG_VERSION="${OPENJPEG_VERSION:-2.1}"
LCMS2_VERSION="${LCMS2_VERSION:-2.7}"
GIFLIB_VERSION="${GIFLIB_VERSION:-5.1.3}"
LIBWEBP_VERSION="${LIBWEBP_VERSION:-0.5.0}"
XZ_VERSION="${XZ_VERSION:-5.2.2}"
LIBYAML_VERSION="${LIBYAML_VERSION:-0.1.5}"
Matthew Brett's avatar
Matthew Brett committed
15
16
SZIP_VERSION="${SZIP_VERSION:-2.1}"
HDF5_VERSION="${HDF5_VERSION:-1.8.17}"
17

18
19
20
21
22
if [ $(uname) == "Darwin" ]; then
    ARCH_FLAGS=${ARCH_FLAGS:-"-arch i386 -arch x86_64"}
    export CFLAGS="${CFLAGS} $ARCH_FLAGS"
    IS_OSX=1
fi
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

function build_simple {
    local name=$1
    local version=$2
    local url=$3
    if [ -e "${name}-stamp" ]; then
        return
    fi
    local name_version="${name}-${version}"
    local targz=${name_version}.tar.gz
    curl -LO $url/$targz
    tar zxf $targz
    (cd $name_version && ./configure && make && make install)
    touch "${name}-stamp"
}

function build_openblas {
    if [ -e openblas-stamp ]; then return; fi
    git clone https://github.com/xianyi/OpenBLAS
    (cd OpenBLAS \
        && git checkout "v${OPENBLAS_VERSION}" \
        && make DYNAMIC_ARCH=1 USE_OPENMP=0 NUM_THREADS=64 > /dev/null \
        && make PREFIX=/usr/local/ install)
    touch openblas-stamp
}

function build_zlib {
    # Gives an old but safe version
    if [ -e zlib-stamp ]; then return; fi
52
53
    # OSX has zlib already
    if [ -z "$IS_OSX" ]; then yum install -y zlib-devel; fi
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
    touch zlib-stamp
}

function build_new_zlib {
    # Careful, this one may cause yum to segfault
    build_simple zlib $ZLIB_VERSION http://zlib.net
}

function build_jpeg {
    if [ -e jpeg-stamp ]; then return; fi
    curl -LO http://ijg.org/files/jpegsrc.v9b.tar.gz
    tar zxf jpegsrc.v9b.tar.gz
    (cd jpeg-9b && ./configure && make && make install)
    touch jpeg-stamp
}

function build_libpng {
    build_zlib
    build_simple libpng $LIBPNG_VERSION http://download.sourceforge.net/libpng
}

function build_bzip2 {
    if [ -e bzip2-stamp ]; then return; fi
    curl -LO http://bzip.org/${BZIP2_VERSION}/bzip2-${BZIP2_VERSION}.tar.gz
    tar zxf bzip2-${BZIP2_VERSION}.tar.gz
    (cd bzip2-${BZIP2_VERSION} && make -f Makefile-libbz2_so && make install)
    touch bzip2-stamp
}

function build_tiff {
    build_zlib
    build_jpeg
    build_openjpeg
    build_xz
Matthew Brett's avatar
Matthew Brett committed
88
    build_simple tiff $TIFF_VERSION http://download.osgeo.org/libtiff
89
90
91
92
}

function build_openjpeg {
    if [ -e openjpeg-stamp ]; then return; fi
93
94
95
96
97
    if [ -n "$IS_OSX" ]; then
        brew install cmake
    else
        yum install -y cmake28
    fi
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
    curl -LO https://github.com/uclouvain/openjpeg/archive/version.${OPENJPEG_VERSION}.tar.gz
    tar zxf version.${OPENJPEG_VERSION}.tar.gz
    (cd openjpeg-version.${OPENJPEG_VERSION} && cmake28 . && make install)
    touch openjpeg-stamp
}

function build_lcms2 {
    build_tiff
    build_simple lcms2 $LCMS2_VERSION http://downloads.sourceforge.net/project/lcms/lcms/$LCMS2_VERSION
}

function build_giflib {
    build_simple giflib $GIFLIB_VERSION http://downloads.sourceforge.net/project/giflib
}

function build_xz {
    build_simple xz $XZ_VERSION http://tukaani.org/xz
}

function build_libwebp {
    if [ -e libwebp-stamp ]; then return; fi
    build_libpng
    build_tiff
    build_giflib
    curl -LO https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${LIBWEBP_VERSION}.tar.gz
    tar zxf libwebp-${LIBWEBP_VERSION}.tar.gz
    (cd libwebp-${LIBWEBP_VERSION} && \
        ./configure --enable-libwebpmux --enable-libwebpdemux && \
         make && make install)
    touch libwebp-stamp
}

function build_freetype {
    build_libpng
    build_bzip2
    build_simple freetype $FREETYPE_VERSION http://download.savannah.gnu.org/releases/freetype
}

function build_libyaml {
    build_simple yaml $LIBYAML_VERSION http://pyyaml.org/download/libyaml
}
Matthew Brett's avatar
Matthew Brett committed
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165

function build_szip {
    # Build szip without encoding (patent restrictions)
    if [ -e szip-stamp ]; then return; fi
    build_zlib
    local szip_url=https://www.hdfgroup.org/ftp/lib-external/szip/
    curl -sLO ${szip_url}/$SZIP_VERSION/src/szip-$SZIP_VERSION.tar.gz
    tar zxf szip-$SZIP_VERSION.tar.gz
    (cd szip-$SZIP_VERSION \
        && ./configure --enable-encoding=no \
        && make \
        && make install)
    touch szip-stamp
}

function build_hdf5 {
    if [ -e hdf5-stamp ]; then return; fi
    build_szip
    local hdf5_url=https://www.hdfgroup.org/ftp/HDF5/releases
    curl -sLO $hdf5_url/hdf5-$HDF5_VERSION/src/hdf5-$HDF5_VERSION.tar.gz
    tar zxf hdf5-$HDF5_VERSION.tar.gz
    (cd hdf5-$HDF5_VERSION \
        && ./configure --prefix=/usr/local --with-szlib=/usr/local \
        && make \
        && make install)
    touch hdf5-stamp
}