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