configure.ac 16.1 KB
Newer Older
Tiago Peixoto's avatar
Tiago Peixoto committed
1
2
dnl Process this file with autoconf to produce a configure script.

3
dnl graph-tool package version number
Tiago Peixoto's avatar
Tiago Peixoto committed
4
m4_define(graph_tool_version_major, 2)
Tiago Peixoto's avatar
Tiago Peixoto committed
5
m4_define(graph_tool_version_minor, 21dev)
6

7
8
9
10
11
AC_INIT([graph-tool],
        [graph_tool_version_major().graph_tool_version_minor()],
        [http://graph-tool.skewed.de/issues],
        [graph-tool],
        [http://graph-tool.skewed.de])
12
13
14
15
16
17

GRAPH_TOOL_VERSION_MAJOR=graph_tool_version_major()
GRAPH_TOOL_VERSION_MINOR=graph_tool_version_minor()
AC_SUBST(GRAPH_TOOL_VERSION_MAJOR)
AC_SUBST(GRAPH_TOOL_VERSION_MINOR)

Tiago Peixoto's avatar
Tiago Peixoto committed
18
AC_CANONICAL_TARGET
Tiago Peixoto's avatar
Tiago Peixoto committed
19
AC_CONFIG_SRCDIR(src)
20
21
AM_INIT_AUTOMAKE([foreign])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
Tiago Peixoto's avatar
Tiago Peixoto committed
22
AM_PROG_CC_C_O
23
AC_CONFIG_HEADERS([config.h])
Tiago Peixoto's avatar
Tiago Peixoto committed
24
AC_CONFIG_MACRO_DIR([m4])
Tiago Peixoto's avatar
Tiago Peixoto committed
25

26
AC_SEARCH_LIBS([strerror],[cposix])
Tiago Peixoto's avatar
Tiago Peixoto committed
27
AC_SUBST(CXXFLAGS,$CXXFLAGS)
28
AC_USE_SYSTEM_EXTENSIONS
Tiago Peixoto's avatar
Tiago Peixoto committed
29
AC_PROG_CXX
30
AC_LANG([C++])
Tiago Peixoto's avatar
Tiago Peixoto committed
31
32
AC_PROG_CC_STDC
AC_HEADER_STDC
Tiago Peixoto's avatar
Tiago Peixoto committed
33
AC_DISABLE_STATIC
Tiago Peixoto's avatar
Tiago Peixoto committed
34
AC_PROG_INSTALL
35
LT_INIT
Tiago Peixoto's avatar
Tiago Peixoto committed
36

Tiago Peixoto's avatar
Tiago Peixoto committed
37
38
39
40
# pkg-config generation
PKG_PROG_PKG_CONFIG
PKG_INSTALLDIR

Tiago Peixoto's avatar
Tiago Peixoto committed
41
AX_CXX_COMPILE_STDCXX_14([ext],[mandatory])
42

43
dnl turn on warnings
44
[CXXFLAGS="-Wall -Wextra -ftemplate-backtrace-limit=0 ${CXXFLAGS}"]
45

Tiago Peixoto's avatar
Tiago Peixoto committed
46
47
48
dnl Checks for options

dnl Turn debugging on or off
49
AC_MSG_CHECKING(whether to enable debug info)
50

51
52
53
54
55
56
57
58
59
60
61
62
AC_ARG_ENABLE([debug],
              [AS_HELP_STRING([--enable-debug],[compile debug information [default=disabled] ])],
              if test $enableval = yes; then
                  [AC_DEFINE([DEBUG], 1, [compile debug info])]
                  [CXXFLAGS="-g ${CXXFLAGS}"]
                  [AC_MSG_RESULT(yes)]
              else
                  [CXXFLAGS="-DNDEBUG ${CXXFLAGS}"]
                  [AC_MSG_RESULT(no)]
              fi,
              [CXXFLAGS="-DNDEBUG ${CXXFLAGS}"]
              [AC_MSG_RESULT(no)])
Tiago Peixoto's avatar
Tiago Peixoto committed
63

Tiago Peixoto's avatar
Tiago Peixoto committed
64
dnl set template depth
65
[CXXFLAGS="-ftemplate-depth-250  ${CXXFLAGS}"]
Tiago Peixoto's avatar
Tiago Peixoto committed
66

67
dnl disable deprecation warning, to silence some harmless BGL-related warnings
68
69
70
71
72
73
74
75
76
[CXXFLAGS="-Wno-deprecated ${CXXFLAGS}"]

dnl set default visibility
[CXXFLAGS="-fvisibility=default -fvisibility-inlines-hidden ${CXXFLAGS}"]

dnl set default optimizations
[CXXFLAGS="-O3 ${CXXFLAGS}"]

dnl OpenMP
77
AC_DEFINE([OPENMP_MIN_THRESH], 300, [default minimum number of vertices for parallel loops])
78
AC_MSG_CHECKING(whether to enable parallel algorithms with openmp)
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
AC_ARG_ENABLE([openmp], [AS_HELP_STRING([--disable-openmp],[disable openmp [default=enabled] ])],
              if test $enableval = yes; then
                  [AC_MSG_RESULT(yes)]
                  [USING_OPENMP=yes]
                  [AX_OPENMP([], [USING_OPENMP=no]
                                 [OPENMP_CXXFLAGS="-Wno-unknown-pragmas"])]
              else
                  [AC_MSG_RESULT(no)]              
                  [USING_OPENMP=no]
                  [OPENMP_CXXFLAGS="-Wno-unknown-pragmas"]
              fi,
              [USING_OPENMP=yes]
              [AX_OPENMP([], [USING_OPENMP=no]
                             [OPENMP_CXXFLAGS="-Wno-unknown-pragmas"])])
if test ${USING_OPENMP} = yes; then
    AC_DEFINE([USING_OPENMP], 1, [using openmp])
fi
[CXXFLAGS="${OPENMP_CXXFLAGS} ${CXXFLAGS}"]
97

Tiago Peixoto's avatar
Tiago Peixoto committed
98
[USING_CAIRO=yes]
99
AC_MSG_CHECKING(whether to enable cairo drawing)
Tiago Peixoto's avatar
Tiago Peixoto committed
100
AC_ARG_ENABLE([cairo], [AS_HELP_STRING([--disable-cairo],[disable cairo drawing [default=enabled] ])],
101
102
103
104
105
106
107
              if test $enableval = no; then
                 [USING_CAIRO=no]
                 [AC_MSG_RESULT(no)]
              else
                 [AC_MSG_RESULT(yes)]
              fi,
              [AC_MSG_RESULT(yes)])
Tiago Peixoto's avatar
Tiago Peixoto committed
108

109
110
dnl Override prefix with default value if not set
if test "x${prefix}" = "xNONE"; then
111
   prefix=${ac_default_prefix}
112
fi
113

Tiago Peixoto's avatar
Tiago Peixoto committed
114
115
116
117
dnl Checks for programs.

dnl Checks for libraries.
dnl expat
118
119
120
121
AX_LIB_EXPAT()
if test "$HAVE_EXPAT" = "no"; then
    AC_MSG_ERROR([expat library not found])
fi
Tiago Peixoto's avatar
Tiago Peixoto committed
122

123
dnl python
124
AM_PATH_PYTHON([2.7])
125
126
127
128
AC_SUBST(PYTHON_VERSION)
PYTHON_FULL_VERSION=[`${PYTHON} -c "import sys; print(sys.version.split()[0])"`]
AC_SUBST(PYTHON_FULL_VERSION)
AC_PYTHON_DEVEL([== '${PYTHON_FULL_VERSION}'])
129

130
131
# default directory for submodules
[MOD_DIR="${PYTHON_SITE_PKG}"]
Tiago Peixoto's avatar
Tiago Peixoto committed
132
133
134
135
AC_ARG_WITH([python-module-path],
            [AS_HELP_STRING([--with-python-module-path=DIR],
                            [directory where python module will be installed
                             [default=auto-detected]])],
136
137
138
139
140
            MOD_DIR=$withval)

[MOD_DIR="${MOD_DIR}/graph_tool"]
AC_SUBST(MOD_DIR)

141
dnl boost
142
AX_BOOST_BASE([[1.54.0]])
143
144
145
146
147
148
149
150
AX_BOOST_PYTHON
if test "$BOOST_PYTHON_LIB" = ""; then
   AC_MSG_ERROR([No usable boost::python found])
fi
AX_BOOST_IOSTREAMS
if test "$BOOST_IOSTREAMS_LIB" = ""; then
   AC_MSG_ERROR([No usable boost::iostreams found])
fi
151
152
153
154
AX_BOOST_REGEX
if test "$BOOST_REGEX_LIB" = ""; then
   AC_MSG_ERROR([No usable boost::regex found])
fi
155
156
AX_BOOST_COROUTINE
if test "$BOOST_COROUTINE_LIB" = ""; then
Tiago Peixoto's avatar
Tiago Peixoto committed
157
   AC_MSG_WARN([No usable boost::coroutine found! Some functionality will be disabled in the library.])
158
fi
Tiago Peixoto's avatar
Tiago Peixoto committed
159
160
161
162
AX_BOOST_GRAPH
if test "$BOOST_GRAPH_LIB" = ""; then
   AC_MSG_ERROR([No usable boost::graph found])
fi
163

164
165
166
167
168
[BOOST_LIBS="${BOOST_IOSTREAMS_LIB} -l${BOOST_PYTHON_LIB} ${BOOST_REGEX_LIB} ${BOOST_COROUTINE_LIB}"]

dnl GNU MP library (needed by CGAL)
AC_CHECK_LIB(gmp, __gmpz_init, ,
             [AC_MSG_ERROR([GNU MP not found (CGAL dependency), see https://gmplib.org/])])
169
dnl CGAL
170
AX_LIB_CGAL_CORE([], AC_MSG_ERROR([CGAL library not found.]))
171
[CGAL_FLAGS="-frounding-math"]
172
AC_MSG_CHECKING(whether to enable cgal debbuging with valgrind)
173
AC_ARG_ENABLE([cgal-valgrind], [AS_HELP_STRING([--enable-cgal-valgrind],[enable CGAL valgrind debugging [default=disabled] ])],
174
175
176
177
178
179
180
              if test $enableval = yes; then
                 [AC_MSG_RESULT(yes)]
                 [CGAL_FLAGS="${CGAL_FLAGS} -DCGAL_DISABLE_ROUNDING_MATH_CHECK=ON"]
              else
                 [AC_MSG_RESULT(no)]    
              fi,
              [AC_MSG_RESULT(no)])
181
AC_SUBST(CGAL_FLAGS)
182

Tiago Peixoto's avatar
Tiago Peixoto committed
183
dnl Checks for header files.
184
185

dnl numpy
186
AX_PYTHON_MODULE(numpy, fatal)
187
[NUMPY_DIR=`$PYTHON -c "import numpy; print(numpy.get_include())"`]
188
AC_ARG_WITH([numpy], [AS_HELP_STRING([--with-numpy=DIR],[directory where numpy is installed
189
                      [default=auto-detected] ])],
190
            NUMPY_DIR=$withval)
191
[NUMPY_CPPFLAGS="-I${NUMPY_DIR}"]
192
193
194

[CPPFLAGS_TEMP=${CPPFLAGS}]
[CPPFLAGS=${PYTHON_CPPFLAGS} ${CPPFLAGS}]
195
AC_CHECK_HEADER([${NUMPY_DIR}/numpy/arrayobject.h],
196
                [],
197
198
                [AC_MSG_ERROR([Numpy extension header not found])],
                [#include "Python.h"])
Tiago Peixoto's avatar
Tiago Peixoto committed
199
200
201
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include "Python.h" #include "${NUMPY_DIR}/numpy/arrayobject.h" #if NPY_API_VERSION < 0x00000007 #error #endif]])],
                  [],
                  [AC_MSG_ERROR([Numpy is too old. Version 1.7 or above is required.])])
202
[CPPFLAGS=${CPPFLAGS_TEMP}]
203

Tiago Peixoto's avatar
Tiago Peixoto committed
204
205
206
207
208
209
dnl cairo
if test "$USING_CAIRO" = "yes"; then
   PKG_CHECK_MODULES(CAIROMM, [cairomm-1.0], AC_DEFINE([HAVE_CAIROMM], [1],
                     [Cairomm is available]), [])
   AC_SUBST(CAIROMM_CFLAGS)
   AC_SUBST(CAIROMM_LIBS)
210
   AX_PYTHON_MODULE(cairo)
211
212
213
214
215
216
   PYTHON_VERSION_MAJOR=$(echo $PYTHON_VERSION | cut -d'.' -f1)
   if test "$PYTHON_VERSION_MAJOR" = "3"; then
      [PYCAIRO_HEADER=pycairo/py3cairo.h]
   else
      [PYCAIRO_HEADER=pycairo/pycairo.h]
   fi
217
218
   [CPPFLAGS_TEMP=${CPPFLAGS}]
   [CPPFLAGS="${CAIROMM_CPPFLAGS} ${CAIROMM_CFLAGS} ${PYTHON_CPPFLAGS} ${CPPFLAGS}"]
219
   AC_DEFINE_UNQUOTED([PYCAIRO_HEADER], <${PYCAIRO_HEADER}>, [pycairo header file])
220
221
   AC_CHECK_HEADER(${PYCAIRO_HEADER},
                   [],
222
                   [AC_MSG_ERROR([pycairo headers not found])])
223
   [CPPFLAGS=${CPPFLAGS_TEMP}]
Tiago Peixoto's avatar
Tiago Peixoto committed
224
225
fi

226
dnl sparsehash
227
228
[SPARSEHASH_PREFIX=sparsehash]
AC_ARG_WITH([sparsehash-prefix], [AS_HELP_STRING([--with-sparsehash-prefix=prefix],
229
230
                                                 [include directory prefix for sparsehash
                                                  [default=sparsehash] ])],
231
232
            [SPARSEHASH_PREFIX=$withval])

233
[USING_SPARSEHASH=yes]
234
AC_MSG_CHECKING(whether to enable sparsehash)
235
236
237
238
239
240
241
242
243
AC_ARG_ENABLE([sparsehash],
              [AS_HELP_STRING([--disable-sparsehash],[disable use of google's sparsehash [default=enabled] ])],
              if test $enableval = no; then
                  [USING_SPARSEHASH=no]
                  [AC_MSG_RESULT(no)]
              else
                  [AC_MSG_RESULT(yes)]
              fi,
              [AC_MSG_RESULT(yes)])
244

245
if test "$USING_SPARSEHASH" = "yes"; then
246
247
248
   PKG_CHECK_MODULES(SPARSEHASH, [libsparsehash],
                     AC_DEFINE([HAVE_SPARSEHASH], [1], [Using google's sparsehash]),
                     [AC_MSG_RESULT([not found by pkgconfig, trying default...])])
249
   AC_SUBST(SPARSEHASH_CFLAGS)
250
251
   AC_DEFINE_UNQUOTED([SPARSEHASH_PREFIX], [${SPARSEHASH_PREFIX}],
                      [Sparsehash include prefix])
252
   AC_DEFINE_UNQUOTED([SPARSEHASH_INCLUDE(f)], [<${SPARSEHASH_PREFIX}/f>],
253
                      [Sparsehash include macro])
254
   AC_CHECK_HEADER([${SPARSEHASH_PREFIX}/dense_hash_set], [],
255
256
                   [AC_MSG_ERROR([sparsehash headers not found])])
fi
257

Tiago Peixoto's avatar
Tiago Peixoto committed
258
259
260
dnl Checks for typedefs, structures, and compiler characteristics.
dnl Checks for library functions.

261
dnl Checks for Additional stuff.
Tiago Peixoto's avatar
Tiago Peixoto committed
262
263
264

dnl Set PACKAGE PREFIX
if test "x${prefix}" = "xNONE"; then
265
   packageprefix=${ac_default_prefix}
Tiago Peixoto's avatar
Tiago Peixoto committed
266
else
267
   packageprefix=${prefix}
Tiago Peixoto's avatar
Tiago Peixoto committed
268
269
270
271
fi

dnl Set PACKAGE DATA & DOC DIR
packagedatadir=share/${PACKAGE}
272
packagedocdir=doc/${PACKAGE}
Tiago Peixoto's avatar
Tiago Peixoto committed
273
274
275
276
277
278
279
280
281
282
283
284


dnl Subst PACKAGE_DATA_DIR.
NO_PREFIX_PACKAGE_DATA_DIR="${packagedatadir}"
AC_SUBST(NO_PREFIX_PACKAGE_DATA_DIR)
PACKAGE_DATA_DIR="${packageprefix}/${packagedatadir}"
AC_SUBST(PACKAGE_DATA_DIR)

dnl Subst PACKAGE_DOC_DIR.
NO_PREFIX_PACKAGE_DOC_DIR="${packagedocdir}"
AC_SUBST(NO_PREFIX_PACKAGE_DOC_DIR)
PACKAGE_DOC_DIR="${packageprefix}/${packagedocdir}"
285
286
287
288
289
290

if test "x${docdir}" = "xNONE"; then
  PACKAGE_DOC_DIR="${packageprefix}/${packagedocdir}"
else
  PACKAGE_DOC_DIR="${docdir}"
fi
Tiago Peixoto's avatar
Tiago Peixoto committed
291
292
AC_SUBST(PACKAGE_DOC_DIR)

293
294
295
296
297
298
299
300
301
302
# Allow the pkg-config directory to be set
AC_ARG_WITH(pkgconfigdir,
            AC_HELP_STRING([--with-pkgconfigdir],
            [Use the specified pkgconfig dir (default is libdir/pkgconfig)]),
            [pkgconfigdir=${withval}],
            [pkgconfigdir='${libdir}/pkgconfig'])

AC_SUBST([pkgconfigdir])
AC_MSG_NOTICE([pkgconfig directory is ${pkgconfigdir}])

303
304
dnl Subst PYTHON_DIR.
AC_DEFINE_UNQUOTED([INSTALL_PREFIX],"${prefix}", [python prefix])
Tiago Peixoto's avatar
Tiago Peixoto committed
305
AC_DEFINE_UNQUOTED([PYTHON_DIR], "${PYTHON_SITE_PKG}", [The directory name for the site-packages subdirectory of the standard Python install tree.])
306
307

AC_DEFINE_UNQUOTED([CXXFLAGS],"${CXXFLAGS}", [c++ compilation options])
308
AC_DEFINE_UNQUOTED([CPPFLAGS],"${CPPFLAGS}", [c++ preprocessor compilation options])
Tiago Peixoto's avatar
Tiago Peixoto committed
309
AC_DEFINE_UNQUOTED([LDFLAGS],"${LDFLAGS}", [linker options])
310

311
312
AC_DEFINE_UNQUOTED([PACKAGE_DATA_DIR], "${PACKAGE_DATA_DIR}", [package data dir])
AC_DEFINE_UNQUOTED([PACKAGE_DOC_DIR], "${PACKAGE_DOC_DIR}", [package doc dir])
Tiago Peixoto's avatar
Tiago Peixoto committed
313

Tiago Peixoto's avatar
Tiago Peixoto committed
314
AC_DEFINE_UNQUOTED([AUTHOR], "Tiago de Paula Peixoto <tiago@skewed.de>", [program author(s)])
Tiago Peixoto's avatar
Tiago Peixoto committed
315
316

AC_DEFINE_UNQUOTED([COPYRIGHT],
Tiago Peixoto's avatar
Tiago Peixoto committed
317
    "Copyright (C) 2006-2017 Tiago de Paula Peixoto\nThis is free software; see the source for copying conditions.  There is NO\nwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.",
318
        [copyright info])
319

320
# git information
321
322
AC_DEFINE([GIT_COMMIT], "esyscmd(git show | head -n 1 | sed 's/commit //' |  grep -o -e '.\{8\}' | head -n 1 |tr -d '\n')", [git HEAD commit hash])
AC_DEFINE([GIT_COMMIT_DATE], "esyscmd(git log -1 | head -n 3 | grep 'Date:' | sed s/'Date:   '// | tr -d '\n')", [git HEAD commit date])
323

324
325
326
# GCC version
AC_DEFINE([GCC_VERSION], [(__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)], [GCC version value])

327
# set automake variables
Tiago Peixoto's avatar
Tiago Peixoto committed
328

329
330
331
332
333
334
# global CPP flags
AC_SUBST(CPPFLAGS)

# global CXX flags
AC_SUBST(CXXFLAGS)

335
336
# extra CPP flags for submodules
[MOD_CPPFLAGS="${PYTHON_CPPFLAGS} ${BOOST_CPPFLAGS} ${NUMPY_CPPFLAGS} ${EXPAT_CFLAGS} -I\$(top_srcdir)/src/boost-workaround -DHAVE_CONFIG_H -I\$(top_srcdir)/src/graph -I\$(top_builddir)"]
Tiago Peixoto's avatar
Tiago Peixoto committed
337
338
AC_SUBST(MOD_CPPFLAGS)

339
340
# extra LIBADD flags for submodules
[MOD_LIBADD="${PYTHON_LIBS} ${BOOST_LIBS} ${EXPAT_LIBS} ${EXPAT_LDFLAGS}"]
Tiago Peixoto's avatar
Tiago Peixoto committed
341
342
343
344
AC_SUBST(MOD_LIBADD)

# needed for typeinfo objects to work across DSO boundaries.
# see http://gcc.gnu.org/faq.html#dso
345
[MOD_LDFLAGS="-module -avoid-version -export-dynamic -no-undefined -Wl,-E -Wl,--as-needed"]
Tiago Peixoto's avatar
Tiago Peixoto committed
346

347
# MacOS needs different options
348
if [[ `echo ${target_os} | grep -c -e "^darwin"` == 1 ]]; then
349
350
   [MOD_LDFLAGS="-module -dynamiclib"]
fi
Tiago Peixoto's avatar
Tiago Peixoto committed
351

Tiago Peixoto's avatar
Tiago Peixoto committed
352
353
AC_SUBST(MOD_LDFLAGS)

Tiago Peixoto's avatar
Tiago Peixoto committed
354
AX_CREATE_PKGCONFIG_INFO([graph-tool-py${PYTHON_VERSION}.pc], [],
355
                         [${PYTHON_LIBS} -l${BOOST_PYTHON_LIB}],
Tiago Peixoto's avatar
Tiago Peixoto committed
356
                         [graph-tool Python library],
357
                         [-ftemplate-depth-250 ${PYTHON_CPPFLAGS} ${BOOST_CPPFLAGS} ${SPARSEHASH_CFLAGS} ${NUMPY_CPPFLAGS} -I${MOD_DIR}/include -I${MOD_DIR}/include/boost-workaround],
Tiago Peixoto's avatar
Tiago Peixoto committed
358
                         [])
Tiago Peixoto's avatar
Tiago Peixoto committed
359

360
AC_CONFIG_FILES([
Tiago Peixoto's avatar
Tiago Peixoto committed
361
362
363
Makefile
src/Makefile
src/graph/Makefile
Tiago Peixoto's avatar
Tiago Peixoto committed
364
src/graph/centrality/Makefile
365
src/graph/clustering/Makefile
366
367
src/graph/correlations/Makefile
src/graph/draw/Makefile
Tiago Peixoto's avatar
Tiago Peixoto committed
368
src/graph/flow/Makefile
369
src/graph/generation/Makefile
370
src/graph/inference/Makefile
371
src/graph/layout/Makefile
372
src/graph/search/Makefile
373
374
375
376
src/graph/spectral/Makefile
src/graph/stats/Makefile
src/graph/topology/Makefile
src/graph/util/Makefile
377
src/graph_tool/Makefile
Tiago Peixoto's avatar
Tiago Peixoto committed
378
])
379
AC_OUTPUT
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427

echo "$(tput setaf 2)================================================================================$(tput sgr0)"
echo "$(tput setaf 2)                             CONFIGURATION SUMMARY                              $(tput sgr0)"
echo "$(tput setaf 2)================================================================================$(tput sgr0)"
echo -e "$(tput setaf 3)Using python version:           $(tput setaf 4)${PYTHON_FULL_VERSION}$(tput sgr0)"
echo -e "$(tput setaf 3)Python interpreter:             $(tput setaf 4)${PYTHON}$(tput sgr0)"
echo -e "$(tput setaf 3)Installation path:              $(tput setaf 4)${MOD_DIR}$(tput sgr0)\n"

echo -e "$(tput setaf 3)C++ compiler (CXX):             $(tput setaf 4)${CXX}$(tput sgr0)"
echo -e "$(tput setaf 3)C++ compiler version:           $(tput setaf 4)`${CXX} -dumpversion`$(tput sgr0)\n"

echo -e "$(tput setaf 3)Prefix:                         $(tput setaf 4)${prefix}$(tput sgr0)"
echo -e "$(tput setaf 3)Pkgconfigdir:                   $(tput setaf 4)${pkgconfigdir}$(tput sgr0)\n"

echo -e "$(tput setaf 3)Python preprocessor flags:      $(tput setaf 4)${PYTHON_CPPFLAGS}$(tput sgr0)"
echo -e "$(tput setaf 3)Python linker flags:            $(tput setaf 4)${PYTHON_LIBS}$(tput sgr0)"
echo -e "$(tput setaf 3)Boost preprocessor flags:       $(tput setaf 4)${BOOST_CPPFLAGS}$(tput sgr0)"
echo -e "$(tput setaf 3)Boost linker flags:             $(tput setaf 4)${BOOST_LIBS}$(tput sgr0)"
echo -e "$(tput setaf 3)Numpy preprocessor flags:       $(tput setaf 4)${NUMPY_CPPFLAGS}$(tput sgr0)"
echo -e "$(tput setaf 3)Sparsehash preprocessor flags:  $(tput setaf 4)${SPARSEHASH_CFLAGS}$(tput sgr0)"
echo -e "$(tput setaf 3)CGAL preprocessor flags:        $(tput setaf 4)${CGAL_CPPFLAGS}$(tput sgr0)"
echo -e "$(tput setaf 3)CGAL linker flags:              $(tput setaf 4)${CGAL_LDFLAGS}$(tput sgr0)"
echo -e "$(tput setaf 3)Expat preprocessor flags:       $(tput setaf 4)${EXPAT_CFLAGS}$(tput sgr0)"
echo -e "$(tput setaf 3)Expat linker flags:             $(tput setaf 4)${EXPAT_LDFLAGS} ${EXPAT_LIBS}$(tput sgr0)"
echo -e "$(tput setaf 3)OpenMP compiler flags:          $(tput setaf 4)${OPENMP_CXXFLAGS}$(tput sgr0)"
echo -e "$(tput setaf 3)Extra CPPFLAGS:                 $(tput setaf 4)${CPPFLAGS}$(tput sgr0)"
echo -e "$(tput setaf 3)Extra CXXFLAGS:                 $(tput setaf 4)${CXXFLAGS}$(tput sgr0)"
echo -e "$(tput setaf 3)Extra LDFLAGS:                  $(tput setaf 4)${LDFLAGS}$(tput sgr0)\n"
echo -n -e "$(tput setaf 3)Using OpenMP:                   "
if test ${USING_OPENMP} = yes; then
   echo "$(tput setaf 5)yes$(tput sgr0)"
else
   echo "$(tput setaf 1)no$(tput sgr0)"
fi
echo -n -e "$(tput setaf 3)Using sparsehash:               "
if test ${USING_SPARSEHASH} = yes; then
   echo "$(tput setaf 5)yes$(tput sgr0)"
else
   echo "$(tput setaf 1)no$(tput sgr0)"
fi
echo -n -e "$(tput setaf 3)Using cairo:                    "
if test ${USING_CAIRO} = yes; then
   echo "$(tput setaf 5)yes$(tput sgr0)"
else
   echo "$(tput setaf 1)no$(tput sgr0)"
fi
echo -e "$(tput setaf 2)================================================================================$(tput sgr0)"