blob: 50eec8506df8ab16fc99e636bc040ab127d2c8c7 [file] [log] [blame]
Brian Silverman8efe23e2013-07-07 23:31:37 -07001#!/bin/bash
2
Brian Silvermanb3d50542014-04-23 14:28:55 -05003#set -x
Brian Silverman8efe23e2013-07-07 23:31:37 -07004set -e
brians343bc112013-02-10 01:53:46 +00005
Brian Silvermanf10de2a2013-11-16 19:56:11 -08006AOS=$(readlink -f $(dirname $0)/..)
7. $(dirname $0)/tools_config
Brian Silverman63cf2412013-11-17 05:44:36 -08008
Brian Silverman9b7a6842014-05-05 16:19:11 -07009# A separate variable for stuff that should be in LDFLAGS for everything because
10# the value from CONFIGURE_FLAGS has to get overriden in some places.
11ALL_LDFLAGS=""
12
Brian Silvermanbae86d62014-09-14 01:05:31 -040013# Flags that should get passed to all configure scripts.
14# Some of them need to set LDFLAGS separately to work around stupid configure
15# scripts, so we can't just set that here.
16CONFIGURE_FLAGS=""
17
Brian Silverman41abe012014-02-08 18:25:02 -080018if [ "$1" == "arm" ]; then
19 COMPILED=${EXTERNALS}/../compiled-arm
Brian Silverman1e8ddfe2013-12-19 16:20:53 -080020
Brian Silverman41abe012014-02-08 18:25:02 -080021 CROSS_COMPILE=arm-linux-gnueabihf-
22
23 export CC=${CROSS_COMPILE}gcc-4.7
24 export CXX=${CROSS_COMPILE}g++-4.7
25 export CFLAGS="-mcpu=cortex-a8 -mfpu=neon"
26 export CXXFLAGS="-mcpu=cortex-a8 -mfpu=neon"
27 export OBJDUMP=${CROSS_COMPILE}objdump
Brian Silverman41abe012014-02-08 18:25:02 -080028 CONFIGURE_FLAGS="--host=arm-linux-gnueabihf CC=${CC} CXX=${CXX} CFLAGS=\"${CFLAGS}\" CXXFLAGS=\"${CXXFLAGS}\" OBJDUMP=${OBJDUMP}"
Brian Silvermanbae86d62014-09-14 01:05:31 -040029elif [ "$1" == "arm_frc" ]; then
30 COMPILED=${EXTERNALS}/../compiled-arm_frc
31
32 CROSS_COMPILE=arm-frc-linux-gnueabi-
33
34 export CC=${CROSS_COMPILE}gcc-4.9
35 export CXX=${CROSS_COMPILE}g++-4.9
36 export CFLAGS="-mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp"
37 export CXXFLAGS="-mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp"
38 export OBJDUMP=${CROSS_COMPILE}objdump
39 CONFIGURE_FLAGS="--host=arm-frc-linux-gnueabi CC=${CC} CXX=${CXX} CFLAGS=\"${CFLAGS}\" CXXFLAGS=\"${CXXFLAGS}\" OBJDUMP=${OBJDUMP}"
Brian Silvermana29ebf92014-04-23 13:08:49 -050040elif [ "$1" == "amd64" ]; then
Brian Silverman41abe012014-02-08 18:25:02 -080041 COMPILED=${EXTERNALS}/../compiled-amd64
Brian Silvermana5301e32014-05-03 10:51:49 -070042elif [ "$1" == "amd64-fPIE" ]; then
43 COMPILED=${EXTERNALS}/../compiled-amd64-fPIE
Brian Silverman41abe012014-02-08 18:25:02 -080044
Brian Silvermana5301e32014-05-03 10:51:49 -070045 export CFLAGS="-fPIE"
46 export CXXFLAGS="-fPIE"
Brian Silverman9b7a6842014-05-05 16:19:11 -070047 ALL_LDFLAGS="-fPIE"
48 export LDFLAGS=${ALL_LDFLAGS}
Brian Silvermanf0d3c782014-05-02 23:56:32 -070049 CONFIGURE_FLAGS="CFLAGS=\"${CFLAGS}\" CXXFLAGS=\"${CXXFLAGS}\" LDFLAGS=\"${LDFLAGS}\""
Brian Silvermana29ebf92014-04-23 13:08:49 -050050else
51 echo "Unknown platform $1 to download externals for." 1>&2
52 exit 1
Brian Silverman41abe012014-02-08 18:25:02 -080053fi
Brian Silvermanf10de2a2013-11-16 19:56:11 -080054
55TMPDIR=/tmp/$$-aos-tmpdir
56mkdir -p ${EXTERNALS}
Brian Silvermanb3d50542014-04-23 14:28:55 -050057[[ -n "${COMPILED}" ]] && mkdir -p ${COMPILED}
Brian Silvermanf10de2a2013-11-16 19:56:11 -080058
59# get and build ninja
60[ -d ${NINJA_DIR} ] || git clone --branch ${NINJA_RELEASE} https://github.com/martine/ninja.git ${NINJA_DIR}
Brian Silverman248053a2013-12-11 14:56:31 -080061[ -x ${NINJA} ] || env -i "PATH=$PATH" ${NINJA_DIR}/bootstrap.py
Brian Silvermanf10de2a2013-11-16 19:56:11 -080062
63# get gyp
64[ -d ${GYP_DIR} ] || ( svn co http://gyp.googlecode.com/svn/trunk -r ${GYP_REVISION} ${GYP_DIR} && patch -p1 -d ${GYP_DIR} < ${AOS}/externals/gyp.patch )
brians343bc112013-02-10 01:53:46 +000065
brians343bc112013-02-10 01:53:46 +000066# get eigen
Brian Silverman87bfd112014-04-08 19:48:51 -070067EIGEN_VERSION=3.2.1
brians343bc112013-02-10 01:53:46 +000068EIGEN_DIR=${EXTERNALS}/eigen-${EIGEN_VERSION}
69[ -f ${EIGEN_DIR}.tar.bz2 ] || wget http://bitbucket.org/eigen/eigen/get/${EIGEN_VERSION}.tar.bz2 -O ${EIGEN_DIR}.tar.bz2
70[ -d ${EIGEN_DIR} ] || ( mkdir ${EIGEN_DIR} && tar --strip-components=1 -C ${EIGEN_DIR} -xf ${EIGEN_DIR}.tar.bz2 )
71
Brian Silvermana29ebf92014-04-23 13:08:49 -050072# get gtest
73GTEST_VERSION=1.6.0
Brian Silverman29458232014-04-30 15:53:46 -070074GTEST_DIR=${EXTERNALS}/gtest-${GTEST_VERSION}-p2
Brian Silvermana29ebf92014-04-23 13:08:49 -050075GTEST_ZIP=${EXTERNALS}/gtest-${GTEST_VERSION}.zip
76[ -f ${GTEST_ZIP} ] || wget http://googletest.googlecode.com/files/gtest-${GTEST_VERSION}.zip -O ${GTEST_ZIP}
77[ -d ${GTEST_DIR} ] || ( unzip ${GTEST_ZIP} -d ${TMPDIR} && mv ${TMPDIR}/gtest-${GTEST_VERSION} ${GTEST_DIR} && cd ${GTEST_DIR} && patch -p1 < ${AOS}/externals/gtest.patch )
78
brians343bc112013-02-10 01:53:46 +000079# get and build libjpeg
80LIBJPEG_VERSION=8d
Brian Silverman4ffc6542013-11-18 23:41:56 -080081LIBJPEG_DIR=${COMPILED}/jpeg-${LIBJPEG_VERSION}
brians343bc112013-02-10 01:53:46 +000082# NOTE: this directory ends up in #include names
Brian Silvermanf10de2a2013-11-16 19:56:11 -080083LIBJPEG_PREFIX=${COMPILED}/libjpeg
brians343bc112013-02-10 01:53:46 +000084LIBJPEG_LIB=${LIBJPEG_PREFIX}/lib/libjpeg.a
85LIBJPEG_TAR=${EXTERNALS}/jpegsrc.v${LIBJPEG_VERSION}.tar.gz
86[ -f ${LIBJPEG_TAR} ] || wget http://www.ijg.org/files/jpegsrc.v${LIBJPEG_VERSION}.tar.gz -O ${LIBJPEG_TAR}
87[ -d ${LIBJPEG_DIR} ] || ( mkdir ${LIBJPEG_DIR} && tar --strip-components=1 -C ${LIBJPEG_DIR} -xf ${LIBJPEG_TAR} )
Brian Silverman63cf2412013-11-17 05:44:36 -080088[ -f ${LIBJPEG_LIB} ] || bash -c \
89 "cd ${LIBJPEG_DIR} && ./configure --disable-shared \
90 ${CONFIGURE_FLAGS} --prefix=`readlink -f ${LIBJPEG_PREFIX}` \
91 && make && make install"
brians343bc112013-02-10 01:53:46 +000092
brians343bc112013-02-10 01:53:46 +000093# get and build ctemplate
Brian Silverman8efe23e2013-07-07 23:31:37 -070094# This is the next revision after the 2.2 release and it only adds spaces to
95# make gcc 4.7 with --std=c++11 happy (user-defined string literals...).
96CTEMPLATE_VERSION=129
Brian Silvermanf10de2a2013-11-16 19:56:11 -080097CTEMPLATE_TAR=${EXTERNALS}/ctemplate-${CTEMPLATE_VERSION}.tar.gz
98CTEMPLATE_DIR=${COMPILED}/ctemplate-${CTEMPLATE_VERSION}
brians343bc112013-02-10 01:53:46 +000099CTEMPLATE_PREFIX=${CTEMPLATE_DIR}-prefix
100CTEMPLATE_LIB=${CTEMPLATE_PREFIX}/lib/libctemplate.a
Brian Silverman8efe23e2013-07-07 23:31:37 -0700101CTEMPLATE_URL=http://ctemplate.googlecode.com
102if [[ "${CTEMPLATE_VERSION}" =~ /\./ ]]; then
103 CTEMPLATE_URL=${CTEMPLATE_URL}/files/ctemplate-${CTEMPLATE_VERSION}.tar.gz
Brian Silvermanf10de2a2013-11-16 19:56:11 -0800104 [ -f ${CTEMPLATE_TAR} ] || \
105 wget ${CTEMPLATE_URL} -O ${CTEMPLATE_TAR}
Brian Silverman8efe23e2013-07-07 23:31:37 -0700106 [ -d ${CTEMPLATE_DIR} ] || ( mkdir ${CTEMPLATE_DIR} && tar \
Brian Silvermanf10de2a2013-11-16 19:56:11 -0800107 --strip-components=1 -C ${CTEMPLATE_DIR} -xf ${CTEMPLATE_TAR} )
Brian Silverman8efe23e2013-07-07 23:31:37 -0700108else
109 CTEMPLATE_URL=${CTEMPLATE_URL}/svn/trunk
110 [ -d ${CTEMPLATE_DIR} ] || \
111 svn checkout ${CTEMPLATE_URL} -r ${CTEMPLATE_VERSION} ${CTEMPLATE_DIR}
112fi
Brian Silverman63cf2412013-11-17 05:44:36 -0800113[ -f ${CTEMPLATE_LIB} ] || bash -c "cd ${CTEMPLATE_DIR} && \
114 ./configure --disable-shared \
115 ${CONFIGURE_FLAGS} --prefix=`readlink -f ${CTEMPLATE_PREFIX}` \
116 && make && make install"
Brian Silverman798c7782013-03-28 16:48:02 -0700117
118# get and build gflags
119GFLAGS_VERSION=2.0
Brian Silvermanf10de2a2013-11-16 19:56:11 -0800120GFLAGS_TAR=${EXTERNALS}/gflags-${GFLAGS_VERSION}.tar.gz
121GFLAGS_DIR=${COMPILED}/gflags-${GFLAGS_VERSION}
Brian Silverman798c7782013-03-28 16:48:02 -0700122GFLAGS_PREFIX=${GFLAGS_DIR}-prefix
123GFLAGS_LIB=${GFLAGS_PREFIX}/lib/libgflags.a
124GFLAGS_URL=https://gflags.googlecode.com/files/gflags-${GFLAGS_VERSION}.tar.gz
Brian Silvermanf10de2a2013-11-16 19:56:11 -0800125[ -f ${GFLAGS_TAR} ] || wget ${GFLAGS_URL} -O ${GFLAGS_TAR}
Brian Silverman798c7782013-03-28 16:48:02 -0700126[ -d ${GFLAGS_DIR} ] || ( mkdir ${GFLAGS_DIR} && tar \
Brian Silvermanf10de2a2013-11-16 19:56:11 -0800127 --strip-components=1 -C ${GFLAGS_DIR} -xf ${GFLAGS_TAR} )
Brian Silverman63cf2412013-11-17 05:44:36 -0800128[ -f ${GFLAGS_LIB} ] || bash -c "cd ${GFLAGS_DIR} && ./configure \
129 ${CONFIGURE_FLAGS} --prefix=`readlink -f ${GFLAGS_PREFIX}` \
130 && make && make install"
Brian Silverman798c7782013-03-28 16:48:02 -0700131
Brian Silverman8efe23e2013-07-07 23:31:37 -0700132# get and build libevent
133LIBEVENT_VERSION=2.0.21
Brian Silvermanf10de2a2013-11-16 19:56:11 -0800134LIBEVENT_TAR=${EXTERNALS}/libevent-${LIBEVENT_VERSION}.tar.gz
135LIBEVENT_DIR=${COMPILED}/libevent-${LIBEVENT_VERSION}
Brian Silverman8efe23e2013-07-07 23:31:37 -0700136LIBEVENT_PREFIX=${LIBEVENT_DIR}-prefix
137LIBEVENT_LIB=${LIBEVENT_PREFIX}/lib/libevent.a
138LIBEVENT_URL=https://github.com/downloads/libevent/libevent
139LIBEVENT_URL=${LIBEVENT_URL}/libevent-${LIBEVENT_VERSION}-stable.tar.gz
Brian Silvermanf10de2a2013-11-16 19:56:11 -0800140[ -f ${LIBEVENT_TAR} ] || wget ${LIBEVENT_URL} -O ${LIBEVENT_TAR}
Brian Silverman8efe23e2013-07-07 23:31:37 -0700141[ -d ${LIBEVENT_DIR} ] || ( mkdir ${LIBEVENT_DIR} && tar \
Brian Silvermanf10de2a2013-11-16 19:56:11 -0800142 --strip-components=1 -C ${LIBEVENT_DIR} -xf ${LIBEVENT_TAR} )
Brian Silverman63cf2412013-11-17 05:44:36 -0800143[ -f ${LIBEVENT_LIB} ] || bash -c "cd ${LIBEVENT_DIR} && ./configure \
144 ${CONFIGURE_FLAGS} --prefix=`readlink -f ${LIBEVENT_PREFIX}` \
145 && make && make install"
146
147# get and build gmp
148GMP_VERSION=5.1.3
149GMP_TAR=${EXTERNALS}/gmp-${GMP_VERSION}.tar.lz
150GMP_DIR=${COMPILED}/gmp-${GMP_VERSION}
151GMP_PREFIX=${GMP_DIR}-prefix
152GMP_LIB=${GMP_PREFIX}/lib/libgmp.a
Daniel Petti059be422013-12-14 19:47:42 -0800153GMP_URL=ftp://ftp.gmplib.org/pub/gmp/gmp-${GMP_VERSION}.tar.lz
Brian Silverman63cf2412013-11-17 05:44:36 -0800154[ -f ${GMP_TAR} ] || wget ${GMP_URL} -O ${GMP_TAR}
155[ -d ${GMP_DIR} ] || ( mkdir ${GMP_DIR} && tar \
156 --strip-components=1 -C ${GMP_DIR} -xf ${GMP_TAR} )
157[ -f ${GMP_LIB} ] || bash -c "cd ${GMP_DIR} && ./configure \
158 ${CONFIGURE_FLAGS} --prefix=$(readlink -f ${GMP_PREFIX}) \
159 && make && make install"
Austin Schuh69155282013-10-27 14:52:35 -0700160
161# get and build libcdd
162LIBCDD_VERSION=094g
Brian Silvermanf10de2a2013-11-16 19:56:11 -0800163LIBCDD_TAR=${EXTERNALS}/libcdd-${LIBCDD_VERSION}.tar.gz
164LIBCDD_DIR=${COMPILED}/libcdd-${LIBCDD_VERSION}
Austin Schuh69155282013-10-27 14:52:35 -0700165LIBCDD_PREFIX=${LIBCDD_DIR}-prefix
166LIBCDD_LIB=${LIBCDD_PREFIX}/lib/libcdd.a
167LIBCDD_URL=ftp://ftp.ifor.math.ethz.ch/pub/fukuda/cdd/cddlib-${LIBCDD_VERSION}.tar.gz
Brian Silvermanf10de2a2013-11-16 19:56:11 -0800168[ -f ${LIBCDD_TAR} ] || \
169 wget ${LIBCDD_URL} -O ${LIBCDD_TAR}
Austin Schuh69155282013-10-27 14:52:35 -0700170[ -d ${LIBCDD_DIR} ] || ( mkdir ${LIBCDD_DIR} && tar \
Brian Silvermanf10de2a2013-11-16 19:56:11 -0800171 --strip-components=1 -C ${LIBCDD_DIR} -xf ${LIBCDD_TAR} )
Brian Silverman9b7a6842014-05-05 16:19:11 -0700172[ -f ${LIBCDD_LIB} ] || \
Brian Silverman63cf2412013-11-17 05:44:36 -0800173 bash -c "cd ${LIBCDD_DIR} && ./configure \
174 --disable-shared ${CONFIGURE_FLAGS} \
Brian Silvermanabe55a02014-12-29 21:36:17 -0800175 LDFLAGS=\"${ALL_LDFLAGS} -L${GMP_PREFIX}/lib\" \
Brian Silverman63cf2412013-11-17 05:44:36 -0800176 --prefix=$(readlink -f ${LIBCDD_PREFIX}) \
177 && make gmpdir=${GMP_PREFIX} && make install"
Brian Silvermanf10de2a2013-11-16 19:56:11 -0800178
Brian Silvermanabe55a02014-12-29 21:36:17 -0800179# get and build libunwind
180LIBUNWIND_VERSION=1.1
181LIBUNWIND_TAR=${EXTERNALS}/libunwind-${LIBUNWIND_VERSION}.tar.gz
182LIBUNWIND_DIR=${COMPILED}/libunwind-${LIBUNWIND_VERSION}
183LIBUNWIND_PREFIX=${LIBUNWIND_DIR}-prefix
184LIBUNWIND_LIB=${LIBUNWIND_PREFIX}/lib/libunwind.a
185LIBUNWIND_URL=http://download.savannah.gnu.org/releases/libunwind/libunwind-${LIBUNWIND_VERSION}.tar.gz
186[ -f ${LIBUNWIND_TAR} ] || \
187 wget ${LIBUNWIND_URL} -O ${LIBUNWIND_TAR}
188[ -d ${LIBUNWIND_DIR} ] || ( mkdir ${LIBUNWIND_DIR} && tar \
189 --strip-components=1 -C ${LIBUNWIND_DIR} -xf ${LIBUNWIND_TAR} )
190[ -f ${LIBUNWIND_LIB} ] || \
191 bash -c "cd ${LIBUNWIND_DIR} && ./configure \
192 --prefix=$(readlink -f ${LIBUNWIND_PREFIX}) \
193 ${CONFIGURE_FLAGS} \
194 && make && make install"
195
196# get and build gperftools
197GPERFTOOLS_VERSION=2.3
198GPERFTOOLS_TAR=${EXTERNALS}/gperftools-${GPERFTOOLS_VERSION}.tar.gz
199GPERFTOOLS_DIR=${COMPILED}/gperftools-${GPERFTOOLS_VERSION}
200GPERFTOOLS_PREFIX=${GPERFTOOLS_DIR}-prefix
201TCMALLOC_LIB=${GPERFTOOLS_PREFIX}/lib/libtcmalloc.a
202GPERFTOOLS_URL=https://googledrive.com/host/0B6NtGsLhIcf7MWxMMF9JdTN3UVk/gperftools-2.3.tar.gz
203[ -f ${GPERFTOOLS_TAR} ] || \
204 wget ${GPERFTOOLS_URL} -O ${GPERFTOOLS_TAR}
205[ -d ${GPERFTOOLS_DIR} ] || ( mkdir ${GPERFTOOLS_DIR} && tar \
206 --strip-components=1 -C ${GPERFTOOLS_DIR} -xf ${GPERFTOOLS_TAR} )
207[ -f ${TCMALLOC_LIB} ] || \
208 bash -c "cd ${GPERFTOOLS_DIR} && ./configure \
209 ${CONFIGURE_FLAGS} --prefix=$(readlink -f ${GPERFTOOLS_PREFIX}) \
210 LDFLAGS=\"${ALL_LDFLAGS} -L${LIBUNWIND_PREFIX}/lib -Wl,-rpath-link=${LIBUNWIND_PREFIX}/lib\" \
211 CPPFLAGS=\"-I ${LIBUNWIND_PREFIX}/include\" \
212 && make && make install"
213
Brian Silvermanf10de2a2013-11-16 19:56:11 -0800214rm -rf ${TMPDIR}