]>
Commit | Line | Data |
---|---|---|
826bc7b6 TG |
1 | #!/bin/bash |
2 | ||
de0ae686 TG |
3 | set -o errexit |
4 | ||
826bc7b6 | 5 | KERNELSRC="" |
ecc3c395 | 6 | CFLAGS="-Werror" |
b9aa727c | 7 | SPARSE_FLAGS="" |
517f9311 | 8 | EXTRA_OPTS="" |
826bc7b6 TG |
9 | |
10 | function install_kernel() | |
11 | { | |
517f9311 TG |
12 | if [[ "$1" =~ ^3.* ]]; then |
13 | PREFIX="v3.x" | |
14 | else | |
15 | PREFIX="v2.6/longterm/v2.6.32" | |
16 | fi | |
17 | ||
18 | wget https://www.kernel.org/pub/linux/kernel/${PREFIX}/linux-${1}.tar.gz | |
19 | tar xzvf linux-${1}.tar.gz > /dev/null | |
20 | cd linux-${1} | |
de0ae686 | 21 | make allmodconfig |
517f9311 TG |
22 | |
23 | # Older kernels do not include openvswitch | |
24 | if [ -d "net/openvswitch" ]; then | |
25 | make net/openvswitch/ | |
26 | else | |
27 | make net/bridge/ | |
28 | fi | |
29 | ||
de0ae686 | 30 | KERNELSRC=$(pwd) |
517f9311 TG |
31 | if [ ! "$DPDK" ]; then |
32 | EXTRA_OPTS="--with-linux=$(pwd)" | |
33 | fi | |
de0ae686 TG |
34 | echo "Installed kernel source in $(pwd)" |
35 | cd .. | |
826bc7b6 TG |
36 | } |
37 | ||
38 | function install_dpdk() | |
39 | { | |
6c3cc113 SS |
40 | if [ -n "$DPDK_GIT" ]; then |
41 | git clone $DPDK_GIT dpdk-$1 | |
42 | cd dpdk-$1 | |
43 | git checkout v$1 | |
44 | else | |
45 | wget http://www.dpdk.org/browse/dpdk/snapshot/dpdk-$1.tar.gz | |
46 | tar xzvf dpdk-$1.tar.gz > /dev/null | |
47 | cd dpdk-$1 | |
48 | fi | |
de0ae686 | 49 | find ./ -type f | xargs sed -i 's/max-inline-insns-single=100/max-inline-insns-single=400/' |
ecc3c395 | 50 | sed -ri 's,(CONFIG_RTE_BUILD_COMBINE_LIBS=).*,\1y,' config/common_linuxapp |
7f2f24e3 SM |
51 | sed -ri '/CONFIG_RTE_LIBNAME/a CONFIG_RTE_BUILD_FPIC=y' config/common_linuxapp |
52 | sed -ri '/EXECENV_CFLAGS = -pthread -fPIC/{s/$/\nelse ifeq ($(CONFIG_RTE_BUILD_FPIC),y)/;s/$/\nEXECENV_CFLAGS = -pthread -fPIC/}' mk/exec-env/linuxapp/rte.vars.mk | |
de0ae686 TG |
53 | make config CC=gcc T=x86_64-native-linuxapp-gcc |
54 | make CC=gcc RTE_KERNELDIR=$KERNELSRC | |
de0ae686 TG |
55 | echo "Installed DPDK source in $(pwd)" |
56 | cd .. | |
826bc7b6 TG |
57 | } |
58 | ||
59 | function configure_ovs() | |
60 | { | |
61 | ./boot.sh && ./configure $* | |
826bc7b6 TG |
62 | } |
63 | ||
64 | if [ "$KERNEL" ] || [ "$DPDK" ]; then | |
517f9311 | 65 | install_kernel $KERNEL |
826bc7b6 TG |
66 | fi |
67 | ||
67af7d70 | 68 | if [ "$DPDK" ]; then |
6c3cc113 | 69 | if [ -z "$DPDK_VER" ]; then |
b8e57534 | 70 | DPDK_VER="1.8.0" |
6c3cc113 SS |
71 | fi |
72 | install_dpdk $DPDK_VER | |
b8e57534 | 73 | # Disregard bad function casts until DPDK is fixed |
ecc3c395 | 74 | CFLAGS="$CFLAGS -Wno-error=bad-function-cast -Wno-error=cast-align" |
6c3cc113 | 75 | EXTRA_OPTS+="--with-dpdk=./dpdk-$DPDK_VER/build" |
67af7d70 TG |
76 | elif [ $CC != "clang" ]; then |
77 | # DPDK headers currently trigger sparse errors | |
b9aa727c | 78 | SPARSE_FLAGS="$SPARSE_FLAGS -Wsparse-error" |
67af7d70 | 79 | fi |
826bc7b6 | 80 | |
517f9311 | 81 | configure_ovs $EXTRA_OPTS $* |
826bc7b6 | 82 | |
517f9311 TG |
83 | # Only build datapath if we are testing kernel w/o running testsuite |
84 | if [ $KERNEL ] && [ ! "$TESTSUITE" ] && [ ! "$DPDK" ]; then | |
85 | cd datapath | |
86 | fi | |
ecc3c395 | 87 | |
826bc7b6 | 88 | if [ $CC = "clang" ]; then |
ecc3c395 | 89 | make CFLAGS="$CFLAGS -Wno-error=unused-command-line-argument" |
b9aa727c TG |
90 | elif [[ $BUILD_ENV =~ "-m32" ]]; then |
91 | # Disable sparse for 32bit builds on 64bit machine | |
92 | make CFLAGS="$CFLAGS $BUILD_ENV" | |
826bc7b6 | 93 | else |
b9aa727c | 94 | make CFLAGS="$CFLAGS $BUILD_ENV $SPARSE_FLAGS" C=1 |
95c9bfd4 BP |
95 | fi |
96 | ||
33a58fc6 | 97 | if [ $TESTSUITE ] && [ $CC != "clang" ]; then |
95c9bfd4 BP |
98 | if ! make distcheck; then |
99 | # testsuite.log is necessary for debugging. | |
100 | cat */_build/tests/testsuite.log | |
101 | exit 1 | |
aeef7193 | 102 | fi |
826bc7b6 TG |
103 | fi |
104 | ||
105 | exit 0 |