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