blob: 32910880de18a957cd04a22087739bed073f5e33 [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 Silverman41abe012014-02-08 18:25:02 -08009if [ "$1" == "arm" ]; then
10 COMPILED=${EXTERNALS}/../compiled-arm
Brian Silverman1e8ddfe2013-12-19 16:20:53 -080011
Brian Silverman41abe012014-02-08 18:25:02 -080012 CROSS_COMPILE=arm-linux-gnueabihf-
13
14 export CC=${CROSS_COMPILE}gcc-4.7
15 export CXX=${CROSS_COMPILE}g++-4.7
16 export CFLAGS="-mcpu=cortex-a8 -mfpu=neon"
17 export CXXFLAGS="-mcpu=cortex-a8 -mfpu=neon"
18 export OBJDUMP=${CROSS_COMPILE}objdump
19 # Flags that should get passed to all configure scripts.
20 # Some of them need to set LDFLAGS separately to work around stupid configure
21 # scripts, so we can't just set that here.
22 CONFIGURE_FLAGS="--host=arm-linux-gnueabihf CC=${CC} CXX=${CXX} CFLAGS=\"${CFLAGS}\" CXXFLAGS=\"${CXXFLAGS}\" OBJDUMP=${OBJDUMP}"
Brian Silvermana29ebf92014-04-23 13:08:49 -050023 IS_CRIO=0
24elif [ "$1" == "amd64" ]; then
Brian Silverman41abe012014-02-08 18:25:02 -080025 COMPILED=${EXTERNALS}/../compiled-amd64
26
27 export CFLAGS="-march=atom -mfpmath=sse"
28 export CXXFLAGS="-march=atom -mfpmath=sse"
29 CONFIGURE_FLAGS="CFLAGS=\"${CFLAGS}\" CXXFLAGS=\"${CXXFLAGS}\""
Brian Silvermana29ebf92014-04-23 13:08:49 -050030 IS_CRIO=0
31elif [ "$1" == "crio" ]; then
32 IS_CRIO=1
33else
34 echo "Unknown platform $1 to download externals for." 1>&2
35 exit 1
Brian Silverman41abe012014-02-08 18:25:02 -080036fi
Brian Silvermanf10de2a2013-11-16 19:56:11 -080037
38TMPDIR=/tmp/$$-aos-tmpdir
39mkdir -p ${EXTERNALS}
Brian Silvermanb3d50542014-04-23 14:28:55 -050040[[ -n "${COMPILED}" ]] && mkdir -p ${COMPILED}
Brian Silvermanf10de2a2013-11-16 19:56:11 -080041
42# get and build ninja
43[ -d ${NINJA_DIR} ] || git clone --branch ${NINJA_RELEASE} https://github.com/martine/ninja.git ${NINJA_DIR}
Brian Silverman248053a2013-12-11 14:56:31 -080044[ -x ${NINJA} ] || env -i "PATH=$PATH" ${NINJA_DIR}/bootstrap.py
Brian Silvermanf10de2a2013-11-16 19:56:11 -080045
46# get gyp
47[ -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 +000048
49# get gccdist
50GCCDIST=${EXTERNALS}/gccdist
51[ -f ${GCCDIST}.zip ] || wget ftp://ftp.ni.com/pub/devzone/tut/updated_vxworks63gccdist.zip -O ${GCCDIST}.zip
52[ -d ${GCCDIST} ] || ( cd ${EXTERNALS} && unzip -q ${GCCDIST}.zip )
53
54# get eigen
Brian Silverman87bfd112014-04-08 19:48:51 -070055EIGEN_VERSION=3.2.1
brians343bc112013-02-10 01:53:46 +000056EIGEN_DIR=${EXTERNALS}/eigen-${EIGEN_VERSION}
57[ -f ${EIGEN_DIR}.tar.bz2 ] || wget http://bitbucket.org/eigen/eigen/get/${EIGEN_VERSION}.tar.bz2 -O ${EIGEN_DIR}.tar.bz2
58[ -d ${EIGEN_DIR} ] || ( mkdir ${EIGEN_DIR} && tar --strip-components=1 -C ${EIGEN_DIR} -xf ${EIGEN_DIR}.tar.bz2 )
59
Brian Silvermana29ebf92014-04-23 13:08:49 -050060# get the LLVM Compiler-RT source
61COMPILER_RT_TAG=RELEASE_32/final
62COMPILER_RT_VERSION=`echo ${COMPILER_RT_TAG} | sed s:/:_:`
63COMPILER_RT_DIR=${EXTERNALS}/compiler-rt-${COMPILER_RT_VERSION}
64COMPILER_RT_URL=http://llvm.org/svn/llvm-project/compiler-rt/tags/${COMPILER_RT_TAG}
65[ -d ${COMPILER_RT_DIR} ] || svn checkout ${COMPILER_RT_URL} ${COMPILER_RT_DIR}
66
67# get gtest
68GTEST_VERSION=1.6.0
69GTEST_DIR=${EXTERNALS}/gtest-${GTEST_VERSION}-p1
70GTEST_ZIP=${EXTERNALS}/gtest-${GTEST_VERSION}.zip
71[ -f ${GTEST_ZIP} ] || wget http://googletest.googlecode.com/files/gtest-${GTEST_VERSION}.zip -O ${GTEST_ZIP}
72[ -d ${GTEST_DIR} ] || ( unzip ${GTEST_ZIP} -d ${TMPDIR} && mv ${TMPDIR}/gtest-${GTEST_VERSION} ${GTEST_DIR} && cd ${GTEST_DIR} && patch -p1 < ${AOS}/externals/gtest.patch )
73
74[[ ${IS_CRIO} -eq 1 ]] && exit 0
75
brians343bc112013-02-10 01:53:46 +000076# get and build libjpeg
77LIBJPEG_VERSION=8d
Brian Silverman4ffc6542013-11-18 23:41:56 -080078LIBJPEG_DIR=${COMPILED}/jpeg-${LIBJPEG_VERSION}
brians343bc112013-02-10 01:53:46 +000079# NOTE: this directory ends up in #include names
Brian Silvermanf10de2a2013-11-16 19:56:11 -080080LIBJPEG_PREFIX=${COMPILED}/libjpeg
brians343bc112013-02-10 01:53:46 +000081LIBJPEG_LIB=${LIBJPEG_PREFIX}/lib/libjpeg.a
82LIBJPEG_TAR=${EXTERNALS}/jpegsrc.v${LIBJPEG_VERSION}.tar.gz
83[ -f ${LIBJPEG_TAR} ] || wget http://www.ijg.org/files/jpegsrc.v${LIBJPEG_VERSION}.tar.gz -O ${LIBJPEG_TAR}
84[ -d ${LIBJPEG_DIR} ] || ( mkdir ${LIBJPEG_DIR} && tar --strip-components=1 -C ${LIBJPEG_DIR} -xf ${LIBJPEG_TAR} )
Brian Silverman63cf2412013-11-17 05:44:36 -080085[ -f ${LIBJPEG_LIB} ] || bash -c \
86 "cd ${LIBJPEG_DIR} && ./configure --disable-shared \
87 ${CONFIGURE_FLAGS} --prefix=`readlink -f ${LIBJPEG_PREFIX}` \
88 && make && make install"
brians343bc112013-02-10 01:53:46 +000089
brians343bc112013-02-10 01:53:46 +000090# get and build ctemplate
Brian Silverman8efe23e2013-07-07 23:31:37 -070091# This is the next revision after the 2.2 release and it only adds spaces to
92# make gcc 4.7 with --std=c++11 happy (user-defined string literals...).
93CTEMPLATE_VERSION=129
Brian Silvermanf10de2a2013-11-16 19:56:11 -080094CTEMPLATE_TAR=${EXTERNALS}/ctemplate-${CTEMPLATE_VERSION}.tar.gz
95CTEMPLATE_DIR=${COMPILED}/ctemplate-${CTEMPLATE_VERSION}
brians343bc112013-02-10 01:53:46 +000096CTEMPLATE_PREFIX=${CTEMPLATE_DIR}-prefix
97CTEMPLATE_LIB=${CTEMPLATE_PREFIX}/lib/libctemplate.a
Brian Silverman8efe23e2013-07-07 23:31:37 -070098CTEMPLATE_URL=http://ctemplate.googlecode.com
99if [[ "${CTEMPLATE_VERSION}" =~ /\./ ]]; then
100 CTEMPLATE_URL=${CTEMPLATE_URL}/files/ctemplate-${CTEMPLATE_VERSION}.tar.gz
Brian Silvermanf10de2a2013-11-16 19:56:11 -0800101 [ -f ${CTEMPLATE_TAR} ] || \
102 wget ${CTEMPLATE_URL} -O ${CTEMPLATE_TAR}
Brian Silverman8efe23e2013-07-07 23:31:37 -0700103 [ -d ${CTEMPLATE_DIR} ] || ( mkdir ${CTEMPLATE_DIR} && tar \
Brian Silvermanf10de2a2013-11-16 19:56:11 -0800104 --strip-components=1 -C ${CTEMPLATE_DIR} -xf ${CTEMPLATE_TAR} )
Brian Silverman8efe23e2013-07-07 23:31:37 -0700105else
106 CTEMPLATE_URL=${CTEMPLATE_URL}/svn/trunk
107 [ -d ${CTEMPLATE_DIR} ] || \
108 svn checkout ${CTEMPLATE_URL} -r ${CTEMPLATE_VERSION} ${CTEMPLATE_DIR}
109fi
Brian Silverman63cf2412013-11-17 05:44:36 -0800110[ -f ${CTEMPLATE_LIB} ] || bash -c "cd ${CTEMPLATE_DIR} && \
111 ./configure --disable-shared \
112 ${CONFIGURE_FLAGS} --prefix=`readlink -f ${CTEMPLATE_PREFIX}` \
113 && make && make install"
Brian Silverman798c7782013-03-28 16:48:02 -0700114
115# get and build gflags
116GFLAGS_VERSION=2.0
Brian Silvermanf10de2a2013-11-16 19:56:11 -0800117GFLAGS_TAR=${EXTERNALS}/gflags-${GFLAGS_VERSION}.tar.gz
118GFLAGS_DIR=${COMPILED}/gflags-${GFLAGS_VERSION}
Brian Silverman798c7782013-03-28 16:48:02 -0700119GFLAGS_PREFIX=${GFLAGS_DIR}-prefix
120GFLAGS_LIB=${GFLAGS_PREFIX}/lib/libgflags.a
121GFLAGS_URL=https://gflags.googlecode.com/files/gflags-${GFLAGS_VERSION}.tar.gz
Brian Silvermanf10de2a2013-11-16 19:56:11 -0800122[ -f ${GFLAGS_TAR} ] || wget ${GFLAGS_URL} -O ${GFLAGS_TAR}
Brian Silverman798c7782013-03-28 16:48:02 -0700123[ -d ${GFLAGS_DIR} ] || ( mkdir ${GFLAGS_DIR} && tar \
Brian Silvermanf10de2a2013-11-16 19:56:11 -0800124 --strip-components=1 -C ${GFLAGS_DIR} -xf ${GFLAGS_TAR} )
Brian Silverman63cf2412013-11-17 05:44:36 -0800125[ -f ${GFLAGS_LIB} ] || bash -c "cd ${GFLAGS_DIR} && ./configure \
126 ${CONFIGURE_FLAGS} --prefix=`readlink -f ${GFLAGS_PREFIX}` \
127 && make && make install"
Brian Silverman798c7782013-03-28 16:48:02 -0700128
Brian Silverman8efe23e2013-07-07 23:31:37 -0700129# get and build libevent
130LIBEVENT_VERSION=2.0.21
Brian Silvermanf10de2a2013-11-16 19:56:11 -0800131LIBEVENT_TAR=${EXTERNALS}/libevent-${LIBEVENT_VERSION}.tar.gz
132LIBEVENT_DIR=${COMPILED}/libevent-${LIBEVENT_VERSION}
Brian Silverman8efe23e2013-07-07 23:31:37 -0700133LIBEVENT_PREFIX=${LIBEVENT_DIR}-prefix
134LIBEVENT_LIB=${LIBEVENT_PREFIX}/lib/libevent.a
135LIBEVENT_URL=https://github.com/downloads/libevent/libevent
136LIBEVENT_URL=${LIBEVENT_URL}/libevent-${LIBEVENT_VERSION}-stable.tar.gz
Brian Silvermanf10de2a2013-11-16 19:56:11 -0800137[ -f ${LIBEVENT_TAR} ] || wget ${LIBEVENT_URL} -O ${LIBEVENT_TAR}
Brian Silverman8efe23e2013-07-07 23:31:37 -0700138[ -d ${LIBEVENT_DIR} ] || ( mkdir ${LIBEVENT_DIR} && tar \
Brian Silvermanf10de2a2013-11-16 19:56:11 -0800139 --strip-components=1 -C ${LIBEVENT_DIR} -xf ${LIBEVENT_TAR} )
Brian Silverman63cf2412013-11-17 05:44:36 -0800140[ -f ${LIBEVENT_LIB} ] || bash -c "cd ${LIBEVENT_DIR} && ./configure \
141 ${CONFIGURE_FLAGS} --prefix=`readlink -f ${LIBEVENT_PREFIX}` \
142 && make && make install"
143
144# get and build gmp
145GMP_VERSION=5.1.3
146GMP_TAR=${EXTERNALS}/gmp-${GMP_VERSION}.tar.lz
147GMP_DIR=${COMPILED}/gmp-${GMP_VERSION}
148GMP_PREFIX=${GMP_DIR}-prefix
149GMP_LIB=${GMP_PREFIX}/lib/libgmp.a
Daniel Petti059be422013-12-14 19:47:42 -0800150GMP_URL=ftp://ftp.gmplib.org/pub/gmp/gmp-${GMP_VERSION}.tar.lz
Brian Silverman63cf2412013-11-17 05:44:36 -0800151[ -f ${GMP_TAR} ] || wget ${GMP_URL} -O ${GMP_TAR}
152[ -d ${GMP_DIR} ] || ( mkdir ${GMP_DIR} && tar \
153 --strip-components=1 -C ${GMP_DIR} -xf ${GMP_TAR} )
154[ -f ${GMP_LIB} ] || bash -c "cd ${GMP_DIR} && ./configure \
155 ${CONFIGURE_FLAGS} --prefix=$(readlink -f ${GMP_PREFIX}) \
156 && make && make install"
Austin Schuh69155282013-10-27 14:52:35 -0700157
158# get and build libcdd
159LIBCDD_VERSION=094g
Brian Silvermanf10de2a2013-11-16 19:56:11 -0800160LIBCDD_TAR=${EXTERNALS}/libcdd-${LIBCDD_VERSION}.tar.gz
161LIBCDD_DIR=${COMPILED}/libcdd-${LIBCDD_VERSION}
Austin Schuh69155282013-10-27 14:52:35 -0700162LIBCDD_PREFIX=${LIBCDD_DIR}-prefix
163LIBCDD_LIB=${LIBCDD_PREFIX}/lib/libcdd.a
164LIBCDD_URL=ftp://ftp.ifor.math.ethz.ch/pub/fukuda/cdd/cddlib-${LIBCDD_VERSION}.tar.gz
Brian Silvermanf10de2a2013-11-16 19:56:11 -0800165[ -f ${LIBCDD_TAR} ] || \
166 wget ${LIBCDD_URL} -O ${LIBCDD_TAR}
Austin Schuh69155282013-10-27 14:52:35 -0700167[ -d ${LIBCDD_DIR} ] || ( mkdir ${LIBCDD_DIR} && tar \
Brian Silvermanf10de2a2013-11-16 19:56:11 -0800168 --strip-components=1 -C ${LIBCDD_DIR} -xf ${LIBCDD_TAR} )
Brian Silverman63cf2412013-11-17 05:44:36 -0800169[ -f ${LIBCDD_LIB} ] || LDFLAGS=-L${GMP_PREFIX}/lib \
170 bash -c "cd ${LIBCDD_DIR} && ./configure \
171 --disable-shared ${CONFIGURE_FLAGS} \
172 --prefix=$(readlink -f ${LIBCDD_PREFIX}) \
173 && make gmpdir=${GMP_PREFIX} && make install"
Brian Silvermanf10de2a2013-11-16 19:56:11 -0800174
Brian Silverman3aa0d542014-01-25 17:16:43 -0800175# download stm32flash
176STM32FLASH_COMMIT=8399fbe1baf2b7d097746786458021d92895d71b
177STM32FLASH_DIR=${EXTERNALS}/stm32flash-${STM32FLASH_COMMIT}
178STM32FLASH_URL=https://git.gitorious.org/stm32flash/stm32flash.git
179[ -d ${STM32FLASH_DIR} ] || ( mkdir ${STM32FLASH_DIR} && \
180 git clone ${STM32FLASH_URL} ${STM32FLASH_DIR}/stm32flash && \
181 cd ${STM32FLASH_DIR}/stm32flash && git checkout ${STM32FLASH_COMMIT} )
182
Brian Silvermanf10de2a2013-11-16 19:56:11 -0800183rm -rf ${TMPDIR}