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