Prepare harmattanfb/4.17.12-1
[qtcontacts-tracker:qtcontacts-tracker.git] / configure
1 #!/bin/sh
2 # =================================================================================================
3 # Configures the project's build system
4 # =================================================================================================
5
6 VERSION_MAJOR=4
7 VERSION_MINOR=17
8 VERSION_MICRO=13
9 VERSION_PATCH=
10
11 PACKAGE="libqtcontacts-tracker"
12 VERSION="${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_MICRO}${VERSION_PATCH:+.}${VERSION_PATCH}"
13 VERSION_LABEL="${VERSION}"
14 CONFIGURE_FLAGS="$@"
15 CUBI_REQUIRED_VERSION=0.1.17
16
17 # =================================================================================================
18 # Compute real package version
19 # =================================================================================================
20
21 relpath=`dirname "$0"`
22 changelog="$relpath/debian/changelog"
23
24 if [ -x "/usr/bin/dpkg-parsechangelog" -a -f "$changelog" ]
25 then
26     VERSION_LABEL=`/usr/bin/dpkg-parsechangelog -l"$changelog" | sed -ne 's/^Version: //p'`
27
28     case "${VERSION_LABEL}" in
29     ${VERSION}|${VERSION}[~-]*);;
30     *)
31         echo "ERROR: Package version $VERSION doesn't match changelog version $VERSION_LABEL." >&2
32         exit 1;;
33     esac
34 fi
35
36 # =================================================================================================
37 # Set default values for configuration settings
38 # =================================================================================================
39
40 PREFIX="/usr/local"
41 BINDIR=
42 LIBDIR=
43 INCLUDEDIR=
44 LOCALSTATEDIR=
45 TOP_BUILDDIR=`/bin/pwd`
46 TOP_SOURCEDIR=`cd "$relpath"; /bin/pwd`
47 TARGET_CPU=`c++ -dumpmachine | sed s/-.*//`
48
49 # keep in sync with (default) info in --help output
50 ENABLE_RTTI=yes
51 ENABLE_BUILDDIRS_RPATH=yes
52 ENABLE_CELLULAR=
53 ENABLE_CREDENTIALS=
54 ENABLE_SCHEMA_LIST=yes
55 ENABLE_COVERAGE=no
56 ENABLE_DOCS=no
57
58 # =================================================================================================
59 # Parse command line arguments
60 # =================================================================================================
61
62 while [ "$#" -gt 0 ]
63 do
64     case "$1" in
65     -h|--help)
66         echo "Usage: ./configure [OPTION]..."
67         echo
68         echo "Configuration:"
69         echo "    -h, --help                 display this help and exit"
70         echo
71         echo "Installation directories:"
72         echo "    --prefix=DIR               install everything relative to DIR"
73         echo "                               [/usr/local]"
74         echo
75         echo "Fine tuning of the installation directories:"
76         echo "    --bindir=DIR               user executables [PREFIX/bin]"
77         echo "    --libdir=DIR               object code libraries [PREFIX/lib]"
78         echo "    --includedir=DIR           C header files [PREFIX/include]"
79         echo "    --localstatedir=DIR        modifiable single-machine data [PREFIX/var]"
80         echo
81         echo "Compiling:"
82         echo "    --enable-rtti              compile with Runtime Type Information (default)"
83         echo "    --disable-rtti             do not compile with Runtime Type Information"
84         echo
85         echo "Linking:"
86         echo "    --disable-builddirs-rpath  don't add rpath with builddirs to executables"
87         echo
88         echo "Configure optional features of the package:"
89         echo "    --enable-credentials       check process credentials, basically to ease debugging"
90         echo "    --disable-credentials      don't check process"
91         echo "    --enable-cellular-qt       permit contact handling based on SIM card information"
92         echo "    --disable-cellular-qt      don't consider SIM card information"
93         echo "    --disable-schemalist       don't build schemalist"
94         echo "    --enable-coverage          generate code coverage reports for unit tests"
95         echo "    --disable-coverage         don't generate coverage reports"
96         echo
97         echo "Documentation:"
98         echo "    --enable-docs              build documentation"
99         echo
100         exit
101         ;;
102
103     --prefix|-prefix) shift && PREFIX=$1 ;;
104     --prefix=*) PREFIX=${1#--prefix=} ;;
105
106     --bindir|-bindir) shift && BINDIR=$1 ;;
107     --bindir=*) BINDIR=${1#--bindir=} ;;
108
109     --libdir|-libdir) shift && LIBDIR=$1 ;;
110     --libdir=*) LIBDIR=${1#--libdir=} ;;
111
112     --includedir|-includedir) shift && INCLUDEDIR=$1 ;;
113     --includedir=*) INCLUDEDIR=${1#--includedir=} ;;
114
115     --localstatedir|-localstatedir) shift && LOCALSTATEDIR=$1 ;;
116     --localstatedir=*) LOCALSTATEDIR=${1#--localstatedir=} ;;
117
118     --enable-rtti) ENABLE_RTTI=yes ;;
119     --disable-rtti) ENABLE_RTTI=no ;;
120
121     --enable-builddirs-rpath) ENABLE_BUILDDIRS_RPATH=yes ;;
122     --disable-builddirs-rpath) ENABLE_BUILDDIRS_RPATH=no ;;
123
124     --enable-credentials) ENABLE_CREDENTIALS=yes ;;
125     --disable-credentials) ENABLE_CREDENTIALS=no ;;
126
127     --enable-cellular-qt) ENABLE_CELLULAR=yes ;;
128     --disable-cellular-qt) ENABLE_CELLULAR=no ;;
129
130     --enable-schemalist) ENABLE_SCHEMA_LIST=yes ;;
131     --disable-schemalist) ENABLE_SCHEMA_LIST=no ;;
132
133     --enable-coverage) ENABLE_COVERAGE=yes ;;
134     --disable-coverage) ENABLE_COVERAGE=no ;;
135
136     --enable-docs) ENABLE_DOCS=yes ;;
137     --disable-docs) ENABLE_DOCS=no ;;
138
139
140     *)
141         echo >&2 "configure: error: unrecognized option: '$1'"
142         echo >&2 "Try './configure --help' for more information."
143         exit
144         ;;
145     esac
146     shift
147 done
148
149 # =================================================================================================
150 # Compute values for uninitialized variables
151 # =================================================================================================
152
153 echo "Configuring $PACKAGE $VERSION_LABEL"
154
155 [ -z "$BINDIR" ]        && BINDIR="$PREFIX/bin"
156 [ -z "$LIBDIR" ]        && LIBDIR="$PREFIX/lib"
157 [ -z "$INCLUDEDIR" ]    && INCLUDEDIR="$PREFIX/include"
158 [ -z "$LOCALSTATEDIR" ] && LOCALSTATEDIR="$PREFIX/var"
159
160 echo
161
162 # =================================================================================================
163 # Check for required packages
164 # =================================================================================================
165
166 echo -n "Checking for mssf-qt..."
167
168 if [ -z "$ENABLE_CREDENTIALS" ]
169 then
170     [ "$TARGET_CPU" = "arm" ] &&
171     pkg-config --exists MssfCredsQt &&
172     ENABLE_CREDENTIALS=yes || ENABLE_CREDENTIALS=no
173 fi
174
175 echo " $ENABLE_CREDENTIALS"
176
177 # -------------------------------------------------------------------------------------------------
178
179 echo -n "Checking for CellularQt..."
180
181 if [ -z "$ENABLE_CELLULAR" ]
182 then
183     pkg-config --exists CellularQt sysinfo &&
184     ENABLE_CELLULAR=yes || ENABLE_CELLULAR=no
185 fi
186
187 echo " $ENABLE_CELLULAR"
188
189 # -------------------------------------------------------------------------------------------------
190
191 echo -n "Checking for cubi $CUBI_REQUIRED_VERSION... "
192
193 if pkg-config --exists "cubi-0.1 >= $CUBI_REQUIRED_VERSION"
194 then
195     echo "ok"
196 else
197     echo "not found"
198     exit 1
199 fi
200
201 # -------------------------------------------------------------------------------------------------
202
203 if [ "$ENABLE_DOCS" = "yes" ]
204 then
205     echo -n "Checking for doxygen... "
206
207     DOXYGEN=`which doxygen 2>/dev/null`
208
209     if [ -z "$DOXYGEN" ]
210     then
211         echo "not found"
212         echo "Documentation is enabled but doxygen could not be found"
213         exit 1
214     else
215         echo "ok"
216     fi
217 fi
218
219 # =================================================================================================
220 # List used configuration
221 # =================================================================================================
222 echo "Build schema list... $ENABLE_SCHEMA_LIST"
223 echo "Add rpath with builddirs to executables... $ENABLE_BUILDDIRS_RPATH"
224 echo "Compile with runtime type information (RTTI)... $ENABLE_RTTI"
225 echo "Generate code coverage reports... $ENABLE_COVERAGE"
226 echo
227
228 # =================================================================================================
229 # Save configuration into qmake cache
230 # =================================================================================================
231
232 cachefile=".qmake.cache"
233
234 [ -f "$cachefile" ] && rm -f "$cachefile"
235
236 cat >> "$cachefile" << EOF
237 CONFIGURED = \$\$quote(yes)
238 CONFIGURE_FLAGS = \$\$quote($CONFIGURE_FLAGS)
239 PACKAGE = \$\$quote($PACKAGE)
240 VERSION_LABEL = \$\$quote($VERSION_LABEL)
241 VERSION_MAJOR = \$\$quote($VERSION_MAJOR)
242 VERSION_MINOR = \$\$quote($VERSION_MINOR)
243 VERSION_MICRO = \$\$quote($VERSION_MICRO)
244 VERSION = \$\$quote($VERSION)
245 PREFIX = \$\$quote($PREFIX)
246 BINDIR = \$\$quote($BINDIR)
247 LIBDIR = \$\$quote($LIBDIR)
248 INCLUDEDIR = \$\$quote($INCLUDEDIR)
249 LOCALSTATEDIR = \$\$quote($LOCALSTATEDIR)
250 TOP_SOURCEDIR = \$\$quote($TOP_SOURCEDIR)
251 TOP_BUILDDIR = \$\$quote($TOP_BUILDDIR)
252 TARGET_CPU = \$\$quote($TARGET_CPU)
253 ENABLE_CREDENTIALS = \$\$quote($ENABLE_CREDENTIALS)
254 ENABLE_CELLULAR = \$\$quote($ENABLE_CELLULAR)
255 ENABLE_RTTI = \$\$quote($ENABLE_RTTI)
256 ENABLE_BUILDDIRS_RPATH = \$\$quote($ENABLE_BUILDDIRS_RPATH)
257 ENABLE_SCHEMA_LIST = \$\$quote($ENABLE_SCHEMA_LIST)
258 ENABLE_COVERAGE = \$\$quote($ENABLE_COVERAGE)
259 ENABLE_DOCS = \$\$quote($ENABLE_DOCS)
260 EOF
261
262 if [ "$ENABLE_COVERAGE" = "yes" ]
263 then
264     # disable ccache when generating coverage information
265     echo 'QMAKE_CXX = SBOX_USE_CCACHE=no $$QMAKE_CXX' >> "$cachefile"
266     echo 'QMAKE_LINK = SBOX_USE_CCACHE=no $$QMAKE_LINK' >> "$cachefile"
267     echo 'QMAKE_CXXFLAGS = $$QMAKE_CXXFLAGS -ftest-coverage -fprofile-arcs -O0' >> "$cachefile"
268     echo 'QMAKE_LIBS = $$QMAKE_LIBS -lgcov' >> "$cachefile"
269     echo 'QMAKE_CLEAN = $$QMAKE_CLEAN *.gcov *.gcda *.gcno' >> "$cachefile"
270 fi
271
272 # =================================================================================================
273 # Run qmake
274 # =================================================================================================
275
276 echo "Running qmake..."
277
278 touch configure-stamp
279 qmake "$relpath/$PACKAGE.pro" -r
280
281 # =================================================================================================
282 # Fake plugin folder
283 # =================================================================================================
284
285 echo "Creating fake plugin folder..."
286
287 rm -fr plugins
288 mkdir -p plugins/contacts
289 ln -s ../../src/plugin/libqtcontacts_tracker.so plugins/contacts
290
291 # =================================================================================================
292 # Print final banner
293 # =================================================================================================
294
295 echo
296 echo "$PACKAGE is configured now."
297 echo "You can run 'make' to build the package."
298 echo
299 echo "Once everything is built, you run 'make install'."
300 echo "$PACKAGE will be installed into $PREFIX"
301 echo
302 echo "To reconfigure, run 'make distclean' and 'configure'."
303 echo