3b890c28d362a4bd6138e8915ce68ba4bbb1c772
[lttng-ci.git] / scripts / lttng-ust / build.sh
1 #!/bin/bash -exu
2 #
3 # Copyright (C) 2015 - Jonathan Rajotte-Julien <jonathan.rajotte-julien@efficios.com>
4 #
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation, either version 3 of the License, or
8 # (at your option) any later version.
9 #
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
14 #
15 # You should have received a copy of the GNU General Public License
16 # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18
19 # Create build directory
20 rm -rf $WORKSPACE/build
21 mkdir -p $WORKSPACE/build
22
23 # liburcu
24 URCU_INCS="$WORKSPACE/deps/liburcu/build/include/"
25 URCU_LIBS="$WORKSPACE/deps/liburcu/build/lib/"
26
27
28 PREFIX="$WORKSPACE/build"
29
30 # Set platform variables
31 case "$arch" in
32 *)
33 MAKE=make
34 TAR=tar
35 NPROC=nproc
36 BISON="bison"
37 YACC="$BISON -y"
38 CFLAGS=""
39 ;;
40 esac
41
42 # Export build flags
43 export CPPFLAGS="-I$URCU_INCS"
44 export LDFLAGS="-L$URCU_LIBS"
45 export LD_LIBRARY_PATH="$URCU_LIBS:${LD_LIBRARY_PATH:-}"
46
47
48 # Set configure options for each build configuration
49 CONF_OPTS=""
50 case "$conf" in
51 static)
52 # Unsupported! liblttng-ust can't pull in it's static (.a) dependencies.
53 echo "Static build"
54 CONF_OPTS="--enable-static --disable-shared"
55 ;;
56
57 java-agent)
58 echo "Java agent build"
59 export CLASSPATH="/usr/share/java/log4j-1.2.jar"
60 CONF_OPTS="--enable-java-agent-all"
61 ;;
62
63 python-agent)
64 echo "Python agent build"
65 CONF_OPTS="--enable-python-agent"
66 ;;
67
68 *)
69 echo "Standard build"
70 CONF_OPTS=""
71 ;;
72 esac
73
74
75 # Run bootstrap prior to configure
76 ./bootstrap
77
78
79 # Build type
80 # oot : out-of-tree build
81 # dist: build via make dist
82 # * : normal tree build
83 #
84 # Make sure to move to the build_path and configure
85 # before continuing
86 BUILD_PATH=$WORKSPACE
87 case "$build" in
88 oot)
89 echo "Out of tree build"
90 BUILD_PATH=$WORKSPACE/oot
91 mkdir -p $BUILD_PATH
92 cd $BUILD_PATH
93 $WORKSPACE/configure --prefix=$PREFIX $CONF_OPTS
94 ;;
95
96 dist)
97 echo "Distribution out of tree build"
98 BUILD_PATH=`mktemp -d`
99
100 # Initial configure and generate tarball
101 ./configure
102 $MAKE dist
103
104 mkdir -p $BUILD_PATH
105 cp *.tar.* $BUILD_PATH/
106 cd $BUILD_PATH
107
108 # Ignore level 1 of tar
109 $TAR xvf *.tar.* --strip 1
110
111 $BUILD_PATH/configure --prefix=$PREFIX $CONF_OPTS
112 ;;
113
114 *)
115 BUILD_PATH=$WORKSPACE
116 echo "Standard tree build"
117 $WORKSPACE/configure --prefix=$PREFIX $CONF_OPTS
118 ;;
119 esac
120
121 # BUILD!
122 $MAKE -j `$NPROC` V=1
123 $MAKE install
124
125 # Run tests
126 rm -rf $WORKSPACE/tap
127 mkdir -p $WORKSPACE/tap/unit
128
129 cd $BUILD_PATH/tests
130
131 prove --merge --exec '' - < $BUILD_PATH/tests/unit_tests --archive $WORKSPACE/tap/unit/ || true
132
133 # TAP plugin is having a hard time with .yml files.
134 rm -f $WORKSPACE/tap/unit/meta.yml
135
136 # And also with files without extension, so rename all result to *.tap
137 find $WORKSPACE/tap/unit/ -type f -exec mv {} {}.tap \;
138
139 # Cleanup
140 $MAKE clean
141
142 # Cleanup rpath in executables and shared libraries
143 find $WORKSPACE/build/lib -name "*.so" -exec chrpath --delete {} \;
144
145 # Remove libtool .la files
146 find $WORKSPACE/build/lib -name "*.la" -exec rm -f {} \;
147
148 # Clean temp dir for dist build
149 if [ "$build" = "dist" ]; then
150 cd $WORKSPACE
151 rm -rf $BUILD_PATH
152 fi
153
154 # EOF
This page took 0.033774 seconds and 4 git commands to generate.